我有一个非常标准的基于 Mahout 项目的新闻文章推荐器(使用点击数据,所以首选项是 bool 值):
DataModel dataModel = new ReloadFromJDBCDataModel(
new PostgreSQLBooleanPrefJDBCDataModel(localDB, ...)
);
ItemSimilarity itemSimilarity = new TanimotoCoefficientSimilarity(dataModel);
ItemBasedRecommender recommender = new GenericBooleanPrefItemBasedRecommender(dataModel, itemSimilarity);
我正在尝试将基于内容的知识注入(inject)推荐器,这样我就可以最强烈地推荐不仅在正常协同过滤意义上相似的文章,而且在它们共享许多共同术语的意义上也相似。
文章内容相似度(TF-IDF 向量的余弦相似度)使用 Mahout 批处理进行预计算并从数据库中读取。但是,会有很多文章对没有相似度数据。这有两个原因:
因此,对于给定的一对文章,我有:
在内容相似度不为空的情况下,我想用它的值来加权项目相似度,以便对内容相似的文章进行提升。
我的问题是:
ItemSimilarity
或作为 Rescorer
? 最佳答案
是的,将它们结合起来是完全合理的。如果两个相似性都在 [0,1] 中,那么最明智的组合就是它们的乘积。这是您使用 ItemSimilarity
注入(inject)的东西,而不是 IDRescorer
.
关于Mahout 推荐器 - 将基于内容的相似性添加到基于项目的推荐器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206930/