Eine einführung in die jaro-winkler-ähnlichkeit (definition und beispiel)


In der Statistik ist die Jaro-Winkler-Ähnlichkeit eine Möglichkeit, die Ähnlichkeit zwischen zwei Zeichenfolgen zu messen.

Die Jaro-Ähnlichkeit (sim j ) zwischen zwei Strings ist definiert als:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Gold:

  • m : Anzahl übereinstimmender Zeichen
    • Zwei Zeichen von s 1 und s 2 gelten als übereinstimmend, wenn sie gleich sind und nicht weiter als [max(|s 1 |, |s 2 |) / 2] – 1 Zeichen voneinander entfernt sind.
  • |s 1 | , |s 2 | : Die Länge der ersten bzw. zweiten Zeichenfolge
  • t : Anzahl der Transpositionen
    • Berechnet als Anzahl übereinstimmender Zeichen (jedoch in einer anderen Reihenfolge) geteilt durch 2.

Die Jaro-Winkler-Ähnlichkeit (sim w ) ist definiert als:

sim w = sim j + lp(1 – sim j )

Gold:

  • sim j : Die Jaro-Ähnlichkeit zwischen zwei Strings, s 1 und s 2
  • l : Länge des gemeinsamen Präfixes am Anfang der Zeichenfolge (maximal 4 Zeichen)
  • p : Skalierungsfaktor, der angibt, um wie viel die Punktzahl nach oben angepasst wird, um gemeinsame Präfixe zu haben. Typischerweise wird dieser als p = 0,1 definiert und sollte p = 0,25 nicht überschreiten.

Die Jaro-Winkler-Ähnlichkeit zwischen zwei Zeichenfolgen liegt immer zwischen 0 und 1, wobei:

  • 0 gibt an, dass zwischen den Zeichenfolgen keine Ähnlichkeit besteht
  • 1 gibt an, dass die Zeichenfolgen genau übereinstimmen

Hinweis : Der Jaro-Winkler- Abstand würde als 1 – sim w definiert.

Das folgende Beispiel zeigt, wie die Jaro-Winkler-Ähnlichkeit zwischen zwei Zeichenfolgen in der Praxis berechnet wird.

Beispiel: Berechnung der Jaro-Winkler-Ähnlichkeit zwischen zwei Zeichenfolgen

Angenommen, wir haben die folgenden zwei Zeichenfolgen:

  • Kanal 1 ( s1 ): Maus
  • Kanal 2 ( s2 ): stumm

Berechnen wir zunächst die Jaro-Ähnlichkeit zwischen diesen beiden Zeichenfolgen:

sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )

Gold:

  • m : Anzahl übereinstimmender Zeichen
    • Zwei Zeichen von s 1 und s 2 gelten als übereinstimmend, wenn sie gleich sind und nicht weiter als [max(|s 1 |, |s 2 |) / 2] – 1 Zeichen voneinander entfernt sind.

In diesem Fall wird [max(|s 1 |, |s 2 |) / 2] – 1 als 5/2 – 1 = 1,5 berechnet. Wir würden drei Buchstaben als korrespondierend definieren: m, u, e. Also, m = 3 .

  • |s 1 | , |s 2 | : Die Länge der ersten bzw. zweiten Zeichenfolge

In diesem Fall ist |s 1 | = 5 und |s 1 | = 4 .

  • t : Anzahl der Transpositionen
    • Berechnet als Anzahl übereinstimmender Zeichen (jedoch in einer anderen Reihenfolge) geteilt durch 2.

In diesem Fall gibt es drei übereinstimmende Zeichen, die sich jedoch bereits in derselben Reihenfolge befinden, sodass t = 0 ist.

Wir würden die Jaro-Ähnlichkeit also wie folgt berechnen:

sim j = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0,78333.

Als nächstes berechnen wir die Jaro-Winkler-Ähnlichkeit (sim w ) wie folgt:

sim w = sim j + lp(1 – sim j )

In diesem Fall würden wir berechnen:

sim w = 0,78333 + (1)*(0,1)(1 – 0,78333) = 0,805.

Die Jaro-Winkler-Ähnlichkeit zwischen den beiden Ketten beträgt 0,805 .

Da dieser Wert nahe bei 1 liegt, bedeutet dies, dass die beiden Zeichenfolgen sehr ähnlich sind.

Wir können bestätigen, dass dies richtig ist, indem wir die Jaro-Winkler-Ähnlichkeit zwischen den beiden Zeichenfolgen in R berechnen:

 library (stringdist)

#calculate Jaro-Winkler similarity between 'mouse' and 'mute'
1 - stringdist("mouse", "mute", method = "jw", p= 0.1 )

[1] 0.805

Dies entspricht dem von uns manuell berechneten Wert.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere Ähnlichkeitsmetriken berechnet werden:

Eine Einführung in die Bray-Curtis-Unähnlichkeit
Eine Einführung in den Jaccard-Ähnlichkeitsindex

Einen Kommentar hinzufügen

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