pythonによるコサイン類似度の計算
numpy
Lastmod: 2021-04-08

はじめに

ここではnumpyを利用してコサイン類似度の計算を行います。

コサイン類似度(Cosine Similarity)とは

コサイン類似度とは単純に2つのベクトル間のコサインです。 要するに2つのベクトルがどのくらい同じ向きなのかを測定しています。 定義は以下のようになります。 ちなみに当たり前ですが、範囲は-1~1。 1に近づくほど似ていることになります。

cosine-distance

高次元のベクトルかつベクトルの大きさが無視できる場合よく使われます。 例えばテキストの分析において、ベクトルが単語の出現数とかである場合、コサイン類似度の出番らしい。 コサイン類似度はベクトルの向きのみ考慮されるため、ベクトルの大きさは完全に無視されます。 ここが一番の欠点ですね。

numpyでの計算

pythonでは以下のようにかけます。定義通りですね。

>>> import numpy as np
>>> x = np.array([1, 1])
>>> y = np.array([2, 2])
>>> 
>>> np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))
0.9999999999999998