Hacker News 排名算法工作原理

标签: hacker news 排名 | 发表时间:2013-08-25 17:50 | 作者:
出处:http://simple-is-better.com/

这篇文章我要向大家介绍 Hacker News网站的文章排名算法工作原理,以及如何在自己的应用里使用这种算法。这个算法非常的简单,但却在突出热门文章和遴选新文章上表现的异常优秀。

深入 news.arc 程序代码

Hacker News是用Arc语言开发的,这是一种Lisp方言,由Y Combinator投资公司创始人 Paul Graham创造。Hacker News的开源的,你可以在 arclanguage.org找到它的源代码。深入发掘 news.arc 程序,你会找到这段排名算法代码,就是下面这段:

; Votes divided by the age in hours to the gravityth power.
; Would be interesting to scale gravity in a slider.

(= gravity* 1.8 timebase* 120 front-threshold* 1 
   nourl-factor* .4 lightweight-factor* .3 )

(def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
  (* (/ (let base (- (scorefn s) 1)
          (if (> base 0) (expt base .8) base))
        (expt (/ (+ (item-age s) timebase*) 60) gravity))
     (if (no (in s!type 'story 'poll))  1
         (blank s!url)                  nourl-factor*
         (lightweight s)                (min lightweight-factor* 
                                             (contro-factor s))
                                        (contro-factor s))))

本质上,这段 Hacker News采用的排名算法的工作原理看起来大概是这个样子:

Score = (P-1) / (T+2)^G

其中,
P = 文章获得的票数( -1 是去掉文章提交人的票)
T = 从文章提交至今的时间(小时)
G = 比重,news.arc里缺省值是1.8

正如你看到的,这个算法很容易实现。在下面的内容里,我们将会看到这个算法是如何工作的。

比重(G)和时间(T)对排名的影响

比重和时间在文章的排名得分上有重大的影响。正常情况下如下面所述:

  • 当T增加时文章得分会下降,这就是说越老的文章分数会越底。
  • 当比重加大时,老的文章的得分会减的更快

为了能视觉呈现这个算法,我们可以把它绘制到 Wolfram Alpha

得分随着时间是如何变化的

Score 24 hours

你可以看到,随着时间的流逝,得分骤然下降,例如,24小时前的文章的分数变的非常低——不管它获得了如何多的票数。

Plot语句:

plot(
    (30 - 1) / (t + 2)^1.8, 
    (60 - 1) / (t + 2)^1.8,
    (200 - 1) / (t + 2)^1.8
) where t=0..24

比重参数是如何影响排名的

Gravity effects

图中你可以看到,比重越大,得分下降的越快。

Plot语句:

plot(
    (p - 1) / (t + 2)^1.8, 
    (p - 1) / (t + 2)^0.5,
    (p - 1) / (t + 2)^2.0
) where t=0..24, p=10

Python语言实现

之前已经说了,这个评分算法很容易实现:

def calculate_score(votes, item_hour_age, gravity=1.8):
    return (votes - 1) / pow((item_hour_age+2), gravity)

关键是要理解算法中的各个因素对评分的影响,这样你可以在你的应用中进行定制。我希望这篇文章已经向你说明了这些  :-)

祝编程快乐!

编辑:

