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

合并BERTopic主题后如何获取各主题下的全部文档?

解决BERTopic合并主题后获取更新主题的问题
  • 核心问题:merge_topics仅更新模型内部的主题结构,但不会自动修改之前fit_transform返回的topics列表,需主动重新获取文档的主题分配。
  • 两种可行解决方法:

方法1:调用transform重新生成更新后的主题列表

执行merge_topics后,使用模型的transform方法对文档重新进行主题分配,直接得到更新后的主题ID:

from bertopic import BERTopic
from sklearn.datasets import fetch_20newsgroups
import pandas as pd

docs = fetch_20newsgroups(subset='all')['data']
topic_model = BERTopic()
topics, probabilities = topic_model.fit_transform(docs)

topics_to_merge = [[1, 2], [3, 4]]
topic_model.merge_topics(docs, topics_to_merge)

# 获取更新后的主题列表
updated_topics, _ = topic_model.transform(docs)
df = pd.DataFrame({'topic': updated_topics, 'document': docs})

方法2:利用模型的主题映射转换旧主题ID

merge_topics执行后,模型会生成topic_mapping_属性,存储旧主题到新主题的映射关系,可直接用它转换原topics列表:

# 前面代码与方法1一致

topic_model.merge_topics(docs, topics_to_merge)

# 通过主题映射转换旧主题ID
topic_mapping = topic_model.topic_mapping_
updated_topics = [topic_mapping[topic] for topic in topics]
df = pd.DataFrame({'topic': updated_topics, 'document': docs})
  • 注意:方法1更稳妥,适合后续对模型有其他调整的场景;方法2性能更高,无需重新计算主题分配。

内容的提问来源于stack exchange,提问作者Henrique Back

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:40:28