关键词推荐系统架构

在百度做关键词推荐系统3年多, 以前更多是从工程, 以及解决用户需求的角度去考虑系统的实现。 大概一年前开始系统地学习业界推荐系统相关的内容并对照自己手头的工作。 当时就画了以下系统结构图, 算是对百度关键词系统(KR: Keyword Recommendation)中主动推荐(主动push结果给客户)的一个总结。
系统逻辑图如下:
当中包含以下几个重要步骤:
  1. 离线的数据挖掘: 根据广告库,客户landingpage内容, 网名检索query等数据,建立关键词之间的关系。 这块能做的工作非常多,包括建立关键词之间的商业价值关系,等同相关性等。很多任务都是offline的, 在hadoop/spark上进行挖掘。
  2. 关键词候选集索引建立:当这些关系建立后,就将这些关系数据建立索引加入线上系统,而且经常会提前做结构化的预处理以提升线上处理效率。
  3. user profile建立:根据用户提词反馈, 包括显式的反馈,包括对关键词的正/负向评估以及隐式反馈(通过KR,或者通过其他途径提交了关键词),以及用户的注册信息,Landingpage等构建用户user profile
  4. 结果触发:当用户访问KR时,首先根据离线挖掘的各种关系数据进行触发, 得到关系数据的大量候选。之后结合user profile进行过滤
  5. ranking: 该处的ranking较为负责, 可以分别对采用率, 的pair的效用,使用模型进行预估, 之后综合加权。 此处的效用, 可以根据具体场景的不同而做定制。
  6. 业务逻辑的ranking(Marketing Rule):相较于上边提到的纯算法策略的ranking,有时也需要根据具体产品的出口, 场景等因素, 使用规则对结果进行reranking, 以满足业务需求(此处未在上图中体现)
当然真实系统并不是上述内容就能说清的, 例如线下数据挖掘,就会用到二步图, 全关系PageRank, 关联规则等多种方式进行挖掘。 触发时也需要考虑各种同意,核心等的变换, ranking时使用机器学习方法结合业务规则综合排序。 更多细节可以参考后续推荐系统相关文章。
更多内容可关注微博:weibo.com
或是直接访问: http://semocean.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注