# 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

Argument

| Argument | Beskrivning |
| --- | --- |
| text1 | Första strängen. |
| text2 | Den andra strängen som kommer att jämföras med den första strängen för att beräkna det minsta antalet redigeringar av enstaka tecken. |

Exempel: diagramuttryck

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

## Exempel – Grunderna i LevenshteinDist

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

#### Diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

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

Skapa följande mått:

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

## Exempel – LevenshteinDist-scenario

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

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Följande fält i datatabellen:

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

Skapa följande mått:

* `=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ärdet för `ProductB` till att matcha `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)

#### Laddningsskript

Laddningsskript

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

Resultattabell

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