勉強会(Groonga精度について) 2015/11/6
検索精度
- 利用者の満足度を上げること。
- 満足度は検索をする人によって異なる。
- 特許の場合: 漏れがないことが大事
- Webの検索の場合: 探しているドキュメント
再現率と適合率を考える。
再現率
- もれなく検索できているか?
- Groongaを検索した場合
- 漏れがなければ、余計な文字が入っていても100%になる。
- 緑と黄色のGroongaが全部含まれていれば再現率100%
- 緑のGroongaだけ含まれていたら4/5: 80%
- 16個のキーワードが含まれていても100%
- 適合率
- 正しい文書がヒットした件数
- 緑と黄色のGroongaだけヒットした場合、100%
- 緑と黄色のGroongaとRroongaがヒットした場合: 5/6: 83%
- 全部の文字がヒットした場合: 31.2%
- 一般的に適合率が上がれば再現率が下がる。その逆もしかり
Webの検索等の場合(現実的には...)
ランク付け、スコア付けをする方法
- ドキュメント内の単語の頻度を利用する。
- TF
- TFIDF
- BM25
- タグを評価に使う
- 被リンク率(PageRankなど)
文書の重み付け
-
TF
- Term Frequency 単語の出現回数
- 単語の出現回数が多ければ良い
-
TFIDF
- Term Frequency、単語の出現頻度)とidf(英: Inverse Document Frequency
-
BM25
- 自分で調べる。
- 文書の長さを考慮する。短い文書ほど重要
-
文書(あるいは)100個ある
-
100個の文書に「こんにちは」という文字が含まれている。
- あまり重要な単語ではない
-
100個の文書の中に、「Groonga」という文書は2個しかない
- 重要なキーワード
TFIDFの計算
例として次のような文書があると考える。
No | 文書1 | 文書2 | 文書3 |
---|---|---|---|
1 | こんにちは | こんにちは | こんにちは |
2 | こんにちは | こんにちは | こんにちは |
3 | こんにちは | こんにちは | こんにちは |
4 | こんにちは | こんにちは | こんにちは |
5 | こんにちは | rroonga | mroonga |
6 | 全文検索 | ruby | mysql |
7 | groonga | groonga | groonga |
それぞれの単語数は次のようになる。
単語 | 文書1 | 文書2 | 文書3 |
---|---|---|---|
こんにちは | 5 | 4 | 4 |
groonga | 1 | 1 | 1 |
全文検索 | 1 | 0 | 0 |
ruby | 0 | 1 | 0 |
rroonga | 0 | 1 | 0 |
mysql | 0 | 0 | 1 |
mroonga | 0 | 0 | 1 |
TF計算
- ざっくりいうと、計算式は、対象の単語数/全体の単語数である
- 単語の頻出数だけを見ると単語数が多いほどTF値が高くなる
- 文書1の「こんにちは」TF計算
- こんにちはの文字数: 5
- 全体の単語数: 7
- TF値: 5/7 = 0.71...
- 文書1の「全文検索」のTF計算
- 全文検索の文字数: 1
- 全体の単語数: 7
- TF値: 1/7 = 0.14...
- TFの値では、「こんにちは」の方が「全文検索」よりも良いスコアとなる
IDF値
- ざっくりいうと、計算式は、全体の文書数/対象のキーワードの含まれる文書数である。
- 実際の計算にはlogを使うが簡略化した方がわかりやすいので例では利用しない。
- 文書全体で、単語数が少ない方の数値が大きくなる
- 文書1,文書2,文書3三つのIDF値を計算する
- 文書1 ~ 文書3のこんにちはIDF値
- 文書数: 3
- こんにちはが含まれる文書の数: 3
- IDF値: 3/3 = 1...
- 文書1 ~ 文書3の全文検索のIDF値
- 文書数: 3
- 全文検索が含まれるの文書の数: 1
- IDF値: 3/1 = 3
- 「こんにちは(1)」より「全文検索(3)」の方が数値が高く文書を特徴付けているとわかる。
### TF IDFの計算(だいぶ怪しい)
- TF IDFの計算
- TFとIDFの値をかける(らしい)
- 上記の例の場合(TFは文書1のみ、IDFは文書1~3)
- こんにちは: TF: 0.71 * IDF: 1 = 0.71
- 全文検索: TF: 0.14 * IDF: 3 = 0.42
- この計算で、文字が多ければ良いとなるわけではないことがわかる。
AND&ORの場合
- そのうち書くかも
参考
- TF-IDFで文書内の単語の重み付け
- このサイトがとてもわかりやすかった。
- TF-IDF
- BM25