
52
3
章 関連のある文書を見つける
明らかに、単語の出現回数だけを特徴量として用いるのは単純過ぎると言えます。特徴ベクトルを
単位長さにするために、正規化する必要があるでしょう。
3.2.3
単語の出現回数ベクトルを正規化する
それでは、
dist_raw
関数を拡張して、単語の出現回数からなるベクトルではなく、正規化したベ
クトルを返すようにします。
>>>
def dist_norm(v1, v2):
...
v1_normalized = v1/sp.linalg.norm(v1.toarray())
...
v2_normalized = v2/sp.linalg.norm(v2.toarray())
...
delta = v1_normalized - v2_normalized
...
return sp.linalg.norm(delta.toarray())
この関数を用いて、類似度を計算すると、結果は次のようになります。
=== Post 0 with dist=1.41: This is a toy post about machine learning.
Actually, it contains not much interesting stuff.
=== Post 1 with dist=0.86: Imaging databases provide stora
ge
capabilities.
=== Post 2 with dist=0.92: Most imaging databases ...