推荐系统实战:新闻推荐系统基本流程

推荐系统实战:新闻推荐系统基本流程_第1张图片

系统的整体框架就如该图所示,是一个离线推荐的系统,也就是包含了N+1延迟,以此来降低系统复杂度(虽然还是很复杂)。同时,系统使用了crontab来连接各个链路,使整个过程可以自动化进行。

分为Offline和Online两部分

1. Offline部分

1.1 物料获取及存储处理

物料的获取主要通过爬虫在当天晚上23点自动从网页中进行抓取,并以JSON格式存入MongoDB的SinaNews数据库中。materials/news_scrapy

同时,要对物料画像进行处理,提出特征从MongoDB中存入Redis中,同时这里要更新一些当天新闻动态画像,比如点赞收藏等即时显现的。 materials/process_material.py

这部分处理的信息,要从Redis中调用提供给前端进行展示。materials/update_redis.py

1.2 用户画像更新部分

通过MySQL收集的用户注册信息和用户日志阅读点赞及收藏信息,更新MongoDB中的用户画像。materials/process_user.py

1.3 热门页和推荐页列表的处理

热门页:首先根据特征库的最新特征计算物料的热度值,过滤10天前的新闻,再生成热门列表模板,这里同时要分组打散热门新闻。然后为每个用户更新热门列表模板的倒排索引,再把这个数据存入Redis用于OnLineServer。recprocess/offline.py

推荐页:包括两部分,冷启动和个性化推荐两种,分别生成该显示的模板。recprocess/offline.py

冷启动:

2. Online部分

2.1 获取推荐页列表

根据用户id(新/老)获取其key来决定导入哪个推荐列表,并存入Redis中,然后通过过滤器把用户曝光数据存入MySQL中作为备份,这部分要过滤到热门页和推荐页重复的部分。

2.2 获取新闻详情页

主要是展示新闻详细信息,并提供用户点赞和收藏功能。

2.3 获取热门页列表

与推荐页类似,也是要根据用户ID判断并经过过滤更新用户曝光表。

2.4 后端服务器

对于RecsysServer, 其主要功能包括了处理后端请求和后端的数据记录。

后端请求:其中包括了用户注册请求 register(),用户登录请求 login(),用户推荐页请求 rec_list(),用户热门页请求 hot_list(),新闻详情请求 news_detail()和用户行为请求 actions()。

后端数据记录:包括记录用户行为日志,记录用户喜好操作,动态更新前端数据

你可能感兴趣的:(mongodb,redis,nosql)