R语言运行LDA主题模型报错:Error in !all.equal(x$v, as.integer(x$v))
错误原因
topicmodels::LDA要求输入的文档词矩阵(DTM)必须是整数类型的词频计数,你当前用浮点型的tf_idf值构建DTM,不符合模型对输入数据类型的要求,因此触发了invalid argument type错误。
修正方案
方案1:改用原始词频构建DTM(最直接)
修改DTM构建逻辑,用原始词频n代替tf_idf生成符合要求的DTM:
XR_data_dtm <- XR_data_counts %>% right_join(XR_words_10, by = 'words') %>% # 移除TF-IDF计算,直接基于词频构建DTM cast_dtm(id, words, n) %>% na.omit() # 重新拟合LDA模型 XR_lda <- topicmodels::LDA(XR_data_dtm, k = 2, control=list(seed=240))
方案2:结合TF-IDF权重(按需选择)
如果需要引入TF-IDF权重,可以先构建整数型DTM,再将TF-IDF值作为词权重传入模型:
# 单独计算TF-IDF值 xr_tfidf_df <- XR_data_counts %>% right_join(XR_words_10, by = 'words') %>% bind_tf_idf(words, id, n) # 构建整数型词频DTM XR_data_dtm <- xr_tfidf_df %>% cast_dtm(id, words, n) %>% na.omit() # 整理TF-IDF为模型可接受的权重格式 term_weights <- xr_tfidf_df %>% distinct(words, tf_idf) %>% tibble::deframe() # 拟合带权重的LDA模型 XR_lda <- topicmodels::LDA(XR_data_dtm, k = 2, control=list(seed=240, weight = term_weights[colnames(XR_data_dtm)]))
内容的提问来源于stack exchange,提问作者Daria
相关产品推荐
相关产品推荐

