网站文章推荐算法之一种简单权重体系设计

在网站中,我们希望把一些热门的文章推荐给读者,如何来确定哪些文章是真正热门的呢?我们用一个热度值来表示,而这个热度值,如果用于排序,则可以称之为权重。

权重是一个经过计算的值,主要用于检索结果排序。

网站中并不需要搜索引擎一样非常精确的文章排序,因此,我们可以认准几个重要参数,作为衡量权重的要素,我在自己的设计中,主要使用了4个参数:浏览量、点赞数、回复数、发布时间。

很多网站采用单一的要素,比如只采用浏览量作为权重,就会出现刷浏览的情况,比如一些用户投稿的文章,投稿者为了让自己的文章排在前面,就不停的刷浏览。当然,这种情况对于个人站影响并不是很大。但是,综合考虑多个要素,还是有一定价值。

浏览量大的,不一定真的是好文章,这里面涉及到一个马太效应的问题。当由于某篇文章在一些情况下,浏览量上去了,后面进来的读者就会继续点击阅读,又增长了其浏览量,这样周而复始,这篇文章可能永远都是浏览量第一。

当然,这也不是没有解决办法,比如你可以要求,必须是最近一个月的文章才能参与排名。但是,这也可能埋没好文章。

如何避免马太效应呢?就是使用综合的衡量要素。让各个要素之间的影响差距减小,甚至人为的增加一个额外的值,使得即使浏览量极大,也不会完全占据主导。

好了,下面来进行具体解释吧。(权重为10分制)

权重 = 浏览量占比*2.5 + 评论数占比*2.5 + 点赞数占比*3 + 时间值占比*2

占比是什么?就是一个比值。怎么计算?就是用当前文章的值,比上最大值。比如浏览量最大的文章的浏览量为1200次,而当前文章的浏览量为600次,那么浏览量占比就是 600/1200 = 0.5 。

为什么要以最大的浏览量作为参照进行占比计算呢?因为这样就可以让这个最大浏览量的文章比值为1,从而获得浏览量权重部分的满分。

为什么系数要按2.5、2.5、3、2来进行分配呢?这就是我设计的权重系数,当然,你也可以根据你的需要来重新设定,总之所有系数加起来为10(方便计算,你也可以设计为5分制)。

这样的设计可以减弱马太效应的影响,但是也不可能完全消除,比如某篇文章浏览量比较大,评论数和点赞数肯定也会比较多,评论和点赞一定是要先浏览才会进行的。如果能够找到更多的一些要素,相互之间没有影响就更好了。

时间占比也很重要,一篇文章发布的时间越久远,它的时间占比权重就越低,但是因为它不涉及用户的行为,所以权重系数分配肯定也比较小。

根据这种思维,你可以设计自己的权重体系,加入更多的要素,比如把用户停留时间、收藏量、二次阅读次数、分享到朋友圈次数等等加进来,当然,这是一个比较大的体系,如果你想去这样弄的话,欢迎与我讨论。

2015-05-10