Правя моделиране на теми, използвайки пакета topicmodels в R. Създавам обект Corpus, извършвам основна предварителна обработка и след това създавам 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, която премахва термини, които не фигурират в нито един документ, но няма аналог за премахване на документи.