ナレッジ ベースの記事のデータベースを作成する場合 (たとえば)、ユーザーの質問に対する最も関連性の高い回答を並べ替えて表示するには、どのような方法が最適でしょうか?
以前のユーザーがヘルプ記事を見つけたかどうかに基づいて、キーワードの重み付けなどの追加データを使用しますか?それとも単純なキーワード マッチング アルゴリズムで十分だと思いますか?
おそらく、すぐに役立つ結果をもたらす最も簡単で素朴なアプローチは、* tf-idfを実装することです:
tf-idf重み付けスキームのバリエーションは、ユーザークエリを指定してドキュメントの関連性をスコアリングおよびランク付けする際の中心的なツールとして、検索エンジンでよく使用されます。tf–idfは、テキストの要約や分類など、さまざまなサブジェクトフィールドでのストップワードフィルタリングに正常に使用できます。
ここでの私の最近の関連する質問で、私はあなたがオンラインでダウンロードまたは読むことができるこのトピックに関する優れた無料の本を知りました:
これは難しい質問であり、Google のような企業はこの質問に対処するために多くの努力を行っています。Google Enterprise Search ApplianceまたはExalead Enterprise Searchをご覧ください。
次に、個人的な意見として、単純なキーワード検索やドキュメントのビュー数による順序付けと比較して、「単純な」アプローチが結果を大幅に改善するとは思いません。
ナレッジ ベースを Web に公開する可能性がある場合は、それを実行して、お気に入りの検索エンジンに検索を処理させてください。
正確な問題をもう少し具体的にするとよいでしょう。あなたが使用できるさまざまなテクニックがたくさんあります。これらの多くは、他のデータによって駆動されます。もちろん、Luceneを使用して独自のインデックスを作成することもできます。多くの言語の lucene へのバインディングがあります。上に移動すると、多くのツールと追加機能を備えた Lucene であるSolrプロジェクトもあります。それはあなたが探しているものの線に沿っているかもしれません。
意図は扱いにくく、最新の検索エンジンのほとんどは、結果の順序付けを支援するために統計的意図に依存しています。いつでも [この記事は役に立ちますか] ボタンを使用して、有用なドキュメントにつながるクエリ テキストを保存できます。次に、インデックスに情報のレイヤーを追加して、特定の単語やフレーズを強調し、それらが特定のドキュメントを指し示すのを助けることができます.
考慮すべき点がいくつかあります...ドキュメントの数は? 平均的な長さは?それらは頻繁に更新されますか? ユーザーはドキュメントで何をしますか? ドキュメントへのユニークな単語の広がりはどのように見えますか? (もっと簡単に言えば、共通のユニークな機能に基づいてクエリを特定のドキュメントと簡単に一致させることができます。)
Web 上にある場合は、サイトを検索するだけの Google カスタム検索エンジンをいつでも作成できますが、これはさまざまな理由で最適ではない場合があります。
単純なインデックスから始めて、ユーザーと話したりデータを取得したりすることで、徐々に洗練されたインデックスにすることができます。
joannes が検索で非常にホットなトピックを言っているように、質問に対処するときはキーワード マッチングだけでは不十分です。意図を理解する必要があります。