Я использую следующий код tm+RWeka для извлечения наиболее часто встречающихся энграмм в текстах:
library("RWeka")
library("tm")
text <- c('I am good person','I am bad person','You are great','You are more great','todo learn english','He is ok')
BigramTokenizer <- function(x) NGramTokenizer(x,Weka_control(min=2,max=2))
corpus <- Corpus(VectorSource(text))
tdm <- TermDocumentMatrix(corpus,control = list(tokenize = BigramTokenizer))
DF <- data.frame(inspect(tdm))
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6
MostFreqNgrams <- rownames(head(DF[with(DF,order(-sums)),]))
Он работает нормально, но что, если данных намного больше? Есть ли вычислительный более эффективный способ? Кроме того, если переменных больше (например, 100), как я могу написать строку кода DF$sums
. Наверняка есть что-то более элегантное, чем следующее:
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6+...+DF$X99+DF$X100
Спасибо
EDIT: мне интересно, есть ли способ извлечь наиболее часто встречающиеся ngrams из tdm
TermDocumentMatrix и после создать фрейм данных со значениями. Что я делаю, так это создаю фрейм данных со всеми нграммами и после этого беру наиболее частые значения, что кажется не лучшим выбором.
Reduce('+', DF)
, либоrowSums(DF)
- person akrun   schedule 08.11.2015