「関連」度測定アルゴリズムを実装するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/42489

質問

今日、質問しようと思っていたところ、Stackoverflow の驚くべき機能が紹介されました。質問のタイトルを書いたとき、stackoverflow からいくつかの関連する質問が提案されましたが、すでに 2 つの同様の質問があることがわかりました。それはすばらしかったです!

そこで、そのような機能をどのように実装するかを考え始めました。関連性によって質問を並べ替える方法:

  1. 単語数が多い質問と新しい質問と一致する質問
  2. 一致の数が同じ場合、単語の順序が考慮されます
  3. タイトルに表示される単語は、関連性が高くなります

それは単純なワークフローでしょうか、それとも複雑なスコアアルゴリズムでしょうか?おそらくリコールを増やすためのステマ?この機能を実装するライブラリはありますか?他にどのような点を考慮しますか?もしかしたら、ジェフ自身が答えられるかもしれません!これを Stackoverflow でどのように実装しましたか?:)

役に立ちましたか?

解決

このようなアルゴリズムを実装する方法の 1 つは、次の手順を使用して「関連性」の重み係数を割り当てるヒューリスティック関数に従って質問をランク付けすることです。

  1. 「新しい」質問にノイズ フィルターを適用して、次のような多数のオブジェクトに共通する単語を削除します。「その」、「そして」、「または」など。
  2. Web サイトにすでに投稿されている一連の質問に含まれる単語と一致する、「新しい」質問に含まれる単語の数を取得します。[A]
  3. 「新しい」質問内の単語と利用可能な単語の間で一致するタグの数を取得します。[B]
  4. [A] と [B] に基づいて「関連性の重み」を「x[A] + y[B]」として計算します。x と y は重みの乗数です (タグ付けの関連性が高まるため、より高い重みの乗数を [B] に割り当てます)単純な単語検索より)
  5. 「関連性の重み」が最も高い上位 5 つの質問を取得します。

最適な結果を得るにはヒューリスティックを調整する必要があるかもしれませんが、うまくいくはずです。

他のヒント

あなたの質問は次のように思われます これです, 、追加の回答がいくつかあります。

@マルシオ

申し訳ありませんが、私はここで提案できるような直接的な API リファレンスを知りませんし、Lucene を使用したこともありません。

ただし、Google デスクトップでは Query API を使用して、関連する検索結果をランク付けし、提案していることは承知しています。API の詳細については、こちらをご覧ください。 ここ.

もしかしたら、他の人が声をかけてあなたを導いてくれるかもしれません。

StackOverflow はいつかオープンソース化されるのではないでしょうか?もしそうなら、彼らがそこでどのようにそれを行ったかをいつでも知ることができます。

アップデート:どうやら彼らはそう言っているようです かもしれない それをオープンソース化します。そうであることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top