使用Gensim进行动态主题建模/哪些代码?

问题描述 投票:1回答:1

我想使用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个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.