私はRのtopicmodelsパッケージを使用してトピックモデリングを行っています。コーパスオブジェクトを作成し、いくつかの基本的な前処理を行ってから、DocumentTermMatrixを作成しています。
corpus <- Corpus(VectorSource(vec), readerControl=list(language="en"))
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeWords, stopwords("english"))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeNumbers)
...snip removing several custom lists of stopwords...
corpus <- tm_map(corpus, stemDocument)
dtm <- DocumentTermMatrix(corpus, control=list(minDocFreq=2, minWordLength=2))
そして、LDAを実行します。
LDA(dtm, 30)
このLDA()の最後の呼び出しは、エラーを返します
"Each row of the input matrix needs to contain at least one non-zero entry".
これは、前処理後に用語が含まれていないドキュメントが少なくとも1つあることを意味すると思います。DocumentTermMatrixから用語を含まないドキュメントを削除する簡単な方法はありますか?
topicmodelsパッケージのドキュメントを調べたところ、関数removeSparseTermsが見つかりました。この関数は、どのドキュメントにも表示されない用語を削除しますが、ドキュメントを削除するための類似物はありません。