Métriques de similarité en PNL

Nœud source: 1852346

By James Briggs, Scientifique des données



Image de l'auteur

 

Lorsque nous convertissons la langue dans un format lisible par machine, le Standard L’approche consiste à utiliser des vecteurs denses.

Un réseau de neurones génère généralement des vecteurs denses. Ils nous permettent de convertir des mots et des phrases en vecteurs de grande dimension, organisés de manière à ce que la position géométrique de chaque vecteur puisse attribuer une signification.



L'exemple arithmétique du langage bien connu montrant que Reine = Roi – Homme + Femme

 

Il en existe un exemple particulièrement connu, où l'on prend le vecteur de King, soustrayez le vecteur Homme, et ajoutez le vecteur Femme. Le vecteur correspondant le plus proche du vecteur résultant est Queen.

Nous pouvons également appliquer la même logique à des séquences plus longues, comme des phrases ou des paragraphes, et nous constaterons qu'une signification similaire correspond à la proximité/orientation entre ces vecteurs.

La similarité est donc importante – et nous aborderons ici les trois mesures les plus populaires pour calculer cette similarité.

Distance euclidienne

 
La distance euclidienne (souvent appelée norme L2) est la mesure la plus intuitive. Définissons trois vecteurs :



Trois exemples vectoriels

 

Rien qu’en regardant ces vecteurs, nous pouvons affirmer avec certitude que a ainsi que le b sont plus proches les uns des autres – et nous le voyons encore plus clairement en les visualisant sur un graphique :



Vecteurs a ainsi que le b sont proches de l'origine, vecteur c est beaucoup plus éloigné

 

Clairement, a ainsi que le b sont plus proches les uns des autres - et nous calculons cela en utilisant la distance euclidienne :



Formule de distance euclidienne

 

Pour appliquer cette formule à nos deux vecteurs, a ainsi que le b, Nous faisons:



Calcul de la distance euclidienne entre vecteurs a ainsi que le b

 

Et nous obtenons une distance de 0.014, en effectuant le même calcul pour ré(une, c) Retours 1.145et la  ré(b,c) Retours 1.136. Clairement, a ainsi que le b sont plus proches dans l’espace euclidien.

Produit scalaire

 
Un inconvénient de la distance euclidienne est le manque d’orientation prise en compte dans le calcul – celui-ci est basé uniquement sur la magnitude. Et c'est là que nous pouvons utiliser nos deux autres mesures. Le premier d’entre eux est le produit scalaire.

Le produit scalaire prend en compte la direction (orientation) et évolue également avec la magnitude vectorielle.

Nous nous soucions de l'orientation car une signification similaire (comme nous le trouverons souvent) peut être représentée par la direction du vecteur – pas nécessairement par sa magnitude.

Par exemple, nous pouvons constater que l’ampleur de notre vecteur est en corrélation avec la fréquence d’un mot qu’il représente dans notre ensemble de données. Maintenant, le mot hi signifie la même chose que hello, et cela peut ne pas être représenté si nos données d'entraînement contenaient le mot hi 1000 fois et hello juste deux fois.

Ainsi, l’orientation des vecteurs est souvent considérée comme étant tout aussi importante (sinon plus) que la distance.

Le produit scalaire est calculé en utilisant :



Formule du produit scalaire

 

Le produit scalaire considère l'angle entre les vecteurs, où l'angle est ~0, le cos La composante de la formule est égale à ~1. Si l'angle est plus proche de 180 (orthogonal/perpendiculaire), le cos le composant est égal à ~0.

Par conséquent, la cos Le composant augmente le résultat là où il y a moins d'angle entre les deux vecteurs. Ainsi, un produit scalaire plus élevé est en corrélation avec une orientation plus élevée.

Encore une fois, appliquons cette formule à nos deux vecteurs, a ainsi que le b:



Calcul du produit scalaire pour les vecteurs a ainsi que le b

 

De toute évidence, le calcul du produit scalaire est simple (le plus simple des trois) – et cela nous offre des avantages en termes de temps de calcul.

Il y a cependant un inconvénient. Il n'est pas normalisé, ce qui signifie que les vecteurs plus grands auront tendance à obtenir des produits scalaires plus élevés, bien qu'ils soient moins similaires.

Par exemple, si l'on calcule a·a — nous nous attendrions à un score plus élevé que ac · c (a correspond exactement à a). Mais ce n’est malheureusement pas comme ça que ça marche.



Le produit scalaire n’est pas si génial lorsque nos vecteurs ont des magnitudes différentes.

 

Ainsi, en réalité, le produit scalaire est utilisé pour identifier l’orientation générale de deux vecteurs — car :

  • Deux vecteurs pointant dans une direction similaire renvoient un positif produit scalaire.
  • Deux vecteurs perpendiculaires renvoient un produit scalaire de zéro.
  • Les vecteurs qui pointent dans des directions opposées renvoient un négatif produit scalaire.

Similitude de cosinus

 
La similarité cosinus prend en compte l'orientation du vecteur, indépendamment de la magnitude du vecteur.



Formule de similarité cosinus

 

La première chose dont nous devons être conscients dans cette formule est que le numérateur est en fait le produit scalaire – qui prend en compte à la fois ampleur ainsi que le direction.

Au dénominateur, nous avons les étranges doubles barres verticales — elles signifient 'la longueur de'. On a donc la longueur de u multiplié par la longueur de v. La longueur, bien entendu, tient compte ampleur.

Quand on prend une fonction qui considère à la fois ampleur ainsi que le direction et divisez cela par une fonction qui considère juste ampleur - ces deux là magnitudes s'annuler, nous laissant avec une fonction qui considère direction indépendant de la grandeur.

Nous pouvons considérer la similarité cosinus comme un normalisée produit scalaire! Et cela fonctionne clairement. La similarité cosinus de a ainsi que le b est proche 1 (parfait):



Calcul de similarité cosinus pour les vecteurs a ainsi que le b

 

Et en utilisant le sklearn implémentation de la similarité cosinus pour comparer a ainsi que le c nous donne encore une fois de bien meilleurs résultats :



La similarité cosinus peut souvent fournir de bien meilleurs résultats que le produit scalaire.

 

C'est tout pour cet article couvrant les trois mesures de distance/similarité : distance euclidienne, produit scalaire et similarité cosinus.

Il vaut la peine d’être conscient de la façon dont chacun fonctionne ainsi que de ses avantages et inconvénients, car ils sont tous largement utilisés dans l’apprentissage automatique, et en particulier en PNL.

Vous pouvez trouver des implémentations Python de chaque métrique dans ce cahier.

J’espère que vous avez apprécié l’article. Faites-moi savoir si vous avez des questions ou des suggestions via Twitter ou dans les commentaires ci-dessous. Si vous êtes intéressé par plus de contenu comme celui-ci, je poste sur  YouTube trop.

Merci pour la lecture!

 
*Toutes les images sont de l'auteur sauf indication contraire

 
Bio: James Briggs est un data scientist spécialisé dans le traitement du langage naturel et travaillant dans le secteur financier, basé à Londres, au Royaume-Uni. Il est également un mentor indépendant, un écrivain et un créateur de contenu. Vous pouvez joindre l'auteur par e-mail (jamescalam94@gmail.com).

ORIGINALE. Republié avec permission.

Connexe:

Source : https://www.kdnuggets.com/2021/05/similarity-metrics-nlp.html

Horodatage:

Plus de KDnuggetsGenericName