python-3.x - 使用 Gensim 进行动态主题建模/哪个代码?

标签 python-3.x gensim lda

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

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

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

    最佳答案

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

    模型输出是否相同?

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

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

    为什么要使用 dtmmodel?

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

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

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

    你该怎么办?

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

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

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

    关于python-3.x - 使用 Gensim 进行动态主题建模/哪个代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50413059/

    相关文章:

    neural-network - 继续训练 Doc2Vec 模型

    python - 训练数据中的文档属于 LDA 中的特定主题

    python - sklearn LatentDirichletAllocation 新语料库的主题推理

    python - 调用 filter 返回 <filter object at ... >

    python - 在 Python 中拆分和计算给定字符串中的表情符号和单词

    python - FastText .bin 文件无法装入内存,即使我有足够的 RAM

    r - 绘制 LDA 主题随时间的演变

    python - 如何在 Python 中对分数列表进行排序?

    python - 如何正确设置tensorflow中占位符的值?

    python - Gensim保存的字典没有id2token