自然语言处理-LDA主题模型

Posted 人工智能和移动开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然语言处理-LDA主题模型相关的知识,希望对你有一定的参考价值。

一、LDA主题模型简介

LDA(Latent Dirichlet Allocation)中文翻译为:潜在狄利克雷分布。LDA主题模型是一种文档生成模型,是一种非监督机器学习技术。它认为一篇文档是有多个主题的,而每个主题又对应着不同的词。一篇文档的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率选出某一个词,这样就生成了这篇文档的第一个词。不断重复这个过程,就生成了整篇文章(当然这里假定词与词之间是没有顺序的,即所有词无序的堆放在一个大袋子中,称之为词袋,这种方式可以使算法相对简化一些)。

二、学派分类

1频率主义学派:万物皆可频。每个事件都有个确定的概率,我们可以通过做实验得到频率,再用这个频率去估计概率。比如,扔硬币,正面向上一定是有个概率的。我们扔了5000次,有2000次正面向上,3000次背面向上,这这个概率就是2/3。该学派对应一个PLSA主题模型,模型假设如下:

1.上帝有两种类型的骰子,一类是doc-topic骰子,每个doc-topic骰子有K个面,每个面都是一个topic的编号;一类是topic-word骰子,每个topic-word骰子有V个面,每个面对应一个词;

2.上帝一共有K个topic-word骰子,每个有一个编号,编号1到K
3.生成每篇文档之前,上帝都先为这篇文章制造一个特定的doc-topic骰子,然后重复如下的文档词语生成过程:投掷这个doc-topic骰子,得到一个topic编号z选择编号为z的topic-word骰子,投掷这个骰子得到一个词。

2贝叶斯学派:但是如果此人只投递了一次,而且正面向上,则此人投递硬币正面向上概率为100%,这种情况显然不是很合理。对于这个问题,我们可以用一个二项分布表示(一系列成功或失败),一个最好的方法来表示这些经验(在统计中称为先验信息)就是用beta分布,这表示在我们没有看到这个运动员打球之前,我们就有了一个大概的范围。beta分布的定义域是(0,1)这就跟概率的范围是一样的。

beta分布与二项分布的共轭先验性质

二项分布:

二项分布即重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布

二项分布的似然函数:           

自然语言处理-LDA主题模型

三、LDA主题模型原理

LDA模型是在PLSA模型的基础上引入了参数的先验知识,也就是假设doctopic的多项分布参数以及topicword的多项分布参数服从狄利克雷分布;

自然语言处理-LDA主题模型

初始时,随机给文本中的每个单词w分配主题z;然后统计每个主题z下出现term t的数量分布以及每个文档m下主题z的数量分布;然后排除当前词的主题分配,根据其他所有词的主题分配估计当前词的主题;用同样的方法不断更新下一个词的主题,直至每个文档下主题的分布以及每个主题下词的分布收敛,算法停止;这里的核心是如何根据其他所有词的主题分配估计当前词的主题,也就是gibbs 采样公式;

对每个D中的文档d,对应到不同主题的概率θd:

<pt1,...,ptk>

其中pti表示d对应k个主题中第i个主题的概率,计算的方法也很简单:

自然语言处理-LDA主题模型

对每个T中的主题T中的主题t,生成不同单词的概率向量ϕt

<pw1,...,pwm>

其中pwi表示主题t生成V中第i个单词的概率。计算方法:

pj(wi|ds)=p(wi|tj)*p(tj|ds)枚举T中的topic,得到所有的pj(wi|ds),其中j取值1~k;然后可以根据这些概率值结果为ds中的第i个单词wi选择一个topic;最简单的想法是取令pj(wi|ds)最大的tj(注意,这个式子里只有j是变量),即argmax[j]pj(wi|ds);然后,如果ds中的第i个单词wi在这里选择了一个与原先不同的topic,就会对θdφt有影响了(根据前面提到过的这两个向量的计算公式可以很容易知道)。它们的影响又会反过来影响对上面提到的p(w|d)的计算;对D中所有的d中的所有w进行一次p(w|d)的计算并重新选择topic看作一次迭代;这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了。最后附一张beautiful的原理图,哈哈!!!



以上是关于自然语言处理-LDA主题模型的主要内容,如果未能解决你的问题,请参考以下文章

自然语言处理--LDA主题聚类模型

LDA主题建模

自然语言处理-主题模型

R语言︱LDA主题模型——最优主题...

Spark:聚类算法之LDA主题模型算法

Python:电商产品评论数据情感分析,jieba分词,LDA模型