Similarity Metrics i NLP

Kildeknude: 1852346

By James Briggs, dataforsker



Billede af forfatteren

 

Når vi konverterer sprog til et maskinlæsbart format, vil den standard tilgang er at bruge tætte vektorer.

Et neuralt netværk genererer typisk tætte vektorer. De giver os mulighed for at konvertere ord og sætninger til højdimensionelle vektorer - organiseret, så hver vektors geometriske position kan tilskrive betydning.



Det velkendte sproglige regneeksempel viser det Dronning = Konge - Mand + Kvinde

 

Det er der et særligt kendt eksempel på, hvor vi tager vektoren af King (Konge), trække vektoren fra mand, og tilføj vektoren Woman. Den nærmeste matchende vektor til den resulterende vektor er Queen (Dronning).

Vi kan også anvende den samme logik på længere sekvenser, som sætninger eller afsnit - og vi vil opdage, at lignende betydning svarer til nærhed/orientering mellem disse vektorer.

Så lighed er vigtig - og hvad vi vil dække her, er de tre mest populære målinger til at beregne denne lighed.

Euklidisk afstand

 
Euklidisk afstand (ofte kaldet L2-norm) er den mest intuitive af metrikken. Lad os definere tre vektorer:



Tre vektoreksempler

 

Bare ved at se på disse vektorer, kan vi trygt sige det a , b er tættere på hinanden - og vi ser det endnu tydeligere, når vi visualiserer dem på et diagram:



Vektorer a , b er tæt på oprindelsen, vektor c er meget fjernere

 

Klart, a , b er tættere på hinanden - og vi beregner det ved hjælp af euklidisk afstand:



Euklidisk afstandsformel

 

For at anvende denne formel på vores to vektorer, a , b, Det gør vi:



Beregning af euklidisk afstand mellem vektorer a , b

 

Og vi får en afstand af 0.014, der udfører den samme beregning for d(a, c) afkast 1.145og d(b, c) afkast 1.136. Klart, a , b er tættere på i det euklidiske rum.

Prik produkt

 
En ulempe ved den euklidiske afstand er den manglende orientering, der tages i betragtning i beregningen - den er udelukkende baseret på størrelsen. Og det er her, vi kan bruge vores to andre metrics. Den første af dem er dot-produktet.

Punktproduktet overvejer retning (orientering) og skalerer også med vektorstørrelse.

Vi bekymrer os om orientering, fordi lignende betydning (som vi ofte vil finde) kan repræsenteres af vektorens retning - ikke nødvendigvis størrelsen af ​​den.

For eksempel kan vi opdage, at vores vektors størrelse korrelerer med frekvensen af ​​et ord, som den repræsenterer i vores datasæt. Nå, ordet hi betyder det samme som Hej, og dette er muligvis ikke repræsenteret, hvis vores træningsdata indeholdt ordet hi 1000 gange og Hej bare to gange.

Så vektorers orientering ses ofte som værende lige så vigtig (hvis ikke mere) som afstand.

Punktproduktet beregnes ved hjælp af:



Dot produktformel

 

Punktproduktet betragter vinklen mellem vektorer, hvor vinklen er ~0, den cos θ komponent af formlen er lig med ~1. Hvis vinklen er tættere på 180 (ortogonal/vinkelret), cos θ komponent er lig med ~0.

Derfor er cos θ komponent øger resultatet, hvor der er mindre vinkel mellem de to vektorer. Så et højere prik-produkt korrelerer med højere orientering.

Igen, lad os anvende denne formel på vores to vektorer, a , b:



Beregning af prikprodukt for vektorer a , b

 

Det er klart, at prikproduktberegningen er ligetil (den enkleste af de tre) - og dette giver os fordele med hensyn til beregningstid.

Der er dog én ulempe. Det er ikke normaliseret - hvilket betyder, at større vektorer har tendens til at score højere prikprodukter, på trods af at de er mindre ens.

For eksempel hvis vi regner a·a — vi ville forvente en højere score end a·c (a er et nøjagtigt match til a). Men sådan fungerer det desværre ikke.



Prikproduktet er ikke så godt, når vores vektorer har forskellige størrelser.

 

Så i virkeligheden bruges prikproduktet til at identificere den generelle orientering af to vektorer - fordi:

  • To vektorer, der peger i en lignende retning, returnerer a positiv prik-produkt.
  • To vinkelrette vektorer returnerer et prik-produkt af nul.
  • Vektorer, der peger i modsatte retninger, returnerer en negativ prik-produkt.

Cosinus lighed

 
Cosinus-lighed overvejer vektororientering, uafhængig af vektorstørrelse.



Cosinus lighedsformel

 

Det første, vi skal være opmærksomme på i denne formel, er, at tælleren i virkeligheden er prikproduktet - som tager hensyn til både størrelsesorden , retning.

I nævneren har vi de mærkelige dobbelte lodrette streger - disse betyder 'længden af'. Så vi har længden af u ganget med længden af v. Længden, selvfølgelig, overvejer størrelsesorden.

Når vi tager en funktion, der tager hensyn til begge dele størrelsesorden retning og dividere det med en funktion, der betragter retfærdigt størrelsesorden - de to størrelser annullere, hvilket efterlader os med en funktion, der overvejer retning uafhængig af størrelse.

Vi kan tænke på cosinus-lighed som en normaliseret prik produkt! Og det virker klart. Cosinus ligheden af a , b er nær 1 (Perfekt):



Beregning af cosinus lighed for vektorer a , b

 

Og ved at bruge sklearn implementering af cosinus lighed at sammenligne a , c igen giver os meget bedre resultater:



Cosinus-lighed kan ofte give meget bedre resultater end prik-produktet.

 

Det er alt for denne artikel, der dækker de tre afstand/lighedsmetrikker - Euklidisk afstand, prikprodukt og cosinus-lighed.

Det er værd at være opmærksom på, hvordan hver enkelt fungerer og deres fordele og ulemper - da de alle er meget brugt i maskinlæring, og især NLP.

Du kan finde Python-implementeringer af hver metrik i denne notesbog.

Jeg håber du har nydt artiklen. Sig til, hvis du har spørgsmål eller forslag via Twitter eller i kommentarerne nedenfor. Hvis du er interesseret i mere indhold som dette, skriver jeg videre YouTube også.

Tak for læsning!

 
*Alle billeder er af forfatteren, medmindre andet er angivet

 
Bio: James Briggs er en dataforsker med speciale i naturlig sprogbehandling og arbejder i finanssektoren med base i London, Storbritannien. Han er også freelance mentor, forfatter og indholdsskaber. Du kan kontakte forfatteren via e-mail (jamescalam94@gmail.com).

Original. Genopslået med tilladelse.

Relateret:

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

Tidsstempel:

Mere fra KDnuggets