(gensim) LdaMallet vs LdaModel?

Des*_*lla 4 mallet lda gensim topic-modeling

usinggensim.models.LdaMallet和 和有gensim.models.LdaModel什么不一样?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个?

J.S*_*der 5

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.LdaVowpalWabbitgensim.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 年。

  • 看来 mallet、sklearn 和 vowpalwabbit 包装器已[已删除](https://github.com/RaRe-Technologies/gensim/wiki/Migration-from-Gensim-3.x-to-4#15-removed-third- party-wrappers)目前,等待志愿者来维护它们。 (2认同)