新闻推荐系统实战:自动化构建用户及物料画像

新闻画像:对爬取的新闻数据进行处理。

 

用户画像:首先将新注册的用户添加到用户画像库中,对在系统中产生了行为的用户,定期的更新其画像(长短期)。

1. 物料侧画像的构建

1.1 新物料来源

Scrapy爬取。在每天的凌晨一点爬取前一天的新闻,可以爬到更多的物料,但时效性会延迟一天,其内容存储在MongoDB中。

  • scrapy.cfg: 项目配置文件
  • myproject/ : 项目python模块, 代码将从这里导入
  • myproject/ items.py: 项目items文件,
  • myproject/ pipelines.py: 项目管道文件,将爬取的数据进行持久化存储
  • myproject/ settings.py: 项目配置文件,可以配置数据库等
  • myproject/ spiders/: 放置spider的目录,爬虫的具体逻辑就是在这里实现的(具体逻辑写在spider.py文件中),可以使用命令行创建spider,也可以直接在这个文件夹中创建spider相关的py文件
  • myproject/ middlewares:中间件,请求和响应都将经过他,可以配置请求头、代理、cookie、会话维持等
  • spider是定义一个特定站点(或一组站点)如何被抓取的类,包括如何执行抓取(即跟踪链接)以及如何从页面中提取结构化数据(即抓取项)。换言之,spider是为特定站点(或者在某些情况下,一组站点)定义爬行和解析页面的自定义行为的地方。
  • XPath 是一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历。
  • 爬虫项目中实现三个核心文件,分别是sina.py(spider),items.py(抽取数据的规范化及字段的定义),pipelines.py(数据写入数据库)

1.2 物料画像的更新

  1. 新物料画像添加到物料库中
  2. 旧物料画像,通过用户的交互记录进行更新

根据画像字段,首先通过文章的title判断文章是否已经在物料库中,随后给字段初始化,存入画像物料池中(MongoDB)。

第二步是旧物料的画像更新,由于一些交互信息需要实时的展现出来,因此这些动态信息被存在了Redis当中来被前端实时获取,因此新闻物料存在Redis中分为静态特征和动态特征,这样是为了线上实时更改物料动态信息的时候更加高效。

存储在Redis中的物料会被定时清除,在清除前需要去除一些字段并(备份)存储到MongoDB中。MongoDB中有一个特征库和一个前端展示专用的库,再完成新老画像更新后,会将明天需要展示的前端无聊从RedisPortrail库中更新到Redis中。

 同时存储在Redis中的画像分为两个库,分别是特征库FeaturePortrail和RedisPortrail。

 整个系统逻辑如下图:

from material_process.news_protrait import NewsProtraitServer
from material_process.news_to_redis import NewsRedisServer

def process_material():
    """物料处理函数
    """
    # 画像处理
    protrail_server = NewsProtraitServer()
    # 处理最新爬取新闻的画像,存入特征库
    protrail_server.update_new_items()
    # 更新新闻动态画像, 需要在redis数据库内容清空之前执行
    protrail_server.update_dynamic_feature_protrail()
    # 生份成前端展示的新闻画像,并在mongodb中备份一
    protrail_server.update_redis_mongo_protrail_data()

    # 新闻数据写入redis, 注意这里处理redis数据的时候是会将前一天的数据全部清空
    news_redis_server = NewsRedisServer()
    # 将最新的前端展示的画像传到redis
    news_redis_server.news_detail_to_redis()


if __name__ == "__main__":
    process_material() 

1.3 用户画像的更新

(未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值