离线系统基本内容:
新闻物料爬取:主要采用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会自动构建物料画像然后存储到数据库中。
将今天爬取的数据构造画像存入画像数据库(MongoDB)中,包含:ews_id,title,raw_key_words,manual_key_words,ctime,content,cate,url,
动态画像初始值(likes,collections,read_num,hot_value)
每天都需要将新闻详情更新到redis中,并且将前一天的redis数据删掉
用redis的动态画像更新mongodb的画像,将mongodb中对应的动态画像更新
用户画像数据构建
文件目录
├── process_user.py ├── update_redis.py └── user_process ├── user_protrail.py └── user_to_mysql.py
用户画像数据构建流程
运行process_user.py 会自动将用户的曝光数据从redis落到mysql中,并且更新用户画像
用户曝光数据user_id,news_list保存到mongodb
每天都需要将当天注册的用户添加到用户画像池中
获取用户历史行为的统计特征进行用户画像数据更新(弃用)
├── process_material.py ├── process_user.py ├── update_redis.py └── user_process ├── user_protrail.py └── user_to_mysql.py