読者です 読者をやめる 読者になる 読者になる

IIR9章まとめ

第9章は、適合性フィードバックとクエリ拡張について。

情報検索において、再現率をどのように向上させることができるだろうか?

例えば、"aircraft" というクエリを投げたとする。

この時、単純な情報検索システムでは、"aircraft" は含まれていないが "plane" は含まれているようなドキュメントは結果として返さない。

しかし、"aircraft" と "plane" は同義語なので、クエリそのものとマッチしていなくても、そのようなドキュメントは返して欲しい。

そこで、それらを実現する2つの手法をあげる。

適合性フィードバック

適合性フィードバック(Relevance Feedback)とは、検索結果に対してユーザが適合・不適合を教えてあげ、それを反映させて適合結果を向上させていく手法である。

まず、適合性フィードバックの前提となるものを挙げておく。

  • ユーザーは検索クエリについて十分な前提知識がある
  • 適合文書がお互いに似ている

例として、"bike" というクエリを投げ、以下の結果が返ってきたとする。

ざっと見た感じ、"bike"ではないものも含まれている。

そこで、どのデータが適合しているかをシステムに教えてあげる。(上図の緑枠)

すると…

再現率が上がったね!

以下、具体的に説明する。

Rocchio’algorithm

まず、ドキュメントのセントロイドを以下のように定義する。

これを用いて、クエリベクトルは以下のように求められる。

ただし、D_rは適合文書集合、D_{nrは不適合文書集合。

すなわち、クエリベクトルを、適合文書集合のセントロイドに近づけ、不適合文書集合のセントロイドから遠ざける。

以下の例を考える。

クエリベクトルは、適合文書集合のセントロイドへのベクトルとなっているが、この段階では適合文書集合と不適合文書集合を分離できていない。

ここで、不適合文書集合のセントロイドから遠ざけてあげると…

きれいに分離できたよ!

このアルゴリズムは理論的にはよく動機付けられているが、実際には以下のアルゴリズムを用いる。

Rocchio algorithm (SMART)

以下の式を用いる。

αとβ/γはトレードオフであり、適合性判定済みのドキュメントが沢山あるなら、β/γを大きくする。

ポジティブフィードバック(β>γ)の方がネガティブフィードバック(β<γ)よりもよく、ポジティブフィードバックのみを許容しているシステムも多い。


以下、適合性フィードバックの問題点を挙げる。

  • 適合性フィードバックはコストがかかる

    適合性フィードバックは長いクエリを作り出すため、処理に時間がかかる。

  • ユーザはフィードバックしたがらない(めんどくさい)

そこで、ユーザにフィードバックをさせない、以下のフィードバックを考える。

Pseudo-適合性フィードバック

検索結果の上位K件は適合していると仮定して、自動で適合性フィードバックを行う。

これは概ねうまくいくが、たまに大きく外すことがある。

クエリ拡張

クエリ拡張とは、シソーラスなどを用いて、クエリを検索結果とは独立に拡張する手法。

適合性フィードバックではドキュメントをフィードバックしていたが、クエリ拡張では、タームやフレーズを拡張する。

以下の赤枠のようなものである。

クエリ拡張には以下のものがある。

  • 自動的にシソーラスを構築する
  • 共起性を用いる
  • クエリログの解析に基づいてクエリを再構築する(Webでよく使われる)

また、自動的にシソーラスを構築する場合、以下のものを同義語とする。

  • 類似タームと共起している
  • 文法的に等位の関係である

多くのサーチエンジンでは、クエリログを用いてクエリ拡張を行っている。