照片由 Mikechie 埃斯帕拉戈萨
每天,我们大部分时间都在处理未标记的文本,根本无法使用监督学习算法从数据中提取信息。 自然语言的一个子领域可以揭示大量文本的底层结构。 该学科称为主题建模,专门用于从文本中提取主题。
在这种情况下,传统的方法,如 Latent Dirichlet Allocation 和 Non-Negative Matrix Factorization,被证明不能很好地捕捉单词之间的关系,因为它们是基于词袋的。
出于这个原因,我们将专注于两种有前途的方法,Top2Vec 和 BERTopic,它们通过利用预训练的语言模型来生成主题来解决这些缺点。 让我们开始吧!
Top2Vec 是一种能够通过使用预训练的词向量并创建有意义的嵌入主题、文档和词向量来从文本中自动检测主题的模型。
在这种方法中,提取主题的过程可以分为不同的步骤:
- 创建语义嵌入:创建联合嵌入的文档和词向量。 这个想法是相似的文档应该在嵌入空间中更近,而不同的文档应该在它们之间远离。
- 降低文档嵌入的维度:降维方法的应用对于在减少高维空间的同时保留文档嵌入的大部分可变性很重要。 此外,它允许识别密集区域,其中每个点代表一个文档向量。 UMAP 是这一步中选择的典型降维方法,因为它能够保留高维数据的局部和全局结构。
- 识别文件集群:HDBScan 是一种基于密度的聚类方法,用于查找相似文档的密集区域。 如果每个文档不在密集的集群中,则将其指定为噪声;如果它属于密集区域,则将其指定为标签。
- 计算原始嵌入空间中的质心:质心是通过考虑高维空间而不是减少的嵌入空间来计算的。 经典策略包括计算属于密集区域的所有文档向量的算术平均值,这些文档向量是在上一步中使用 HDBSCAN 获得的。 这样,就为每个聚类生成了一个主题向量。
- 为每个主题向量查找单词:离文档向量最近的词向量在语义上最具代表性。
Top2Vec 的例子
在本教程中,我们将从一个可用的数据集中分析麦当劳的负面评论 数据世界. 从这些评论中确定主题对于跨国公司改进数据提供的美国地点的这家快餐连锁店的产品和组织可能很有价值。
import pandas as pd
from top2vec import Top2Vec file_path = "McDonalds-Yelp-Sentiment-DFE.csv"
df = pd.read_csv( file_path, usecols=["_unit_id", "city", "review"], encoding="unicode_escape",
)
df.head()
docs_bad = df["review"].values.tolist()
在一行代码中,我们将执行前面解释的 top2vec 的所有步骤。
topic_model = Top2Vec( docs_bad, embedding_model="universal-sentence-encoder", speed="deep-learn", tokenizer=tok, ngram_vocab=True, ngram_vocab_args={"connector_words": "phrases.ENGLISH_CONNECTOR_WORDS"},
)
Top2Vec 的主要参数是:
- docs_bad:是一个字符串列表。
- universal-sentence-encoder:是选择的预训练嵌入模型。
- deep-learn:是决定生成文档向量质量的参数。
topic_model.get_num_topics() #3
topic_words, word_scores, topic_nums = topic_model.get_topics(3) for topic in topic_nums: topic_model.generate_topic_wordcloud(topic)
最多
从词云中,我们可以推断出主题0是关于麦当劳服务的普遍抱怨,如“服务慢”、“服务差”和“点错了”,而主题1和2分别指的是早餐食品( McMuffin、饼干、鸡蛋)和咖啡(冰咖啡和杯装咖啡)。
现在,我们尝试使用两个关键字来搜索文档,wrong 和 slow:
( documents, document_scores, document_ids,
) = topic_model.search_documents_by_keywords( keywords=["wrong", "slow"], num_docs=5
)
for doc, score, doc_id in zip(documents, document_scores, document_ids): print(f"Document: {doc_id}, Score: {score}") print("-----------") print(doc) print("-----------") print()
输出:
Document: 707, Score: 0.5517634093633295
-----------
horrible.... that is all. do not go there.
----------- Document: 930, Score: 0.4242547340973836
-----------
no drive through :-/
----------- Document: 185, Score: 0.39162203345993046
-----------
the drive through line is terrible. they are painfully slow.
----------- Document: 181, Score: 0.3775083338082392
-----------
awful service and extremely slow. go elsewhere.
----------- Document: 846, Score: 0.35400602635951994
-----------
they have bad service and very rude
-----------
“BERTopic 是一种主题建模技术,它利用转换器和 c-TF-IDF 创建密集的集群,允许易于解释的主题,同时在主题描述中保留重要的单词。”
顾名思义,BERTopic 利用强大的转换器模型来识别文本中出现的主题。 该主题建模算法的另一个特点是使用了 TF-IDF 的变体,称为 TF-IDF 的基于类的变体。
和 Top2Vec 一样,它不需要知道主题的数量,而是自动提取主题。
此外,与 Top2Vec 类似,它是一种涉及不同阶段的算法。 前三个步骤是相同的:创建嵌入文档、使用 UMAP 进行降维以及使用 HDBScan 进行聚类。
连续的阶段开始偏离 Top2Vec。 在使用 HDBSCAN 找到密集区域后,每个主题都被标记为词袋表示,它会考虑该词是否出现在文档中。 在属于一个簇的文档被认为是一个唯一文档并应用 TF-IDF 之后。 因此,对于每个主题,我们确定最相关的词,它们应该具有最高的 c-TF-IDF。
BERTopic 示例
我们对同一个数据集重复分析。
我们将使用 BERTopic 从评论中提取主题:
model_path_bad = 'model/bert_bad'
topic_model_bad = train_bert(docs_bad,model_path_bad)
freq_df = topic_model_bad.get_topic_info()
print("Number of topics: {}".format( len(freq_df)))
freq_df['Percentage'] = round(freq_df['Count']/freq_df['Count'].sum() * 100,2)
freq_df = freq_df.iloc[:,[0,1,3,2]]
freq_df.head()
模型返回的表提供了有关提取的 14 个主题的信息。 主题对应于主题标识符,除了所有被忽略的标记为 -1 的异常值。
现在,我们将转到关于将主题可视化为交互式图形的最有趣的部分,例如每个主题最相关术语的可视化、主题间距离图、嵌入空间的二维表示和主题层次结构。
让我们开始显示前十个主题的条形图。 对于每个主题,我们可以观察到最重要的词,这些词根据 c-TF-IDF 得分降序排列。 一个词越相关,得分越高。
第一个主题包含通用词,如位置和食物,主题 1 订购和等待,主题 2 最差和服务,主题 3 地点和肮脏,广告等。
可视化条形图后,是时候查看主题间距离图了。 我们将 c-TF-IDF 分数的维度降低到二维空间中,以可视化图中的主题。 在底部,有一个滑块允许选择将以红色着色的主题。 我们可以注意到,这些主题分为两个不同的集群,一个具有通用主题,如食物、鸡肉和位置,另一个具有不同的负面方面,如最差的服务、肮脏、地点和寒冷。
下图允许查看评论和主题之间的关系。 特别是,了解为什么将评论分配给特定主题并与找到的最相关的词对齐可能很有用。 例如,我们可以关注红色集群,对应主题 2,其中包含一些关于最差服务的词。 这个密集区域的文件看起来很负面,比如“糟糕的客户服务,甚至更糟糕的食物”。
乍一看,这些方法有很多共同点,比如自动发现主题的数量,大多数情况下不需要预处理,应用 UMAP 来降低文档嵌入的维度,然后使用 HDBSCAN对这些减少的文档嵌入进行建模,但是在查看它们将主题分配给文档的方式时,它们是根本不同的。
Top2Vec 通过查找靠近集群质心的词来创建主题表示。
与 Top2Vec 不同,BERTopic 不考虑集群的质心,而是将集群中的所有文档视为唯一文档,并使用基于类的 TF-IDF 变体提取主题表示。
顶级2Vec | BER话题 |
基于簇质心提取主题的策略。 | 基于c-TF-IDF的主题抽取策略。 |
它不支持动态主题建模。 | 它支持动态主题建模。 |
它为每个主题构建词云,并提供主题、文档和单词的搜索工具。 | 它允许构建交互式可视化图,允许对提取的主题进行解释。 |
主题建模是自然语言处理的一个不断发展的领域,有许多可能的应用,如评论、音频和社交媒体帖子。 如前所述,本文概述了 Topi2Vec 和 BERTopic,这是两种很有前途的方法,可以帮助您用几行代码识别主题并通过数据可视化解释结果。 如果您对这些技术有疑问,或者您对其他检测主题的方法有其他建议,请将其写在评论中。
尤金妮娅·阿内罗 现为意大利帕多瓦大学信息工程系研究员。 她的研究项目专注于结合异常检测的持续学习。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://www.kdnuggets.com/2023/01/topic-modeling-approaches-top2vec-bertopic.html?utm_source=rss&utm_medium=rss&utm_campaign=topic-modeling-approaches-top2vec-vs-bertopic
- 1
- 10
- 100
- 7
- a
- Able
- 关于
- 账号管理
- Ad
- 地址
- 后
- 算法
- 算法
- 对齐的
- 所有类型
- 分配
- 允许
- 允许
- 量
- 分析
- 分析
- 和
- 异常检测
- 另一个
- 应用领域
- 应用领域
- 应用的
- 的途径
- 方法
- 国家 / 地区
- 地区
- 参数
- 刊文
- 方面
- 分配
- 音频
- 自动
- 可使用
- 坏
- 酒吧
- 基于
- 因为
- 之间
- 半身裙/裤
- 早餐
- 建筑物
- 建立
- 计算
- 被称为
- 不能
- 能力
- 捕获
- 例
- 链
- 特点
- 图表
- 选择
- 城市
- 经典
- 关闭
- 接近
- 簇
- 集群
- 码
- 咖啡
- 结合
- 注释
- 相当常见
- 投诉
- 考虑
- 考虑
- 包含
- 上下文
- 常规
- 相应
- 对应
- 创建信息图
- 创建
- 创建
- 创造
- 创建
- 杯
- 目前
- 顾客
- 客户服务
- data
- 天
- 处理
- 证明
- 问题类型
- 检测
- 确定
- 不同
- 距离
- 遥远
- 偏离
- 文件
- 文件
- 不会
- 缺点
- 驾驶
- 开车穿过
- 动态
- 每
- 容易
- 别处
- 嵌入式
- 工程师
- 甚至
- 例子
- 除
- 解释
- 提取
- 提取物
- 非常
- 高效率
- 同伴
- 少数
- 部分
- 找到最适合您的地方
- 寻找
- 姓氏:
- 专注焦点
- 重点
- 食品
- 发现
- 止
- 从根本上
- 其他咨询
- 生成
- 产生
- 得到
- 全球
- Go
- 去
- 图形
- 图表
- 成长
- 帮助
- 等级制度
- 高
- 更高
- 最高
- HTTPS
- 主意
- 鉴定
- 识别码
- 鉴定
- 确定
- 进口
- 重要
- 改善
- in
- 信息
- 代替
- 互动
- 有趣
- 解释
- IT
- 意大利
- 掘金队
- 保持
- 知道
- 标签
- 语言
- 大
- 学习
- 杠杆
- Line
- 线
- 清单
- 本地
- 位于
- 圖書分館的位置
- 地点
- 看
- 寻找
- 主要
- 许多
- 地图
- 矩阵
- 麦当劳
- 有意义的
- 媒体
- 模型
- 造型
- 造型
- 模型
- 更多
- 最先进的
- 跨国公司
- 姓名
- 自然
- 自然语言
- 自然语言处理
- 需求
- 负
- 下页
- 噪声
- 数
- 众多
- 观察
- 获得
- 一
- 秩序
- 组织
- 原版的
- 其他名称
- 大熊猫
- 参数
- 部分
- 特别
- 百分比
- 演出
- 短语
- 地方
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 点
- 可能
- 帖子
- 强大
- 当下
- 以前
- 先前
- 处理
- 生成
- 热销产品
- 项目
- 有希望
- 提供
- 提供
- 质量
- 有疑问吗?
- 原因
- 红色
- 减少
- 减少
- 减少
- 关于
- 关系
- 关系
- 相应
- 重复
- 表示
- 代表
- 代表
- 研究
- 成果
- 揭示
- 检讨
- 评论
- 同
- 搜索
- 搜索
- 选择
- 服务
- 应该
- 显示
- 如图
- 视力
- 类似
- 同样
- 自
- 单
- 滑块
- 放慢
- So
- 社会
- 社会化媒体
- 社交媒体帖子
- 一些
- 太空
- 专门
- 具体的
- 分裂
- 步
- 步骤
- 策略
- 结构体
- 这样
- 提示
- 监督学习
- SUPPORT
- 支持
- 表
- 采取
- 需要
- 技术
- 十
- 条款
- 那里。
- 三
- 通过
- 次
- 至
- 符号化
- 工具
- 最佳
- 前十
- 主题
- Topics
- 变形金刚
- 教程
- 普遍
- 相关
- 理解
- 独特
- 大学
- 美国
- 使用
- 有价值
- 价值观
- 变种
- 可视化
- 等待
- 这
- 而
- 虽然
- 将
- 中
- Word
- 话
- 最差
- 写
- 错误
- 和风网