PLSI主题模型
来源:互联网 发布:淘宝网儿童棉睡衣 编辑:程序博客网 时间:2024/06/07 04:07
一、主题模型是什么
在讲PLSI主题模型前,我们先来看一个例子,理解一下什么是主题模型。这有两句话,第一句是‘乔布斯离我们而去了’,第二句是‘苹果价格会不会降’。如果是由人来判断,我们一看就知道这两个句子是有关联的,因为第一句中出现了乔布斯,所以我们自然而然地认为第二句中的苹果指的不是我们吃的苹果,而是电子产品的品牌苹果。但是如果我们采用传统判断文本相似度的方法来判断,并不会得到两者相似的结论,因为这些方法往往基于一个基本假设:文档之间重复的词语越多越可能相似。这一点在实际中并不尽然。很多时候相关程度取决于背后的语义联系,而非表面的词语重复。
那么,这种语义关系应该怎样度量呢?事实上在自然语言处理领域里已经有了很多从词、词组、句子、篇章角度进行衡量的方法。本文要介绍的是其中一个语义挖掘的利器:主题模型。
主题模型(Topic Models)是一套试图在大量文档中发现潜在主题结构的机器学习模型,就是对文字中隐含主题的一种建模方法。主题模型通过分析文本中的词来发现文档中的主题、主题之间的联系方式和主题的发展。通过主题模型可以使我们组织和总结无法人工标注的海量电子文档。
二、PLSI
在之前的博客里我们已经学习了LSI,但LSI缺少令人满意的统计学基础,运算量过大,且无法解决一词多义的问题,因此,在LSI的基础上,Thomas Hofmann于1999年提出了PLSI模型。
三、PLSI的文档生成模型
要理解PLSI主题模型,我们首先要理解PLSI假定的文档生成模型是什么。假设你要写M篇文档,由于一篇文档由各个不同的词组成,所以你需要确定每篇文档里每个位置上的词。再假定你一共有K个可选的主题,有V个可选的词,咱们来玩一个扔骰子的游戏。
1、假设你每写一篇文档会制作一颗K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和K个V面的“主题-词项” 骰子(每个骰子对应一个主题,K个骰子对应之前的K个主题,且骰子的每一面对应要选择的词项,V个面对应着V个可选的词)。
比如可令K=3,即制作1个含有3个主题的“文档-主题”骰子,这3个主题可以是:教育、经济、交通。然后令V = 3,制作3个有着3面的“主题-词项”骰子,其中,教育主题骰子的3个面上的词可以是:大学、老师、课程,经济主题骰子的3个面上的词可以是:市场、企业、金融,交通主题骰子的3个面上的词可以是:高铁、汽车、飞机。如下图所示:
2、每写一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。要注意,每篇文档有其自己的“文档-主题”骰子。
上面这个投骰子产生词的过程简化下便是:“先以一定的概率选取主题,再以一定的概率选取词”。事实上,一开始可供选择的主题有3个:教育、经济、交通,那为何偏偏选取教育这个主题呢?其实是随机选取的,只是这个随机遵循一定的概率分布。比如3个主题的概率分布是{教育:0.5,经济:0.3,交通:0.2},我们把各个主题z在文档d中出现的概率分布称之为主题分布,且是一个多项分布。
同样的,从主题分布中随机抽取出教育主题后,依然面对着3个词:大学、老师、课程,这3个词都可能被选中,但它们被选中的概率也是不一样的。比如3个词的概率分布是{大学:0.5,老师:0.3,课程:0.2},我们把各个词语w在主题z下出现的概率分布称之为词分布,这个词分布也是一个多项分布。
所以,选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学。
3、最后,不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法M次,则完成M篇文档。
在这个过程中,我们并未关注词和词之间出现的顺序,所以pLSA是一种词袋方法。具体说来,该模型假设一组共现(co-occurrence)词项关联着一个隐含的主题类别。
接下来,我们对生成模型中出现的一些变量、概率做一下定义:
P(
P(
P(
P(
利用上述的第1、3、4个概率,我们便可以按照如下的步骤得到“文档-词项”的生成模型:
1、按照概率P(
2、选定文档
所以PLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。
四、PLSI模型
我们已经知道了PLSI的生成模型,那如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。
文档d和单词w自然是可被观察到的,但主题z却是隐藏的。如下图所示:
上图中,文档d和词w是我们得到的样本,可观测得到,所以对于任意一篇文档,其P(
故得到文档中每个词的生成概率为:
由于P(
常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。
五、EM求解PLSI模型
首先尝试从矩阵的角度来描述待估计的两个未知变量P(
假定用
用
这样,巧妙的把P(
由于词和词之间是相互独立的,所以整篇文档N个词的分布为:
再由于文档和文档之间也是相互独立的,所以整个语料库中词的分布为(整个语料库M篇文档,每篇文档N个词):
其中,
其中:
又
又
则E(L)为:
即:
接下来用EM算法对未知参数求解:
E-step:假定参数已知,计算此时隐变量的后验概率。
求得后验概率后,代入E(L),求解使E(L)达到最大值的
M-step:这是一个多元函数求极值问题,并且已知有如下约束条件:
采用朗格朗日乘数法,引入两个拉格朗日乘子,构造拉格朗日函数如下:
分别对参数求偏导,并使偏导结果等于0。
消除拉格朗日乘子,估计出参数:
不断循环EM步骤,直到结果收敛,结束求解过程。
六、PLSI的优缺点
优点:
1、定义了概率模型,而且每个变量以及相应的概率分布和条件概率分布都有明确的物理解释;
2、相比于LSI隐含了高斯分布假设,PLSI隐含的Multi-nomial分布假设更符合文本特性;
3、PLSI的优化目标是KL-divergence最小,而不是依赖于最小均方误差等准则;
4、可以利用各种model selection和complexity control准则来确定topic的维数。
缺点:
1、PLSI的概率模型不够完备:在document层面上没有提供合适的概率模型,使得PLSI并不是完备的生成式模型,而必须在确定document的情况下才能对模型进行随机抽样;
2、随着document和term个数的增加,PLSI模型也线性增加,变得越来越庞大;
3、当一个新的document来到时,没有一个好的方式得到
4、EM算法需要反复的迭代,需要很大计算量。
参考博客
[1]http://blog.csdn.net/yangliuy/article/details/8330640
[2]http://blog.csdn.net/pipisorry/article/details/42560693
[3]http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
- PLSI主题模型
- PLSI
- PLSI
- PLSI
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型
- 主题模型TopicModel:主题模型可视化
- 在线主题演化模型
- LDA主题模型简介
- LDA主题模型简介
- LDA主题模型简介
- 关于在vmware中安装centos虚拟机
- 述:大二初一次简单的测试
- Codis源码解析——sentinel的重同步(1)
- 数据库操作的注意事项
- python中__str__()函数的用法
- PLSI主题模型
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板 堆
- TCP/IP (一) ---- 网络协议
- Mybatis随笔
- 如何利用计算机视觉技术来制作科幻电影中酷炫的透明触摸屏
- C#DataTable的使用(将DataTable与csv文件和excel文件)的转换
- iOS 享元设计模式 (flyweight design model)
- 线段树
- grep常用参数说明