0

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

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

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

4

3 回答 3

1

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

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

请检查java文档:

于 2013-02-25T09:33:38.153 回答
0

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

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

于 2011-09-30T17:33:16.397 回答
0

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

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

你必须重写它。

于 2013-08-02T14:51:09.080 回答