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