Я использую следующий тм + RWeka код для извлечения наиболее часто ngrams в текстах:производительный способ извлечь наиболее часто ngrams с помощью R
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
. Наверняка есть что-то более изящное, чем followin:
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6+...+DF$X99+DF$X100
Спасибо
EDIT: Мне интересно, если есть способ извлечь наиболее часто ngrams из tdm
TermDocumentMatrix и после того, как создать dataframe со значениями. То, что я делаю, - создать фреймворк данных со всеми nграммами и последовать на наиболее частые значения, которые, кажется, не лучший выбор.
Вы можете использовать 'Сокращение ('+', DF)' или 'rowSums (DF)' – akrun
Связанный, возможно дубликат: [Эффективное извлечение NGram из CPU и памяти с R] (http://stackoverflow.com/вопросы/31424687/CPU-и-память эффективно-Ngram-экстракция-с-р) – smci