像Hacker News一样排序博客园首页文章

  Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,里面有很多有价值的信息。Hacker News的文章排序算法在2008年就公开了,对文章的排序指标计算公式如下

  其中,

  •  P表示帖子的得票数,减去1是为了忽略发帖人的投票。
  •  T表示距离发帖的时间(单位为小时),加上2是为了防止最新的帖子导致分母过小(之所以选择2,可能是因为从原始文章出现在其他网站,到转贴至Hacker News,平均需要两个小时)。
  •  G表示"重力因子"(gravityth power),即将帖子排名往下拉的力量,默认值为1.8,详情请参看阮一峰的网络日志

  

  博客园主页的文章,一直以来都是以时间排序,文章不论优劣,只要发布到首页,都能在首页上走一圈,长期以往,在园内营造一种邋遢的氛围,很多人没有用心写文章就发布到首页,甚至也包括我自己。如果文章以时间和用户评论与推荐多项指标综合考虑,那么可以让真正的精华的文章排在前面。虽然首页也有一个精华板块,但那里几个月前的文章都排在第一页,只能说精华板块的精华文章明显不够用。

  我将博客园首页前10页的文章的标题、URL、阅读次数、推荐次数拿下来,然后按照如下的公式进行排名:  

  其中,v是阅读次数、r是推荐次数,G是一个权重,T是文章发表时间到当前的间隔,T的单位是(10分钟)比如T=100,表示文章发布距现在已经有100个10分钟(即100/6=16个小时了)。

  我们希望的理想排名是优质的文章在第一页最前面部分,而刚出来的文章在第一页的中下部分,随着时间的推迟,新出炉的好文章就会被大家推荐,从而排名上升,而劣质的文章将被时间拉下去,很快退出首页。

  我把前10页的200篇文章排序,并取前50篇,形成一个简洁版的文章首页,然后在linux上例行化,每隔10分钟刷新一次,这样就能看到一个动态的精华首页了。排序公式是我自己想的,(1+r)/v表示推荐比例,即平均一个推荐需要多少次阅读,这有利于优秀的文章迅速提升,刚出炉的优秀文章没有多少阅读量,当看过的的都点赞,那它的权重将很快提升。当然这公式也不尽合理,仅仅是我自己的主观臆断,G我取的是1.2,参数调优可能需要调优。  

  下面是一个样例:

 大家可以在github上看一看使用排序后的精华首页(10分钟更新一次)。

  写这篇文章是自己突发奇想,算是给博客园的一些建议吧,希望管理员可以改进,博客园最近在移动端的阅读体验有提示,不知道是我的手机浏览器变好了,还是博客园改进了。另外我认为博客园可以在个性化推荐上进行改进。

  2010年知乎出来时,我在想百度知道已经做得这么强了,现在整一个知乎能有大的成就吗,现在看了知乎已经营造了一个良好的社区,每一个成员的都是认真地回答问题。在每一个细分领域,真的有人把一件事做到极致。

  博客园加油!

  PS:不知道我做的精华首页放在github是否对博客园造成损失,如果有,请管理员通知,我会把例行化取消。

 

 感谢阅读,转载请注明出处:http://www.cnblogs.com/fengfenggirl/

posted @ 2014-05-24 20:14  CodeMeals  阅读(2522)  评论(18编辑  收藏  举报
reliable statistics
Visitors