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

基于分类指标评估BERTopic模型及主题一致性分数获取问题

解决主题一致性分数计算报错

Gensim的CoherenceModel无法直接接收BERTopic模型实例,因为它依赖LDA类模型的id2word属性,而BERTopic没有这个属性。你需要将BERTopic的主题词转换为Gensim要求的格式,步骤如下:

  1. 提取BERTopic的主题词列表(排除噪声主题-1):
# 获取所有非噪声主题的词列表,只保留词(去掉权重)
topics_words = []
for topic, words in topic_model.get_topics().items():
    if topic != -1:
        topics_words.append([word for word, _ in words])
  1. 预处理文本为分词格式(CoherenceModel需要分词后的语料):
import spacy
nlp = spacy.load("en_core_web_sm")

tokenized_docs = []
for doc in docs:
    # 分词、转小写、去除停用词和标点
    tokens = [token.text.lower() for token in nlp(doc) if not token.is_stop and not token.is_punct]
    tokenized_docs.append(tokens)
  1. 创建Gensim字典并计算一致性分数:
from gensim.corpora import Dictionary
from gensim.models import CoherenceModel

# 创建语料字典
dictionary = Dictionary(tokenized_docs)

# 计算c_v一致性分数
cm = CoherenceModel(
    topics=topics_words,
    texts=tokenized_docs,
    dictionary=dictionary,
    coherence='c_v'
)
coherence_score = cm.get_coherence()
print(f"主题一致性分数: {coherence_score}")
推荐BERTopic模型评估指标

根据BERTopic的无监督聚类特性,分两类推荐评估指标:

无监督场景(无真实主题标签)

  • 主题一致性(Coherence Score):
    衡量单个主题内词语的语义相关性,常用指标有c_v(基于词嵌入的余弦相似度,适合短文本)、c_uci(基于点互信息)、c_npmi(归一化点互信息)。分数越高,主题内词的关联性越强。
  • 主题多样性(Topic Diversity):
    计算所有主题词中独特词的占比,公式为len(set(all_topic_words)) / total_topic_words。值越高,说明不同主题的重叠词越少,主题区分度越好。
  • 轮廓系数(Silhouette Score):
    基于文档的嵌入向量,衡量每个文档与自身簇内文档的相似度,以及与其他簇文档的差异度。取值范围[-1,1],越接近1说明聚类效果越好,注意需要排除噪声主题-1的文档。
  • Calinski-Harabasz指数:
    计算簇间离散度与簇内离散度的比值,值越高说明簇之间越分离,簇内越紧凑。

有监督场景(有真实主题标签)

如果你的数据有标注的真实主题,可以用以下指标:

  • 归一化互信息(NMI):
    衡量预测主题与真实主题的相似性,取值范围[0,1],值越高说明两个主题分布越匹配。
  • 调整兰德指数(ARI):
    修正了随机分配带来的偏差,取值范围[-1,1],越接近1说明聚类结果与真实标签越一致。
  • F1分数:
    适合不平衡数据集,优先选择加权F1(考虑样本不平衡)或宏F1(对所有类别平等加权),衡量模型分类的精准度和召回率平衡。
  • 混淆矩阵:
    直观展示每个预测主题与真实主题的匹配情况,便于定位分类错误的主题。

内容的提问来源于stack exchange,提问作者Tim Mooney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:34:53