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
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '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.
Load script
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;
Result
ID | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Bold | 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 |