文本建模系列之二:pLSA

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010223750/article/details/51334584

“庙小妖风大,水浅王八多”。还是这句话,这是业余研究生的文本建模系列之二:关于pLSA。前述就到此。

 

pLSA:Probabilistic Latent Senmantic Indexing.是Hoffman在1999年提出的基于概率的隐语义分析【1】。之所以说是probabilistic,是因为这个模型中还加入了一个隐变量:主题Z ,也正因为此,它被称之为主题模型。

 

在pLSA中,一片文档可能有多个主题,而一个主题对应着多个单词的分布,以【2】LDA数学八卦一文中的描述为例,可以比较生动的阐述在pLSA模型中,一篇文档是如何生成的。



 因此,对于文档d中的一个单词w,其概率可以描述为:

 

 

 

 

 对于整个语料,那么其似然函数是:

 

当然,其对数的似然函数如下:



 其中
 n(d,w)表示在文档d中,单词w出现的次数

 

 带入第一式可以得到对数的似然函数是:



 

 然后现在的问题是:如何求取P(w|z)和P(z|d).

 

这种隐变量的求法和之前的高斯混合分布的求法其实是一样的,很显然的需要EM算法来进行求导。回顾之前的EM算法,我们首先需要求取Q函数的分布的期望,然后另该期望最大化。

 

根据Jessen不等式:

 

 变成求右边下界的问题,需要等号成立的话,需要:



 因此我们得出:


于是E步就是:


有两个约束条件:



 
 
 下面进行M步,也就是求期望最大:

使用拉格朗日乘法求:




 
 

使偏导为零可以得出结果:



 这就求出了我们需要的参数。

 

然后就是重复迭代的过程,直至收敛。

 

 好了,模型已经建立完毕,现在的问题是给出一篇新的文档,如何求取其文档的主题分布呢。当然最直接的想法就是,将该文档丢到语料库中重新爬一遍,然后得出结果,当然这种耗时大一般不建议采用,论文【1】在给出了几种方法,我觉的主要是fold-in方法比较重要:

将训练出来的p(w|z)固定不变,在EM算法中,只有一个文档q,通过迭代跑p(z|d),之后计算相似度​

 

OK,这就是pLSA.

求偏导可以参考【3】

 

参考文献:

[1]Probabilitic Latent Semantic Indexing.Thomas Hofmann .

[2]LDA数学八卦.靳志辉

[3]基于PLSA主题模型的文本聚类

没有更多推荐了,返回首页