Paul Graham 分享了修正后的 HN 排名算法

    (= gravity* 1.8 timebase* 120 front-threshold* 1
       nourl-factor* .4 lightweight-factor* .17 gag-factor* .1)

    (def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
      (* (/ (let base (- (scorefn s) 1)
              (if (> base 0) (expt base .8) base))
            (expt (/ (+ (item-age s) timebase*) 60) gravity))
         (if (no (in s!type 'story 'poll))  .8
             (blank s!url)                  nourl-factor*
             (mem 'bury s!keys)             .001
                                            (* (contro-factor s)
                                               (if (mem 'gag s!keys)
                                                    gag-factor*
                                                   (lightweight s)
                                                    lightweight-factor*
                                                   1)))))

 

本文由“ 外刊IT评论”网( www.aqee.net)荣誉出品

[英文原文: How Hacker News ranking algorithm works ]

# 来源: 外刊IT评论


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [hacker news 排名] 推荐:

Hacker News的热门排名算法

- - 互联网实践
Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建. 与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票.

Hacker News 排名算法工作原理

- - python.cn(jobs, news)
这篇文章我要向大家介绍 Hacker News网站的文章排名算法工作原理,以及如何在自己的应用里使用这种算法. 这个算法非常的简单,但却在突出热门文章和遴选新文章上表现的异常优秀. 深入 news.arc 程序代码. Hacker News是用Arc语言开发的,这是一种Lisp方言,由Y Combinator投资公司创始人 Paul Graham创造.

基于用户投票的排名算法(一):Delicious和Hacker News

- - 阮一峰的网络日志
互联网的出现,意味着"信息大爆炸". 用户担心的,不再是信息太少,而是信息太多. 如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题. 各种各样的排名算法,是目前过滤信息的主要手段之一. 对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新. 排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位.

【Hacker News】不,我才不会去下载你的狗屁软件

- - CSDN博客推荐文章
/*------------------------------------------- 程序猿的进化论------------------------------------------------*/. Hacker News上收集了很多IT界牛人的博客,有的文章读后感觉醍醐灌顶,有的文章幽默诙谐,有的文章完全颠覆你的价值观.

单独的 Google News Archive 搜索下线

- 猫 - 谷奥——探寻谷歌的奥秘
Google已经在今年5月宣布关闭老报纸扫描计划,但当时他们说的好好的,只是不再继续扫描老报纸了,之前已经扫描的报纸还会在,且可通过Google News Archive Search搜索并阅读(如上图). 但是今天大家却发现,Google News Archive Search已经进不去了,Google会直接给你重定向到Google News的高级搜索页面里.

◇News特報『我們的白衣天使~♥』

- MDJ - 模物語
腐貓:唉呀…就別計較這麼多了嘛~. 少女A:雪集愛穿的款式也在裡面唷. 答對者可以獲得少女A的OO唷♥. 本篇文章歡迎轉貼,但請備註來源連結為模物語. 若喜愛本文內容就按個讚或推Or留個意見嘿.

Hacker Typer – 逼真黑客范儿 | 小众软件 > 在线应用

- leplay - 小众软件
Hacker Typer 是不折不扣的装逼应用. 你可以一行程序都不会写,只需要一点黑客范儿,就可以让妹子们刮目相看了. 按钮,然后自然熟练地把键盘按地劈里啪啦,不要激动,不要劲舞范儿. 只见代码喷薄而出,就像飞速拉开的裤子拉链. 当妹子们邀请你去修电脑时,你懂的. 注:在 iOS/Android 上都有同名同种的应用可以下载哦,跨平台装逼.

QR Hacker:个性化QR码制作工具

- huangct - 雷锋网
QR码已经在我们的生活中大行其道,但大多数QR码还是保持着一贯的黑白两色方块风格. 我们介绍的在线自定义QR码制作工具QR Hacker则完全颠覆了QR码的传统印象,用户可以为QR码设置不同的颜色、形状、以及Logo、照片等,让你的QR码更具有个性. 用QR Hacker生成QR码共分5步:. 输入信息(文字、地址、电话等);.

★News速報 『K-ON!劇場版目的地為倫敦!』

- qugougou - 模物語
(穿這樣還是堅持要吃冰淇淋的唯超可愛呀~~). 在第二期動畫第27回中為了辦理出國護照而搞的焦頭爛額的五人,這次在官網最新公佈的訊息中透露了真正的目的地. 的粉絲們現在就可以開始上網看看倫敦的相關旅遊情報囉,這樣劇場板上映的時候會看起來更有感覺唷~. 而公佈消息的來源跟聖誕之吻二期製作決定一樣來自於今天舉辦的TBS動畫祭2011,而訊息中也透露了去的成員只有HTT,所以小憂及小和出場的戲份應該會激減...

Google Squared 和 Google News Timeline 等实验室项目确定下课

- applelen - 谷奥——探寻谷歌的奥秘
Google还在忍痛割爱地挑选哪个Google Labs项目可以留下,而谁会下课. 今天又确定有4个实验项目下课:. Google Squared于2009年6月发布,以表格形式提供系统而规矩的搜索结果. 后来其技术也直接集成进Google搜索,比如你如果问Lady Gaga的生日的话,不必看问答网站或维基百科,Google直接就告诉你了(上图).