Python でコサイン類似度を計算する方法
コサイン類似度は、内積空間の 2 つのベクトル間の類似性の尺度です。
2 つのベクトル A と B について、コサイン類似度は次のように計算されます。
コサイン類似度= ΣA i B i / (√ΣA i 2 √ΣB i 2 )
このチュートリアルでは、 NumPyライブラリの関数を使用して Python でベクトル間のコサイン類似度を計算する方法を説明します。
Python の 2 つのベクトル間のコサイン類似度
次のコードは、Python で 2 つの配列間のコサイン類似度を計算する方法を示しています。
from numpy import dot from numpy. linalg import norm #define arrays a = [23, 34, 44, 45, 42, 27, 33, 34] b = [17, 18, 22, 26, 26, 29, 31, 30] #calculate Cosine Similarity cos_sim = dot (a, b)/( norm (a)* norm (b)) cos_sim 0.965195008357566
2 つのテーブル間のコサイン類似度は0.965195であることがわかります。
このメソッドは、任意の長さの 2 つの配列に対して機能することに注意してください。
import numpy as np from numpy import dot from numpy. linalg import norm #define arrays a = np.random.randint(10, size= 100 ) b = np.random.randint(10, size= 100 ) #calculate Cosine Similarity cos_sim = dot (a, b)/( norm (a)* norm (b)) cos_sim 0.7340201613960431
ただし、これは 2 つの配列が同じ長さの場合にのみ機能します。
import numpy as np from numpy import dot from numpy. linalg import norm #define arrays a = np.random.randint(10, size= 90 ) #length=90 b = np.random.randint(10, size= 100 ) #length=100 #calculate Cosine Similarity cos_sim = dot (a, b)/( norm (a)* norm (b)) cos_sim ValueError : shapes (90,) and (100,) not aligned: 90 (dim 0) != 100 (dim 0)
コメント
1. Python を使用してコサイン類似度を計算する方法はいくつかありますが、 このスタック オーバーフロー スレッドで説明されているように、この記事で説明されている方法が最も速いことがわかります。
2.コサイン類似度の詳細については、この Wikipedia ページを参照してください。