我正在使用来自 scala 项目的槌。在训练主题模型并获得推理文件后,我尝试将主题分配给新文本。问题是我使用不同的调用方法得到了不同的结果。以下是我尝试过的事情:
创建一个新的 InstanceList 并仅摄取一个文档并从 InstanceList 中获取主题结果
somecontentList.map(text=>getTopics(text, model)) def getTopics(text:String, inferencer: TopicInferencer):Array[Double]={ val testing = new InstanceList(pipe) testing.addThruPipe(new Instance(text, null, "test instance", null)) inferencer.getSampledDistribution(testing.get(0), iter, 1, burnIn) }
将所有内容放在 InstanceList 中并一起预测主题。
val testing = new InstanceList(pipe) somecontentList.foreach(text=> testing.addThruPipe(new Instance(text, null, "test instance", null)) ) (0 until testing.size).map(i=> ldaModel.getSampledDistribution(testing.get(i), 100, 1, 50))
这两种方法产生的结果非常不同,除了第一种情况。使用推理器的正确方法是什么?
附加信息:我检查了实例数据。
0: topic (0)
1: beaten (1)
2: death (2)
3: examples (3)
4: forum (4)
5: wanted (5)
6: contributing (6)
我假设括号中的数字是预测中使用的单词的索引。当我将所有文本放入 InstanceList 时,索引是不同的,因为该集合有更多的文本。不确定在模型预测过程中如何准确地考虑这些信息。