主题建模技术介绍-机器学习模型的自然语言处理方法

2020-12-31 10:55:04 浏览数 (1)

主题模型(topic model)是以非监督学习的方式对文集的隐含语义结构(latent semantic structure)进行聚类(clustering)的统计模型。

主题建模是自然语言处理(NLP)中用于训练机器学习模型的一种方法。它是指从文档中逻辑地选择属于某个主题的单词的过程。

从业务的角度来看,主题建模提供了极大的节省时间和精力的好处。例如,想要确定改进之处的公司可以进行一项调查,要求用户对他们的服务进行评级,并解释每个评级。主题模型可以通过将信息归类到诸如“评级较低的最常见原因”这样的主题来快速跟踪这种分析。

主题建模技术

主题建模是关于几个词之间的逻辑关联。比方说,一家电信运营商想要确定糟糕的网络是否是客户满意度低的一个原因。这种情况下 “不良网络”就是主题。分析文档中像“坏”,“慢速”,“呼叫未连接”等词,这些词更有可能描述网络问题,需要排除掉像“或”、“和”等常见无意义的词汇。

主题建模最常用的三种技术是:

1. 潜在语义分析(LSA)

潜在语义分析(LSA)的目的是利用词语周围的上下文,以捕获隐藏的概念或主题。LSA最初是用在语义检索上,为了解决一词多义和一义多词的问题。

在这种方法中,机器使用Term Frequency- inverse Document Frequency (TF-IDF)来分析文档。TF-IDF是一种反映一个词在语料库中对一个文档的重要性的数字统计。

为了能够解决这个问题,需要将词语(term)中的concept提取出来,建立一个词语和概念的关联关系(t-c relationship),这样一个文档就能表示成为概念的向量。这样输入一段检索词之后,就可以先将检索词转换为概念,再通过概念去匹配文档。

假设有一个“m”文本文档的集合,每个文档共有“n”个独特的单词。TF-IDF矩阵- m*n -包含文档中每个单词的TF-IDF分数。然后这个矩阵被简化为“k”维数,k是所需的主题数。利用奇异值分解(SVD)进行约简。SVD矩阵分解成其他三个矩阵,如下图所示:

这个分解通过方程a = USVT提供了整个集合中每个文档中的每个单词术语的向量表示。

通过对大量的文本集进行统计分析,从中提取出词语的上下文使用含义。技术上通过SVD分解等处理,消除了同义词、多义词的影响,提高了后续处理的精度。 流程: (1)分析文档集合,建立词汇-文本矩阵A。 (2)对词汇-文本矩阵进行奇异值分解。 (3)对SVD分解后的矩阵进行降维 (4)使用降维后的矩阵构建潜在语义空间

利用余弦相似度法,SVD矩阵可以用来寻找相似的主题和文档。

LSA的主要缺点:

LSA可以处理向量空间模型无法解决的一义多词(synonymy)问题,但不能解决一词多义(polysemy)问题。因为LSA将每一个词映射为潜在语义空间中的一个点,也就是说一个词的多个意思在空间中对于的是同一个点,并没有被区分。

特征向量的方向没有对应的物理解释。

SVD的计算复杂度很高,而且当有新的文档来到时,若要更新模型需重新训练。

此外,它还需要大量的语料库才能产生准确的结果。

2. 概率潜在语义分析(pLSA)

概率潜在语义分析(PLSA)模型其实是为了克服潜在语义分析(LSA)模型存在的一些缺点而被提出的。LSA 的一个根本问题在于,尽管我们可以把 Uk 和 Vk 的每一列都看成是一个话题,但是由于每一列的值都可以看成是几乎没有限制的实数值,因此我们无法去进一步解释这些值到底是什么意思,也更无法从概率的角度来理解这个模型。而寻求概率意义上的解释则是贝叶斯推断的核心思想之 一。引入概率潜在语义分析(pLSA),用概率模型代替奇异值分解(SVD)来解决LSA中的表示问题。

pLSA用概率表示TF-IDF矩阵中的每个条目。

P(D,W) = P(D)∑P(Z|D)P(W|Z)提供了一个联合概率,表明基于主题分布的文档中找到某个单词的可能性有多大。

P(D,W) =∑P(Z)P(D|Z)P(W|Z) -表示文档包含给定主题以及文档中某个单词属于给定主题的概率。

3.潜在狄利克雷分配(LDA)

