【问题标题】:Topic Modelling and finding similarity in topics主题建模和发现主题中的相似性
【发布时间】:2014-06-17 23:19:06
【问题描述】:

问题陈述:我有几个文档(20k 个文档)。我需要应用主题建模来查找相似的文档,然后分析这些相似的文档以找出它们之间的不同之处。 问:谁能建议我任何可以实现这一目标的主题建模包。我正在探索 Mallet 和 Gensim Python。不确定哪个最适合我的要求。

任何帮助将不胜感激。

【问题讨论】:

    标签: topic-modeling gensim mallet


    【解决方案1】:

    我不知道 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 包含一个名为topicSequencecc.mallet.types.LabelSequence,它保存每个单词的主题分配。您将需要遍历此以获取每个主题的计数。那么,文档 j 中主题 i 的概率就是 (#words assignment to topic i in doc j) / (total words in doc j)。存储这些概率并使用它们来计算您选择的散度度量(例如,KL 散度)。

    【讨论】:

      【解决方案2】:

      Mallet 是一个非常容易探索的工具。您可以直接执行此处提供的二进制文件,而不是使用 Mallet 的 JAVA 实现:http://mallet.cs.umass.edu/download.php。您甚至不需要编写代码来生成文档中的主题分布等文件。在使用 mallet 使用 train-topics 选项训练主题时,您可以为 mallet 指定一个文件来为您编写此分布。

      下载后,只需键入 mallet --help 即可获得许多可以使用 mallet 执行的操作的列表。它们是不言自明的,非常容易理解。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 1970-01-01
        • 2019-04-24
        • 2011-12-02
        • 1970-01-01
        • 2017-12-16
        相关资源
        最近更新 更多