# LevenshteinDist Funzione per script e grafici

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

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text1 | La prima stringa. |
| text2 | La seconda stringa che sarà confrontata con la prima per calcolare il numero minimo di modifiche di un singolo carattere. |

Esempio: espressione del grafico

| Esempio | Risultato |
| --- | --- |
| `LevenshteinDist( 'Kitten','Sitting' )` | Restituisce `3` |

## Esempio: principi fondamentali della funzione LevenshteinDist

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Espressione del grafico

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* 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`

Creare la seguente misura:

* `=LevenshteinDist('Silver', InputText)`, per calcolare il numero minimo di modifiche di un singolo carattere necessarie per cambiare il valore della stringa per `InputText` nella parola `Silver`.

Tabella dei risultati

| InputText | LevenshteinDist('Silver', InputText) |
| --- | --- |
| Scheggia | 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`.

## Esempio: scenario per l'applicazione della funzione LevenshteinDist

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Espressione del grafico

Panoramica

In questo esempio si mostra come consolidare 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 sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* I seguenti campi nella tabella dati:

  * `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`

Creare la seguente misura:

* `=LevenshteinDist(ProductA, ProductB)`, per calcolare il numero minimo di modifiche di un singolo carattere necessarie per cambiare il valore della stringa per `ProductB` in modo da corrispondere a `ProductA`.

Tabella dei risultati

| ProdottoA | ProdottoB | LevenshteinDist(ProdottoA, ProdottoB) |
| --- | --- | --- |
| 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.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Script di caricamento

Script di caricamento

```
Example:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];

Example:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];

Example:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];

Example:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];

set nullinterpret = '<NULL>';
Example:
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 Example;

Drop table Example;
```

Tabella dei risultati

| ID | Stringa\_1 | Stringa\_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 |