潜在的Dirichlet分配,陷阱,提示和程序

时间:2008-10-10 13:23:07

标签: algorithm statistics nlp

我正在尝试Latent Dirichlet Allocation主题消除歧义和分配,我正在寻求建议。

  1. 哪个程序是“最好的”,最好的是最容易使用,最佳先验估算,快速的组合
  2. 如何结合我对话题性的直觉。假设我想我知道语料库中的某些项目实际上属于同一类别,就像同一作者的所有文章一样。我可以将其添加到分析中吗?
  3. 在登船前我应该知道任何意想不到的陷阱或提示吗?
  4. 我更喜欢任何程序都有R或Python前端,但我希望(并接受)我会处理C.

5 个答案:

答案 0 :(得分:17)

  1. http://mallet.cs.umass.edu/是IMHO最强大的即插即用LDA软件包..它使用Gibbs采样来估计主题,并且有一个非常简单的命令行界面,有很多额外的响铃 - n-哨声(一些更复杂的模型,超参数优化等)

  2. 最好让算法完成它的工作。可能有LDA(和pLSI等)的变种让你做一些半监督的事情......我现在还不知道。

  3. 我发现删除停止词和其他真正的高频词似乎可以提高我的主题质量(通过查看每个主题的顶部词,而不是任何严格的度量来评估)。我在猜词干/词形还原也会有所帮助。

答案 1 :(得分:6)

  1. 您提到了对R的偏好,您可以使用两个包topicmodels(慢)或lda(快)。 Python有deltaLDApyLDAGensim等。

  2. 使用指定主题或单词进行主题建模是非常棘手的,David Andrzejewski有一些似乎可以执行此操作的Python代码。有一个受监督的LDA here的C ++实现。关于相关方法的论文很多(DiscLDALabeled LDA,但不是一个易于使用的形式,无论如何...

  3. 正如@ adi92所说,删除停用词,空格,数字,标点符号和词干都会改善很多事情。一个可能的缺陷是错误(或不适当)的主题数量。目前,对于给定大小的coprus等,有多少主题是最佳的,没有简单的诊断.MALLET中有一些measures of topic quality可用(最快),非常方便。

答案 2 :(得分:1)

除了usual sources之外,似乎最活跃的区域是topics-models listserv。从我最初的调查来看,最容易理解的包是LDA Matlab package

这根本不是轻量级的东西,所以我并不感到惊讶,很难找到合适的资源。

答案 3 :(得分:1)

对于这种分析,我使用了LingPipe:http://alias-i.com/lingpipe/index.html。它是一个开源Java库,我直接使用其中的部分或端口。要合并您自己的数据,您可以结合使用分类器,例如朴素贝叶斯。我对统计nlp的经验是有限的,但它通常遵循设置分类器,训练和查看结果,调整的循环。

答案 4 :(得分:0)

我是第二个。 Mallet的lda使用sparselda数据结构和分布式学习,所以它的速度很快。开启超参数优化将提供更好的结果,imo。

相关问题