Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票。简而言之,Hacker News 允许提交任何可以被理解为“任何满足人们求知欲”的新闻。
每个新闻标题前面有一个向上的三角形,如果你觉得这个内容很好,就点击一下,投上一票。根据得票数,系统自动统计出热门文章排行榜。但是,并非得票最多的文章排在第一位,还要考虑时间因素,新文章应该比旧文章更容易得到好的排名。
Hacker News 采用公式 (p – 1) / (t + 2)^1.5 做为排行依据(Hacker News使用Paul Graham开发的Arc语言编写,源码可以从arclanguage.org下载),其中P是投票数量,t是发表以来的时间,小时计。后来AMIX.DK 给出公式 Score = (P-1) / (T+2)^G 推广了上面的公式,Hacker News的公式变成了一个特例,其在G=1.5时的应用。历史上Hacker News有用G=1.8。
第一个因素是得票数P
在其他条件不变的情况下,得票越多,排名越高。从下图可以看到,有三个同时发表的帖子,得票分别为200票、60票和30票(减1后为199、59和29),分别以黄色、紫色和蓝色表示。在任一个时间点上,都是黄色曲线在最上方,蓝色曲线在最下方。
为什么是P-1?网络上的一种解释是,很多文章作者在提交的时候会给自己投上一票。其实更重要的原因是文章发布初期的投票数对排名影响非常的,仅仅是自己给自己投的一票,也占非常大的作用。
假设P不去减去1,那公式为: p / (t + 2)^1.5
如果一个作者发布完就给自己投票,那么文章的得分为1/(0+2)^1.5=0.3535 。假设另外一篇文章发布了8小时,那么需要多少的投票呢?x/(8+2)^1.5>0.3535 X>11.17~ 即一天前的帖子要有12票才能超过新提交的文章,这显然不合理。
这个具体减多少还要视网络环境而定,要是换在国内,估计P-100还不够。另外如果你不期望“高投票文章”与“低投票文章差距过大,可以在得票数上加一个小于1的指数,比如(P-1)^0.8。
第二个因素是距离发帖时间T
在其他条件不变的情况下,越是新发表的帖子,排名越高。或者说,一个帖子的排名,会随着时间不断下降。
从前一张图可以看到,经过24小时之后,所有帖子的得分基本上都小于1,这意味着它们都将跌到排行榜的末尾,保证了排名前列的都将是较新的内容。
如果,用户的第一个投票是在当前,1小时,2小时获得时,这个曲线的变化是什么呢?如下图,曲线斜率从大到小分别是当前、1小时、2小时。可以看到第一个投票的作用不断弱化,其权重不断降低。
第三个因素是重力因子G
它的数值大小决定了排名随时间下降的速度。从下图可以看到,三根曲线的其他参数都一样,G的值分别为1.5、1.8和2.0。G值越大,曲线越陡峭,排名下降得越快。
为什么G=1.5,首先,G是干嘛的。毫无疑问,G这个数字既非时间,也非评价,其实它的主要目的是控制更新频率。G的值越大,score的衰减速度越快,排行的更新越频繁。所以,确定G值需要观察系统内部投票数在时间上的分布,然后根据需要的更新频次确定G的合理取值。越火爆、用户互动越频繁的社区,为了保证排行的稳定性(不要频繁大量的刷新),G值趋向于比较低。这就是为什么Hacker News从一开始的1.8修改成1.5,过段时间可能就变成1.2了。
相关推荐
赵戈戈:iNews最初是参照Hacker News的算法来做的,后期将评论也加入了权重。因为觉得对于这种社区来说,评论是很重要的一块,评论代表着交流,有交流就证明内容的价值有可能存在,如果只有“顶”才算权重,那激烈的...
reverse-engineering-the-hacker-news-ranking-algorithm, 历史黑客新闻数据的分析与排序算法 反向工程黑客新闻排名算法这个知识库是文章反向工程的一个同伴,它黑客新闻排名算法。 本文探讨了如何利用历史数据来...
该服务从文章中提取摘要和插图,供那些想充分利用的人使用,同时减少了在决定阅读哪个和跳过哪个方面时所花的时间。... 提取摘要的更好算法 按分数/评论/时间对文章进行排序 的RSS 睡个好觉!重要 执照 中文版的
基于HN算法的评论和帖子流行度算法 嵌套评论,支持,业力 用户帐户创建 移动友好(基于Bootstrap) 智能网址截断 去做: 回复等级(目前,它们只是最近的第一) 更好地过滤显示和询问帖子 基于HN的代码。 查看。
安装将此行添加到应用程序的 Gemfile 中: gem 'engagement'然后执行: $ bundle或者自己安装: $ gem install engagement用法 hacker_news = Engagement :: CommentCounter :: HackerNews . newreddit = Engagement...
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科...基于Transformer编解码模型的Hacker News文章标题自动生成评论、用BERT进行序列标记和文本分类的模板源码+数据集.zip
衰变 著名的基于投票受欢迎程度和时间的排序算法已为PHP实现。 安装 composer require mtasuandi/decay dev-master 用法 <?...use Mtasuandi \ Decay \ Decay ;...$ c = new Decay ();... * Hacker News
HackerNews的博客中有一篇关于Google开玩笑的不安面试官的博文,说他编码了Homebrew(曾用过我的许多Google员工),但无法反转二叉树,因此他无法为他们工作。 我在这里尝试实现。 top_coder AB
使用Python比较来自Hacker News的不同类型的帖子。 建立一个数据库,用于存储与波士顿发生的犯罪有关的数据。 使用Pandas和Numpy探索来自eBay的二手车数据集。 使用各种优化算法盘点在线商店数据集。 使用SQL查询...
查找工作程序 精选的网站和资源列表以查找工作程序请在之前阅读。德国日本自由职业有关的 准备编码... findwork.dev -Jobs聚合器,它从Hacker News,Github,Stackoverflow收集数据。 谁在招聘天使名单领英职位堆栈溢
LeetCode:来做做这些题吧,看看自己的算法水平如何?这可比什么面试宝典强多了。 LintCode:支持中文的编程题在线训练平台,可作为备选 Hacker News:非常棒的针对编程的链接聚合网站 Techmeme:美国知名科技新闻和...
JianshuArticles 命令行执行 scrapy crawl JSSpider -o js.xml 运用Scrapy抓取简书最新人气文章 公式是借来自Hacker News的(p-1)/(t+2)^1.8最新热度文章算法
我一直通过hackernews和每一次的色带给我留下了不解的好几倍。 在一个无聊的早晨,我发现自己在 bsumm.net 上,意识到我仍然不知道这些颜色是如何与字母联系起来的。 然后我就想通了。 我把它展示给我的同事,有...
Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs...
News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto...
•Hacker News:非常棒的针对编程的链接聚合网站 •Programming reddit:同上 •MSDN:微软相关的官方技术集中地,主要是文档类 •infoq:企业级应用,关注软件开发领域 •cnblogs,51cto,csdn:常见的技术社区,各...
关于HN的讨论: 查看页面: 截屏: 快捷书签: 使用此链接创建一个书签,并将其命名为“ flame it”(或您喜欢的任何名称)。 当您在HN帖子中时,请单击书签,这将打开该帖子的火焰图。...id=')[1]
这里没有算法,没有AI,没有千人千面。 只有及时,有趣,绝对的阅读列表。 社区驱动,突破信息茧房 每个人的信息接收来源都是有限的,一个有活力的足以聚合阅读列表需要更多News Hunter的加入和贡献。 如果你的收藏...
zxing.java源码解析 tools-favorite 各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。...:来做做这些题吧,看看自己的算法水平如何?这可比什么面试宝典强多了。 :支
:来做做这些题吧,看看自己的算法水平如何?这可比什么面试宝典强多了。 :支持中文的编程题在线训练平台,可作为备选 ,: 机器学习、大数据竞赛 :高质量的技术社区 :企业级应用,关注软件开发领域 国内老牌技术...