问题陈述:我有几个文件(20k 个文件)。我需要应用主题建模来查找相似的文档,然后分析这些相似的文档以找出它们之间的不同之处。问:谁能建议我任何可以实现这一目标的主题建模包。我正在探索 Mallet 和 Gensim Python。不确定哪个最适合我的要求。
任何帮助将不胜感激。
问题陈述:我有几个文件(20k 个文件)。我需要应用主题建模来查找相似的文档,然后分析这些相似的文档以找出它们之间的不同之处。问:谁能建议我任何可以实现这一目标的主题建模包。我正在探索 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
。ATopicAssignment
包含一个cc.mallet.types.LabelSequence
called topicSequence
,它保存每个单词的主题分配。您将需要遍历此以获取每个主题的计数。那么,文档 j 中主题 i 的概率就是 (#words assignment to topic i in doc j) / (total words in doc j)。存储这些概率并使用它们来计算您选择的散度度量(例如,KL 散度)。
Mallet 是一个非常容易探索的工具。您可以直接执行此处提供的二进制文件,而不是使用 Mallet 的 JAVA 实现:http: //mallet.cs.umass.edu/download.php。您甚至不需要编写代码来生成文档中的主题分布等文件。在使用 train-topics 选项使用 mallet 训练主题时,您可以为 mallet 指定一个文件来为您编写此分布。
下载后,只需键入 mallet --help 即可获得使用 mallet 可以执行的许多操作的列表。它们是不言自明的,很容易理解。