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

Text mining 使用保存的主题状态,使用mallet推断主题,text-mining,topic-modeling,mallet,Text Mining,Topic Modeling,Mallet,我已使用以下命令从一些文档生成主题模型: bin/mallet train-topics --input topic-input.mallet --num-topics 100 --output-state topic-state.gz 但是,我没有使用--output model选项来生成序列化的topic trainer对象。是否有任何方法可以使用状态文件推断新文档的主题?培训很慢,如果我必须从头开始创建序列化模型,我需要几天的时间来重新培训。从状态文件恢复模型似乎是mallet 2.0.

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

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

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

从状态文件恢复模型似乎是mallet 2.0.7中的一项新功能

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

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

  • 您需要在完成培训后序列化所使用的管道(对于我来说,它是SerialPipes)
  • 当然,在完成培训后,还需要序列化模型(对于我的情况,它是ParallelTopicModel)
请查看java文档:


如果您的意思是想看看新文档如何适合以前培训过的主题模型,那么恐怕没有简单的命令可以让您正确使用。 mallet2.0.7源代码中的类cc.mallet.topics.LDA提供了这样一个实用程序,请尝试理解它并在程序中使用它。 另外,如果我的记忆正常,那么该类中函数的实现存在一些问题:

public void addDocuments(InstanceList additionalDocuments, 
                         int numIterations, int showTopicsInterval,
                         int outputModelInterval, String outputModelFilename,
                         Randoms r)
你必须重写它