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 ページを参照してください。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です