PLSI( probabilistic latent semantic indexing ) 词分类,文档分类

磨了我一个星期, 断断续续的看, 断断续续的想。 早上上厕所的时候,终于想通了。或许是对英文理解能力差吧, 发觉其实挺简单的。

LSA对于许多搞IR和NLP的来说应该不陌生吧,LSA用SVD降维,然后来根据word distribution,来分类文档

而LSA的劣势在于,没有比较好的统计基础,这个和当前流行趋势是不相符的。

所以PLSA,用概率模型来做文档分类,或者词聚类。等

要求你有个word dictionary.假设为SETWord ={w1,w2,w3..}

事前定义好的几个分类,例如: SetTopic = {t1, t2, t3...}

最后是一个分类未知的杂合文档集, SetDoc = {d1,d2,d3...}

可以试想,一个作者在写关于某个文档时候的思路

1. 确定要写的一个topic, P(t)

2. 选择一系列的词,这些词要和当前topic t相关的,所以为P(w|t).

3. 用这些词组成一个文档, P(d|w)。

这个是顺德思路。

那么当我们已经得到一堆文档的情况下。我们要反过来想,这个就是PLSI的三步走

1. 在文档集中挑选一篇文档d的概率, P(d)

2. 这篇文档描述内容是关于topic-t的概率: P(t|d)

3. 这个topic中,包含了文档当前内容w的概率: P(w|t)

当然, 可以明显看出最后一条原本应该是:P(w|t,d),而这就是PLSI的假设:文档中字和具体某个文档无关。所以P(w|t,d)==》P(w|t)

那么由于是无监督学习分类过程

p(d,w) = p(d)p(w|d)

p(w|d) = ∑p(w|t)p(t|d) (t∈T)

合并两个方程式,得

p(d,w) = p(d)*∑p(w|t)p(t|d) = ∑p(w|t)p(t|d)p(d)

p(t|d)p(d) = p(t,d) = p(d|t)p(t)

再得p(d,w) = p(d)*∑p(w|t)p(t|d) = ∑p(w|t)p(d|t)p(t) (t∈T)

我们要去求的结果是p(w|t)和p(d|t)..

E-STEP: p(t|d,w) = p(w|t)p(d|t)p(t)/∑( p(w|t')p(d|t')p(t'))

M-STEP:

p(w|t) = ∑(n(d,w)*p(t|d,w))【 - 对于所有的d都计算】/ ∑(n(d,w)*p(t|d,w))【 - 对于所有的 变d, 定w 都计算】

同理p(d|t) = ∑(n(d,w)*p(t|d,w))【 - 对于所有的w都计算】/ ∑(n(d,w)*p(t|d,w))【 - 对于所有的 定d, 变w都计算】

p(z) = ∑(n(d,w)p(z|w,d)),所有的属于z的时候的统计/∑n(d,w)(所有文档,所有分类综合.

直观而言, PLSI输出是两个matrix 和 一个vector

matrix:

p(w|t) 定义了在topic下的一个词的分布。

p(d|t)定义了各个文档在此topic下的分布。

可惜, 当前课题太bt了, 我想plsi只适合大众的,频繁出现的词聚类效果还好, 对于一些古文等, 就力不从心了,因为没有数据、文档。叹口气,继续。 倒了研二,压力好大好大好大好大,求毕业。


有错误的话,请指出,谢谢、

posted on 2011-03-05 11:50  amojry  阅读(4171)  评论(0编辑  收藏  举报