次の tm+RWeka コードを使用して、テキスト内で最も頻繁に使用される ngram を抽出しています。
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)),]))
問題なく動作していますが、データが大きすぎる場合はどうなりますか? より効率的な計算方法はありますか?DF$sums
さらに、変数がより多い場合(例:100)、コード行をどのように記述できますか。確かに、次のものよりもエレガントなものがあります。
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6+...+DF$X99+DF$X100
ありがとうございました
編集: TermDocumentMatrix から最も頻繁な ngram を抽出tdm
し、値を使用してデータフレームを作成する方法があるかどうか疑問に思っています。私がやっていることは、すべての ngram を含むデータフレームを作成し、最も頻繁に使用される値を取得することです。これは最良の選択ではないようです。