Hacker Newsのランキングアルゴリズムの仕組み

Hacker Newsのランキングアルゴリズムの仕組み

[[83666]]

この記事では、Hacker News ウェブサイトの記事ランキング アルゴリズムの仕組みと、このアルゴリズムを独自のアプリケーションで使用する方法を紹介します。このアルゴリズムは非常にシンプルですが、人気のある記事を強調表示したり、新しい記事を選択したりする際に非常に優れたパフォーマンスを発揮します。

news.arc のコードに潜入

Hacker News は、Y Combinator の創設者 Paul Graham が作成した Lisp 方言である Arc で開発されています。 Hacker News はオープンソースであり、そのソースコードは arclanguage.org で見つけることができます。 news.arc プログラムをさらに詳しく調べると、次のようなランキング アルゴリズムのコードが見つかります。

  1. ; 投票数を年齢(時間)で割って重力乗します。
  2. ;スライダー重力をスケールできたら面白いでしょう
  3.  
  4. (=重力* 1.8時間ベース* 120前方閾値* 1    
  5. nourl-factor* . 4軽量係数* . 3 )
  6.  
  7. ( def frontpage-rank (s (o scorefn realscore) (o 重力 重力*))
  8. (* (/ (let base (- (scorefn s) 1 )
  9. ( if (> base 0 ) (expt base . 8 ) base))
  10. (expt (/ (+ (アイテムの年齢 s) 時間ベース*) 60 ) 重力))
  11. ( if (no ( in s!type 'story ' poll)) 1  
  12. (空白 s!url) nourl-factor*
  13. (軽量s) (最小軽量係数*
  14. (制御因子))
  15. (制御因子))))

基本的に、Hacker News が使用するランキング アルゴリズムは次のようになります。

  1. スコア = (P-1) / (T+2)^G
  2.  
  3. で、
  4. P = 記事が受け取った投票数(-1 は記事を投稿した人の投票が削除されることを意味します)
  5. T = 論文投稿から現在までの時間(時間)
  6. G = 重力、news.arc のデフォルト値は 1.8

ご覧のとおり、このアルゴリズムは簡単に実装できます。以下では、このアルゴリズムがどのように機能するかを見ていきます。

重み(G)と時間(T)がランキングに与える影響

重みと時間は記事のランキングスコアに大きな影響を与えます。通常、次のようになります。

  • T が増加すると、記事のスコアは減少します。つまり、記事が古ければ古いほど、スコアは低くなります。
  • 重みが増すと、古い記事のスコアはより速く低下します。

このアルゴリズムを視覚化するには、Wolfram Alpha でプロットします。

スコアは時間の経過とともにどのように変化するか

時間が経つにつれてスコアが劇的に下がることがわかります。たとえば、24 時間前の記事は、投票数に関係なく、スコアが非常に低くなります。

プロットステートメント:

  1. プロット(
  2. ( 30 - 1 ) / ( t + 2 ) ^ 1.8
  3. ( 60 - 1 ) / ( t + 2 ) ^ 1.8
  4. 200 - 1 )/(t + 2 )^ 1.8  
  5. )ここでt = 0 .. 24  

重み付けパラメータがランキングに与える影響

グラフからわかるように、重みが大きくなるにつれて、スコアは急速に低下します。

プロットステートメント:

  1. プロット(
  2. (p - 1 ) / (t + 2 ) ^ 1.8
  3. (p - 1 ) / (t + 2 ) ^ 0.5
  4. (p - 1 ) / (t + 2 )^ 2.0  
  5. )ここでt = 0 .. 24 、p = 10  

Python言語実装

前述したように、このスコアリング アルゴリズムは簡単に実装できます。

  1. def calculate_score(投票、item_hour_age、重力= 1.8 ):
  2.     戻り値(投票 - 1 ) / pow((item_hour_age + 2 ), 重力)

重要なのは、アルゴリズムの各要素がスコアにどのように影響するかを理解し、アプリケーションでスコアをカスタマイズできるようにすることです。この記事でそれが明らかになったことを願っています。

楽しいコーディングを!

編集:

ポール・グラハムは改訂されたHNランキングアルゴリズムを共有しました。

  1. (=重力* 1.8時間ベース* 120前方閾値* 1  
  2. nourl-factor* . 4軽量係数* . 17ギャグ係数* . 1 )
  3.  
  4. ( def frontpage-rank (s (o scorefn realscore) (o 重力 重力*))
  5. (* (/ (let base (- (scorefn s) 1 )
  6. ( if (> base 0 ) (expt base . 8 ) base))
  7. (expt (/ (+ (item-age s) timebase*) 60 ) 重力))
  8. ( if (no ( in s!type 'story ' poll)) . 8  
  9. (空白の s!url) nourl-factor*
  10. (キーをメモしてください) 001  
  11. (* (制御因子)
  12. ( if (mem 'gag s!keys)
  13. ギャグ要素*
  14. (軽量級)
  15. 軽量係数*
  16.                                                 1 )))))

Hacker Newsのランキングアルゴリズムの仕組み

翻訳リンク: http://www.aqee.net/how-hacker-news-ranking-algorithm-works/

<<:  百度がナレッジグラフをひっそりとリリース、次世代検索エンジンのプロトタイプを公開

>>:  OpenGL ES 入門: 組み込み 3D グラフィックス アルゴリズム標準

ブログ    
ブログ    

推薦する

インターネットの未来のために: AI が生み出すものと破壊するもの

編集者注: この記事はNetEase Intelligenceからのものです。翻訳|: NetEas...

人工知能 (AI) ソリューションを購入または構築する際に尋ねるべき 5 つの重要な質問

人工知能などの新興テクノロジーには、マーケティング上の約束が実際の成果を上回らないようにすることと、...

2020年のAIの7つの開発トレンド

[[320187]]追加の AI アプリケーションの需要が高まるにつれて、企業はデータ サイエンス ...

...

Redis に基づく分散ロックと Redlock アルゴリズム

[[414221]]この記事はWeChatの公開アカウント「UP Technology Contro...

5G、自動運転、人工知能はどの段階にあるのでしょうか?一枚の写真でわかる

世界で最も権威のあるIT市場調査・コンサルティング会社であるガートナーは8月29日、新技術の2019...

OpenAIは、GPT-4の「怠惰」問題を近い将来に修正し、オフライン評価とA/Bテストの後にモデルを更新すると発表した。

IT Homeは12月12日、OpenAIが先週、一部のユーザーから苦情を受けたと報じた。多くのユ...

ACオートマトンとベイズ法に基づくスパム識別

背景オープンな知識ソーシャルプラットフォームとして、Zhihu は「友好的」、「合理的」、「専門的」...

AIのジレンマをどう解決するか?

今日の大手企業が AI におけるいくつかの大きな課題をどのように克服しているか。概要:多くの企業はビ...

...

...

サイバーセキュリティにおける人工知能の役割

人工知能(AI)が社会に普及するにつれ、サイバーセキュリティの分野にも参入してきました。 AI は、...

2023年のGenAI技術応用動向の観察

生成型人工知能 (GenAI) は技術革新の最前線にあり、さまざまな業界の変革と発展に新たな可能性を...