成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hacker News排名算法工作原理

開發(fā) 前端 后端 算法
這篇文章我要向大家介紹Hacker News網(wǎng)站的文章排名算法工作原理,以及如何在自己的應(yīng)用里使用這種算法。這個算法非常的簡單,但卻在突出熱門文章和遴選新文章上表現(xiàn)的異常優(yōu)秀。

[[83666]]

這篇文章我要向大家介紹Hacker News網(wǎng)站的文章排名算法工作原理,以及如何在自己的應(yīng)用里使用這種算法。這個算法非常的簡單,但卻在突出熱門文章和遴選新文章上表現(xiàn)的異常優(yōu)秀。

深入news.arc 程序代碼

Hacker News是用Arc語言開發(fā)的,這是一種Lisp方言,由Y Combinator投資公司創(chuàng)始人Paul Graham創(chuàng)造。Hacker News的開源的,你可以在arclanguage.org找到它的源代碼。深入發(fā)掘 news.arc 程序,你會找到這段排名算法代碼,就是下面這段:

  1. ; Votes divided by the age in hours to the gravityth power.  
  2. ; Would be interesting to scale gravity in a slider.  
  3.  
  4. (= gravity* 1.8 timebase* 120 front-threshold* 1   
  5.    nourl-factor* .4 lightweight-factor* .3 )  
  6.  
  7. (def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))  
  8.   (* (/ (let base (- (scorefn s) 1)  
  9.           (if (> base 0) (expt base .8) base))  
  10.         (expt (/ (+ (item-age s) timebase*) 60) gravity))  
  11.      (if (no (in s!type 'story 'poll))  1 
  12.          (blank s!url)                  nourl-factor*  
  13.          (lightweight s)                (min lightweight-factor*   
  14.                                              (contro-factor s))  
  15.                                         (contro-factor s)))) 

本質(zhì)上,這段 Hacker News采用的排名算法的工作原理看起來大概是這個樣子:

  1. Score = (P-1) / (T+2)^G  
  2.  
  3. 其中,  
  4. P = 文章獲得的票數(shù)( -1 是去掉文章提交人的票)  
  5. T = 從文章提交至今的時間(小時)  
  6. G = 比重,news.arc里缺省值是1.8 

正如你看到的,這個算法很容易實現(xiàn)。在下面的內(nèi)容里,我們將會看到這個算法是如何工作的。

比重(G)和時間(T)對排名的影響

比重和時間在文章的排名得分上有重大的影響。正常情況下如下面所述:

  • 當(dāng)T增加時文章得分會下降,這就是說越老的文章分數(shù)會越底。
  • 當(dāng)比重加大時,老的文章的得分會減的更快

為了能視覺呈現(xiàn)這個算法,我們可以把它繪制到Wolfram Alpha

得分隨著時間是如何變化的

你可以看到,隨著時間的流逝,得分驟然下降,例如,24小時前的文章的分數(shù)變的非常低——不管它獲得了如何多的票數(shù)。

Plot語句:

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

比重參數(shù)是如何影響排名的

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

Plot語句:

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

Python語言實現(xiàn)

之前已經(jīng)說了,這個評分算法很容易實現(xiàn):

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

關(guān)鍵是要理解算法中的各個因素對評分的影響,這樣你可以在你的應(yīng)用中進行定制。我希望這篇文章已經(jīng)向你說明了這些。

祝編程快樂!

編輯:

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

  1. (= gravity* 1.8 timebase* 120 front-threshold* 1 
  2.    nourl-factor* .4 lightweight-factor* .17 gag-factor* .1)  
  3.  
  4. (def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))  
  5.   (* (/ (let base (- (scorefn s) 1)  
  6.           (if (> base 0) (expt base .8) base))  
  7.         (expt (/ (+ (item-age s) timebase*) 60) gravity))  
  8.      (if (no (in s!type 'story 'poll))  .8 
  9.          (blank s!url)                  nourl-factor*  
  10.          (mem 'bury s!keys)             .001 
  11.                                         (* (contro-factor s)  
  12.                                            (if (mem 'gag s!keys)  
  13.                                                 gag-factor*  
  14.                                                (lightweight s)  
  15.                                                 lightweight-factor*  
  16.                                                1))))) 

英文原文:How Hacker News ranking algorithm works

譯文鏈接:http://www.aqee.net/how-hacker-news-ranking-algorithm-works/

責(zé)任編輯:林師授 來源: 外刊IT評論
相關(guān)推薦

2012-02-29 10:36:48

算法

2013-08-26 10:48:02

Reddit排名算法算法

2020-07-13 14:59:59

程序員技能開發(fā)者

2022-02-28 10:23:37

搜索競價排名

2013-02-28 09:46:18

程序員巖機Hacker News

2014-11-05 09:37:31

路由算法原理

2011-04-22 11:00:17

運維

2009-06-18 13:31:03

Spring工作原理

2022-07-12 10:08:11

大學(xué)排名

2009-08-14 13:19:23

2011-06-23 11:36:27

網(wǎng)站排名

2011-04-26 10:00:17

2012-03-14 10:43:55

算法開發(fā)

2009-06-15 15:57:21

Spring工作原理

2009-07-16 10:23:30

iBATIS工作原理

2020-06-15 07:00:00

GitOpsKubernetesDevOps

2010-09-25 13:11:48

DHCP工作原理

2019-05-17 11:53:58

MySQLorder by數(shù)據(jù)庫

2021-02-05 15:01:41

GitLinux命令

2017-08-21 10:00:23

遺傳算法Python生物學(xué)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲一二三区在线观看 | 在线欧美小视频 | 日韩成人av在线 | 欧美国产亚洲一区二区 | 亚洲第1页 | 日韩午夜一区二区三区 | 欧美中文字幕一区二区三区亚洲 | 日韩一区二区三区视频在线观看 | 欧美精品一区二区在线观看 | 欧美视频精品 | 国产精品一区二区三区久久久 | 久久久妇女国产精品影视 | 欧美在线观看一区二区 | 国产精品视频免费观看 | 99av成人精品国语自产拍 | av一区二区三区四区 | 午夜羞羞 | 久久久久国产一区二区三区 | 免费日韩av | 在线成人免费视频 | 国产在线一区二区三区 | 成年免费大片黄在线观看一级 | 精品1区| 欧美黄色免费网站 | 欧美一区二区三区 | 亚洲人成人一区二区在线观看 | 综合久久国产 | 日韩久草 | 免费麻豆视频 | 亚洲人人舔人人 | 精品久久久久久久久久久 | 视频一区二区国产 | 日韩欧美理论片 | 精品国产乱码久久久久久老虎 | 欧美日韩亚洲一区 | 久色| 91精品中文字幕一区二区三区 | 国产成人在线播放 | 免费视频久久 | 亚洲精品福利在线 | 久久夜色精品国产 |