【问题标题】:(gensim) LdaMallet vs LdaModel?(gensim) LdaMallet vs LdaModel?
【发布时间】:2020-06-25 18:19:05
【问题描述】:

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

【问题讨论】:

    标签: gensim lda topic-modeling mallet


    【解决方案1】:

    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.

    【讨论】:

    • 你知道在 gensim 4.0 中是否仍然支持 mallet 和 vowpalwabbit 包装器?
    • 目前 mallet、sklearn 和 vowpalwabbit 包装器似乎有 been removed,等待志愿者来维护它们。
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2017-07-06
    • 1970-01-01
    • 2017-02-12
    • 2019-10-15
    相关资源
    最近更新 更多