问题陈述:我有几个文件(20k文件)。我需要应用主题建模来查找类似的文档,然后分析这些类似的文档,以找出它们之间的差异。 问:有人可以建议我使用Topic建模包来实现这个目标。我正在探索Mallet和Gensim Python。不确定哪种最符合我的要求。
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
我不知道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
包含名为cc.mallet.types.LabelSequence
的{{1}},其中包含每个单词的主题分配。您将需要遍历此以获取每个主题的计数。然后,文档j中主题i的概率很简单(#doc分配给doc j中的主题i)/(doc j中的总词)。存储这些概率并使用它们来计算您选择的偏差度量(例如,KL分歧)。
答案 1 :(得分:0)
Mallet是一个非常容易探索的工具。您可以直接执行以下可用的二进制文件:http://mallet.cs.umass.edu/download.php,而不是使用Mallet的JAVA实现。您甚至无需编写代码来生成文档中的主题分发等文件。使用train-topics选项使用mallet训练主题时,您可以为mallet指定一个文件来为您编写此分发。
下载后,只需键入mallet --help,您就可以获得使用mallet可以执行的许多操作的列表。它们是自我解释的,很容易理解。