PLSI主题模型

一、主题模型是什么

  在讲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( di )表示海量文档中某篇文档被选中的概率。
  P( wj | di )表示词 wj 在给定文档 di 中出现的概率。怎么计算得到呢?针对海量文档,对所有文档进行分词后,得到一个词汇列表,这样每篇文档就是一个词语的集合。对于每个词语,用它在文档中出现的次数除以文档中词语总的数目便是它在文档中出现的概率P( wj | di )。
  P( zk | di )表示具体某个主题 zk 在给定文档 di 下出现的概率。
  P( wj | zk )表示具体某个词 wj 在给定主题 zk 下出现的概率,与主题关系越密切的词,其条件概率P( wj | zk )越大。
  利用上述的第1、3、4个概率,我们便可以按照如下的步骤得到“文档-词项”的生成模型:
  1、按照概率P( di )选择一篇文档 di
  2、选定文档 di 后,从主题分布中按照概率P( zk | di )选择一个隐含的主题类别。
  所以PLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。

四、PLSI模型

  我们已经知道了PLSI的生成模型,那如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是主题建模的目的:自动地发现文档集中的主题(分布)。

  文档d和单词w自然是可被观察到的,但主题z却是隐藏的。如下图所示:




  上图中,文档d和词w是我们得到的样本,可观测得到,所以对于任意一篇文档,其P( wj | di )是已知的。从而可以根据大量已知的文档-词项信息,训练出文档-主题和主题-词项 ,如下公式所示:

P(wj|di)=k=1KP(wj|zk)P(zk|di)

  故得到文档中每个词的生成概率为:

P(di,wj)=P(di)P(wj|di)=P(di)k=1KP(wj|zk)P(zk|di)

  由于P( di )可事先计算求出,而P( wj | zk )和P( zk | di )未知,所以 θ=(P( w_j | z_k ),P( z_k | d_i$))就是我们要估计的参数(值),通俗点说,就是要最大化这个θ。
常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。

五、EM求解PLSI模型

  首先尝试从矩阵的角度来描述待估计的两个未知变量P( wj | zk )和P( zk

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值