技術共有

Elasticsearch は関連性スコアリング (TF-IDF、BM25 など) を理解します。

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Elasticsearch では、関連性スコアリングが検索機能の中核であり、検索結果の品質とランキングを決定します。 Elasticsearch による関連性スコアの計算方法、特に TF-IDF および BM25 アルゴリズムを理解することは、検索のパフォーマンスと結果を最適化するために重要です。この記事では、これら 2 つのアルゴリズムと Elasticsearch でのそれらのアプリケーションについて詳しく説明します。

1. 関連性スコアリングの概要

関連性スコアは、検索結果がユーザーのクエリにどの程度一致するかを示す尺度です。 Elasticsearch は、複雑なアルゴリズムを使用して各ドキュメントとクエリの関連性スコアを計算します。スコアが高いほど、ドキュメントとクエリ間の一致度が高くなります。電子商取引 Web サイトやナレッジ ベースなどのアプリケーション シナリオでは、ユーザーが必要な情報をすぐに見つけられるかどうかは、関連性スコアによって直接決まります。

2. TF-IDFアルゴリズム

2.1 定義と原則

TF-IDF (Term Frequency-Inverse Document Frequency) は、文書セットまたはコーパス内の文書の 1 つに対する単語の重要性を評価するために使用される古典的な情報検索アルゴリズムです。これは 2 つの部分で構成されます。

  • TF(用語頻度) : 単語の頻度、つまり文書内で単語が出現する回数。計算式は次のとおりです: TF = (文書内に単語が出現する回数) / (文書内の総単語数)。
  • IDF(逆文書頻度) : 逆文書頻度、つまり、文書の集合における単語の一般的な重要性。計算式は次のとおりです: IDF = log((ドキュメント コレクション内のドキュメントの総数) / (単語を含むドキュメントの数 + 1))。

2.2 メリットとデメリット

TF-IDF アルゴリズムはシンプルで効率的ですが、明らかな制限もあります。たとえば、文書の長さや検索語の位置などの要素が考慮されず、使用頻度の高い単語が過度に強調される傾向があります。

3. BM25アルゴリズム

3.1 定義と原則

BM25 (ベスト マッチング 25) アルゴリズムは、TF-IDF アルゴリズムを改良および拡張したもので、関連性スコアを計算する際に、文書の長さや検索用語の位置など、より多くの要素が導入されています。 BM25 アルゴリズムの主な目的は、特に大規模なドキュメント コレクションを扱う場合に、検索結果の品質を向上させることです。

BM25 アルゴリズムの基本式は次のとおりです。

[
text{スコア}(D, Q) = sum_{i=1}^{n} text{IDF}(q_i) cdot frac{f(q_i, D) cdot (k_1 + 1)}{f(q_i, D) + k_1 cdot (1 - b + b cdot frac{|D|}{text{avgdl}})}
]

で、 DD 文書を表し、 QQ質問 クエリを表します。 気 気_iq クエリ内の用語を表します。 関数 qi は、関数 qi の次の式で表される。(q,) 語彙項目を示します 気 気_iqドキュメントで DD周波数、 ∣D∣|D| 文書を表す DD長さ、 avgdl テキスト{avgdl}平均GDL ドキュメント コレクション内のすべてのドキュメントの平均長を表します。 1 1 11 そして bbb は調整可能なパラメータです。

3.2 メリットとデメリット

BM25 アルゴリズムには、TF-IDF アルゴリズムに比べて次の利点があります。

  • 文書の長さの正規化: 文書の長さが単語の頻度に与える影響を考慮します。
  • 単語周波数飽和調整: 単語頻度の飽和を調整する対数関数を導入することで、高頻度単語の過度の強調を回避します。
  • ドキュメントの周波数飽和: ドキュメント頻度の影響を調整するために、ドキュメント頻度の飽和係数が導入されます。

ただし、BM25 アルゴリズムには複雑さもあり、最良の結果を得るには複数のパラメーターを調整する必要があります。

4. Elasticsearch でのアプリケーション

4.1 バージョンの違い

Elasticsearch バージョン 5.0 より前は、関連性スコアリングに TF-IDF アルゴリズムがデフォルトで使用されていました。バージョン 5.0 以降、Elasticsearch は、実際のアプリケーションでより優れたパフォーマンスを発揮するため、デフォルトで BM25 アルゴリズムを使用します。

4.2 デバッグと最適化

Elasticsearch がクエリに対するドキュメントの関連性スコアを計算する方法について洞察を得るには、次を使用できます。_explain API。この API は、ドキュメント上の各クエリ用語のスコアの説明を返すことができます。これには、個々のコンポーネント (サブクエリ、因子、正規化など) と全体のスコアに対するそれらの特定の寄与も含まれます。

たとえば、次のコマンドを使用して、特定のクエリの TF-IDF または BM25 スコアを表示できます。

GET /my_index/_search
{
  "explain": true,
  "query": {
    "match": {
      "text": "this is the first document"
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.3 実際の応用シナリオ

ECサイトでは「携帯電話」というキーワードを入力して検索できます。 Elasticsearch は、「携帯電話」を含むすべてのドキュメントのインデックスを作成し、BM25 アルゴリズムを使用して関連性スコアを計算します。スコアの高いドキュメントは検索結果で上位にランク付けされ、ユーザー エクスペリエンスが向上します。

5. まとめ

Elasticsearch の関連性スコアリング メカニズムは複雑なアルゴリズムに基づいており、その中でも TF-IDF アルゴリズムと BM25 アルゴリズムが 2 つの重要なスコアリング アルゴリズムです。 Elasticsearch の検索パフォーマンスと結果を最適化するには、これらのアルゴリズムの原理と応用を理解することが重要です。アルゴリズムパラメータを調整して使用することで、_explain デバッグ用のAPI、