IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Datawhale组队学习——推荐系统Task03 离线物料系统的构建 -> 正文阅读

[大数据]Datawhale组队学习——推荐系统Task03 离线物料系统的构建

以下学习笔记参考自Datawhale12月组队学习的推荐系统课程,内容主要为离线物料系统的构建。
项目原链接: https://github.com/datawhalechina/fun-rec

请添加图片描述

离线物料系统基本流程

  • 物料侧画像的构建:首先添加新物料,新物料通过每天凌晨在新闻网站上爬取并存储在MongoDB中,对于旧物料画像,通过用户的交互记录(阅读,点赞,收藏)进行更新并将其拆分为静态和动态分别存入Redis中。

  • 用户侧画像的构建:主要分为新注册用户画像的更新和老用户画像的更新两方面。用户通过前端注册页面,进行用户注册,新注册用户基本信息及其行为数据构造用户画像,存入MongoDB中的UserProtrai集合中。用户通过阅读、点赞及收藏新闻,将用户行为数据存入MySQL的用户阅读信息表(user_read)、用户点赞信息表(user_likes)和用户收藏信息表(user_collections)。

  • 画像自动化构建:编写脚本定时完成一系列任务,先爬取新闻数据,这里需要注意的是,虽然是今天零点爬数据,但是实际上爬的是前一天的新闻。数据爬完之后,离线更新用户画像,物料画像及线上要存储再redis中的画像。最后是离线推荐的流程,离线将用户的排序列表存到redis中,线上取出即可。

scrapy进行新闻爬取

使用scrapy创建爬虫项目

输入以下命令即可创建scrapy项目:

scrapy startproject sinanews

爬取流程

  • 调用start_request()方法开始爬取,并作为返回请求的迭代器。
  • 调用parse()方法对scrapy下载的URL链接进行处理。
  • 通过回调parse()方法,解析网页并返回在items.py中定义的对象,通过回调下一层的parse_content()方法,解析新闻内容。
  • 每天凌晨定时从sina网站爬取新闻信息,将不重复的新闻存入MongoDB。

物料画像构建

物料画像更新逻辑

  • 新物料添加到物料库这件事情肯定是发生在新闻爬取之后的,将新物料添加到物料库之前还需要对新物料做一些去重和其他简单的画像处理,具体则是将新物料画像添加到MongoDB的NewsRecSys库的FeatureProtrail
  • 将用户的动态行为信息(阅读,点赞,收藏)更新到旧物料(新闻动态画像)中
  • 将最新的物料库中的新闻信息往RedisProtrail物料库中写一份,并去掉一些前端展示不需要的字段内容,作为存储再redis中的新闻内容的备份内容。

核心函数功能

  • update_new_items():新物料画像的更新
  • update_dynamic_feature_protrail():更新动态特征
  • update_redis_mongo_protrail_data():redis展示新闻内容的备份

物料添加进redis数据库

    # 每次创建这个对象的时候都会把数据库中之前的内容删除
    news_redis_server = NewsRedisServer()
    # 将最新的前端展示的画像传到redis
    news_redis_server.news_detail_to_redis()

用户侧画像的构建

用户画像更新逻辑

  • 将用户的新闻曝光数据保存到MySQL中,用于进行去重。
  • 每日遍历用户日志,更新用户历史阅读的记录,对阅读、点赞和收藏三个用户行为表来做具体的用户兴趣相关画像。

核心函数功能

  • user_exposure_to_mysql():用户曝光数据落在mysql
  • update_user_protrail_from_register_table():更新用户画像

画像自动化构建

  • 物料更新脚本:process_material.py,用户画像更新脚本: process_user.py,redis数据更新脚本:update_redis.py
  • 将上面三个脚本穿起来的shell脚本:offline_material_and_user_process.sh
  • 使用crontab定时任务,每天凌晨1点执行shell脚本
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:49:12  更:2021-12-23 15:50:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:52:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码