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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert