LDA主题模型发现

  • 格式:pdf
  • 大小:311.94 KB
  • 文档页数:3

LDA主题模型发现

LDA主题模型发现

1.LDA概念:

LDA(Latent Dirichlet Allocation)主题模型由Blei于2003年提出,是在概率隐性语义索引(probabilistic Latent Semantic

Indexing,pLSI)上扩展得到的三层贝叶斯概率模型,是⽂档⽣成概率模型。LDA模型包含词项、主题和⽂档三层结构,其基本

思想是把⽂档看成其隐含主题的混合,⽽每个主题则表现为跟该主题相关的词项的概率分布,LDA可以⽤来识别⼤规模⽂档集

或语料库中潜在的主题信息。LDA基于词袋(bag of words)模型,认为⽂档和单词都是可交换的,忽略单词在⽂档中的顺序和⽂

档在语料库中的顺序,从⽽将⽂本信息转化为易于建模的数字信息。在主题模型中,主题表⽰⼀个概念、⼀个⽅⾯,表现为⼀

系列相关的单词,是这些单词的条件概率。形象来说,主题就是⼀个桶,⾥⾯装了出现概率较⾼的单词,这些单词与这个主题

有很强的相关性。

2.LDA⽣成过程:

⾸先,可以⽤⽣成模型来看⽂档和主题这两件事。所谓⽣成模型,就是说,我们认为⼀篇⽂章的每个词都是通过“以⼀定概率选

择了某个主题,并从这个主题中以⼀定概率选择某个词语”这样⼀个过程得到的。那么,如果我们要⽣成⼀篇⽂档,它⾥⾯的每个词语出现的概率为:这个概率公式可以⽤矩阵表⽰

其中”⽂档-词语”矩阵表⽰每个⽂档中每个单词的词频,即出现的概率;”主题-词语”矩阵表⽰每个主题中每个单词的出现概

率;”⽂档-主题”矩阵表⽰每个⽂档中每个主题出现的概率。

LDA整体流程为:

先定义⼀些字母的含义:

⽂档集合D,topic集合T

D中每个⽂档d看作⼀个单词序列,wi表⽰第i个单词,设d有n个单词。(LDA⾥⾯称之为word bag,实际上每个单词的出现位

置对LDA算法⽆影响)

D中涉及的所有不同单词组成⼀个⼤集合VOCABULARY(简称VOC)

LDA以⽂档集合D作为输⼊(会有切词,去停⽤词,取词⼲等常见的预处理,

略去不表),希望训练出的两个结果向量(设聚成k个Topic,VOC中共包含m 个词):

对每个D中的⽂档d,对应到不同topic的概率θd,其中,pti表⽰d对应T中第i个topic的概率。计算⽅法是直观的,pti=nti/n,其

中nti表⽰d中对应第i个topic的词的数⽬,n是d中所有词的总数。

对每个T中的topic t,⽣成不同单词的概率φt,其中,pwi表⽰t⽣成VOC中第i个单词的概率。计算⽅法同样很直

观,pwi=Nwi/N,其中Nwi表⽰对应到topic t的VOC中第i个单词的数⽬,N表⽰所有对应到topic t的单词总数。

LDA的核⼼公式如下:

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

直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt 给出了⽂档d中出现单词w的概率。其中p(t|d)利⽤θd计

算得到,p(w|t)利⽤φt计算得到。实际上,利⽤当前的θd和φt,我们可以为⼀个⽂档中的⼀个单词计算它对应任意⼀个Topic时的p(w|d),然后根据这些结果来

更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

3.利⽤python代码实现LDA

⽬前已有不少成熟的LDA库,例如java中的Gibbslda⼯具包,以及python 的lda库和genism包,等等。⽽这些⼯具的使⽤例⼦

⼤多是英⽂语料。不过lda 对语⾔的敏感性并不⾼,所以即使中⽂语料,效果也不会逊⾊,只需在构建VSM 模型之前,先做中

⽂分词和清理停⽤词等⼯作。

在实验中,我采⽤的是结巴分词⼯具、哈⼯⼤的停⽤词表,以及python的lda库。选取的语料为新浪微博中两个不同类型的热

门话题,具体为:

1.【库⾥三节37分邓肯休战勇⼠120-90马刺】勇⼠终结马刺13连胜同时收获4连胜,库⾥三节砍下37分,⽣涯得分破万,利⽂

斯顿6投6中得13分,格林、汤普森各取11分。马刺的莱昂纳德16分5篮板,韦斯特12分5篮板,阿德9中2、帕克6中2、马努6

中1,邓肯休战。战报。

2.【哈尔滨市民向空中泼洒热⽔瞬间凝成冰凌——提提神⼉!】1⽉21⽇,哈尔滨市民向空中泼洒热⽔,泼出的⽔⽴刻凝成冰

凌。冰城哈尔滨迎来⼀年中最冷的季节,室外温度已经降到零下30多摄⽒度,⽤盆装满热⽔向空中⼀泼迅速就会结成冰凌;在

室外⾏⾛半⼩时,睫⽑就会挂上冰霜。具体实现代码:实现的效果: