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了。
相关推荐
Hacker News 的排名算法是基于用户的投票和时间因素,系统自动统计出热门文章排行榜。该算法考虑了三个因素:得票数、时间和重力因子。得票数决定了帖子的排名,时间决定了帖子的新旧程度,重力因子决定了排名随时间...
赵戈戈:iNews最初是参照Hacker News的算法来做的,后期将评论也加入了权重。因为觉得对于这种社区来说,评论是很重要的一块,评论代表着交流,有交流就证明内容的价值有可能存在,如果只有“顶”才算权重,那激烈的...
【Python-一个HackerNews命令行CLI浏览界面】 在信息技术领域,开发命令行接口(CLI)工具是一种常见的实践,尤其对于快速原型设计和自动化任务执行。这个项目名为“Haxor News”,它是一个使用Python语言编写的...
reverse-engineering-the-hacker-news-ranking-algorithm, 历史黑客新闻数据的分析与排序算法 反向工程黑客新闻排名算法这个知识库是文章反向工程的一个同伴,它黑客新闻排名算法。 本文探讨了如何利用历史数据来...
5. 推荐阅读:文档提到了阮一峰博客中的系列文章,如《基于用户投票的排名算法》,这些文章涉及了不同网站使用用户投票进行排名的算法,包括Delicious、Hacker News、Reddit、StackOverflow等。这些算法的探讨,对于...
Scrat-seo-reve-hackernews 是一个基于 JavaScript 开发的Web应用程序,它结合了Scrat-Serach Engine Optimization(SEO)和reve.js库来实现HackerNews网站的功能。这个项目旨在为用户提供一个类似HackerNews的交互...
该服务从文章中提取摘要和插图,供那些想充分利用的人使用,同时减少了在决定阅读哪个和跳过哪个方面时所花的时间。... 提取摘要的更好算法 按分数/评论/时间对文章进行排序 的RSS 睡个好觉!重要 执照 中文版的
本文将基于一个名为“hacker-news-analysis”的项目,详细分析Hacker News投票协议的几个关键方面,以揭示其背后的设计理念和运作机制。 1. **投票系统设计** Hacker News的投票系统不同于传统的点赞或评分系统,...
HackerNews_Reader是一款基于Java开发的新闻阅读应用程序,专门设计用于浏览著名的Hacker News网站上的热门和技术类新闻。Hacker News是由Y Combinator运营的一个社区,用户可以提交链接、讨论各种话题,尤其是与...
6. **数据结构和算法**:处理HackerNews的新闻列表可能涉及到排序、查找等操作,这需要对数据结构(如数组、链表)和基本算法(如冒泡排序、二分查找)有一定理解。 7. **错误处理**:良好的错误处理是任何程序的...
基于HN算法的评论和帖子流行度算法 嵌套评论,支持,业力 用户帐户创建 移动友好(基于Bootstrap) 智能网址截断 去做: 回复等级(目前,它们只是最近的第一) 更好地过滤显示和询问帖子 基于HN的代码。 查看。
在这个"dataquest_project"中,我们将深入探讨Android和iOS移动应用的数据分析,同时利用知名的科技新闻社区Hacker News作为数据来源。这个项目的核心是利用Jupyter Notebook进行数据分析和可视化,这是一款广泛使用...
Hacker News(简称HN)是互联网上一个热门的科技新闻分享社区,而Gopher协议则是一种古老的文件检索协议,它在互联网早期扮演了重要角色。本文将深入探讨如何使用C++语言实现一个名为cpp-HnGopher的项目,将Hacker ...
安装将此行添加到应用程序的 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
每一章都对应着Hacker News上的一个热门话题,其中包含了精选的评论和观点,这些内容经过整理,使得读者可以更系统地学习和理解这些领域的核心知识。 为了参与和贡献,读者可以访问项目仓库,通常是通过GitHub,...
HackerNews的博客中有一篇关于Google开玩笑的不安面试官的博文,说他编码了Homebrew(曾用过我的许多Google员工),但无法反转二叉树,因此他无法为他们工作。 我在这里尝试实现。 top_coder AB
在描述中提到的“点击 HackerNews 的诱饵标题”,暗示这个项目可能是用来生成或模拟这类标题的工具,或者是分析HN上哪些标题最能引起用户兴趣的研究。它可能通过使用JavaScript来实现,JavaScript是一种广泛用于前端...
标题 "Python-hn在命令行中阅读HN" 指的是一种使用Python编写的命令行工具,它允许用户在终端环境中浏览和互动 Hacker News(HN)的热门故事。Hacker News是一个由Y Combinator运营的社区,用户可以分享和讨论编程、...