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

如何获取BERTopic模型中每个文档的全主题概率向量

如何获取BERTopic模型中每个文档的全主题概率向量

嗨,我来帮你搞定这个问题~

你现在拿到的probs只有单个值,是因为BERTopic默认只返回每个文档最匹配的那个主题的概率,而不是所有主题的完整概率分布。要获取N×K(N是文档数,K是主题数)的概率矩阵,有两种简单的方法:

方法一:训练时直接开启概率计算

在初始化BERTopic模型的时候,加上calculate_probabilities=True参数,这样训练完成后,fit_transform返回的probs就是每个文档对应所有主题的概率向量了:

from bertopic import BERTopic
# 添加calculate_probabilities=True参数
topic_model = BERTopic(n_gram_range=(1, 1), nr_topics=20, calculate_probabilities=True)
topics, probs = topic_model.fit_transform(docs)

这时候你再查看probs,就会得到一个形状为(len(docs), 20)的数组,每一行就是对应文档在20个主题上的概率分布。

方法二:对已训练好的模型补算概率

如果已经训练完模型不想重新跑一遍,可以用approximate_distribution方法来生成全概率向量:

# 基于已训练好的topic_model计算全概率分布
probs = topic_model.approximate_distribution(docs)

这个方法会利用已有的模型参数,快速估算每个文档在所有主题上的概率,返回的结果同样是N×K的矩阵。

小提醒:开启全概率计算会增加训练时间和内存消耗,如果你处理的是超大批量的文档,需要根据自己的硬件情况权衡一下性能哦~

备注:内容来源于stack exchange,提问作者coolhand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:44:35