问题陈述:我有几个文档(20k个文档(。我需要应用主题建模来找到相似的文档,然后分析这些相似的文档来发现它们之间的差异。Q: 有人能给我推荐一个主题建模包吗?我可以通过它来实现这一点。我正在探索Mallet和Gensim Python。不确定哪一个最符合我的要求。
如有任何帮助,我们将不胜感激。
我不知道Gensim Python,但MALLET可能是一个解决方案。假设你有Java专业知识,这应该不会太难。
用您的数据创建一个cc.mallet.types.InstanceList
,并适合一个cc.mallet.topics.SimpleLDA
模型。然后,对于每个cc.mallet.types.Instance
(实例是您的文档(,计算彼此Instance
的发散度量。为此,您需要计算每个Instance
中每个主题的概率,这有点棘手。在SimpleLDA
中,有一个ArrayList<TopicAssignment> data
对象,它包含Instances
和它们的cc.mallet.topics.TopicAssignment
。TopicAssignment
包含一个名为topicSequence
的cc.mallet.types.LabelSequence
,它保存每个单词的主题分配。您需要循环执行此操作,以获得每个主题的计数。那么,文档j中主题i的概率简单地为(文档j中分配给主题i的单词数(/(文档j的单词总数(。存储这些概率,并使用它们来计算您选择的散度度量(例如,KL散度(。
Mallet是一个非常容易探索的工具。您可以直接执行此处提供的二进制文件,而不是使用Mallet的JAVA实现:http://mallet.cs.umass.edu/download.php.您甚至不需要编写代码来生成文档中的主题分发之类的文件。当使用train topics选项使用mallet训练主题时,您可以为mallet指定一个文件来为您编写此发行版。
下载后,只需键入mallet--help,您就可以获得使用mallet可以做的许多事情的列表。它们不言自明,非常容易理解。