[一些翻译和整合] Topic Model-主题模型

一、.概述

1.主题

对于一篇长文章而言,往往从中抽取一些关键词,就可以知道文章的主题思想。当我们阅读完一篇长文时,可以从中抽取关键词,这些关键词基本可以概括文章大意。

然而两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。

比如下面两句话:

第一个是:“乔布斯离我们而去了。”
第二个是:“苹果价格会不会降?”

如果由人来判断,我们一看就知道,这两个句子之间虽然没有任何公共词语,但仍然是很相关的。这是因为,虽然第二句中的“苹果”可能是指吃的苹果,但是由于第一句里面有了“乔布斯”,我们会很自然的把“苹果”理解为苹果公司的产品。

那么人是如何去判断上面两句话是相关的呢?是什么成为了这两句话相关联系的桥梁?

[一些翻译和整合] Topic Model-主题模型

 

事实上,对于每一段文字,我们可以提取一个抽象概念,这份抽象概念就是主题。

“苹果”这个词的背后既包含是苹果公司这样一个主题,也包括了水果的主题。当我们和第一句进行比较时,苹果公司这个主题就和“乔布斯”所代表的主题匹配上了,因而我们认为它们是相关的。

2.主题模型

顾名思义,主题模型就是对文字中隐含主题的一种建模方法。

所有的主题模型都基于以下两个基本假设:

    (1).每个文档都由若干主题组成;

    (2).每个主题由一系列关键词组成。

二、模型

1.LSA模型

Latent Semantic Analysis(隐语义分析),是众多主题模型中最基本的一个。它的核心思想是将文档-关键词矩阵分解为文档-主题和主题-关键词两个矩阵。

假设我们有m个文档,这些文档中总共有n个关键词,那么我们可以构建个m*n的矩阵。该矩阵的每一行代表一篇文档,每一列代表一个关键词。最简单的文档-关键词矩阵构造方法是直接用一个词在文档中出现的次数作为矩阵元素,即元素eij代表第j个词在第i个文档中出现的次数。在实践中,由于每个关键词的重要性并不一样,用上述方法构造文档-关键词矩阵往往效果不好。因此,通常的做法是用tf-idf的分数作为矩阵的元素。

[一些翻译和整合] Topic Model-主题模型

根据上述方法构造的文档-关键词矩阵A往往非常稀疏并且维数很高。为了抽取描述文档与关键词关系的若干主题,我们需要对A进行降维。

 

这时候,矩阵分解就派上用场了。利用线性代数里的SVD(奇异值分解),就可以对A进行降维。

这里我们复习选SVD,对于任意一个矩阵M,它可以分解为三个矩阵相乘的形式:M=U*S*V,其中S为对角矩阵,对角线上的值为M的奇异值点。

实际中,为节省计算量,我们常使用truncated SVD,即只选取t个最大的奇异值点。

那么,有:

[一些翻译和整合] Topic Model-主题模型

 

如此下来,U ∈ ℝ^(m ⨉ t)就是我们的文档-主题矩阵, V ∈ ℝ^(n ⨉ t)就是我们的关键词-主题矩阵。

U的行向量代表文档向量,行向量的每个值对应主题的权重。

V的行向量代表关键词向量,行向量的每个值对应主题的权重。

2.PLSA模型

Probabilistic Latent Semantic Analysis(概率隐语义分析)采用概率模型代替上面的SVD方法。

我们希望找到一个概率模型P(D,W) ,对于每篇文档d和关键词w,P(d,w)对应文档-关键词矩阵中对应的值。

在第一章概述我们提到过,主题模型有两个假设,即每篇文档由若干主题构成;每个主题包含若干个关键词。

PLSA从概率的角度重新诠释了这两个假设,即:

(1)对于给定的文档d,  该文档包含主题z的概率为P(z|d);

(2)对于定的主题z, 该主题包含关键词w的概率为P(w|z).

[一些翻译和整合] Topic Model-主题模型

 

那么,对于给定的文档d,d包含关键字w的概率为:

[一些翻译和整合] Topic Model-主题模型

 

在PLSA中,上述式子中的 P(D), P(Z|D), 和 P(W|Z) 就是我们PLSA的参数。其中P(D)可以直接从我们的训练样本中的到。

 P(Z|D) 和 P(W|Z)是多项式分布,可以用EM(期望最大化算法)解得。

在上面的式子中,我们首先确定文档的概率分布P(d), 然后根据P(z|d)生成主题z,再根据P(w|z)生成关键词w。

我们其实也可以调换顺序,比如,先确定主题z, 得到主题z的概率为P(z);在主题z的前提下,生成文档d(概率为P(d|z))何关键词w(概率为P(w|z))。

那么,根据以上的生成顺序对于P(D,W),我们也可以写成以下形式:

[一些翻译和整合] Topic Model-主题模型

 

两种生成顺序如下图所示:

[一些翻译和整合] Topic Model-主题模型

 

