2015-08-20 5 views
-1

У меня есть коллекция книг в формате txt и вы хотите применить к ним некоторые процедуры библиотеки tm R. Тем не менее, я предпочитаю чистить тексты в bash, а не в R, потому что это намного быстрее.R tm TermDocumentMatrix на основе разреженной матрицы

Предположим, что я могу получить от Баш на data.frame, такие как:

book term frequency 
-------------------- 
1  the  10 
1  zoo  2 
2  animal 2 
2  car  3 
2  the  20 

Я знаю, что TermDocumentMatrices фактически разреженные матрицы с метаданными. Фактически, я могу создать разреженную матрицу из TDM, используя записи i, j и v TDM TDM для функций i, j и x функции sparseMatrix. Пожалуйста, помогите мне, если вы знаете, как сделать обратный, или в этом случае, как построить TDM, используя три столбца в приведенном выше data.frame. Благодаря!

ответ

2

Вы можете попробовать

library(tm) 
library(reshape2) 
txt <- readLines(n = 7) 
book term frequency 
-------------------- 
1  the  10 
1  zoo  2 
2  animal 2 
2  car  3 
2  the  20 
df <- read.table(header=T, text=txt[-2]) 
dfwide <- dcast(data = df, book ~ term, value.var = "frequency", fill = 0) 
mat <- as.matrix(dfwide[, -1]) 
dimnames(mat) <- setNames(dimnames(dfwide[-1]), names(df[, 1:2])) 
(tdm <- as.TermDocumentMatrix(t(mat), weighting = weightTf)) 
# <<TermDocumentMatrix (terms: 4, documents: 2)>> 
# Non-/sparse entries: 5/3 
# Sparsity   : 38% 
# Maximal term length: 6 
# Weighting   : term frequency (tf) 

as.matrix(tdm) 
#  Docs 
# Terms  1 2 
# animal 0 2 
# car  0 3 
# the  10 20 
# zoo  2 0 
Смежные вопросы