これは要約であり、私の重要なポイントです。
問題文:
ユーザーからのクエリに対して、最も関連性の高いヘルプ記事をデータベースから取得します。
反復 1: 初期ソリューション
- Lucene Indexを使用して、データベース内のすべてのヘルプ記事 (ドキュメント) のインデックスを作成しました。つまり、用語が登場するすべての文書に用語をマッピングする逆引き辞書を生成します。
2. 指定されたクエリは、Lucene インデックスを使用してすべての関連ドキュメント (ヒット) をフェッチするために使用されます。
3. 各ヒットは BM25F アルゴリズムを使用してスコア付けされます。BM25Fアルゴリズムでは、ドキュメント構造が考慮され、タイトルのヒット、次にキーワードのヒット、本文のヒットに最大の重みが与えられ、加重スコアが返されます。
4. 最高得点の記事を返します。
失敗した理由
ドキュメント検索システムは用語ベース (構文) であるため、セマンティクスは考慮されていません。以下に 2 つの失敗例を示します。
反復 2: 最終的なソリューション
ステップ 1: テキストの正規化
「プレミアム アカウントをすぐにキャンセルする方法」を「プレミアム アカウントをキャンセルする」に正規化
ステップ 2: クエリ マッピング
正規化されたクエリに、記事内の単語と共通する単語がない場合があります。したがって、各クエリは、ユーザーの用語と記事の用語の間のギャップを埋めるために、より代表的なクエリにマップされます。
次の 2 つの手順で実行します。
- クエリのグループ化:クエリは、類似性メトリックに基づいてグループ化されます
2. トピックマイニングと Rep スコアリング: Query グループ内のクエリごとに、 repScoreが計算され、上位 K 個のクエリが Rep クエリとして選択されます。
sim(RQ, Q2)は、生のクエリとグループ内の別のクエリとの類似性です
sim(Q2, title)は、Q2 とタイトルのトピックの 1 つとの間の最大類似度です (本文も同様)。
ステップ 3: 意図の分類
ロングテール クエリには Rep クエリがない場合があります。その場合、クエリの意図を分類するためにCNNが使用されます。
たとえば、「プレミアム サブスクリプションをキャンセルする」と「Apple デバイスで購入したプレミアム サブスクリプションをキャンセルまたは更新する」は、「プレミアムをキャンセルする」という同じ意図を持っていると見なされます。
全体の流れ
こちらにも掲載