主题模型LDA教程:一致性得分coherence score方法对比(umass、c_v、uci)

本文主要是介绍主题模型LDA教程:一致性得分coherence score方法对比(umass、c_v、uci),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 主题建模
        • 潜在迪利克雷分配(LDA)
        • 一致性得分 coherence score
          • 1. CV 一致性得分
          • 2. UMass 一致性得分
          • 3. UCI 一致性得分
          • 4. Word2vec 一致性得分
          • 5. 选择最佳一致性得分

主题建模

主题建模是一种机器学习和自然语言处理技术,用于确定文档中存在的主题。它能够确定单词或短语属于某个主题的概率,并根据它们的相似度或接近度对文档进行聚类。它通过分析文档中单词和短语的频率来实现这一目的。 主题建模的一些应用还包括文本摘要、推荐系统、垃圾邮件过滤器等。

具体来说,目前用于提取主题模型的方法包括潜狄利克特分配法(LDA)、潜语义分析法(LSA)、概率潜语义分析法(PLSA)和非负矩阵因式分解法(NMF)。我们将重点讨论潜狄利克特分配(LDA)的一致性得分。

潜在迪利克雷分配(LDA)

Latent Dirichlet Allocation 是一种无监督的机器学习聚类技术,我们通常将其用于文本分析。它是一种主题建模,其中单词被表示为主题,而文档则被表示为这些单词主题的集合。

总之,这种方法通过几个步骤来识别文档中的主题:

  1. 抽取主题–在主题空间中初始化文档的 Dirichlet 分布,并从文档主题的多叉分布中选择 N 个主题。
  2. 抽取单词并创建文档 - 在单词空间中初始化主题的 Dirichlet 分布,并从主题上单词的多项式分布中为每个先前抽取的主题选择 N 个单词。
  3. 最大化创建相同文档的概率。
    上述算法的数学定义为

在这里插入图片描述

其中 α \alpha α β \beta β 定义了 Dirichlet 分布, θ \theta θ ϕ \phi ϕ 定义了多叉分布, Z Z Z 是包含所有文档中所有单词的主题向量, W W W 是包含所有文档中所有单词的向量, M M M 个文档数, K K K 个主题数和 N N N 个单词数。

我们可以使用吉布斯采样(Gibbs sampling)来完成整个训练或概率最大化的过程,其总体思路是让每个文档和每个单词尽可能地单色。基本上,这意味着我们希望每篇文档的文章数越少越好,每个词属于的主题数越少越好。

一致性得分 coherence score

在主题建模中,我们可以使用一致性得分来衡量主题对人类的可解释性。在这种情况下,主题表示为属于该特定主题概率最高的前 N 个词。简而言之,一致性得分衡量的是这些词之间的相似程度。

1. CV 一致性得分

最流行的一致性度量之一被称为 CV。它利用词的共现创建词的内容向量,然后利用归一化点式互信息(NPMI)和余弦相似度计算得分。这个指标很受欢迎,因为它是 Gensim 主题一致性pipeline模块的默认指标,但它也存在一些问题。即使是该指标的作者也不推荐使用它。

不推荐使用 CV 一致性度量。

2. UMass 一致性得分

我们建议使用 UMass 一致性评分来代替 CV 评分。它计算两个词 w i w_{i} wi w j w_{j} wj 在语料库中同时出现的频率,其定义为
在这里插入图片描述

其中, D ( w i , w j ) D(w_{i}, w_{j}) D(wi,wj) 表示单词 w i w_{i} wi w j w_{j} wj 在文档中同时出现的次数, D ( w i ) D(w_{i}) D(wi) 表示单词 w i w_{i} wi 单独出现的次数。数字越大,一致性得分越高。此外,这一指标并不对称,也就是说 C U M a s s ( w i , w j ) C_{UMass}(w_{i}, w_{j}) CUMass(wi,wj)不等于 C U M a s s ( w j , w i ) C_{UMass}(w_{j}, w_{i}) CUMass(wj,wi)。我们用描述主题的前 N 个词的平均成对一致性得分来计算主题的全局一致性。

3. UCI 一致性得分

该一致性得分基于滑动窗口和所有词对的点互信息,使用出现率最高的 N 个词。我们不计算两个词在文档中出现的频率,而是使用滑动窗口计算词的共现。也就是说,如果我们的滑动窗口大小为 10,那么对于一个特定的词 w i w_{i} wi,我们只能观察到词 w i w_{i} wi 前后的 10 个词。

因此,如果单词 w i w_{i} wi w j w_{j} wj 同时出现在文档中,但它们没有同时出现在一个滑动窗口中,我们就不认为它们是同时出现的。同样,对于 UMass 分数,我们将单词 w i w_{i} wi w j w_{j} wj 之间的 UCI 一致性定义为

在这里插入图片描述

其中, P ( w ) P(w) P(w) 是在滑动窗口中看到单词 w 的概率, P ( w i , w j ) P(w_{i}, w_{j}) P(wi,wj)是单词 w i w_{i} wi w j w_{j} wj 在滑动窗口中同时出现的概率。在原论文中,这些概率是使用 10 个单词的滑动窗口,从 200 多万篇英文维基百科文章的整个语料库中估算出来的。我们计算话题全局一致性的方法与计算 UMass 一致性的方法相同。

4. Word2vec 一致性得分

一个聪明的想法是利用 word2vec 模型来计算一致性得分。这将在我们的得分中引入单词的语义。基本上,我们希望根据两个标准来衡量一致性:

主题内相似性–同一主题中词语的相似性。
主题间相似性–不同主题中词语的相似性。
这个想法非常简单。我们希望主题内相似度最大化,主题间相似度最小化。此外,我们所说的相似性是指 word2vec 嵌入所代表的词与词之间的余弦相似性。

然后,我们计算每个主题的主题内相似度,即该主题中每对可能的前 N 个词之间的平均相似度。随后,我们计算两个主题之间的主题间相似度,即这两个主题中前 N 个词之间的平均相似度。

最后,两个主题 t i t_{i} ti t j t_{j} tj 之间的 word2vec 一致性得分计算公式为
在这里插入图片描述

5. 选择最佳一致性得分

**没有一种方法可以确定一致性得分的好坏。**得分及其价值取决于计算数据。例如,在一种情况下,0.5 的分数可能足够好,但在另一种情况下则不可接受。唯一的规则是,我们要最大限度地提高这个分数。

通常,一致性得分会随着主题数量的增加而增加。随着主题数量的增加,这种增加会变得越来越小。可以使用所谓的肘部技术来权衡主题数量和一致性得分。这种方法意味着将一致性得分绘制成主题数量的函数。我们利用曲线的肘部来选择主题数量。

这种方法背后的理念是,我们要选择一个点,在这个点之后,一致性得分的递减增长不再值得额外增加主题数。n_topics = 3 时的肘截点示例如下:
在这里插入图片描述

elbow rule
此外,一致性得分取决于 LDA 超参数,如 α \alpha α β \beta β K K K。毕竟,手动验证结果是很重要的,因为一般来说,无监督机器学习系统的验证工作都是由人工完成的。

这篇关于主题模型LDA教程:一致性得分coherence score方法对比(umass、c_v、uci)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/390911

相关文章

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@