手把手带你搭建推荐系统
黄鸿波
谷歌开发者专家,知名游戏公司技术专家
3434 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
手把手带你搭建推荐系统
15
15
1.0x
00:00/00:00
登录|注册

15|基于Flask的推荐服务:如何把召回集推荐出去?

你好,我是黄鸿波。
在前面的课程中,我们搭建了一个简单的 Flask 服务,并且已经可以通过 Postman 来进行调用,这节课我们将在此基础上,把基于规则的召回集成进来并推荐给用户。这节课你会学到下面的内容。
写一个基于时间的召回,并存储到 Redis 数据库中。
编写一个翻页查询服务,能够进行翻页查询。
编写 Service 服务,将基于时间的召回推荐给用户。

编写基于时间的召回

推荐系统如果想要将内容推荐给用户,首先要做的就是要找到合适的内容,然后将这些内容通过一定的整理和排序,按照一定的规则推荐给用户。这些规则可能是时间、热度、相似度以及一些用于特征的评分,也可以是这些中一个或者多个算法的结合。在这节课里,我们就先用简单的基于时间的召回算法来做。
首先,我们来回顾一下我们之前的内容画像,下图是内容画像其中的一条数据。
我们可以看到,我们的用户画像实际上是由 10 个字段组成,在这 10 个字段中,第一个字段 _id 是 MongoDB 数据库为我们生成的一个唯一的 id 值,我们可以用其作为索引,来标记其唯一性。
与时间相关的字段有 2 个,一个是 news_date,另一个是 create_time。在这两个字段中,news_date 表示的是新闻发布的时间,create_time 指的是这个新闻的入库时间(也就是爬虫爬取的时间),这两个时间作为特征数据在不同的算法中有不同的用处。我们目前是想要基于时间来进行召回,这个时间最好使用新闻的发布时间,因为新闻发布时间属于新闻本身的一个特征,可以防止“时间穿越”事件的发生。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何将基于时间的召回集成到Flask服务中,并推荐给用户。首先讲解了基于时间的召回算法的实现,包括从MongoDB数据库中取出数据,按时间倒序排序后存入Redis数据库,以提高数据存取效率。接着介绍了如何编写一个翻页查询服务和Service服务,将基于时间的召回推荐给用户。文章还提到了避免“时间穿越”问题的重要性,以及使用Redis数据库进行存取的优势。最后,文章给出了实际操作步骤,包括重新爬取数据并更新内容画像,以及将数据按时间顺序存入Redis数据库。整体来说,本文以实际案例为基础,详细介绍了基于时间的召回算法的实现步骤和注意事项,对于想要在推荐系统中应用此类算法的读者具有一定的参考价值。文章还提到了基于时间召回可以和用户画像相结合进行召回,需要特别注意“时间穿越”的问题,以及如何将MongoDB里的数据按时间顺序插入到Redis等技术要点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你搭建推荐系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • Weitzenböck
    这个代码到底在哪里啊?学了那么久了都没有看到

    作者回复: https://github.com/ipeaking/recommendation https://github.com/ipeaking/scrapy_sina

    2023-09-12归属地:江苏
  • peter
    Q1:源码链接已经提供了吗? Q2:百度首页会提供推荐列表,估计是什么算法? Q3:本文开始的“分数”,是根据什么确定的?某一个值可能选一个特殊值,比如特别大的数值,那其他的分数呢?

    作者回复: A1:同学您好,不好意思,最近事情有点多,源码将在下周左右提供; A2:一般来讲,都是用一个基本的推荐算法作为基础,然后配合深度学习的推荐来去做的,比如说YouTubeDNN或者双塔模型,但是具体用的是什么,这个我们无法判断; A3:我们这里面的分数实际上是写死的一个序列,在用其他算法,比如说YouTubeDNN或者协同过滤的时候,会有具体的分数,那些是计算出来的。

    2023-05-20归属地:北京
  • Geek_ccc0fd
    从mongodb获取排序数据报错:pymongo.errors.OperationFailure: FieldPath field names may not start with '$'. 发现不需要带$,我的pymongo版本4.3.3,正确代码: data = self.collection_test.find().sort([{"$news_date", -1}])

    作者回复: 这个可能是因为版本的不同会导致细微的差异,大家遇到这种问题可以自行百度下,有好的实践经验,也可以一起分享下。

    2023-05-19归属地:广东
  • 叶圣枫
    StrictRedis 构造的时候要指定本地的db id,不一定是db=10. 我的本地是0。
    2024-01-25归属地:上海
  • 悟尘
    文稿中的代码示例和github里的代码不一样呀,有点出入,应该以哪个为准?
    2023-12-13归属地:北京
    1
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部