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。
得分随着时间是如何变化的
你可以看到,随着时间的流逝,得分骤然下降,例如,24小时前的文章的分数变的非常低——不管它获得了如何多的票数。
plot( (30 - 1) / (t + 2)^1.8, (60 - 1) / (t + 2)^1.8, (200 - 1) / (t + 2)^1.8 ) where t=0..24
比重参数是如何影响排名的
图中你可以看到,比重越大,得分下降的越快。
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评论
最新招聘
- [上海] Python开发工程师 - 上海魅格计算机科技有限公司
- [北京] Python工程师(移动互联网) - 搜狐
- [北京] Sr. Test Tools Development高级测试工具开发工程师 - NOKIA
- [上海] Python 程序开发(Django, Scrapy, 2年+) - 若邻网
- [上海] 招聘python/django兼职工程师和Team Lead - 上海青铉网络科技有限公司
相关 [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直接就告诉你了(上图).