IIR6章まとめ

6章は、タームの重み付けとVSM(ベクトル空間モデル)について。

1章で、Boolean検索について学んだが、これはWeb検索などでは実用的ではない。

Boolean検索では、クエリのタームを含むドキュメントが全て結果として返ってくるので、クエリが単純だとヒットしすぎ、クエリが複雑だと全然ヒットしないというように、クエリの調節が難しいからである。

例えば、ユーザがあるクエリを投げて仮に1000件の結果が返ってきたとしても、1から全てに目を通して目的のドキュメントを見付ける、というわけにはいかない。

そこで、クエリにより関係の深いドキュメントを上位にするといった、ランキング手法が必要になってくる。

ランキングとして、クエリとドキュメントがどれほどマッチしているかを、[0,1]の連続値のスコアで表現する(スコアが高いほどクエリとドキュメントは関係が深い)。

以下、スコアリング手法を挙げていく。

Jaccard係数

2つの集合の共起性を考えたもの。以下のような式になる。

Jaccard(A,B) = |A∩B|/|A∪B|

2つの集合が全く同じであればスコアが1、全く異なればスコアが0になることは容易に分かる。

以下に例を挙げる。

  • Query:“ides of March”
  • Document:“Caesar died in March”

この時、

  • |Q∪D| = |ides of March Caesar died in| = 6
  • |Q∩D| = |March| = 1

となり、
Jaccard(Q,D) = 1/6 となる。

しかし、この手法には欠点がある。

  • タームの出現頻度(tf)を考慮していない。
  • レアなタームとそうでないタームが同じ重みである。

そこで、更によい手法を考えることにする。

tf(term freqency)

 tf_{t,d}は、ドキュメントdにおけるタームtの出現頻度。

すなわち、1つのドキュメントに同じタームが沢山出てくるほど、スコアは大きくなる。

tf-idf

tfだけでは、全てのタームが同じ重みである。

しかし実際は、多くのドキュメントに現れるようなタームは大して検索の手がかりにはならず、レアなタームほど検索の有力な手がかりになる。

そこで、df(document freqency)というものを考える。

 df_{t}は、ドキュメントセット中でタームtの含まれる文書数。

dfが小さいほど、タームtはレアなタームということになる。

実際には、dfが小さいほど重みは大きくなってほしいので、その逆のidf(inverse document freqency)を使用する。

これを先程のtfとかけ合わせ、スコアは以下のような式になる。

 $Score(q,d) = tf_{t,d} \times idf_{d}

これで、あるドキュメントに沢山出てくるタームほど、またレアなタームほど、スコアが大きくなる。

ベクトル空間モデル(Vector Space Model)

クエリやドキュメントをV次元ベクトル空間に展開する。

(軸は各ターム,Vはドキュメントセット中の総ターム数)

そしてベクトル空間内で、クエリベクトルに近いドキュメントベクトルを見付ける。

では、どのようなベクトル同士が「近い」のか?

その尺度として、ベクトル同士のなす角が小さい程近いとする、コサイン類似度というものを使用する。

以下のような式になる。

これは、2ベクトルが作るcosθを求めるのに等しい。

よって以下の図では、 qと最も類似度の高いドキュメントは d_{2}となる。