# LevenshteinDist — funkcja skryptu i funkcja wykresu

LevenshteinDist () zwraca odległość Levenshteina między dwoma ciągami. Jest ona definiowana jako minimalna liczba jednoznakowych edycji (wstawień, usunięć lub podstawień) wymaganych do zmiany jednego ciągu na drugi. Funkcja jest przydatna do porównań rozmytych ciągów.

Składnia:

LevenshteinDist(text1, text2)

Typ zwracanych danych: liczba całkowita

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

#### Przykład: wyrażenie wykresu

| Przykład | Wynik |
| --- | --- |
| `LevenshteinDist('Kitten','Sitting')` | Zwraca wartość 3 |

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

#### Wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

Skrypt ładowania zawiera:

* 

* Jedno pole w tabeli danych o nazwie `InputText`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `InputText`

* `=LevenshteinDist('Silver', InputText)`, aby obliczyć minimalną liczbę zmian pojedynczych znaków wymaganych do zmiany wartości ciągu `InputText` na słowo `'Silver'`.

Tabela wynikowa

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

Dane wyjściowe funkcji `LevenshteinDist` zwracają liczbę zmian wymaganych do zmiany tekstu `InputText` na tekst oczekiwany, 'Silver'. Na przykład pierwszy wiersz wymaga dwóch zmian, aby zmienić słowo 'Sliver' na 'Silver'. Drugi wiersz wymaga 3 zmian: 1) Usunięcie nadmiarowego znaku 'S'. 2) Usunięcie nadmiarowego znaku 'e'. 3) Wstawienie nowego znaku 'l'.

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

#### Wyrażenie wykresu

Przegląd

Ten przykład konsoliduje nazwy produktów z różnych systemów. Nazwy produktów nie zawsze mają taką samą pisownię ze względu na literówki, skróty, odstępy lub inne warianty. Używając funkcji `LevenshteinDist`, można zmierzyć podobieństwo między dwiema nazwami produktów i określić, które z nich prawdopodobnie odnoszą się do tego samego produktu, nawet jeśli ich nazwy nie są identyczne.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

Skrypt ładowania zawiera:

* 

* 

  * `ProductA`

  * `ProductB`

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ProductA`

* `ProductB`

* `=LevenshteinDist(ProductA, ProductB)`, aby obliczyć minimalną liczbę zmian pojedynczych znaków wymaganych do zmiany wartości ciągu `ProductB` na dopasowanie `ProductA`.

Tabela wynikowa

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

Odległość Levenshteina to typ dopasowania rozmytego, który jest szeroko stosowany w modułach sprawdzania pisowni, optycznego rozpoznawania znaków i systemów korekcji w obszarach takich jak zarządzanie danymi klientów, systemy inwentaryzacji i przetwarzanie dokumentów, gdzie często występują niewielkie różnice w tekście.

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

#### Przykład: skrypt ładowania

Skrypt ładowania

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

Wynik

| Identyfikator | String\_1 | String\_2 | LevenshteinDistance |
| --- | --- | --- | --- |
| 1 | Silver | Sliver | 2 |
| 2 | Silver | SSiver | 2 |
| 3 | Silver | SSiveer | 3 |
| 4 | Gold | Pogrubienie | 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 |