使用保存的主题状态使用mallet推断主题

时间:2011-07-19 19:27:22

标签: text-mining topic-modeling mallet

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

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

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

3 个答案:

答案 0 :(得分:1)

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

  • 您需要在完成培训后序列化您使用的管道(对于我的情况,它是SerialPipes)
  • 因为模型在完成培训后也需要序列化(对于我的情况,它是ParallelTopicModel)

请查看java doc:

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您的意思是想要了解新文档如何适应以前训练过的主题模型,那么我担心没有简单的命令可以用来做正确的事情。 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)

你必须重写它。