我正在尝试Latent Dirichlet Allocation主题消除歧义和分配,我正在寻求建议。
我更喜欢任何程序都有R或Python前端,但我希望(并接受)我会处理C.
答案 0 :(得分:17)
http://mallet.cs.umass.edu/是IMHO最强大的即插即用LDA软件包..它使用Gibbs采样来估计主题,并且有一个非常简单的命令行界面,有很多额外的响铃 - n-哨声(一些更复杂的模型,超参数优化等)
最好让算法完成它的工作。可能有LDA(和pLSI等)的变种让你做一些半监督的事情......我现在还不知道。
我发现删除停止词和其他真正的高频词似乎可以提高我的主题质量(通过查看每个主题的顶部词,而不是任何严格的度量来评估)。我在猜词干/词形还原也会有所帮助。
答案 1 :(得分:6)
您提到了对R的偏好,您可以使用两个包topicmodels(慢)或lda(快)。 Python有deltaLDA,pyLDA,Gensim等。
使用指定主题或单词进行主题建模是非常棘手的,David Andrzejewski有一些似乎可以执行此操作的Python代码。有一个受监督的LDA here的C ++实现。关于相关方法的论文很多(DiscLDA,Labeled LDA,但不是一个易于使用的形式,无论如何...
正如@ 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)