热门内容对任何网站都很重要,对社交网站更为重要。如何让用户第一眼就看到感兴趣的内容而留下来,正是各种排名算法的任务。
设计一个好的排名算法,需要考虑的因素很多,其中最重要的是以下两点:
- 社区属性及内容属性
- 网站本身内容的量级与更新频率
前者决定采用何种排名算法,后者确定排名的上升与下降速度。
影响因素
社区属性及内容属性
社交网站产生许多用户上传的内容,对这些内容进行排名时,需要考虑内容本身的信息。
从类型上,UGC内容主要是图片、文章、音频还是视频?一般来说,图片扫一眼,文章读一遍,音频听一次,视频看一遍,占用用户的时间依次增加,留住用户的成本也随之增加。
从特征上,单图或多图?段子还是长文?一首歌还是一集Podcast?短视频还是长视频?越复杂的形式,用户付出的时间成本越大。
用户付出了时间,那么会要求回报。网站回报用户的东西,无外乎兴趣和价值。而兴趣和价值,是两条不同方向的岔路,通向不同的排名算法。
网站本身内容的量级与更新频率
内容的量级,像大象与蚂蚁,体量越大,系统越复杂。从海量内容中挑选出热门内容,需要更多的参数和指标。
更新频率,像流水线与手工作坊,频率越快,产出越多。新内容产生出来后,排名需要很快地上升,才能排到前列,引起注意;旧内容存在一段时间后,排名需要很快地下降,才能让位给新内容。
所以,需要根据网站本身的内容,确定排名算法需要考虑的参数,以及确定参数的取值。
兴趣与价值
用户留下来,无外乎几种情况:这个东西很有趣(有趣型),或这个东西对我有用(有用型),或者兼而有之。
有趣的东西,用户第一眼看到就喜欢,但内容本身没有收藏价值。用户的态度是:见之我喜,不见也有其它东西让我喜。例如各种段子、笑话、gif图等。
有用的内容,用户看后念念不忘,收藏以备以后查看、回味与参考。例如旅游攻略、喜欢的文章、好听的歌曲等。
排名如何上升
新内容一产生出来就具有上升趋势。
用户浏览、like(点赞、顶,喜欢)、评论、高评分(星级),编辑推荐等,都会使排名上升。
有趣型的内容,排名迅速上升,如病毒般地传播开来。
有用型的内容,排名逐渐上升,越到后来越多人知道它的价值。
排名如何下降
旧内容渐渐呈现下降趋势。
少有访问、dislike(讨厌、踩,反对)、低评分(星级)、编辑降权,都会使排名下降。
有趣型的内容,排名维持了一段新鲜期后,大部分用户就失去兴趣了。
有用型的内容,排名虽然下降了,但其价值还在,还会不断有人关注。
没有银弹
知名博主阮一峰发表了6篇基于用户投票的排名算法的系列文章。这6篇文章剖析了几个网站的排名算法。
如Delicious采用"过去60分钟内被收藏的次数"进行排名。每过60分钟,就统计一次。它的上升和下降趋势就是阶梯函数式的。
Hacker News采用票数计算排名,并考虑时间因素,分数随着时间逐渐减小。看下降曲线,Hacker News属于有趣型的网站(用户当然可以获得价值,这里指排名算法的类型)。
Stack Overflow属于有用型的网站。一个问题提出后,需要网友的回答、对答案投赞成或反对票、评论。这些内容的完善都需要时间。所以,随着时间的推移,一些问题和答案的价值开始慢慢显露,当你搜索时,Statck Overflow就会给你展示最有用的内容。
redit也属于有趣型的网站。它的时间因素占主导,就是说任何人发的新内容都比较容易靠前;排名算法中利用了赞成票与反对票的差额,说明有争议(很多人赞成,同时很多人反对)的内容,排名靠后;很多人赞成,很少人反对的内容,排名靠前。阮一峰得出结论:
这决定了Reddit是一个符合大众口味的社区,不是一个很激进、可以展示少数派想法的地方。
这也说明了,没有银弹,要建设什么样的社区,就要采用能体现社区特征的排名算法。
博客链接
http://spetacular.github.io/2016/02/15/sns-hot-feed-ranking-algorithm.html