我试图在主题建模等方面使用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 ...
现在,我可以从这个文件中获取主题,然后将其转换为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
因此,现在的普遍问题是在槌(训练分类器?)中使用什么?将每个现有文档分配给我找到的主题,并保存此结果以应用于我希望与此主题一起分类的未来文档。
谢谢
发布于 2016-11-14 07:27:32
您要寻找的是在Mallet主题模型中被描述为“推断”。训练分类器是一个单独的程序包,目的是直接学习单词和预先存在的一组类之间的关系。
以下是对新文档使用推断的说明:
使用train-topics
命令训练模型时,添加--inferencer-filename [FILENAME]
选项。此选项将创建基于当前、经过培训的模型的主题推理工具,并将其保存在文件中。如果您已经拥有经过训练的模型,例如来自--output-state
或--output-model
的模型,您可以从该状态或模型初始化,运行0次抽样迭代,并输出推断器。
一旦创建了推理器文件,就可以使用MALLET命令bin/mallet infer-topics --help
获取有关使用主题推断的信息。
请注意,必须确保新数据与培训数据兼容。否则,ID 425可能意味着一个完全不同的词。这将使所有的主题看起来都是一样的。使用MALLET命令bin/mallet import-file
或import-dir
中的选项bin/mallet import-file
指定培训文件。
发布于 2016-11-14 05:31:24
在您的问题设置中,人类可读的文件doc-topics.txt
包含文档-主题矩阵,即将语料库中的每个文档组合成主题。主题由数字表示,并给出了它们的百分比。文件的格式是这样的,主题已经按其优先级排序,所以最主要的主题是第一位的。
文件topic-keys.txt
包含第一个最热门的词。您可以使用这个文件来猜测主题的一些好的标签。这个标签主要是一项手工工作,它可能涉及回到文件,并检查其中一些得到真正好的标签。
https://stackoverflow.com/questions/40585370
复制相似问题