木槌的基本用法。第一步

Mallet basic usage. First steps

我正在尝试使用 Mallet,在主题建模等方面几乎没有经验。我的目的是获得 N 个主题,共 M 个 我现在拥有的文档,用一个或多个主题(doc 1 = 主题 1;doc 2 = 主题 2,可能还有主题 3)对每个文档进行分类,并在将来使用此结果对新文档进行分类。我首先尝试使用 bigartm,但在这个程序中没有发现任何分类,只有主题建模。所以 Mallet,我创建了一个 corpus.txt 文件,格式如下:

Doc.num. \t(tab) Label(actualy 1 everywhere) \t Text 1 1 some text of document to classify 2 1 another doc text ...

现在我可以在将它转换为 mallet 的特征序列格式后从这个文件中获取主题

bin/mallet import-file --input corpus.txt --output foo.mallet--keep-sequence

然后从中获取话题

bin/mallet train-topics --input foo.mallet --output-state state.gz --output-topic-keys topic-keys.txt --output-doc-topics doc-topics.txt

所以现在的一般问题是在 mallet(训练分类器?)中使用什么来将每个现有文档分配给我找到的主题并保存此结果以应用于我想用此主题分类的未来文档。

谢谢

在你的问题设置中,人类可读文件doc-topics.txt包含文档-主题-矩阵,即将语料库中的每个文档组成主题。主题用数字表示,并给出了它们的百分比。文件的格式是主题已按优先级排序,因此主要主题排在第一位。

文件topic-keys.txt包含最热门的词。您可以使用此文件为主题猜测一些好的标签。此标签主要是一项手动任务,它可能涉及返回文档并检查其中的一些以获得真正好的标签。

您要查找的内容在 Mallet 主题模型中被描述为 "inference"。训练分类器是一个单独的包,旨在直接学习单词与预先存在的一组 类.

之间的关系

以下是对新文档使用推理的说明:

当您使用 train-topics 命令训练模型时,添加 --inferencer-filename [FILENAME] 选项。此选项将基于当前训练的模型创建主题推理工具并将其保存在文件中。 如果您已经有一个经过训练的模型,例如来自 --output-state--output-model,您可以从该状态或模型初始化,运行 0 次采样迭代,并输出一个推理器。

创建推理文件后,使用 MALLET 命令 bin/mallet infer-topics --help 获取有关使用主题推理的信息。

请注意,您必须确保新数据与您的训练数据兼容。否则单词 ID 425 可能意味着一个完全不同的单词。这将使所有主题看起来同样可能。在 MALLET 命令 bin/mallet import-fileimport-dir 中使用选项 --use-pipe-from [MALLET TRAINING FILE] 来指定训练文件。