You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:45:58