# LevenshteinDist - script- en diagramfunctie

LevenshteinDist() retourneert de afstand van Levenshtein tussen twee tekenreeksen. Het wordt gedefinieerd als het aantal bewerkingen van één teken (invoegingen, verwijderingen of vervangingen) dat is vereist om een tekenreeks te wijzigen. De functie kan worden gebruikt om fuzzy tekenreeksen te vergelijken.

Syntaxis:

LevenshteinDist(text1, text2)

Retourgegevenstypen: geheel getal

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

#### Voorbeeld: diagramuitdrukking

| Voorbeeld | Resultaat |
| --- | --- |
| `LevenshteinDist('Kitten','Sitting')` | retourneert 3 |

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

#### Diagramuitdrukking

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.

Het load-script bevat:

* 

* Eén veld in de gegevenstabel met de naam `InputText`.

Load-script

```
Example: 
Load * inline [ 
InputText
Sliver
SSiver 
SSiveer 
]; 
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* `InputText`

* `=LevenshteinDist('Silver', InputText)` om het minimum aantal bewerkingen van één teken te berekenen dat nodig is om de rekenreekswaarden voor `InputText` te wijzigen in het woord `'Silver'`.

Resultatentabel

| InputText | LevenshteinDist(‘Silver’, InputText) |
| --- | --- |
| Sliver | 2 |
| SSiveer | 3 |
| SSiver | 2 |

De uitvoer van de functie `LevenshteinDist` geeft het aantal vereiste wijzigingen om de `InputText` te wijzigen in de verwachte tekst, 'Silver'. Voor de eerste rij zijn bijvoorbeeld twee wijzigingen nodig om het woord 'Sliver' te wijzigen in 'Silver'. De tweede rij vereist 3 wijzigingen: 1) Verwijderen van het extra teken 'S'. 2) Verwijderen van het extra teken 'e'. 3) Invoegen van een nieuw teken in 'l'.

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

#### Diagramuitdrukking

Overzicht

In dit voorbeeld worden productnamen uit verschillende systemen samengevoegd. De productnamen gebruiken niet altijd dezelfde schrijfwijze vanwege typefouten, afkortingen, spaties of andere variaties. Met behulp van de functie `LevenshteinDist` kunt u de gelijkenis tussen twee productnamen meten en vaststellen welke waarschijnlijk naar hetzelfde product verwijzen, zelfs als de namen niet identiek zijn.

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.

Het load-script bevat:

* 

* 

  * `ProductA`

  * `ProductB`

Load-script

```
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
]; 
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:

* `ProductA`

* `ProductB`

* `=LevenshteinDist(ProductA, ProductB)` om het minimum aantal bewerkingen van één teken te berekenen dat nodig is om de rekenreekswaarden voor `ProductB` te wijzigen zodat het overeenkomt met `ProductA`.

Resultatentabel

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

De Levenshtein-afstand is een type fuzzy matching dat veel wordt gebruikt als onderdeel van spellingscontroles, optische tekenherkenning en correctiesystemen in gebieden zoals klantgegevensbeheer, inventarisatiesystemen en documentverwerking, waar kleine variaties in tekst vaak voorkomen.

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

#### Voorbeeld: load-script

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

Resultaat

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