Metriche di somiglianza nella PNL

Nodo di origine: 1852346

By James Briggs, Scienziato dei dati



Immagine dell'autore

 

Quando convertiamo il linguaggio in un formato leggibile dalla macchina, il file Standard L’approccio consiste nell’utilizzare vettori densi.

Una rete neurale genera tipicamente vettori densi. Ci permettono di convertire parole e frasi in vettori ad alta dimensione, organizzati in modo che la posizione geometrica di ciascun vettore possa attribuire un significato.



Il noto esempio di aritmetica linguistica lo dimostra Regina = Re – Uomo + Donna

 

C'è un esempio particolarmente noto di ciò, in cui prendiamo il vettore di King, sottrai il vettore Uomoe aggiungi il vettore Donna. Il vettore corrispondente più vicino al vettore risultante è Queen.

Possiamo applicare la stessa logica anche a sequenze più lunghe, come frasi o paragrafi, e scopriremo che un significato simile corrisponde alla vicinanza/orientamento tra questi vettori.

Quindi, la somiglianza è importante e ciò che tratteremo qui sono i tre parametri più popolari per calcolare tale somiglianza.

Distanza euclidea

 
La distanza euclidea (spesso chiamata norma L2) è la più intuitiva delle metriche. Definiamo tre vettori:



Tre esempi vettoriali

 

Solo guardando questi vettori, possiamo dirlo con sicurezza a ed b sono più vicini l'uno all'altro - e lo vediamo ancora più chiaramente quando li visualizziamo su un grafico:



Vettori a ed b sono vicini all'origine, vettore c è molto più distante

 

Chiaramente, a ed b sono più vicini tra loro - e lo calcoliamo utilizzando la distanza euclidea:



Formula della distanza euclidea

 

Per applicare questa formula ai nostri due vettori, a ed b, noi facciamo:



Calcolo della distanza euclidea tra vettori a ed b

 

E otteniamo una distanza di 0.014, eseguendo lo stesso calcolo per d(a, c) problemi 1.145d(b, c) problemi 1.136. Chiaramente, a ed b sono più vicini nello spazio euclideo.

Prodotto a punti

 
Uno svantaggio della distanza euclidea è la mancanza di orientamento considerato nel calcolo, basato esclusivamente sulla magnitudo. Ed è qui che possiamo usare gli altri due parametri. Il primo di questi è il prodotto scalare.

Il prodotto scalare considera la direzione (orientamento) e si adatta anche alla grandezza del vettore.

Ci preoccupiamo dell'orientamento perché un significato simile (come troveremo spesso) può essere rappresentato dalla direzione del vettore, non necessariamente dalla sua grandezza.

Ad esempio, potremmo scoprire che la grandezza del nostro vettore è correlata alla frequenza di una parola che rappresenta nel nostro set di dati. Ora, la parola hi significa lo stesso di Ciaoe questo potrebbe non essere rappresentato se i nostri dati di addestramento contenessero la parola hi 1000 volte e Ciao solo due volte.

Pertanto, l’orientamento dei vettori è spesso considerato altrettanto importante (se non di più) della distanza.

Il prodotto scalare viene calcolato utilizzando:



Formula del prodotto scalare

 

Il prodotto scalare considera l'angolo tra i vettori, dove l'angolo è ~0, il cos componente della formula è uguale a ~1. Se l'angolo è più vicino a 180 (ortogonale/perpendicolare), il cos componente è uguale a ~0.

quindi, il cos aumenta il risultato dove c'è meno angolo tra i due vettori. Quindi, un prodotto scalare più elevato è correlato a un orientamento più elevato.

Ancora una volta, applichiamo questa formula ai nostri due vettori, a ed b:



Calcolo del prodotto scalare per i vettori a ed b

 

Chiaramente, il calcolo del prodotto scalare è semplice (il più semplice dei tre) e questo ci offre vantaggi in termini di tempo di calcolo.

Tuttavia, c'è uno svantaggio. Non è normalizzato, il che significa che i vettori più grandi tenderanno ad ottenere prodotti punto più alti, nonostante siano meno simili.

Ad esempio, se calcoliamo aa — ci aspetteremmo un punteggio più alto di AC (a è una corrispondenza esatta con a). Ma purtroppo non funziona così.



Il prodotto scalare non è così eccezionale quando i nostri vettori hanno grandezze diverse.

 

Quindi, in realtà, il prodotto scalare viene utilizzato per identificare l'orientamento generale di due vettori, perché:

  • Due vettori che puntano in una direzione simile restituiscono a positivo prodotto scalare.
  • Due vettori perpendicolari restituiscono un prodotto scalare di zero.
  • I vettori che puntano in direzioni opposte restituiscono a negativo. prodotto scalare.

Somiglianza del coseno

 
La somiglianza del coseno considera l'orientamento del vettore, indipendentemente dalla grandezza del vettore.



Formula di similarità del coseno

 

La prima cosa di cui dovremmo essere consapevoli in questa formula è che il numeratore è, in effetti, il prodotto scalare, che considera entrambi grandezza ed direzione.

Al denominatore abbiamo le strane doppie barre verticali: significano 'la lunghezza di'. Quindi, abbiamo la lunghezza di u moltiplicato per la lunghezza di v. La lunghezza, ovviamente, tiene conto grandezza.

Quando prendiamo una funzione che li considera entrambi grandezza ed direzione e dividerlo per una funzione che considera giusto grandezza - quei due grandezze annullare, lasciandoci con una funzione che considera direzione indipendente dalla magnitudo.

Possiamo pensare alla somiglianza del coseno come a normalizzato prodotto puntuale! E funziona chiaramente. La somiglianza del coseno di a ed b è vicino 1 (perfetto):



Calcolo della somiglianza del coseno per i vettori a ed b

 

E usando il sklearn implementazione della somiglianza del coseno per confrontare a ed c ancora una volta ci dà risultati molto migliori:



La somiglianza del coseno può spesso fornire risultati molto migliori rispetto al prodotto scalare.

 

Questo è tutto per questo articolo che tratta le tre metriche di distanza/somiglianza: distanza euclidea, prodotto scalare e somiglianza del coseno.

Vale la pena essere consapevoli di come funziona ciascuno e dei suoi pro e contro, poiché sono tutti ampiamente utilizzati nell'apprendimento automatico e in particolare nella PNL.

Puoi trovare le implementazioni Python di ogni metrica in questo taccuino.

Spero che l'articolo ti sia piaciuto. Fammi sapere se hai domande o suggerimenti tramite Twitter o nei commenti qui sotto. Se sei interessato a più contenuti come questo, li pubblico su YouTube troppo.

Grazie per la lettura!

 
*Tutte le immagini sono dell'autore salvo dove diversamente indicato

 
Bio: James Briggs è un data scientist specializzato nell'elaborazione del linguaggio naturale e che lavora nel settore finanziario, con sede a Londra, Regno Unito. È anche un mentore freelance, scrittore e creatore di contenuti. Puoi contattare l'autore tramite e-mail (jamescalam94@gmail.com).

Originale. Ripubblicato con il permesso.

Correlato:

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

Timestamp:

Di più da KDnuggets