【NLP系列3】主题模型LDA

一、LDA含义:

1、一种无监督的贝叶斯模型。
在训练时不需要手工含有label的训练集,仅仅给出文档集以及指定的主题数量k即可(如有100篇文章,需要划分为10个主题)
2、一种词袋模型。
它认为一篇文档是由一组词构成的一个集合,词与词之间不考虑顺序关系。一篇文档可以包含多个主题,文档中的每一个词都可以由其中的一个主题生成。(每个主题之间的词,无交集。)
3、一种主题模型。
它可以将文档集中的每篇文档的主题,按照一定概率分布的形式给出。(如对1篇文档进行主题判断,会生成一个10维向量,每个元素是对应主题的概率,概率最大的即为最终判定的主题类型)
4、对于每一个主题,均可以找出一些词语描述它。
!](https://img-blog.csdnimg.cn/20190329112909281.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDM4ODY3OQ==,size_16,color_FFFFFF,t_70)

三、LDA核心:
以文档集合作为输入,训练出"文档—主题"分布和"主题—词"分布:
P ( 词 ∣ 文 档 ) = P ( 词 ∣ 主 题 ) ∗ P ( 主 题 ∣ 文 档 ) P(词 | 文档)=P(词 | 主题)*P(主题 | 文档) P()=PP ----P(词 | 文档)训练集里已知
P(w|d) = P(w|t)∗P(t|d) = ϕt /θd
四、LDA原理的深入理解:
1、LDA的生成过程:

  • 对于语料库中的每一篇文章:
    a.对每一篇文章,从主题分布中抽取一个主题(如下图左)<体育>
    b.从被抽到的主题所对应的单词分布中,抽取一个单词(如下图右) <跑步>
    (用体育*跑步去拟合这篇文档中跑步出现的概率,P(词|文档)=P(词|主题)*P(主题|文档))。如果不符合,执行第c步,调整分布;
    c.重复上述a过程,直到遍历文档中的每一个词
    d.重复上述d过程,直到遍历主题T中的每一个主题在这里插入图片描述

2、详细解释如下:
< w代表单词;d代表文档;t代表主题;大写代表集合,小写代表个体>
(a)D中每一个文档d看作一份单词序列<w1,w2,…,wn>,wi表示第i个单词。
(b)D中设计的所有不同单词组成一个词汇表大集合V(vocabulary,类似于词袋),LDA以文档集合D作为输入,希望训练出的两个结果向量θd,ϕt (假设形成k个topic,V中一共m个词):
(c)对于D中的每个文档d,对应到不同Topic的概率 θ ( d ) < p t 1 , p t 2 . . . p t i > \displaystyle \theta ( d) < p_{t_{1}} ,p_{t_{2}} ...p_{t_{i}} > θ(d)<pt1,pt2...pti>,其中, p t i p_{t_{i}} pti 表文档d是第i个主题的概率。计算方法
p t i = n t i n \displaystyle p_{t_{i}} =\frac{n_{t_{i}}}{n} pti=nnti
n t i {n_{t_{i}}} nti表示文档d中对应为第i个主题 t i t_{i} ti的单词总数量;n表示文档d中所有词的总数量
(4)T中每一个主题t,生成不同单词的概率 ϕ ( t ) < p w 1 , p w 2 . . . p w i > ϕ(t)< p_{w_{1}} ,p_{w_{2}} ...p_{w_{i}} > ϕ(t)<pw1,pw2...pwi>,其中, p w i p_{w_{i}} pwi表示主题t生成文档d时,文档d中出现第i个单词的概率。计算方法:
p w i = N w i N \displaystyle p_{w_{i}} =\frac{N_{w_{i}}}{N} pwi=NNwi

N w i {N_{w_{i}}} Nwi表示主题t中单词i,在文档d中出现的数量,N表示文档d中所以对应到主题的单词总数。
(5)将 θ ( d ) \theta ( d) θ(d) ϕ ( t ) ϕ(t) ϕ(t)相除,拟合P(单词|文档)客观概率分布。不断更新 θ ( d ) \theta ( d) θ(d) ϕ ( t ) ϕ(t) ϕ(t),更新概率分布,只到分布相符。
3、LDA的学习过程:
(1)先随机地给向量θd和φt赋值(对所有的d和t)
(2)针对⼀个特定的⽂档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把
上述公式改写为:Pj(wi | ds)=P(wi | tj)*P(tj| ds)
(3)枚举T中的topic,得到所有的pj(wi | ds)。然后可以根据这些概率
值结果为ds中的第i个单词wi选择⼀个topic。最简单的想法是取令pj(wi | ds)最⼤
的主题tj(注意,这个式⼦⾥只有j是变量
(4)然后,如果ds中的第i个单词wi在这⾥选择了⼀个与原先不同的topic,就会对θd和φt有影响。它们的影响⼜会反过来影响对上⾯提到的p(w | d)的计算。
(5)对D中所有的d中的所有w进⾏⼀次p(w | d)的计算并重新选择topic看作⼀次迭代。这样进⾏n次循环迭代之后,就会收敛到LDA所需要的结果了
三、LDA公式:
分为5个步骤:(还在理解中,后续补充。可以参考下文链接的2位大神讲解)
一个函数:gamma函数
四个分布:二项分布、多项式分布、beta分布、Dirichlet分布
一个概念和一个理念:共轭先验和贝叶斯框架
两个模型:plSA、LDA
一个采样:Gibbs采样
(详细介绍可参考:http://blog.csdn.net/v_july_v/article/details/41209515
https://blog.csdn.net/u010159842/article/details/80332030

LDA两大任务:
文档生成任务原理:
直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt给出了⽂档d中出现单词w的概率。其中p(t|d)利⽤θd计算得到,p(w|t)利⽤φt计算得到。
实际上,利⽤当前的θd和φt,我们可以为⼀个⽂档中的⼀个单词计算它对应任意⼀个Topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值