記事を人気順で表示するときに使うスコアを計算するアルゴリズムについて
- 評価
- クリップ 0
- VIEW 1,085

退会済みユーザー
記事にスコア付けをしてそれらを人気順で表示させるアルゴリズムを考えているのですが、なかなか良い方法が思いつかないのでアドバイスをいただきたいです。
スコアの指標となるもの
・はてなブックマーク数
・Facebookのいいね数
この2つの数をもとに各記事のスコアを計算したいと思っています。
現状での問題点
・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので、比率をきめたりして揃える必要がある。
例)
はてぶ数:Facebookいいね数 = 6:4
みたいな。比率に関してはそこまで正確に決める必要は別にない。さじ加減で。
もし、他に別の方法で良い案があれば、教えていただきたいです。
・記事の中にははてぶ数はそんなにないのに、Facebookいいね数だけやたら高かかったりするものがあるので、それが原因でスコアの評価が高くなるのを防ぐ。
あくまでもバランス良く、かつ双方の数がともに他の記事と相対的にみて高い記事を人気ランキング上位にしたい。
以上がアルゴリズムの仕様の説明になります。
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
思いついたコメントだけですが…
・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので~
重み付けでなんとかするのを良く見かけます。
はてぶは2point、FBイイネは1point、のように決めて、合計値から
ランキングを決めるといった方法です。
・記事の中にははてぶ数はそんなにないのに~
はてぶpointとFBイイネpointを比較した時の偏り具合を比率にして
合計値に掛け算するような方法になるんじゃないかと思います。
「他の記事と相対的にみて」という点に関しては、ランキングという
評価方式がそもそも相対評価なので、とりあえず気にしなくてもいい
のではないかと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
こんにちは。
・はてぶ数1とFacebookいいね数1ではそもそもの価値が異なるので、比率をきめたりして揃える必要がある。
これは、異なる単位の数値を「正規化」する問題と思います。
・記事の中にははてぶ数はそんなにないのに、Facebookいいね数だけやたら高かかったりするものがあるので、それが原因でスコアの評価が高くなるのを防ぐ。
「Facebookいいね数だけやたら高い」ことも正当な評価と解釈するのであれば、「正規化」で良いように思います。
そうではなく、何らかの不正が行われていると判定しランキング候補から外すのであれば、フィルターの問題ですね。
「正規化」については、単純に全ての記事の評価値(はてぶ数やいいね数)の総和を求めて、各記事の評価値を割ることで正規化できると思います。その正規化された評価値は0~1の範囲に収まるので、単純に加えたり、かけたりする方法である程度うまくいくかも知れません。
フィルターについては、1つの記事の「はてぶ正規化数」と「いいね正規化数」の差異が大きい時は除外することが考えれます。
しかし、odakinさんのランキングがメジャーになって不正者が対策するとイタチごっこですが...
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/05/11 11:08
2016/05/11 11:52
ってのは決めの問題、どうやりたいか、の問題になってきます。
例えば「イイネに対してはてぶが少ない場合、実は大したことない(ランクDown)」
という方針にするのであれば、以下の計算ができるかもしれません。
比率=はてぶpoint × 1/イイネpoint
最終的に、どういうポイント関係であれば「人気」とするかによって計算は変わるのでは無いかと思います。
(例えば、アクセス数が1000程度でも、全員がイイネ+はてブしたら、きっとそれはスゴイ記事です。)