LDA(cdes, k = K, method = "Gibbs", control = list(verbose = 25L, : 输入矩阵的每一行需要包含至少一个非零项

Error in LDA(cdes, k = K, method = "Gibbs", control = list(verbose = 25L, : Each row of the input matrix needs to contain at least one non-zero entry

我有一个包含近 90 列和大约 20 万个观察值的大数据集。其中一列包含说明,因此它只是文本。但是,我有 100 个描述是 NA。

我尝试了 GitHub 中关于主题模型的 Pablo Barbera 代码,因为我需要它。

输出

library(topicmodels)
library(quanteda)

des <- subset(finalMSI, !is.na(description), select=c(description))
corpus_des <- corpus(des$description)
df_des <- dfm(corpus_des, remove=stopwords("spanish"), verbose=TRUE,
              remove_punct=TRUE, remove_numbers=TRUE)
cdes <- dfm_trim(df_des, min_docfreq = 2)

# estimate LDA with K topics
K <- 20
lda <- LDA(cdes, k = K, method = "Gibbs", 
           control = list(verbose=25L, seed = 123, burnin = 100, iter = 500))

Error in LDA(cdes, k = K, method = "Gibbs", control = list(verbose = 25L, : Each row of the input matrix needs to contain at least one non-zero entry

因为我的子集中没有任何 NA,所以我不明白这个错误信息(这是我第一次使用这个包)

您的某些文档似乎是空的,因为它们不包含任何特征的计数。

您可以使用以下方法删除它们:

cdes <- dfm_trim(df_des, min_docfreq = 2) %>%
   dfm_subset(ntoken(cdes) > 0)