我目前有一个使用MALLET(http://mallet.cs.umass.edu/topics.php)的经过训练的主题模型,该模型基于大约8万条收集的新闻文章(这些文章都属于一个类别)。
我希望每次发表新文章时都给出相关性评分(可能与该类别无关)。有什么办法可以做到这一点?我已经阅读过td-idf,但似乎是根据现有文章(而不是任何传入的新文章)给出分数。最终目标是过滤掉可能不相关的文章。
任何想法或帮助都将不胜感激。谢谢!
答案 0 :(得分:3)
拥有模型(主题)之后,您可以根据文档在新的看不见的文档上进行测试(参数--evaluator-filename [FILENAME]是传递新的看不见的文档的位置)Topic Held-out probability:
主题脱售概率
-评估程序文件名[FILENAME] 上一节介绍了如何获取新文档的主题比例。我们经常想估计 新文档的对数概率,在所有主题上均被边缘化 配置。使用MALLET命令bin / mallet评估主题 --help获得有关使用未定概率估计的信息。与主题推断一样,您必须确保新数据是 与您的训练数据兼容。使用选项--use-pipe-from MALLET命令bin / mallet导入文件中的[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,0.49642297)中看到 我们拥有新文档的topic(categories)是由主题#1表示的。因此,在您的情况下,您可以从输出列表中获取最大值,并且具有相关性“系数” ,因此类别中的系数较高,而类别中的系数较低(根据更好的可视化效果,如果您只有#1个主题,而不仅仅是添加您要考虑的最小值的简单阈值,并且如果失败了(例如0.40以上),那么该类别中的主题就不会出现。