基于主题建模的文档相关性评分

我目前有一个使用MALLET训练好的主题模型(http://mallet.cs.umass.edu/topics.php),该模型基于大约80,000篇收集的新闻文章(这些文章全部属于一个类别)。

我希望每次有新文章进来时(可能与该类别相关,也可能不相关)都能给出一个相关性评分。有没有办法实现这一点?我已经阅读了关于tf-idf的内容,但似乎它是基于现有文章给出评分的,而不是针对新进来的文章。最终目标是过滤掉可能不相关的文章。

任何想法或帮助都将不胜感激。谢谢!


回答:

根据文档说明,在你有了模型(主题)后,你可以对新的未见过文档进行测试(参数 –evaluator-filename [FILENAME] 就是你传递新未见过文档的地方) 主题保留概率

主题保留概率

–evaluator-filename [FILENAME] 前一节描述了如何为新文档获取主题比例。我们常常希望估计新文档的对数概率,并在所有主题配置上进行边缘化。使用MALLET命令 bin/mallet evaluate-topics –help 来获取关于使用保留概率估计的信息。与主题推断一样,你必须确保新数据与你的训练数据兼容。使用选项 –use-pipe-from [MALLET TRAINING FILE] 在MALLET命令 bin/mallet import-file 或 import-dir 中指定一个训练文件。

注意:我更多地使用gensim的LDA和LSI,你可以像下面这样传递新文档:

new_doc = "Human computer interaction"new_vec = dictionary.doc2bow(new_doc.lower().split())print(lda_model[new_vec])#output: [(0, 0.020229542), (1, 0.49642297)

解释:你可以看到(1, 0.49642297),这意味着在我们有的两个主题(类别)中,新文档更接近于主题#1。因此,在你的情况下,你可以从输出列表中取最大值,这样你就有了相关性的“系数”,系数高表明属于该类别,低则不属于(为了更好地可视化,我添加了两个主题,如果你只有#1主题,那么只需添加一个你想要考虑的最小阈值,如果超过了这个阈值,例如0.40,那么就在类别内,否则不在)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注