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多摄⽒度,⽤盆装满热⽔向空中⼀泼迅速就会结成冰凌;在
室外⾏⾛半⼩时,睫⽑就会挂上冰霜。具体实现代码:实现的效果: