【发布时间】:2020-06-25 18:19:05
【问题描述】:
使用gensim.models.LdaMallet 和gensim.models.LdaModel 有什么区别?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个?
【问题讨论】:
标签: gensim lda topic-modeling mallet
使用gensim.models.LdaMallet 和gensim.models.LdaModel 有什么区别?我注意到参数并不完全相同,想知道什么时候应该使用一个而不是另一个?
【问题讨论】:
标签: gensim lda topic-modeling mallet
TL;DR:两者都是潜在狄利克雷分配的两个完全独立的实现。 如果您只是想尝试 LDA 并且对 Mallet 的特殊功能不感兴趣,请使用 gensim。
gensim.models.LdaModel 是在 gensim 中实现的 LDA 的单核版本。
gensim (gensim.models.ldamulticore) 中还提供并行 LDA 版本。
两种 Gensim 实现都使用在线变分贝叶斯 (VB) 算法进行潜在狄利克雷分配,如 Hoffman et al. [1] 中所述。
Gensim 算法(不限于 LDA)是独立于内存的 w.r.t。语料库大小(可以处理大于 RAM、流式传输、核外的输入)。
Gensim 还为流行的工具 Mallet (Java) 和 Vowpal Wabbit (C++) 提供包装器。
gensim.models.wrappers.LdaVowpalWabbit 使用与 Gensim 的 LdaModel [1] 相同的在线变分贝叶斯 (VB) 算法。
gensim.models.wrappers.LdaMallet 使用optimized Gibbs sampling algorithm 进行潜在狄利克雷分配[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] 姚、利敏、大卫·米姆诺和安德鲁·麦卡勒姆。 “对流文档集合进行主题模型推理的有效方法。”第 15 届 ACM SIGKDD 知识发现和数据挖掘国际会议论文集。 2009.
【讨论】:
mallet 和 vowpalwabbit 包装器?