andres-montanez/recommendations-bundle

该包已被废弃,不再维护。未建议替代包。

Symfony2 扩展,实现了使用 MongoDB 的推荐引擎

dev-master 2014-11-21 15:05 UTC

This package is auto-updated.

Last update: 2021-02-19 00:35:21 UTC


README

#RecommendationsBundle

内置的推荐引擎,使用 Symfony 和 MongoDB

推荐基于物品,使用皮尔逊距离匹配相似物品。

必须定义一个定时任务,以便定期运行,以便更新物品亲和度。

服务 andres_montanez_recommendations.recommendation 允许您

  • registerItem:注册一个物品,您可以指定一个类型(例如:电影)、标签(例如:剧情、动作)和一个命名空间。
  • addAction:允许注册用户交互。您可以指定用户、动词(例如:评分)、物品、值和命名空间。
  • getRecommendations:为给定的用户获取推荐。您可以通过指定类型、标签和命名空间来缩小结果。

交互示例:"用户「Jon」对「电影蝙蝠侠」进行了「5分」的评分"

命名空间是如果您想在多个网站上使用该引擎但只有一个实例,因此只对在该命名空间上注册的物品进行推荐。对于用户、物品和标签的值,建议使用整数值。

主要算法基于 O'Reilly 的集体智慧代码。

该扩展已在以下数据集上进行了测试:

  • 10万条评分,943个用户,1682个物品:相似性生成约4分钟,获取用户推荐少于2秒。
  • 100万条评分,6040个用户,3883个物品:相似性生成约90分钟,获取用户推荐少于2秒。

数据集可在以下位置获取:http://grouplens.org/datasets/movielens/

建议围绕此服务构建一个服务包装器,以便更好地满足您的需求,并且还可以添加尽可能多的缓存层。请注意,对于大型数据集,结果会缓慢变化,需要大量的用户交互才能改变两个物品之间的相似性,从而改变推荐。每周生成一次相似性是一个很好的起点。还建议缓存用户推荐24-48小时,因为这不会经常改变,除非用户对更多物品进行评分。