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

BERTopic多语言数据集超50%文档归为-1簇的解决建议咨询

解决BERTopic大量帖子无主题分配的方案

问题背景

使用BERTopic处理俄英为主的多语言数据集,目标生成140个主题。经coherence score评估(得分约0.7xx)及手动检查,多数主题合理有价值,但196802条帖子中超过50%(110550条)被标记为-1(未分配主题),不符合预期。

核心解决方向

从参数优化、模型配置、后处理三个维度调整,减少无主题帖子占比:

1. 优化聚类核心参数

  • 下调min_topic_size:当前设置为50,可尝试降至20-30,让更多小簇被识别为有效主题,减少被判定为噪声的帖子数量。
  • 调整UMAP连通性:将n_neighbors从15提升至20-25,增强聚类的连通性,降低孤立点产生的概率。
  • 显式配置HDBSCAN参数:新增hdbscan_model,下调min_samples(比如设为3-5),减少被标记为噪声的样本:
    hdbscan_model = HDBSCAN(min_cluster_size=25, min_samples=3, prediction_data=True)
    

2. 修改主题生成与分配逻辑

  • 避免硬限制主题数量:先不指定nr_topics=140,让模型自然生成主题后,再通过reduce_topics方法合并至140个,防止强制缩减时误删大量有效簇:
    # 先自然生成主题
    topic_model = BERTopic(...)
    topics, probs = topic_model.fit_transform(posts)
    # 再缩减到140个主题
    topic_model.reduce_topics(posts, nr_topics=140)
    
  • 启用概率计算并调整分配阈值:将calculate_probabilities=True,后续通过assign_topics设置更低的min_probability(比如0.1),给低置信度帖子分配主题:
    new_topics = topic_model.assign_topics(posts, min_probability=0.1)
    

3. 优化数据预处理

  • 清理噪声内容:过滤重复帖、空白帖、仅含表情/链接的无效内容,减少干扰聚类的噪声数据。
  • 强化多语言适配:对俄语文本额外使用俄语专用分词工具(如spaCy俄语模型)预处理,提升嵌入向量的语义准确性。

调整后的完整代码示例

from hdbscan import HDBSCAN
from umap import UMAP
from sentence_transformers import SentenceTransformer
from bertopic import BERTopic

# 调整UMAP参数增强连通性
umap_models = UMAP(n_neighbors=20, n_components=5, min_dist=0.0, metric='cosine', random_state=101)

# 配置HDBSCAN减少噪声点
hdbscan_model = HDBSCAN(min_cluster_size=25, min_samples=3, prediction_data=True)

sentence_model = SentenceTransformer("paraphrase-multilingual-mpnet-base-v2")

# 初始化模型,暂不限制主题数量
topic_model = BERTopic(umap_model=umap_models, 
                       hdbscan_model=hdbscan_model,
                       calculate_probabilities=True, 
                       embedding_model=sentence_model, 
                       min_topic_size=25)
topics, probs = topic_model.fit_transform(posts)

# 缩减至目标140个主题
topic_model.reduce_topics(posts, nr_topics=140)

# 对剩余无主题帖子重新分配
new_topics = topic_model.assign_topics(posts, min_probability=0.1)

# 查看主题信息
topic_model.get_topic_info()

验证建议

  • 检查-1类帖子内容:如果是无意义噪声,保留合理;如果是有语义的有效内容,继续下调min_probability或min_samples参数。
  • 重新评估coherence score:确保调整参数后主题质量未出现大幅下降。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:15:07