# LevenshteinDist - skript- och diagramfunktion

LevenshteinDist() returnerar Levenshtein-avståndet mellan två strängar. Det definieras som det minsta antalet enkelteckensredigeringar (infogningar, borttagningar eller ersättningar) som krävs för att förvandla en sträng till en annan. Funktionen är användbar vid ungefärliga strängjämförelser.

Syntax:

LevenshteinDist(text1, text2)

Returnerad datatyp: heltal

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

#### Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `LevenshteinDist('Kitten','Sitting')` | Returnerar '3' |

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

#### Diagramuttryck

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* 

* Ett fält i datatabellen heter `InputText`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `InputText`

* `=LevenshteinDist('Silver', InputText)`, för att beräkna det minsta antalet redigeringar av enstaka tecken som krävs för att förändra strängvärdena för `InputText` till ordet `'Silver'`.

Resultattabell

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

Utdata från funktionen `LevenshteinDist` ger det antal ändringar som krävs för att förändra `InputText` till den förväntade texten, 'Silver'. Första raden kräver till exempel två ändringar för att ändra ordet 'Sliver' till 'Silver'. Den andra raden kräver tre ändringar: 1) Ta bort det extra tecknet 'S'. 2) Ta bort det extra tecknet 'e'. 3) Infoga ett nytt tecken 'l'.

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

#### Diagramuttryck

Översikt

I detta exempel konsolideras produktnamn från olika system. Produktnamnen har inte alltid samma stavning på grund av skrivfel, förkortningar, utrymme eller andra variationer. Med funktionen `LevenshteinDist` kan du mäta likheten mellan två produktnamn och identifiera vilka som sannolikt hänvisar till samma produkt, även om namnen inte är identiska.

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* 

* 

  * `ProductA`

  * `ProductB`

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `ProductA`

* `ProductB`

* `=LevenshteinDist(ProductA, ProductB)`, för att beräkna det minsta antalet redigeringar av enstaka tecken som krävs för att förändra strängvärdena för `ProductB` till ordet `ProductA`.

Resultattabell

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

Levenshtein-avstånd är en typ av fuzzy matchning som ofta används som en del av stavningskontroller, optisk teckenigenkänning och korrigeringssystem inom områden som kunddatahantering, lagersystem och behandling av dokument, där små variationer i text ofta förekommer.

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

#### Exempel: laddningsskript

Laddningsskript

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

Resultat

| ID | Sträng\_1 | Sträng\_2 | LevenshteinDistance |
| --- | --- | --- | --- |
| 1 | Silver | Sliver | 2 |
| 2 | Silver | SSiver | 2 |
| 3 | Silver | SSiveer | 3 |
| 4 | Guld | Fetstil | 1 |
| 5 | Guld | Bool | 3 |
| 6 | Guld | 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 |