第9章は、適合性フィードバックとクエリ拡張について。
情報検索において、再現率をどのように向上させることができるだろうか?
例えば、"aircraft" というクエリを投げたとする。
この時、単純な情報検索システムでは、"aircraft" は含まれていないが "plane" は含まれているようなドキュメントは結果として返さない。
しかし、"aircraft" と "plane" は同義語なので、クエリそのものとマッチしていなくても、そのようなドキュメントは返して欲しい。
そこで、それらを実現する2つの手法をあげる。
適合性フィードバック
適合性フィードバック(Relevance Feedback)とは、検索結果に対してユーザが適合・不適合を教えてあげ、それを反映させて適合結果を向上させていく手法である。
まず、適合性フィードバックの前提となるものを挙げておく。
- ユーザーは検索クエリについて十分な前提知識がある
- 適合文書がお互いに似ている
例として、"bike" というクエリを投げ、以下の結果が返ってきたとする。
ざっと見た感じ、"bike"ではないものも含まれている。
そこで、どのデータが適合しているかをシステムに教えてあげる。(上図の緑枠)
再現率が上がったね!
以下、具体的に説明する。
Rocchio’algorithm
ただし、は適合文書集合、は不適合文書集合。
すなわち、クエリベクトルを、適合文書集合のセントロイドに近づけ、不適合文書集合のセントロイドから遠ざける。
クエリベクトルは、適合文書集合のセントロイドへのベクトルとなっているが、この段階では適合文書集合と不適合文書集合を分離できていない。
きれいに分離できたよ!
このアルゴリズムは理論的にはよく動機付けられているが、実際には以下のアルゴリズムを用いる。
Rocchio algorithm (SMART)
αとβ/γはトレードオフであり、適合性判定済みのドキュメントが沢山あるなら、β/γを大きくする。
ポジティブフィードバック(β>γ)の方がネガティブフィードバック(β<γ)よりもよく、ポジティブフィードバックのみを許容しているシステムも多い。
以下、適合性フィードバックの問題点を挙げる。
- 適合性フィードバックはコストがかかる
適合性フィードバックは長いクエリを作り出すため、処理に時間がかかる。
- ユーザはフィードバックしたがらない(めんどくさい)
そこで、ユーザにフィードバックをさせない、以下のフィードバックを考える。
Pseudo-適合性フィードバック
検索結果の上位K件は適合していると仮定して、自動で適合性フィードバックを行う。
これは概ねうまくいくが、たまに大きく外すことがある。