主题模型--BERTopic python解析

本文介绍了主题模型在自然语言处理中的应用,特别是BERTopic技术,它结合BERT词向量和聚类算法,提供了一种高效的主题建模方法。文章详细阐述了建模流程,包括安装、数据导入、分词、模型创建以及结果查看,展示了BERTopic在文档理解和分析中的优势。
摘要由CSDN通过智能技术生成

一、概念

1.1 主题模型

主题模型(Topic Model)是自然语言处理中的一种常用模型,是一种无监督学习方法,它用于从大量文档中自动提取主题信息。

主题模型的核心思想是,每篇文档都可以看作是多个主题的混合,而每个主题则由一组词构成。

  • 主题模型能够帮助我们理解文档集中的主题结构,有助于文档分类、聚类和信息检索。
  • 主题模型能够将高维的文本数据降维到低维的主题空间,便于后续的分析和处理。

1.2 BERTopic

BERTopic是基于BERT词向量进行主题建模技术,它利用 Transformer 和 c-TF-IDF 来创建密集的集群(分类),允许轻松解释主题,同时在主题描述中保留重要词。

从个人实践效果来看,要优于LDA、BTM等主题模型

BERTopic 可以看作是创建其主题表示的一系列步骤。此过程有五个步骤:

  1. Embeddings:词嵌入,选择预训练模型
  2. Dimensionality Reduction:降维,默认选择UMAP
  3. Clustering:聚类,默认选择HDBSCAN
  4. Vectorizers:将文本中的词语词频矩阵
  5. c-TF-IDF:获得主题的准确表示
  6. Fine-tune Topics:模型微调(可选)
    在这里插入图片描述
    里面涉及到的模型原理后续会分别整理

二、建模流程

使用BERTopic,有两种方式,一种是全部使用默认参数,直接调包运行;另外一种是自己根据实际数据集进行超参数进行调整

2.1 快速入门

直接使用默认的参数进行调用

2.1.1 安装包
pip install bertopic
2.1.2 数据导入
df = pd.read_csv('news.csv')
2.1.3 分词

分词可以实现处理好再进行建模,也可以定义好分词的方法在建模时传入,一般建议先分词在建模,这样可以打印中间分词结果进行检查

在这里插入图片描述

2.1.4 创建模型
from sentence_transformers import SentenceTransformer
from sklearn.feature_extraction.text import CountVectorizer

embedding_model = SentenceTransformer("distiluse-base-multilingual-cased-v1")
vectorizer =  CountVectorizer()

from bertopic import BERTopic

topic_model = BERTopic(embedding_model=embedding_model, vectorizer_model=vectorizer)
topics, probs = topic_model.fit_transform(docs)

训练时如果报错,可参照之前的一篇文章

在这里插入图片描述

2.1.5 查看结果
  • topic_model.get_topic_info 查看各主题信息
    在这里插入图片描述

  • topic_model.visualize_topics() 话题间距离的可视化
    在这里插入图片描述

  • topic_model.visualize_hierarchy(top_n_topics=20) 主题层次聚类可视化

  • topic_model.visualize_barchart(topics=[1]) 显示主题1的词条形图
    在这里插入图片描述

  • topic_model.visualize_heatmap() 主题相似度热力图
    在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy_shenzl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值