Similitude de cosinus en Python

Shivam Arora 30 janvier 2023
  1. Utilisez le module scipy pour calculer la similarité de cosinus entre deux listes en Python
  2. Utilisez le module NumPy pour calculer la similarité de cosinus entre deux listes en Python
  3. Utilisez le module sklearn pour calculer la similarité de cosinus entre deux listes en Python
  4. Utilisez le module torch pour calculer la similarité de cosinus entre deux listes en Python
Similitude de cosinus en Python

La similarité cosinus mesure la similarité entre les listes vectorielles en calculant l’angle cosinus entre les deux listes vectorielles. Si vous considérez la fonction cosinus, sa valeur à 0 degré est 1 et -1 à 180 degrés. Cela signifie que pour deux vecteurs qui se chevauchent, la valeur du cosinus sera maximale et minimale pour deux vecteurs exactement opposés.

Dans cet article, nous allons calculer la similarité en cosinus entre deux listes de tailles égales.

Utilisez le module scipy pour calculer la similarité de cosinus entre deux listes en Python

La fonction spatial.cosine.distance() du module scipy calcule la distance au lieu de la similarité cosinus, mais pour y parvenir, on peut soustraire la valeur de la distance de 1.

Par example,

from scipy import spatial

List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)

Production:

0.9720951480078084

Utilisez le module NumPy pour calculer la similarité de cosinus entre deux listes en Python

La fonction numpy.dot() calcule le produit scalaire des deux vecteurs passés en paramètres. La fonction numpy.norm() renvoie la norme vectorielle.

Nous pouvons utiliser ces fonctions avec la formule correcte pour calculer la similarité de cosinus.

Par example,

from numpy import dot
from numpy.linalg import norm

List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = dot(List1, List2) / (norm(List1) * norm(List2))
print(result)

Production:

0.9720951480078084

S’il existe plusieurs ou une liste de vecteurs et un vecteur de requête pour calculer les similitudes de cosinus, nous pouvons utiliser le code suivant.

import numpy as np

List1 = np.array([[4, 45, 8, 4], [2, 23, 6, 4]])

List2 = np.array([2, 54, 13, 15])

similarity_scores = List1.dot(List2) / (
    np.linalg.norm(List1, axis=1) * np.linalg.norm(List2)
)

print(similarity_scores)

Production:

[0.98143311 0.99398975]

Utilisez le module sklearn pour calculer la similarité de cosinus entre deux listes en Python

Dans le module sklearn, il existe une fonction intégrée appelée cosine_similarity() pour calculer la similarité du cosinus.

Voir le code ci-dessous.

from sklearn.metrics.pairwise import cosine_similarity, cosine_distances

A = np.array([10, 3])
B = np.array([8, 7])
result = cosine_similarity(A.reshape(1, -1), B.reshape(1, -1))
print(result)

Production:

[[0.91005765]]

Utilisez le module torch pour calculer la similarité de cosinus entre deux listes en Python

Lorsque nous traitons des tenseurs à N dimensions ayant des formes (m,n), nous pouvons utiliser la fonction consine_similarity() du module torch pour trouver la similarité de cosinus.

Par example,

import torch
import torch.nn.functional as F

t1 = [3, 45, 6, 8]
a = torch.FloatTensor(t1)

t2 = [4, 54, 3, 7]
b = torch.FloatTensor(t2)
result = F.cosine_similarity(a, b, dim=0)

print(result)

Production:

tensor(0.9960)

Les listes sont converties en tenseurs à l’aide du module torch.FloatTensor().

Article connexe - Python Math