# 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

Argumenty

| Argument | Opis |
| --- | --- |
| text1 | Pierwszy ciąg. |
| text2 | Drugi ciąg znaków, który zostanie porównany z pierwszym ciągiem w celu obliczenia minimalnej liczby edycji pojedynczych znaków. |

Przykład: wyrażenie wykresu

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

## Przykład — podstawy LevenshteinDist

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

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

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

Utwórz następującą miarę:

* `=LevenshteinDist('Silver', InputText)` do obliczenia minimalnej liczby 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`.

## Przykład — zastosowanie LevenshteinDist

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

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Tabela zawiera następujące pola:

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

Utwórz następującą miarę:

* `=LevenshteinDist(ProductA, ProductB)` do obliczenia minimalnej liczby zmian pojedynczych znaków wymaganych do zmiany wartości ciągu `ProductB` na dopasowanie do `ProductA`.

Tabela wynikowa

| ProductA | ProduktB | LevenshteinDist(ProduktA, ProduktB) |
| --- | --- | --- |
| 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)

#### Skrypt ładowania

Skrypt ładowania

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

Tabela wynikowa

| Identyfikator | Ciąg\_1 | Ciąg\_2 | LevenshteinDistance |
| --- | --- | --- | --- |
| 1 | Silver | Fragment | 2 |
| 2 | Silver | SSiver | 2 |
| 3 | Silver | SSiveer | 3 |
| 4 | Gold | Pogrubienie | 1 |
| 5 | Gold | Wartość logiczna | 3 |
| 6 | Gold | Obligacja | 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 |