我正在使用 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".
我假设这意味着至少有一个文档在预处理后没有术语。有没有一种简单的方法可以从 DocumentTermMatrix 中删除不包含任何术语的文档?
我查看了 topicmodels 包的文档,发现了 removeSparseTerms 函数,该函数删除了未出现在任何文档中的术语,但没有类似的删除文档。