Des*_*lla 4 mallet lda gensim topic-modeling
usinggensim.models.LdaMallet
和 和有gensim.models.LdaModel
什么不一样?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个?
TL;DR:两者都是潜在狄利克雷分配的两个完全独立的实现。如果您只是想尝试 LDA 而您对 Mallet 的特殊功能不感兴趣,请使用 gensim。
gensim.models.LdaModel
是在 gensim 中实现的 LDA 的单核版本。gensim ( gensim.models.ldamulticore
) 中还提供了并行化的 LDA 版本。两种 Gensim 实现都使用在线变分贝叶斯 (VB) 算法进行潜在狄利克雷分配,如Hoffman 等人所述。[1]。
Gensim 算法(不限于 LDA)与语料库大小无关(可以处理大于 RAM、流、核外的输入)。
Gensim 还提供流行工具Mallet (Java) 和Vowpal Wabbit (C++) 的包装器。
gensim.models.wrappers.LdaVowpalWabbit
使用与 Gensim 的 LdaModel 相同的在线变分贝叶斯 (VB) 算法 [1]。
gensim.models.wrappers.LdaMallet
使用优化的吉布斯采样算法进行潜在狄利克雷分配 [2]。这就是参数不同的原因。然而,大多数参数,例如主题的数量,alpha 和 (b)eta) 在两种算法之间共享,因为它们都实现了 LDA。
两个包装器(gensim.models.wrappers.LdaVowpalWabbit
和
gensim.models.wrappers.LdaMallet
)都需要安装相应的工具(独立于 gensim)。因此,gensim 更易于使用。
除此之外,尝试不同的实现,看看什么适合你。
[1] Hoffman、Matthew、Francis R. Bach 和 David M. Blei。“潜在狄利克雷分配的在线学习。” 神经信息处理系统的进展。2010 年。
[2] Yao、Limin、David Mimno 和 Andrew McCallum。“对流式文档集合进行主题模型推理的有效方法。” 第 15 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。2009 年。
归档时间: |
|
查看次数: |
1647 次 |
最近记录: |