用于执行主题建模/LDA 的 R 包:只有 `topicmodels` 和 `lda`

机器算法验证 r 贝叶斯 文本挖掘 主题模型 潜在狄利克雷分配
2022-02-05 03:49:13

在我看来,只有两个 R 包能够执行潜在狄利克雷分配

一个是ldaJonathan Chang 所著;另一个topicmodels由 Bettina Grün 和 Kurt Hornik 撰写。

这两个包在性能、实现细节和可扩展性方面有什么区别?

4个回答

实现:topicmodels 包为 Blei 等人的主题模型的 GSL C 和 C++ 代码提供了一个接口。和潘等人。对于早期它使用 Variational EM,对于后者 Gibbs Sampling。请参阅http://www.jstatsoft.org/v40/i13/paper该软件包与 tm 软件包中的实用程序配合得很好。

lda 包对许多类似于 GSL 库中的模型使用折叠的 Gibbs 采样器。然而,它是由包作者自己实现的,而不是由 Blei 等人实现的。因此,这种实现通常不同于在引入这些模型变体的原始论文中提出的估计技术,其中通常应用 VEM 算法。另一方面,该软件包提供了比其他软件包更多的功能。该软件包还提供文本挖掘功能。

可扩展性:关于可扩展性,主题模型代码本质上可以扩展为接口用 C 和 C++ 编写的其他主题模型代码。lda 包似乎更依赖作者提供的具体实现,但 Gibbs 采样器可能允许指定您自己的主题模型。对于不可扩展性问题,前者在 GPL-2 下获得许可,后者在 LGPL 下获得许可,因此它可能取决于您需要扩展它的目的(GPL-2 在开源方面更严格,即您不能使用它在专有软件中)。

性能:我在这里帮不了你,到目前为止我只使用过topicmodels。

结论:
我个人使用topicmodels,因为它有据可查(参见上面的 JSS 论文)并且我信任作者(Grün 也实现了 flexmix,Hornik 是 R 核心成员)。

+1主题模型@Momo 的回答非常全面。我只是添加了topicmodels将输入作为文档术语矩阵的内容,这些矩阵很容易使用tm包或使用 python 制作。lda包使用更深奥的输入形式(基于 Blei 的 LDA-C),我没有运气使用内置函数将 dtm 转换为lda包格式(如 Momo 所述,lda 文档非常差)。

我有一些以原始文本开头的代码,对其进行预处理并在此处tm执行topicmodels(包括提前找到最佳主题数量并处理输出)可能对第一次来的人有用。topicmodels

Molly Roberts、Brandon Stewart 和 Dustin Tingley 的 R 结构主题模型 (STM) 包也是一个不错的选择。它建立在 tm 包之上,是使用文档级协变量信息进行主题建模的通用框架。

http://structuraltopicmodel.com/

STM 包包括一系列方法(网格搜索)和度量(语义连贯性、残差和排他性)来确定主题的数量。将主题数设置为 0 也会让模型确定最佳主题数。

stmBrowser 包是一个很好的数据可视化补充,可以可视化外部变量对主题的影响。请参阅与 2016 年总统辩论相关的示例:http: //alexperrier.github.io/stm-visualization/index.html

我使用了所有三个库,在所有 3 个中,即 topicmodels、lda、stm;不是每个人都使用 n 克。topicmodels 库的估计很好,它也适用于 n 克。但是,如果有人正在使用 unigram,那么从业者可能更喜欢 stm,因为它提供了结构化的输出。