以下是我如何使用 MALLET 推断新文档的主题分布。我想我会发布,因为我一直在寻找如何做到这一点并且有很多答案,但没有一个是全面的。这也包括培训步骤,以便您了解不同文件如何相互连接。
创建训练数据:
$BIN_DIR/mallet import-file --input $DIRECTORY/data.input --output $DIRECTORY/data.mallet --keep-sequence --token-regex '\w+'
其中data.input
是包含您的文件 ID、标签和一系列令牌或令牌 ID 的文档。然后使用您喜欢的参数在此数据上训练您的模型。例如:
$BIN_DIR/mallet train-topics --input $DIRECTORY/data.mallet \
--num-topics $TOPICS --output-state $DIRECTORY/topic-state.gz \
--output-doc-topics $DIRECTORY/doc-topics.gz \
--output-topic-keys $DIRECTORY/topic-words.gz --num-top-words 500 \
--num-iterations 1000
稍后,您可以使用经过训练的模型和训练数据创建推理器:
bin/mallet train-topics --input $DIRECTORY/data.mallet --num-topics NUMBER --input-state $DIRECTORY/topic-state.gz --no-inference --inferencer-filename $DIRECTORY/inferencer-model
现在,使用来自训练数据的管道为新文档创建文件:
bin/mallet import-file --input $DIRECTORY/new_data.input --output $DIRECTORY/new_data.mallet --use-pipe-from $DIRECTORY/data.mallet --keep-sequence --token-regex '\w+'
推断新文档的主题:
bin/mallet infer-topics --inferencer $DIRECTORY/inferencer-model --input $DIRECTORY/new_data.mallet --output-doc-topics $DIRECTORY/new_data_doc_topics --num-iterations 1000