概要
BM25 クラスは、特定のフィールドに基づいてクエリ用語の BM25 スコアを計算するために使用されます。BM25 スコアは、指定されたフィールドに対するクエリ用語の関連性を示します。次の式は、BM25 スコアの計算方法を示しています。
tf(i) は、指定されたフィールドにおけるクエリ用語の出現回数を示します。
idf(i) は、クエリ用語の逆文書頻度 (IDF) を示します。
f(ngram) = ngram > 1 ? ngram*C : 1
K: 用語頻度の影響を調整する係数です。
C: 検索単位の重みです。B: 指定されたフィールドの長さの効果を調整する係数です。BM25 クラスは、計算式内のさまざまなパラメータの影響を調整するために使用される複数の関数を備えています。これにより、ニーズに合わせて BM25 クラスをカスタマイズできます。
関数
関数 | 説明 |
BM25 create(OpsScorerInitParams params, CString indexName, CString fieldName) | BM25 オブジェクトを作成します。 |
void setGroupScoreMergeOp(CString opName) | 複数のクエリグループの BM25 スコアの集計方法を設定します。サポートされている集計方法は、sum と max です。デフォルトの集計方法は sum です。 |
void setParamK(double paramK) | K パラメータに値を割り当てます。 |
void setParamB(double paramB) | B パラメータに値を割り当てます。 |
void setParamC(double paramC) | C パラメータに値を割り当てます。 |
void setFieldAvgLength(double avgFieldLength) | 平均フィールド長を指定します。 |
double evaluate(OpsScoreParams params) | 指定されたフィールドにおけるクエリ用語の近接性を計算します。 |
関数の詳細
BM25 create(OpsScorerInitParams params, CString indexName, CString fieldName)
特定のインデックスと特定のフィールドに基づいて BM25 オブジェクトを作成します。パラメータ: params: 初期化に使用されるパラメータ。詳細については、OpsScorerInitParams を参照してください。indexName: インデックスの名前。名前は定数である必要があります。fieldName: 指定されたインデックス内のフィールドの名前。名前は定数である必要があります。フィールドは TEXT または SHORT_TEXT タイプである必要があります。アナライザーは、中国語の汎用アナライザー、カスタムアナライザー、中国語の単一文字アナライザー、英語のアナライザー、またはあいまい検索のアナライザーを使用できます。
void setGroupScoreMergeOp(CString opName)
複数のクエリグループの BM25 スコアの集計方法を設定します。サポートされている集計方法は、max と sum です。デフォルトの集計方法は sum です。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。クエリグループは、元の検索クエリがアナライザーによって処理された後に生成されます。デフォルトでは、クエリグループは 1 つだけです。パラメータ: opName: 複数のクエリグループの BM25 スコアを集計するために使用される方法。サポートされている集計方法は、max と sum です。
void setParamK(double paramK)
K パラメータに値を割り当てます。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: paramK: K パラメータに割り当てる値。デフォルト値: 2.0。
void setParamB(double paramB)
B パラメータに値を割り当てます。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: paramB: B パラメータに割り当てる値。デフォルト値: 0.1。
void setParamC(double paramC)
C パラメータに値を割り当てます。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: paramC: C パラメータに割り当てる値。デフォルト値: 0.7。
void setFieldAvgLength(double avgFieldLength)
平均フィールド長を指定します。この関数は、スコア計算オブジェクトの初期化中にのみ呼び出すことができます。パラメータ: avgFieldLength: 設定する平均フィールド長。デフォルト値: 20。
double evaluate(OpsScoreParams params)
指定されたインデックスの指定されたフィールドにおけるクエリ用語の BM25 スコアを計算します。パラメータ: params: スコア計算に使用されるパラメータ。詳細については、OpsScoreParams を参照してください。戻り値: 指定されたフィールドにおけるクエリ用語の BM25 スコア。有効な値: [0,1]。サンプルコード:
package users.scorer;
import com.aliyun.opensearch.cava.framework.OpsScoreParams;
import com.aliyun.opensearch.cava.framework.OpsScorerInitParams;
import com.aliyun.opensearch.cava.features.similarity.fieldmatch.BM25;
class BasicSimilarityScorer {
BM25 _f1;
boolean init(OpsScorerInitParams params) {
_f1 = BM25.create(params, "text_index", "text");
_f1.setParamK(3);
_f1.setParamB(0.5);
_f1.setParamC(1.2);
_f1.setFieldAvgLength(30);
return true;
}
double score(OpsScoreParams params) {
return _f1.evaluate(params);
}
};