【问题标题】:Document relevancy score based on topic modelling基于主题建模的文档相关性评分
【发布时间】:2018-12-30 11:12:19
【问题描述】:
我目前有一个使用 MALLET (http://mallet.cs.umass.edu/topics.php) 训练的主题模型,该模型基于大约 80 000 篇收集的新闻文章(这些文章都属于一个类别)。
我希望每次出现新文章时都给出相关性分数(可能与类别相关,也可能不相关)。有什么办法可以做到这一点?我已经阅读了 td-idf,但似乎是根据现有文章给出分数,而不是任何传入的新文章。最终目标是过滤掉可能不相关的文章。
非常感谢任何想法或帮助。谢谢!
【问题讨论】:
标签:
machine-learning
nlp
topic-modeling
mallet
relevance
【解决方案1】:
拥有模型(主题)后,您可以根据文档对新的未见文档进行测试(参数 --evaluator-filename [FILENAME] 是您传递新未见文档的位置)Topic Held-out probability:
主题保留概率
--evaluator-filename [FILENAME] 上一节介绍了如何获取新文档的主题比例。我们经常想估计
新文档的对数概率,在所有主题上被边缘化
配置。使用 MALLET 命令 bin/mallet 评估主题
--help 获取有关使用保留概率估计的信息。与主题推理一样,您必须确保新数据是
与您的训练数据兼容。使用选项 --use-pipe-from
MALLET 命令 bin/mallet import-file 中的 [MALLET TRAINING 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)
解释:从2中可以看出(1, 0.49642297)的意思
topic(categories) 我们有新文档,主题 #1 很接近。因此,在您的情况下,您可以从输出列表中获取最大值,并且您的相关性 "coefficient" 如此高的系数在类别中并且不低(根据更好的可视化和您的如果您只有 #1 主题,而不仅仅是添加一个您想要考虑的最小值的简单阈值,并且如果确实失败了,例如 0.40,则不在该类别中)。