【问题标题】:Dynamic Topic Modeling with Gensim / which code?使用 Gensim 进行动态主题建模/哪个代码?
【发布时间】:2018-10-28 23:56:49
【问题描述】:

我想使用 Blei 等人的动态主题建模。 (http://www.cs.columbia.edu/~blei/papers/BleiLafferty2006a.pdf) 用于包含近 3800 份专利文件的大型语料库。 有人有使用 gensim 包中的 DTM 的经验吗? 我确定了两个模型:

  1. models.ldaseqmodel – Python 中的动态主题建模Link
  2. models.wrappers.dtmmodel – 动态主题模型 (DTM) Link

你使用了哪一个,如果你两个都用,哪一个“更好”?换句话说,你喜欢/喜欢哪一个?

【问题讨论】:

    标签: python-3.x gensim lda


    【解决方案1】:

    这两个包都运行良好,并且在功能上几乎相同。您可能要使用哪一个取决于您的用例。每个模型附带的功能有细微差别,命名也有细微差别,这可能有点令人困惑,但对于大多数 DTM 用例来说,选择哪个并不重要。

    模型输出是否相同?

    不完全是。然而,它们非常非常接近相同(98%+)——我相信大多数差异来自于生成过程中对概率的处理略有不同。到目前为止,我还没有遇到过小数点后第六位或第七位的差异具有任何重要意义的情况。解释模型发现的主题远不止一个版本为某个单词找到更高的主题加载 0.00002

    两个模型的最大区别:dtmmodel 是来自blei-lab 的原始 C++ 实现的 python 包装器,这意味着 python 将运行二进制文件,而 ldaseqmodel 完全用 python 编写。

    为什么要使用 dtmmodel?

    • C++ 代码比 python 实现更快
    • 支持来自Gerrish/Blei 2010 的文档影响模型(可能对您的研究感兴趣,请参阅this paper 了解实现。

    为什么使用 ldaseqmodel?

    • 更容易安装(简单的import 语句与下载二进制文件)
    • 可以使用来自预训练 LDA 模型的 sstats - 与 LdaMulticore 一起使用
    • 更容易理解代码的工作原理

    我主要使用ldaseqmodel,但那是为了方便。不过,拥有原生 DIM 支持会很棒。

    你应该怎么做?

    例如,在一个小样本集上尝试它们中的每一个,看看模型返回什么。 3800 个文档不是一个 巨大 语料库(假设每个专利不是数百页),我假设在预处理(删除停用词、图像和元数据)之后,您的字典不会太大要么(我假设专利中有很多标准短语和法律术语)。选择最适合您或具有您需要的功能。

    无论如何,完整的分析可能需要几个小时,如果你让你的代码在一夜之间运行,那么实际上几乎没有什么区别,毕竟,你关心它是在凌晨 3 点还是 5 点完成?如果运行时很关键,我认为dtmmodel 会更有用。

    对于实现示例,您可能需要查看以下笔记本:ldaseqmodeldtmmodel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2016-01-03
      相关资源
      最近更新 更多