BM25
Last updated
Last updated
tfidfの改良版であり、情報検索のスコアリング手法の一つ。
詳細には、tf部分を改良しており、idfは同じものを用いる。
tfは、文書内の単語の割合であるが、割合の場合、以下の課題がある。
同一の単語数の文書で、1個の出現と2個の出現の重要性が倍異なる。
これがN個となると、N倍異なる。
現実には、1個の出現と2個の出現は1.3倍くらいになってほしいお気持ち。
文書群の集合をD、クエリをQとし、Qの各単語をq_1, q_2, q_3とすると以下のように定義する。
idfは同じでありであり、シグマの部分はクエリQの各単語の和であるためいったん置いておくと以下のようになる。
ここでf(q_i,d)は、文書dにおける単語q_iの占める度合であり、様々なパターンがある。
例としては以下のようなものである。
tf: term frequency
単語q_iの数
単語q_iの数の平方根
簡単のため、単語q_iの数とここでは考える。
単語数が増えていくに従い、その値はk_1+1に収束する。
分母分子をfで割った式変形をし、極限をとれば分かる。
このk_1はパラメータであり、1.2~2.0の範囲で設定されることが多い。
次に分母の以下に着目する。
これは処理対象の文書dの単語数に応じて以下の特性を持つ。
全文書の平均単語数と文書dの単語数が同じ: 1となる。
全文書の平均単語数より文書dの単語数が少ない: 1からだんだん小さくなる
全文書の平均単語数より文書dの単語数が多い: 1からだんだん大きくなる
この式は元式の分母であるため、最終的には以下の特性を持つ。
単語数が多い傾向にある文書: 単語1個あたりの数値が小さくなる
単語数が少ない傾向にある文書: 単語1個あたりの数値が大きくなる
この単語数の影響はパラメータbによって制御され、b=0.75で使用されることが多い。
全文書の平均単語数と文書dの単語数が同じ、かつ単語q_iの数が1の場合、以下のように1となる。
上記を基準として制御されると考えればよい。
なお単語数が多い場合は、これらによらず一定のk_1+1に収束する。
単語数の1つに対する重みを制御し、最大でもk_1+1という値に収束するように定式化。
ここで、k_1はパラメータであり、これで収束値を制御する。
また文書dの単語数が平均に比べて大きいか小さいかで、単語1つの影響を制御する。
単語数が多い場合は、1単語あたりの重みが小さくなり、少ない場合は大きくなる。
この影響度合いは、パラメータbで制御される。
tfidfと同様、ベクトル化にも応用はできそう?