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

BERTopic主题建模中如何列出各主题的全量文档与词汇

BERTopic 提取单主题全量关联文档与完整主题词方法

BERTopic默认返回的主题信息表做了预览截断:Representative_Docs列默认仅返回3-4篇代表性样本文档,Name列默认仅拼接前3-4个高权重主题词,二者都不是全量结果,可通过以下方法直接提取完整数据:

提取指定主题下全部关联文档

所有输入文档的主题分配结果都存在模型的topics_属性中,该属性是和输入文档顺序一一对应的列表,每个元素为对应文档的所属主题ID,直接筛选即可拿到全量关联文档,无需从默认信息表中取数:

# 替换为你建模时传入的原始文档列表
raw_docs = your_input_doc_list
# 替换为你要查询的目标主题ID,例如计数为2555的主题对应ID
target_topic = 0

# 筛选目标主题下的全部关联文档
all_docs_in_topic = [doc for doc, topic_label in zip(raw_docs, topic_model.topics_) if topic_label == target_topic]

# 校验数量,输出值即为该主题实际关联的文档总数
print(len(all_docs_in_topic))
  • 注意:get_topic_info()返回的Representative_Docs字段是算法筛选的典型样本,不是该主题下的全部文档,不要从该字段取全量数据。

提取主题下的完整主题词列表

有两种实现方式,按需选择即可:

  • 方式1:初始化模型时提前配置,让主题信息表直接展示全量主题词
    初始化BERTopic实例时,通过top_n_words参数指定每个主题要保留的主题词总数,训练完成后调用get_topic_info(),Name列就会展示对应数量的主题词,不会被截断为3-4个:
from bertopic import BERTopic

# 按需求设置每个主题保留的主题词数量,默认值为10
topic_model = BERTopic(top_n_words=100)
topics, probs = topic_model.fit_transform(raw_docs)

# 此时返回的信息表中,Name列会展示对应数量的主题词
full_topic_info = topic_model.get_topic_info()
  • 方式2:已完成模型训练无需重跑,直接提取全量主题词
    如果已经完成建模不想重新训练,直接调用get_topic()方法传入目标主题ID,即可返回该主题下所有带权重的主题词列表,无截断:
# 返回格式为[(主题词, 权重值), (主题词, 权重值), ...]的全量列表
all_topic_words_with_weight = topic_model.get_topic(target_topic)
# 提取纯主题词列表
all_topic_words = [word for word, weight in all_topic_words_with_weight]

如果需要把全量关联文档、全量主题词整合到同一张主题信息表中,遍历所有主题ID分别提取上述两类数据后,作为新列合并到get_topic_info()返回的DataFrame即可,不会修改模型原有属性。

内容的提问来源于stack exchange,提问作者Noob Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:27:28