Я занимаюсь тематическим моделированием с помощью пакета 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, которая удаляет термины, которые не отображаются в каком-либо документе, но нет аналога для удаления документов.