潜在狄利克雷分配(LDA)是pLSA的贝叶斯版本。事实上,理解了pLSA模型,也就差不多快理解了LDA模型,因为LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本。

核心概念被狄利克雷分配所取代,其中分布是在一个单纯的概率上抽样。概率单纯形表示一组加起来等于1的数字。当集合由三个数组成时,称为三维狄利克雷分布。

在 LDA 中,首先每一个文档都被看成跟有限个给定话题中的每一个存在着或多或少的关联性,而这种关联性则是用话题上的概率分布来刻画的, 这一点与 PLSA 其实是一致的。

但是在 LDA 模型中,每个文档关于话题的概率分布都被赋予了一个先验分布,这个先验一般是用稀疏形式的狄利克雷分布表示的。这种稀疏形式的狄利克雷先验可以看成是编码了人类的这样一种先验知识:一般而言,一篇文章的主题更有可能是集中于少数几个话题上,而很少说在单独一篇文章内同时在很多话题上都有所涉猎并且没有明显的重点。

如何使用LDA?

LDA模型主要用于对特定主题下的文档文本进行分类。对于每个文档,它构建一个主题并包含相关的单词,LDA建模。LDA被证明可以为主题建模用例提供准确的结果。但是,它首先需要对某些文件进行修改和预处理,如下所述:

步骤1:选择合适的库文件

根据任务的不同,使用以下库:

Pandas:用于数据操作和分析的

Genism:用于大型文档中的文档索引和相似度检索

pyLDAvis:用于交互式主题建模可视化

根据用例的不同,Parsivar和Hazm充当波斯语的NLP库

步骤2:对数据进行预处理

在被模型使用之前,文档必须通过以下每一个步骤进行预处理:

Normalization -将文本转换为标准/规范形式

Stemming-将一个单词缩减为它的词干/词根,没有后缀和前缀

Stopwordremoval -删除不添加任何逻辑意义的单词

Tokenization ——将文本分解为“tokens”,即单词和短语

这有助于模型识别单词并将它们分配到正确的主题上。

步骤3:构建字典

预处理的输出文本用于构建字典和语料库,这些语料库反过来成为主题建模的LDA模型的输入。

主题的数量(k)设置为10。在第一次运行时,其余参数被设置为“默认”。

第四步:测试准确性

相干矩阵用于检验模型的准确性。主题一致性是一种基于人类可解释性比较不同主题模型的度量方法。相干性得分“C_V”为主题的可解释性提供了一个数值。

在上图中,coherence得分为0.52。

企业应该构建许多具有不同“k”值的LDA模型。正确的模式将拥有最高的连贯性得分。虽然选择高k值可以提供细粒度的子主题,但关键词的重复表明k值太大了。因此,正确的“k”值将最小化话题连贯性的快速增长。

第五步:可视化的话题

通过交互的pyLDAvis工具,可以更好地可视化主题的最佳数量。pyLDAvis显示主题的数量、重叠主题以及给定主题中包含的所有单词,以便用户采取必要的操作。

第六步:优化主题

在这一步中,超参数被调优以优化主题的数量。运行alpha(文档-主题密度)、k和beta(主题-词密度)的不同组合,计算它们的相干性得分。结合相干度最高的得分建立LDA模型。

对于本文解释的LDA模型,最优参数为:

Number of topics = 6

Alpha = asymmetric

Beta/eta = 0.31

在用这些参数配置模型之后,可以测试它是否能够预测任何看不见的文本文档的主题。

测试结果可视化如下:

因为这是狄利克雷分配,所有概率加起来是1。图上显示topic 1的值最高- 0.66,即文档属于topic 1的概率最高。

读取LDA模型结果

本文使用的LDA模型的相干性得分为0.52(如图6所示),说明该模型在主题建模方面表现得相当好。如果相干度得分为0.85及以上,则模型中出现过拟合的几率很高。

LDA模型没有将主题标识为独立的单词。相反,它提供了最可能的主题的概率。因此,用户需要从模型提供的单词集确定一个逻辑主题,并将主题编号与用户标识的主题名称进行映射。这整个过程称为主题建模。

结论

LSA、概率LSA和LDA是三种常用的主题建模方法。由于LDA能够构建有效的字典并使用以前的学习来预测新文档集中的主题,因此它是高级主题建模的推荐模型。

0 人点赞