LDA和主题模型

4
我已经学习了几周的LDA和主题模型。但由于我的数学能力较差,我不能完全理解其内部算法。我使用了GibbsLDA实现,输入了许多文档,并将主题数量设置为100,得到了一个名为“final.theta”的文件,其中存储了每个文档中每个主题的主题比例。这个结果很好,我可以使用主题比例做很多其他的事情。
但是当我尝试使用Blei的C语言实现LDA时,我只得到了一个名为final.gamma的文件,但我不知道如何将这个文件转换成主题比例样式。
有人可以帮助我吗?
我已经了解到LDA模型有许多改进版本(如CTM、HLDA),如果我能找到一个类似LDA的主题模型,也就是说,当我输入大量文档时,它可以直接输出文档中的主题比例。
非常感谢!

+1 对于LDA的参考很有帮助,这对我来说是一个新的想法。谢谢。 - duffymo
2个回答

1

我认为 Blei 实现的问题在于你正在运行变分推断:

$ lda inf [args...]

而你应该使用主题估计:

$ lda est [args...]

一旦运行完成,当前目录或可选的最后一个参数指定的目录中将会有一个名为“final.beta”的文件。然后你需要运行 tar 包中包含的 Python 脚本“topics.py”。这里的 readme 文件 http://www.cs.princeton.edu/~blei/lda-c/readme.txt 描述了所有内容,特别是 B 和 D 部分。

(如果还不清楚,请告诉我)

至于像 CTM 等改进:我不知道 HLDA 的任何信息,但我过去使用过 LDA 和 CTM,我可以说它们之间没有严格的优劣之分 - 它们更适合不同的数据。CTM 假设文档是相关的,并利用这个假设来提高结果,只要它是正确的。

希望这能帮到你!


非常感谢您的帮助,但是我想知道如何将结果文件转换为主题比例。具体来说,我指的是 theta。 - ShenYi
我认为这个答案是误导性的。虽然OP询问主题比例(每个主题在文档中出现的次数 - theta),但答案是关于主题(单词分布 - beta)的。 - rarry

0

为了获得E[θ],只需在每行中对gamma进行归一化。这是由于Dirichlet分布的特性而得出的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接