内容分发feed流的思考与总结
过去一年一直在做内容分发,昨天看了张小龙关于微信十年的分享,里面提到了视频号做分发的过程,结合自己的理解,对过去一年的分发思考做一个总结。
但凡做过分发的人都知道,分发是由候选集+排序两部分构成。
候选集是你如何构建分发的内容池,候选集的范围通常被产品的形态所限定,例如关注候选集,就是我所有关注用户的内容的集合。推荐候选集,就是所有站内内容的集合(有的产品也可以突破站内,例如搜索引擎)。
当内容量级比较大的时候,如果进行全量计算,效率是很低的,所以如何通过科学的方式高效的构建和定义候选集范围,是产品经理需要思考的问题,通常的做法有:
时间聚类
只取一段时间内的作品(例如最近3个月)这样可以极大的减少数据量,并且如果是社区型产品,限定时间还有利于作者的正向激励,把更多的曝光机会留给近期的活跃用户和新用户,从而实现优质创作者的挖掘、激励闭环。
标签聚类
通过人工或机器的方式,给内容打上标签,通过同类标签进行聚类。而标签的颗粒度和结构设计(树状结构或网状结构),决定了聚类的范围和灵活度。
最简单的结构就是类似新闻网站的层级分类结构,例如新浪网的体育、军事、娱乐(韩娱、好莱坞、综艺)、财经等。当用户之前看过一个或多个分类的情况下,用当前分类的内容构建分发候选集。
协同聚类
可以是人与人的协同(包括关系协同,例如我关注的人看过的内容)也可以是物物协同。例如很多电商网站,买了这个的人还买了xx,就是这种方式的应用。
排序是解决候选集内容的显示顺序问题,主要做法有:
时间排序
按照发布内容先后顺序排列。
热度排序
按照内容的热度倒序排列,热度的定义根据产品的不同而不同,但通常用内容的互动率来定义,同时还要兼顾新内容的曝光机会(通常用时间衰减来实现)。主要热度排序算法有hacker news的排序、Reddit的排序等,至于如何选择,需要基于产品自身的特点判断。例如新闻网站就需要强时间衰减的算法,知识类网站需要得票数超过一定阈值平滑过渡,让更多新内容能够被曝光,使用Reddit算法更合适。
模型排序
抽象各个维度的factor,灌入模型自动计算一个内容对于各个factor的综合权重,最后得出排序,模型排序通常是黑盒且不可解释的,通常factor越多、可用数据行为越多,模型预测的准确度越高。
维度包括但不限于:
1)用户维度:用户的性别、年龄、家乡、学历、兴趣等
2)关系维度:好友关系、关注关系、临时关系
3)内容维度:基础标签(例如音乐作品的歌曲名、艺术家等)、分类标签(基于人工或算法打的标签,例如曲风、节奏等)
4)行为维度:互动(赞扩评)、点击、完播等
以下是一些具体的case举例:
Case1:
某内容平台日内容量1w,良品率0.1%。
产品形态:日榜形式或单排时间流
原因:可分发作品量级太少(日可分发作品=1w*0.1%=10),即使积累3个月也只有几百量级且都是精品,无复杂计算的必要性。
Case2:
关注流排序(人均关注人数*一段时间内内容发布率*人均发布条数 约= 人均浏览条数),时间排序即可,为降低个别用户频繁发布对于浏览者体验的影响以及对于其他用户曝光的影响,可以在时间流的基础上追加合并的逻辑。
Case3:
关注流排序(人均关注人数*一段时间内内容发布率*人均发布条数 >> 人均浏览条数)就出现了内容过载的情况,可以采用热度或亲密度等排序算法。
Case4:
某内容采买平台,日内容量10w。
候选集准备:
通过可以定义内容标准的程序化维度对内容进行初筛,筛掉40%的劣质内容减少人工工作量(以一个人30s审核一个内容为例,500-1000个/人),规则取决于内容本身,如果是音频,可以是时长、有效人声比例等
利用现有的格式化信息构建基础标签,例如音频歌曲名、演奏者、年代等。
通过一些技术手段协助人工打一些非标准化标签,例如人声的性别识别、文本信息的nlp识别等
排序
初期可采用热度排序的方式保证Feed流的质量(这么大数据量级作品,纯时间序质量会很差),同时积累用户行为数据
用固定曝光位的方式或者赛马的方式(主要取决于可用流量的测算)完成新内容的冷启动,保证内容能够循环起来
用探索的方式完成用户的兴趣识别,避免蚕房效应
随着内容数据和行为数据的积累,逐步由热度排序向模型排序过渡。
以上的罗列可以囊获大部分分发场景,但分发的核心并不是这一套逻辑框架,难点在于对产品本身内容(质量、数量)、资源(人力投入、采买成本投入)、价值主张(中心化、去中心化)等综合评判的结果,这些因素都是动态变化的。所以分发的策略要随之变化。
以上只粗糙的列举了几种case,具体的情况会复杂的多,需要结合产品的实际数据情况和实验表现不断调优,找到最适合的方式。
-END-