推荐2

					↗ 标签正排redis===默认召回===超期过滤===排序===默认推荐列表redis
					↗相似文章列表===实时召回

新闻内容=kafka→内容分析 → 倒排索引
↘hdfs
↘ 内容去重
=hdfs

浏览器客户端=日志采集服务器=kafka=流模型=短时画像=短时兴趣redis=短时兴趣召回=已推过滤=短时土建列表redis
=hdfs =批模型=长时画像=长时兴趣redis=长时兴趣召回=已推过滤=排序=长时推荐列表redis

冷启动: 热门召回+用户属性召回

redis标签正排:
docid url 链接
src 来源
channel 频道
publishTime 发布时间
titile 标题
category 分类|分数
location 地域
duplicateDocid 重复新闻id
keyTags 内容标签关键词

内容去重模块:
对kafka内容进行去重,包含基于docid完全匹配去重+基于标题,摘要等文本内容去重
5分钟Simhash算法去重流任务:
标题和摘要组成的Simhash距离不大于3

内容分析模块:
基于文章标签,正文,完成内容分析,将标签以正排形式存入redis,以倒排形式存入hbase
1.基于cp标签的内容分析
2.基于内容标签生成内容相似列表

	相似内容文章计算:
		1.根据文章标签(关键词和权重)应用simhash算法进行计算
		2.关键词选取权重较大的topn;每篇文章计算出它的相似文章列表按照相似度(Hamming距离)排序
		
	对文本先去打搅各种符号,乱码,超链接等等;
	再用分词工具(hanlp)进行分词得到文章的关键词,docid:keyword1,keyword2
	主题分析:分词后的文章,用LDA(lightLDA)给定该文章的主题
	关键词抽取: 用tf/idf输出该文章的的标签, docid:tag1,tag2

[说明: ctype:一级分类,新闻,视频,图集; dtype:二级分类,无图,小图,大图,视频大图,视频小图....]

用户长期画像模块:
1.热点惩罚:热点新闻计算标签得分时进行降权处理
2.曝光惩罚:按天统计出用户曝光未点击的文章列表,对曝光但未点击的文章对应标签
3.用户内容兴趣偏好: userid|一级标签|得分||二级标签|得分|topic|得分|tags|得分
4.牛顿冷却实时偏好: 随时间偏好得分变小, score*e^-(当前时间-事件发生时间)a
5.用户所处生命周期标签生成: 新增用户,沉默用户,活跃用户
6.文章类型偏好生成:统计一级分类,二级分类的点击次数,曝光次数; 根据点击/曝光来确定用户文章类型偏好
7.用户行为特征生成: ①流量敏感/不敏感:过去一周不在wifi下访问次数
②刷新频率:过去一周推荐请求次数
③用户自然属性生成
接口:
用户长期内容偏好
用户自然属性生成
用户文章类型偏好
用户生命周期
曝光未点击
内容标签体系接口: 文章表:newsid,title,reason,tags,category,src,二级分类,三级分类,topics,pubTime,channel,文章类型,展示类型,视频播放时长,

用户实时画像模块

推荐引擎:

	召回列表:
		个性化列表:短时+长时+热点+地域
		冷启动用户:热点+地域
		默认列表: 推荐流程阻塞超时,或所有列表都为空
		
文章相似列表生成:
	每篇文章基于simhash相似度计算得到该文章的相似文章列表
	按天离线更新全量历史文章的相似文章列表
	近线计算新增文章的相似列表

热门召回:
线下点击量统计:
流任务:5分钟点击量统计+小时点击统计 ===小时热门召回(分频道)
批任务:天,周点击量统计 ===天热门,周热门召回(分频道)

布隆过滤器已推过滤:
	文章id找到发布时间,
		bitmap按天存储,发布时间属于同一天的已推文章存储在一起;某个bitmap中文章的发布时间均超过7天,改bitmap会被删除
		所以每个用户在redis中会同时存在8(过去7天)个bitmap
布隆过滤器已读过滤:
		过去一个月的已读(指点击收藏,不喜欢,分享)文章存储一个bitmap
posted @ 2021-02-08 17:31  等木鱼的猫  阅读(73)  评论(0编辑  收藏  举报