我正在尝试使用Mallet
在主题建模等方面没有任何经验。我的目的是获取 M 文档的 N 主题现在,用一个或多个主题(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
...
现在我可以使用
将其转换为槌的特征序列格式后从该文件中获取主题 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(列车分类器?)中使用什么来将每个现有文档分配给我找到的主题,并保存此结果以应用于我想要使用此主题分类的未来文档。
由于
答案 0 :(得分:2)
您正在寻找的内容被描述为"推理"在Mallet主题模型中。训练分类器是一个单独的包,旨在直接学习单词和预先存在的一组类之间的关系。
以下是对新文档进行推理的说明:
使用train-topics
命令训练模型时,请添加--inferencer-filename [FILENAME]
选项。此选项将基于当前训练的模型创建主题推理工具并将其保存在文件中。
如果您已经有一个训练有素的模型,例如来自--output-state
或--output-model
,您可以从该状态或模型初始化,运行0次迭代的采样,并输出一个推理器。
创建推理文件后,使用MALLET命令bin/mallet infer-topics --help
获取有关使用主题推断的信息。
请注意,您必须确保新数据与您的训练数据兼容。否则,单词ID 425可能意味着完全不同的单词。这将使所有主题看起来同样可能。使用MALLET命令--use-pipe-from [MALLET TRAINING FILE]
或bin/mallet import-file
中的选项import-dir
指定培训文件。
答案 1 :(得分:1)
在您的问题设置中,人类可读文件doc-topics.txt
包含文档主题矩阵,即语料库中每个文档到主题的组成。主题用数字表示,并给出它们的百分比。该文件的格式是这样的,主题已按其优先顺序排序,因此主要话题首先出现。
文件topic-keys.txt
包含第一个最热门的字词。您可以使用此文件猜测主题的一些好标签。这个标签主要是一个手动任务,它可能涉及返回文件并检查其中一些文件,以获得非常好的标签。