ベクトル空間モデルとは、文書中の単語の重要度を利用して文書をベクトルとして表現し、文書同士をそのベクトル空間上で比較することによって、2文書間の類似度を計算するという考え方の計算法である。
単語の重要度を使って文書を数値化して比べるということです。多分。単語(Term)を一つのベクトルと見なしているので、ベクトル空間モデルって言うんだと勝手に思ってます。
1ターム(term:単語の種類の意味)は、ベクトル空間の1つの軸に対応する。
1文書は、ベクトル空間中の1つの点、もしくは1ベクトルに相当する。
よって、扱う文書群の中に100種類の単語(100ターム)が出て来ている場合、それらの文書をベクトル空間モデルで扱う場合、100次元ベクトル空間という話になります。
web検索エンジンでは、1000万次元とかになるそうです。
検索システムでは、クエリに関しても同様にベクトル空間のベクトルとして表現し、沢山の文書の中から近いものを選んでランキングします。ベクトルが近い文書は関連度が高いと考えられます。
ベクトルの近さってなんだろうか。という事について。
ベクトルの近さは、あるベクトルと比べるベクトルが似た様な方向であれば似ているということになります。
ただ、方向が似ていても、長さが全然違う(ユークリッド距離が大きい) 場合もあります。例えば、ある文書dをコピーして、その文書自身の最にコピー内容をペーストして新しい文書d'を作ります。dとd'は書いてあることは同じでも、文書量が2倍なのでユークリッド距離が大きくなります。しかし、方向は全く同じ向きになります。
ということで、文書はベクトルの成す角度(方向)によって比べることになっています。
ベクトルで比べるといっても、ある文書に出て来ているタームが、他の文書には出ていないことだってあります。ので、そんな次元の違う文書同士も比べるために正規化が必要になります。
L2ノルムというものを計算し、ベクトルを割ると正規化されます。つまりベクトルの要素全部足して、その値で割れば、正規化されたってことらしいです。
以下、正規化に使うL2ノルム
これで、クエリと文書を比較可能になります。
自分自身の値の合計値で、各要素を割ると、正規化されて比較できるようになるってこっとで。馬鹿な筆者はあんまし分かってません(笑)
とにかく、こうする事で、どんな文書も同一なベクトル空間で比較可能になりました。