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 グラフィックス アルゴリズム標準

ブログ    
ブログ    

推薦する

ネットワークにおける機械学習の実用的応用

各 Web アプリケーションには独自の機能とパフォーマンス パラメーターのセットがあり、これらは動的...

アップルが従業員を解雇し調整、好景気の時代とは真逆! Apple AI の堀とは何でしょうか?

ウォール・ストリート・ジャーナルによると、アップルは最近、経営陣の再編と人事異動を行う措置を講じたと...

心理意味論の観点から見た顔認識

人々は日常生活の中で、見知らぬ人の顔だけでなく、身近な親戚、友人、同僚、有名人の顔など、さまざまな顔...

ディープラーニングを活用してネットワークセキュリティを実現する方法

[[240276]]著者: ゲストブログ翻訳:張玲校正:丁南雅この論文では、ディープラーニングとそれ...

AIが高度な数学の核心を突破、微分方程式と不定積分を1秒以内に解き、その性能はMatlabをはるかに上回る

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

2022 年のインテリジェント コネクテッド ビークルの技術トレンド トップ 10

100TOPS以上の性能を持つ車載グレードのコンピューティングチップが2022年に量産され、車両に...

AI はあらゆる人間の声を再現できます。これはポッドキャストにとって何を意味するのでしょうか?

ポッドキャスティングは、よりカジュアルな形式のオーディオストーリーテリングへと進化しています。複雑な...

AIが「軍事顧問」に?まずはRedditユーザーを獲得しよう

[[322491]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...

自動化の方程式: 現代の職場における AI、ロボット工学、人間のスキルのバランス

人工知能 (AI) 技術が職場に統合されることにより、仕事の性質が急速に変化し、人間と機械の関係が再...

2021年12月のドローン業界の最新動向を3分で振り返る

[[442512]]現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の...

...

...

ロボットを活用する3つの革新的な方法

ロボットは、高齢の両親を助けたり、子供を教育したり、料理をしたりすることができます。ロボット産業は創...

音声によるやりとりをより自然にするにはどうすればよいでしょうか?まずはこれら 6 つの重要な知識ポイントをマスターしましょう。

最近、ロボットに関する非常に良い記事をいくつか読んだので、自分の考えを書き留めながら翻訳してみようと...

...