Un'introduzione alla somiglianza jaro-winkler (definizione ed esempio)
In statistica, la somiglianza di Jaro-Winkler è un modo per misurare la somiglianza tra due stringhe.
La somiglianza Jaro (sim j ) tra due stringhe è definita come:
sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
Oro:
- m : numero di caratteri corrispondenti
- Due caratteri di s 1 e s 2 sono considerati corrispondenti se sono uguali e non sono distanti tra loro di [max(|s 1 |, |s 2 |) / 2] – 1 carattere.
- |s 1 | , |s 2 | : la lunghezza rispettivamente della prima e della seconda corda
- t : Numero di trasposizioni
- Calcolato come il numero di caratteri corrispondenti (ma in un ordine di sequenza diverso) diviso per 2.
La somiglianza Jaro-Winkler (sim w ) è definita come:
sim w = sim j + lp(1 – sim j )
Oro:
- sim j : La somiglianza Jaro tra due corde, s 1 e s 2
- l : Lunghezza del prefisso comune all’inizio della stringa (max 4 caratteri)
- p : fattore di scala che indica quanto il punteggio viene corretto verso l’alto per avere prefissi comuni. Tipicamente questo è definito come p = 0,1 e non deve superare p = 0,25.
La somiglianza Jaro-Winkler tra due stringhe è sempre compresa tra 0 e 1 dove:
- 0 indica nessuna somiglianza tra le stringhe
- 1 indica che le stringhe corrispondono esattamente
Nota : la distanza Jaro-Winkler sarebbe definita come 1 – sim w .
L’esempio seguente mostra come calcolare nella pratica la somiglianza Jaro-Winkler tra due stringhe.
Esempio: calcolo della similitudine Jaro-Winkler tra due stringhe
Supponiamo di avere le seguenti due stringhe:
- Canale 1 (s 1 ): mouse
- Canale 2 (s 2 ): muto
Innanzitutto, calcoliamo la somiglianza Jaro tra queste due stringhe:
sim j = 1/3 * ( m /|s 1 | + m/|s 2 | + (mt)/m )
Oro:
- m : numero di caratteri corrispondenti
- Due caratteri di s 1 e s 2 sono considerati corrispondenti se sono uguali e non sono distanti tra loro di [max(|s 1 |, |s 2 |) / 2] – 1 carattere.
In questo caso, [max(|s 1 |, |s 2 |) / 2] – 1 viene calcolato come 5/2 – 1 = 1,5. Definiremmo tre lettere come corrispondenti: m, u, e. Quindi, m = 3 .
- |s 1 | , |s 2 | : la lunghezza rispettivamente della prima e della seconda corda
In questo caso, |s 1 | = 5 e |s 1 | = 4 .
- t : Numero di trasposizioni
- Calcolato come il numero di caratteri corrispondenti (ma in un ordine di sequenza diverso) diviso per 2.
In questo caso ci sono tre caratteri corrispondenti ma sono già nello stesso ordine sequenziale, quindi t = 0 .
Quindi, calcoleremo la somiglianza con Jaro come segue:
sim j = 1/3 * (3/5 + 3/4 + (3-0)/3) = 0,78333.
Successivamente, calcoliamo la somiglianza Jaro-Winkler (sim w ) come segue:
sim w = sim j + lp(1 – sim j )
In questo caso calcoleremo:
sim w = 0,78333 + (1)*(0,1)(1 – 0,78333) = 0,805.
La somiglianza Jaro-Winkler tra le due catene è 0,805 .
Poiché questo valore è vicino a 1, ciò ci dice che le due stringhe sono molto simili.
Possiamo confermare che ciò è corretto calcolando la somiglianza di Jaro-Winkler tra le due stringhe in R:
library (stringdist) #calculate Jaro-Winkler similarity between 'mouse' and 'mute' 1 - stringdist("mouse", "mute", method = "jw", p= 0.1 ) [1] 0.805
Ciò corrisponde al valore che abbiamo calcolato manualmente.
Risorse addizionali
I seguenti tutorial spiegano come calcolare altri parametri di somiglianza:
Un’introduzione alla dissomiglianza di Bray-Curtis
Un’introduzione all’indice di somiglianza di Jaccard