Een inleiding tot de gelijkenis tussen jaro en winkler (definitie en voorbeeld)
In de statistiek is Jaro-Winkler-gelijkenis een manier om de gelijkenis tussen twee strings te meten.
De Jaro-overeenkomst (sim j ) tussen twee strings wordt gedefinieerd als:
sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
Goud:
- m : Aantal overeenkomende tekens
- Twee karakters van s 1 en s 2 worden als overeenkomend beschouwd als ze hetzelfde zijn en niet verder dan [max(|s 1 |, |s 2 |) / 2] – 1 karakters van elkaar verwijderd zijn.
- |s 1 | , | s2 | : De lengte van respectievelijk de eerste en tweede snaar
- t : Aantal transposities
- Berekend als het aantal overeenkomende tekens (maar in een andere volgorde) gedeeld door 2.
De Jaro-Winkler-overeenkomst (sim w ) wordt gedefinieerd als:
sim w = sim j + lp(1 – sim j )
Goud:
- sim j : De Jaro-overeenkomst tussen twee snaren, s 1 en s 2
- l : Lengte van het algemene voorvoegsel aan het begin van de string (max. 4 tekens)
- p : Schaalfactor die aangeeft hoeveel de score naar boven wordt bijgesteld om gemeenschappelijke voorvoegsels te hebben. Normaal gesproken wordt dit gedefinieerd als p = 0,1 en mag p = 0,25 niet overschrijden.
De Jaro-Winkler-overeenkomst tussen twee snaren ligt altijd tussen 0 en 1, waarbij:
- 0 geeft aan dat er geen overeenkomst is tussen strings
- 1 geeft aan dat de strings exact overeenkomen
Opmerking : de Jaro-Winkler- afstand zou worden gedefinieerd als 1 – sim w .
Het volgende voorbeeld laat zien hoe u in de praktijk de Jaro-Winkler-overeenkomst tussen twee strings kunt berekenen.
Voorbeeld: berekening van de Jaro-Winkler-overeenkomst tussen twee strings
Stel dat we de volgende twee strings hebben:
- Kanaal 1 (s 1 ): muis
- Kanaal 2 (s 2 ): dempen
Laten we eerst de Jaro-overeenkomst tussen deze twee strings berekenen:
sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
Goud:
- m : Aantal overeenkomende tekens
- Twee karakters van s 1 en s 2 worden als overeenkomend beschouwd als ze hetzelfde zijn en niet verder dan [max(|s 1 |, |s 2 |) / 2] – 1 karakters van elkaar verwijderd zijn.
In dit geval wordt [max(|s 1 |, |s 2 |) / 2] – 1 berekend als 5/2 – 1 = 1,5. We zouden drie letters als corresponderend definiëren: m, u, e. Dus m = 3 .
- |s 1 | , | s2 | : De lengte van respectievelijk de eerste en tweede snaar
In dit geval is |s 1 | = 5 en |s 1 | = 4 .
- t : Aantal transposities
- Berekend als het aantal overeenkomende tekens (maar in een andere volgorde) gedeeld door 2.
In dit geval zijn er drie overeenkomende tekens, maar deze staan al in dezelfde volgorde, dus t = 0 .
We zouden de Jaro-overeenkomst dus als volgt berekenen:
sim j = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0,78333.
Laten we vervolgens de Jaro-Winkler-overeenkomst (sim w ) als volgt berekenen:
sim w = sim j + lp(1 – sim j )
In dit geval zouden we berekenen:
sim w = 0,78333 + (1)*(0,1)(1 – 0,78333) = 0,805.
De Jaro-Winkler-overeenkomst tussen de twee ketens is 0,805 .
Omdat deze waarde dicht bij 1 ligt, vertelt dit ons dat de twee strings erg op elkaar lijken.
We kunnen bevestigen dat dit juist is door de Jaro-Winkler-overeenkomst tussen de twee strings in R te berekenen:
library (stringdist) #calculate Jaro-Winkler similarity between 'mouse' and 'mute' 1 - stringdist("mouse", "mute", method = "jw", p= 0.1 ) [1] 0.805
Dit komt overeen met de waarde die we handmatig hebben berekend.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere gelijkenisstatistieken kunt berekenen:
Een inleiding tot de ongelijkheid van Bray-Curtis
Een inleiding tot de Jaccard-gelijkenisindex