项目介绍:BERTopic
BERTopic 是一种主题建模技术,利用了变压器(transformers)和改进的 TF-IDF(c-TF-IDF)算法来创建密集的主题簇。这种方法使得主题的解释变得更加容易,同时保留了主题描述中的重要词汇。
支持的主题建模技术
BERTopic 拥有多种主题建模技术,能够满足不同需求,包括:
- 指导主题建模(Guided): 利用先验信息引导建模方向。
- 监督主题建模(Supervised): 通过已有的标签进行主题监督分类。
- 半监督主题建模(Semi-supervised): 混合无监督学习和监督学习。
- 手动主题建模(Manual): 手动定义和管理主题。
- 多主题分布(Multi-topic distributions): 处理一个文档中可能存在的多个主题。
- 层次主题建模(Hierarchical): 创建主题的层次结构。
- 基于类别(Class-based): 针对特定类别进行主题建模。
- 动态主题建模(Dynamic): 随时间变化的主题研究。
- 在线增量(Online/Incremental): 增量地处理新文档,以适应变化。
- 多模态(Multimodal): 利用文本和图像等多种数据源进行建模。
- 多面话题表示(Multi-aspect): 探索多角度的主题表现。
- 从零开始(Zero-shot): 无需训练即可开展初步的主题分类。
- 模型合并(Merge Models): 将多个主题模型合并以提高性能。
- 种子词(Seed Words): 初始话题定义通过种子词指定。
安装方法
用户可以通过多种方式安装 BERTopic:
- 基础安装:
pip install bertopic
- 使用其他嵌入模型:
pip install bertopic[flair,gensim,spacy,use]
- 支持图片主题建模:
pip install bertopic[vision]
快速开始
使用带有 20 新闻组数据集的经典示例开始:
from bertopic import BERTopic
from sklearn.datasets import fetch_20newsgroups
docs = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes'))['data']
topic_model = BERTopic()
topics, probs = topic_model.fit_transform(docs)
这个示例展示了如何从文本中提取主题,并获取主题的相关信息。
可视化功能
BERTopic 提供了多种可视化选项,使得用户能够以一种类似于 LDAvis 的方式直观地了解提取的主题之间的关系:
topic_model.visualize_topics()
模块化设计
BERTopic 的设计非常模块化,从文本嵌入、减维、聚类到主题表示的各个步骤均可独立替换和配置:
- 文档嵌入
- 降维
- 聚类
- 话题标记
- 词权重计算
- 主题呈现
常见功能概览
.fit(docs)
:训练模型.fit_transform(docs)
:训练模型并预测文档.transform([new_doc])
:预测新文档.get_topic(topic=12)
:访问单个主题.visualize_topics_over_time(topics_over_time)
:可视化时间上的主题变化
引用
如果您希望引用 BERTopic 的论文,可以使用以下引用格式:
@article{grootendorst2022bertopic,
title={BERTopic: Neural topic modeling with a class-based TF-IDF procedure},
author={Grootendorst, Maarten},
journal={arXiv preprint arXiv:2203.05794},
year={2022}
}
BERTopic 提供灵活且强大的主题建模工具,通过简化复杂文本数据的主题分析,帮助用户更好地理解文本数据的内在结构。