# 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

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text1 | De eerste tekenreeks. |
| text2 | De tweede tekenreeks die vergeleken zal worden met de eerste tekenreeks om het minimumaantal bewerkingen van één teken te berekenen. |

Voorbeeld: diagramuitdrukking

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

## Voorbeeld - Basisprincipes voor LevenshteinDist

[](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 nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

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

Maak de volgende meting:

* `=LevenshteinDist('Silver', InputText)` om het minimumaantal bewerkingen van één teken te berekenen dat nodig is om de tekenreekswaarde 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`.

## Voorbeeld - Scenario met LevenshteinDist

[](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 nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

* De volgende velden in de gegevenstabel:

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

Maak de volgende meting:

* `=LevenshteinDist(ProductA, ProductB)` om het minimum aantal bewerkingen van één teken te berekenen dat nodig is om de tekenreekswaarde 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)

#### Load-script

Load-script

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

Resultatentabel

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