加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Mahout推荐器 – 为基于项目的推荐者添加基于内容的相似性

发布时间:2020-12-14 04:45:30 所属栏目:大数据 来源:网络整理
导读:我有一个非常标准的Mahout基于项目的新闻文章推荐器(使用点击数据,因此首选项是布尔值): DataModel dataModel = new ReloadFromJDBCDataModel( new PostgreSQLBooleanPrefJDBCDataModel(localDB,...));ItemSimilarity itemSimilarity = new TanimotoCoeffic
我有一个非常标准的Mahout基于项目的新闻文章推荐器(使用点击数据,因此首选项是布尔值):

DataModel dataModel = new ReloadFromJDBCDataModel(
        new PostgreSQLBooleanPrefJDBCDataModel(localDB,...)
);
ItemSimilarity itemSimilarity = new TanimotoCoefficientSimilarity(dataModel);
ItemBasedRecommender recommender = new GenericBooleanPrefItemBasedRecommender(dataModel,itemSimilarity);

我正在尝试将基于内容的知识注入到推荐器中,因此我最强烈推荐的文章不仅在正常的协同过滤意义上是相似的,而且在他们共享许多常用术语的意义上也是相似的.

文章内容相似性(TF-IDF向量的余弦相似性)使用Mahout批次预先计算并从DB读取.但是,会有很多对没有相似性数据的文章.这有两个原因:

>文章内容相似性数据的更新频率低于用户项目偏好的数据模型,因此在新文章计算内容相似性之前会有一段时间.
>理想情况下,我想将所有内容相似性数据加载到内存中,因此我只会为每篇文章存储前20个相似度.

所以,对于一对给定的文章,我有:

>项目相似度(Tanimoto)0< = s1< = 1
>内容相似度(余弦值)0< = s2< = 1(可能为空)
在内容相似性不为空的情况下,我想使用其值来加权项目相似性,以便增强具有相似内容的文章.

我的问题是:

>尝试结合这些措施是否合理,还是我尝试疯狂的事情?
>将这两个值组合成一个相似度得分的合理公式是什么?
>这最好是作为自定义ItemSimilarity还是作为Rescorer实现的?

解决方法

是的,将它们组合起来是完全合理的.如果两者的相似性都在[0,1]中,那么最明智的组合就是它们的产品.这是您使用ItemSimilarity注入的内容,而不是IDRescorer.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读