【问题标题】:Inferring topics with mallet, using the saved topic state使用保存的主题状态用槌推断主题
【发布时间】:2011-07-19 19:27:21
【问题描述】:

我使用以下命令从一些文档生成主题模型:

bin/mallet train-topics --input topic-input.mallet --num-topics 100 --output-state topic-state.gz

然而,我没有使用--output-model 选项来生成序列化的主题培训对象。有什么方法可以使用状态文件来推断新文档的主题?训练很慢,如果我必须从头开始创建序列化模型,我需要几天时间才能重新训练。

【问题讨论】:

    标签: text-mining topic-modeling mallet


    【解决方案1】:

    我们没有使用 mallet 附带的命令行工具,我们只是使用 mallet api 创建序列化模型以推断新文档。有两点需要特别注意:

    • 您需要在完成培训后序列化您使用的管道(对于我来说,它是 SerialPipes)
    • 当然,模型还需要在完成训练后进行序列化(对于我来说,它是 ParallelTopicModel)

    请查看 java 文档:

    【讨论】:

      【解决方案2】:

      根据release notes,从状态文件恢复模型似乎是mallet 2.0.7 中的一项新功能。

      能够从压缩的“状态”文件中恢复模型。从新 TopicTrainer,使用 --input-state [filename] 参数。请注意,您 可以手动编辑这个文件。主题设置为 -1 的任何标记都将是 加载后立即重新采样。

      【讨论】:

        【解决方案3】:

        如果您的意思是想看看新文档如何适应先前训练的主题模型,那么恐怕没有简单的命令可以用来做正确的事。 mallet 2.0.7 的源代码中的 cc.mallet.topics.LDA 类提供了这样一个实用程序,尝试理解它并在您的程序中使用它。 P.S.,如果我没记错的话,该类中函数的实现存在一些问题:

        public void addDocuments(InstanceList additionalDocuments, 
                                 int numIterations, int showTopicsInterval,
                                 int outputModelInterval, String outputModelFilename,
                                 Randoms r)
        

        你必须重写它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-07
          • 2018-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-06
          • 1970-01-01
          相关资源
          最近更新 更多