我使用以下命令从一些文档生成主题模型:
bin/mallet train-topics --input topic-input.mallet --num-topics 100 --output-state topic-state.gz
但是,我没有使用该--output-model
选项来生成序列化的主题培训对象。有什么方法可以使用状态文件来推断新文档的主题?训练很慢,如果我必须从头开始创建序列化模型,我需要几天时间才能重新训练。
我使用以下命令从一些文档生成主题模型:
bin/mallet train-topics --input topic-input.mallet --num-topics 100 --output-state topic-state.gz
但是,我没有使用该--output-model
选项来生成序列化的主题培训对象。有什么方法可以使用状态文件来推断新文档的主题?训练很慢,如果我必须从头开始创建序列化模型,我需要几天时间才能重新训练。
我们没有使用 mallet 附带的命令行工具,我们只是使用 mallet api 创建序列化模型以推断新文档。有两点需要特别注意:
请检查java文档:
根据发行说明,从状态文件恢复模型似乎是 mallet 2.0.7 中的一项新功能。
能够从压缩的“状态”文件中恢复模型。在新的 TopicTrainer 中,使用 --input-state [filename] 参数。请注意,您可以手动编辑此文件。任何主题设置为 -1 的令牌将在加载时立即重新采样。
如果您的意思是想看看新文档如何适应先前训练的主题模型,那么恐怕没有简单的命令可以用来做正确的事。mallet 2.0.7 的源代码中的 cc.mallet.topics.LDA 类提供了这样一个实用程序,尝试理解它并在您的程序中使用它。PS,如果我没记错的话,该类中函数的实现存在一些问题:
public void addDocuments(InstanceList additionalDocuments,
int numIterations, int showTopicsInterval,
int outputModelInterval, String outputModelFilename,
Randoms r)
你必须重写它。