我们将上面的式子与LSA模型比较,可以发现PLSA与LSA其实是相对应的。

[一些翻译和整合] Topic Model-主题模型

 

PLSA的问题:

(1)因为没有参数去模拟P(D),我们无法确定新文档的概率;

(2)PLSA的参数规模与文档数呈线性关系,随着文档树的增长,PLSA可能会过拟合。

实际中, 很少会用PLSA。

3.LDA模型

Latent Dirichlet Allocation(隐含狄利克雷分布模型)是PLSA的贝叶斯版本(概率论分频率学派和贝叶斯学派),它采用狄利克雷分布 作为文档-主题和关键词-主题的概率分布。简单地理解起来,狄利克雷分布 就是分布的分布,即假设我们有好几种概率分布,对于其中的每一种分布,我们能够以一定的概率观察到。

假设现在我们有三篇不同主题的文档,现在我们来模拟这三篇文档的生成过程。

由于这三篇文档主题不同,那么每篇文档的文档-主题的分布应该是主主题的概率大,其他主题的概率值很小。现在假设我们只有三个主题A,B,C。那么从文档X,Y,Z观察到的分布分别是:

 

  • 文档 X: 90% topic A, 5% topic B, 5% topic C
  • 文档 Y: 5% topic A, 90% topic B, 5% topic C
  • 文档 Z: 5% topic A, 5% topic B, 90% topic C

现在,我们对单一主题设置较大的权重,从该狄利克雷分布中随机抽取一个分布,那么我们很有可能得到这样的一个分布,这个分布与文档X,Y,Z其中一个文档的分布相似。

现在我们回顾下PLSA

[一些翻译和整合] Topic Model-主题模型

 

在PLSA中,我们对一篇文档采样,根据该文档选择一个主题,然后根据主题选择一个关键词。

而在LDA中,如下图示:

[一些翻译和整合] Topic Model-主题模型

 

我们从一个狄利克雷分布Dir(α)中,选取一个主题分布 θ,根据 θ,我们选取一个主题 Z。

从另一个狄利克雷分布Dir(????)中, 选取一个Z 主题的关键词分布 φ, 根据φ, 我们选取一个关键词 w 。

 

由于LDA可以很容易地泛化至新的文档,LDA的效果往往比PLSA要好。

4. lda2vec

lda2vec结合了word2vec 和 LDA, 综合学习词向量、文档向量和主题向量。

三、应用

1.相似度计算

有了用主题描述的文档向量和关键词向量后,我们就可以评估:

(1).文档之间的相似性

(2).关键词之间的相似性

2.物品打标签&用户打标签

为物品计算出其对应的主题,以及主题下面对应的词分布之后,我们可以选取概率最大的几个主题,然后从这几个主题下选取概率最大的几个词,作为这个物品的标签。在此基础上,如果用户对该物品发生了行为,则可以将这些标签传播到用户身上。

3. 排序特征

4.直接对用户行为建模进行推荐

LSA/pLSA/LDA这些主题模型的核心基础是词在文档中的共现,在此基础上才有了各种概率分布,把握住这个核心基础,就可以找到文本主体模型的更多应用。例如,协同过滤问题中,基础数据也是用户对物品的共同行为,这也构成了文本主题模型的基础,因此也可以使用LDA对用户对物品的行为进行建模,得到用户行为的主题,以及主题下对应的物品,然后进行物品/用户的推荐。

四、主题&词的重要性度量

LDA训练生成的主题中,虽然都有着同等的位置,但是其重要性却是各不相同的,有的主题包含了重要的信息,有的则不然。例如,一个主题可能包含“教育、读书、学校”等词,和这样主题相关的文档,一般来说是和教育相关的主题,那么这就是一个信息量高的主题;相反,有的主题可能会包含“第一册、第二册、第三册……”等词(如果在一个图书销售网站的所有图书上训练LDA,就有可能得到这样的主题,因为有很多套装图书都包含这样的信息),和这样主题相关的文档却有可能是任何主题,这样的主题就是信息量低的主题。

如何区分主题是否重要呢?从上面的例子中我们可以得到启发:重要的主题不会到处出现,只会出现在小部分与之相关的文档中,而不重要的主题则可能在各种文章中都出现。基于这样的思想,我们可以使用信息熵的方法来衡量一个主题中的信息量。通过对LDA输出信息做适当的变换,我们可以得到主题θi在不同文档中的概率分布,然后我们对这个概率分布计算其信息熵,通俗来讲信息熵衡量了一个概率分布中概率值分散程度,越分散熵越大,越集中熵越小。所以在我们的问题中,信息熵越小的主题,说明该主题所对应的文档越少,主题的重要性越高。

 

附录

Topic Modeling with LSA, PLSA, LDA & lda2Vec

https://blog.****.net/liuweiyuxiang/article/details/89578286

一文详解LDA主题模型

自然语言处理技术(NLP)在推荐系统中的应用