Latent Dirchlet Allocation in action

LDA in action

Latent Direchlet Allocation

关于公式推导可以看LDA数学八卦Parameter estimation for text analysis,代码中的公式标号来自于后文。

toy code

https://github.com/gajanlee/toys/tree/master/toy_lda

如何实现

1. 数据转换

LDA 是词袋模型,所以不在乎词的顺序,每个文档转换为list形式。[1, 1, 2, 2, 3, 4 …]代表有两个word_id为1的词,2个word_id为2的词… 所有的document一起输入进去,所以为了方便起见,需要一个Docs_is和Term_js代表文档编号和词编号,合起来表示一个文档中的词,Term_js中的每个值代表word_id。

2. train

每个词需要一个topic,所以用一个一维list存放所有词的topic(初始化为随机)。使用collapsed Gibbas sample公式forumula 79,对于输入文档的各项统计后,得到当前词的各个topic概率。随机一个数,看看落在哪个topic内,作为新的采样。对每个词进行一次。

采样后,使用前验+后验公式formula 82,归一化后,获取topic_term_distribution和document_topic_distribution。

3. perplexity

在运行中检查算法运行效果的公式,loglikelihood,同一个文章内每个词概率相乘。

4. inference

Evaluation Methods for Topic Models在Section 4.1提出了一种更能逼近真实分布的"iterated pseudo-counts"方法。

并行LDA

document和term不能够并行,所以我们可以使用对角线并行法。详见《LDA》漫游指南。

代码参考

https://github.com/lda-project/lda

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值