LevenshteinDist - funzione dello script e del grafico
LevenshteinDist() restituisce la distanza Levenshtein tra due stringhe. Viene definita come il numero minimo di modifiche a un singolo carattere (inserimenti, eliminazioni o sostituzioni) richiesto per cambiare una stringa con un'altra. La funzione è utile per i confronti tra stringhe fuzzy.
Sintassi:
LevenshteinDist(text1, text2)
Tipo di dati restituiti: numero intero
Esempio | Risultato |
---|---|
LevenshteinDist('Kitten','Sitting') | Restituisce '3' |
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
-
Un campo della tabella dati denominata InputText.
Script di caricamento
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:
-
InputText
-
=LevenshteinDist('Silver', InputText), per calcolare il numero minimo di modifiche di un singolo carattere necessarie per cambiare i valori della stringa per InputText nella parola 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
L'output della funzione LevenshteinDist restituisce il numero di modifiche necessarie per cambiare InputText nel testo previsto, 'Silver'. Ad esempio, la prima riga richiede due modifiche per modificare la parola 'Sliver' in 'Silver'. La seconda riga richiede 3 modifiche: 1) Eliminazione del carattere extra 'S'. 2) Eliminazione del carattere extra 'e'. 3) Inserimento di un nuovo carattere 'l'.
Panoramica
Questo esempio consolida i nomi dei prodotti generati da sistemi diversi. I nomi dei prodotti non sono sempre scritti nello stesso modo a causa di errori di battitura, abbreviazioni, spaziatura o altre variazioni. Utilizzando la funzione LevenshteinDist, è possibile misurare la somiglianza tra due nomi di prodotti e identificare quali si riferiscono probabilmente allo stesso prodotto, anche se i nomi non sono identici.
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
-
-
-
ProductA
-
ProductB
-
Script di caricamento
Example:
Load * inline [
ProductA, ProductB
Coca Cola 330ml, CocaCola 330 ml
Pepsi 500 ml, Pepsi 500ml
Sprite Zero 600 ml, SpriteZero600ml
Red Bull 250ml, Redbull 250ml
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
-
ProductA
-
ProductB
-
=LevenshteinDist(ProductA, ProductB), per calcolare il numero minimo di modifiche di un singolo carattere necessarie per cambiare i valori della stringa per ProductB in modo da corrispondere a ProductA.
ProductA | ProductB | LevenshteinDist(ProductA, ProductB) |
---|---|---|
Coca Cola 330ml | CocaCola 330 ml | 2 |
Pepsi 500 ml | Pepsi 500ml | 1 |
Red Bull 250ml | Redbull 250ml | 2 |
Sprite Zero 600 ml | SpriteZero600ml | 3 |
La distanza di Levenshtein è un tipo di corrispondenza parziale ampiamente utilizzato nei correttori ortografici, per il riconoscimento ottico dei caratteri e nei sistemi di correzione per aree come la gestione dei dati dei clienti, i sistemi di inventario e l'elaborazione dei documenti, dove si verificano frequentemente lievi variazioni nel testo.
Script di caricamento
T1:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];
T1:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];
T1:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];
T1:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];
set nullinterpret = '<NULL>';
T1:
Load *, recno()+12 as ID;
Load 'X' as String_1,* inline [
String_2
''
<NULL>
1 ];
R1:
Load
ID,
String_1,
String_2,
LevenshteinDist(String_1, String_2) as LevenshteinDistance
resident T1;
Drop table T1;
Risultato
ID | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Grassetto | 1 |
5 | Gold | Bool | 3 |
6 | Gold | Bond | 2 |
7 | Ove | Ove | 0 |
8 | Ove | Uve | 1 |
9 | Ove | Üve | 1 |
10 | ABC | DEFG | 4 |
11 | ABC | abc | 3 |
12 | ABC | ビビビ | 3 |
13 | X | 1 | |
14 | X | - | 1 |
15 | X | 1 | 1 |