涉及概念
嵌入模型
- 将文本转化为语义向量
- paraphrase-multilingual-MiniLM-L12-v2
- 将句子/文档编码为稠密向量(如384维)
- 捕获深层语义(相比传统TF-IDF)
- 支持多语言文本处理
KeyBERT 表示模型
- 提升主题关键词质量
- 基于BERT嵌入计算词-文档相似度
- 提取与主题最相关的关键词
GPT
- 生成人类可读的主题标签
向量化器 (CountVectorizer)
- 构建文本的词汇级特征
UMAP降维模型
- 将高维的文本嵌入向量(如BERT生成的768维向量)降维到低维空间(如2维或5维),便于后续聚类。
- n_neighbors:控制局部与全局结构的平衡,值越小越关注局部特征。
- min_dist=0.0:允许降维后的点重叠,更适合紧密的聚类。
- metric='cosine':适合文本数据,忽略向量长度,专注方向相似性。
HDBSCAN聚类模型
- 在降维后的空间中识别密度不同的主题簇,自动发现主题数量
- min_cluster_size:避免过小主题,值越大主题越通用。
- eom(Excess of Mass):倾向于选择更稳定的聚类,适合主题建模。
- min_samples:值越大,聚类越保守(噪声可能增多)。
BERTopic主题建模模型
- 整合嵌入、降维、聚类流程,生成人类可解释的主题。
- 端到端流程:从原始文本到主题标签全自动处理。
- 适用于中文、英文等混合语料。
- 默认用c-TF-IDF提取关键词,也可用representation_model增强(如GPT生成更自然的主题描述)。
- 灵活性:允许替换任一组件(如用t-SNE替代UMAP)。
协作流程

主题的构成
- 关键词列表:通过算法(如c-TF-IDF或LLM)从属于该主题的文档中提取的代表性词汇。 例如:一个主题的关键词可能是["疫苗", "接种", "副作用", " Pfizer"]。
- 语义表示:隐含的语义空间(由嵌入模型和降维聚类共同决定),可能无法直接显示,但通过关键词和文档分布反映
关键词如何生成?
BERTopic默认使用 c-TF-IDF(class-based TF-IDF)提取关键词:
- 原理:将每个主题视为一个“类”(class),计算该类中所有文档的词频,并与全局词频对比,选出区分度高的词。
- 关键词的权重既考虑主题内频率,也考虑全局罕见性。
主题 ≠ 关键词
- 主题本质上是语义相似的文档簇,关键词只是对簇内文档的“文字化摘要”。同一主题的文档可能有不同的表面词汇但共享深层语义。
- 关键词会根据文档分布动态调整。如果新文档加入,关键词可能变化,但主题的语义核心可能不变。
- 如果用representation_model(如GPT),主题描述可以是自然语言句子,而非单纯关键词列表。 例如:GPT生成的主题描述可能是 “该主题讨论新冠疫苗接种相关话题,包括品牌(如Pfizer)、接种流程和副作用反馈”。