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