zl程序教程

您现在的位置是:首页 >  系统

当前栏目

推荐系统-Task03离线物料系统的构建

系统 构建 推荐 离线 物料
2023-09-14 09:12:44 时间

新闻推荐系统项目:datawhale-fun-rec: JustForFun小队,Datawhale推荐系统学习项目,仅供个人学习!

 如上图所示,离线部分的物料系统流程分为物料爬取、画像构建,用户画像更新与构建。进行离线计算,为每个用户提供一个热门页列表和推荐页列表并缓存,为后续在线部分服务。

离线系统基本内容:

  • 新闻物料爬取:主要采用scrapy爬虫工具,在每天晚上23点将当天的新闻内容从网页中进行抓取,存入MongoDB的SinaNews数据库中。
  • 物料画像构建:更新当天新闻动态画像,将用户对前一天新闻的交互,包括阅读、点赞和收藏等行为(动态)存入Redis中;对物料画像处理,将新闻静态和动态数据分别存入对应的Redis中。
  • 用户画像构建:用户通过前端注册页面,进行用户注册,将用户信息存入MySQL的用户注册信息表(register_user)中;用户通过阅读、点赞及收藏新闻,将用户行为数据存入MySQL的用户阅读信息表(user_read)、用户点赞信息表(user_likes)和用户收藏信息表(user_collections);将当天的新注册用户基本信息及其行为数据构造用户画像,存入MongoDB中的UserProtrai集合中。
  • 自动化构建画像:将物料画像构建和用户画像构建进行整合,构建整个自动化流程。

项目结构:

物料画像的构建

文件目录

├── material_process
│   ├── log_process.py
│   ├── news_protrait.py
│   ├── news_to_redis.py
│   └── utils.py
├── process_material.py
└── update_redis.py

物料画像构建流程

运行process_material.py会自动构建物料画像然后存储到数据库中。

  1. 将今天爬取的数据构造画像存入画像数据库(MongoDB)中,包含:ews_id,title,raw_key_words,manual_key_words,ctime,content,cate,url,
    动态画像初始值(likes,collections,read_num,hot_value)
  2. 每天都需要将新闻详情更新到redis中,并且将前一天的redis数据删掉
  3. redis的动态画像更新mongodb的画像,将mongodb中对应的动态画像更新

用户画像数据构建

文件目录

├── process_user.py
├── update_redis.py
└── user_process
    ├── user_protrail.py
    └── user_to_mysql.py

用户画像数据构建流程

运行process_user.py 会自动将用户的曝光数据从redis落到mysql中,并且更新用户画像

  1. 用户曝光数据user_id,news_list保存到mongodb
  2. 每天都需要将当天注册的用户添加到用户画像池中
  3. 获取用户历史行为的统计特征进行用户画像数据更新(弃用)
├── process_material.py
├── process_user.py
├── update_redis.py
└── user_process
    ├── user_protrail.py
    └── user_to_mysql.py

后续更新!!!

参考资料:我的组队学习