# LevenshteinDist Skript- und Diagrammfunktion

LevenshteinDist() gibt die Levenshtein-Entfernung zwischen zwei Zeichenfolgen zurück. Dies ist als Mindestzahl von Bearbeitungen mit einem Zeichen (Einfügungen, Löschungen oder Ersetzungen) definiert, die zum Ändern einer Zeichenfolge in eine andere erforderlich sind. Die Funktion ist für den Vergleich von Fuzzy-Zeichenfolgen nützlich.

Syntax:

LevenshteinDist(text1, text2)

Rückgabe Datentyp: ganze Zahl

Argumente

| Argument | Beschreibung |
| --- | --- |
| text1 | Der erste String. |
| text2 | Der zweite String, der mit dem ersten String verglichen wird, um die minimale Anzahl von Ein-Zeichen-Bearbeitungen zu berechnen. |

Beispiel: Diagrammformel

| Beispiel | Ergebnis |
| --- | --- |
| `LevenshteinDist( 'Kitten','Sitting' )` | Liefert `3` |

## Beispiel – Grundlegendes zu „LevenshteinDist“

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

#### Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Ein Feld in der Datentabelle heißt `InputText`.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* `InputText`

Erstellen Sie die folgende Kennzahl:

* `=LevenshteinDist('Silver', InputText)`, um die minimale Anzahl von Bearbeitungen einzelner Zeichen zu berechnen, die erforderlich sind, um den Stringwert für `InputText` in das Wort `Silver` zu ändern.

Ergebnistabelle

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

Die Ausgabe der Funktion `LevenshteinDist` gibt die Anzahl der Änderungen zurück, die erforderlich sind, um `InputText` in den erwarteten Text `Silver` zu ändern. In der ersten Zeile sind zum Beispiel zwei Änderungen erforderlich, um das Wort `Sliver` in `Silver` zu ändern. In der zweiten Zeile sind 3 Änderungen erforderlich: 1) Löschen des zusätzlichen Zeichens `S`. 2) Löschen des zusätzliche Zeichens `e`. 3) Einfügen eines neuen Zeichens `l`.

## Beispiel – Szenario für „LevenshteinDist“

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

#### Diagrammformel

Übersicht

In diesem Beispiel werden Produktnamen aus verschiedenen Systemen konsolidiert. Die Produktnamen sind aufgrund von Tippfehlern, Abkürzungen, Abständen oder anderen Abweichungen nicht immer gleich geschrieben. Mit der Funktion `LevenshteinDist` können Sie die Ähnlichkeit zwischen zwei Produktnamen messen und feststellen, welche sich wahrscheinlich auf dasselbe Produkt beziehen, auch wenn die Namen nicht identisch sind.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Die folgenden Felder in der Datentabelle:

  * `ProductA`

  * `ProductB`

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `ProductA`

* `ProductB`

Erstellen Sie die folgende Kennzahl:

* `=LevenshteinDist(ProductA, ProductB)`, um die minimale Anzahl von Bearbeitungen einzelner Zeichen zu berechnen, die erforderlich sind, um den Stringwert für `ProductB` so zu ändern, dass er mit `ProductA` übereinstimmt.

Ergebnistabelle

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

Die Levenshtein-Distanz dient zum Erkennen von ungefähren Übereinstimmungen und wird häufig im Rahmen von Rechtschreibprüfungen, optischer Zeichenerkennung und Korrektursystemen in Bereichen wie der Verwaltung von Kundendaten, Lagerbestandssystemen und der Dokumentenverarbeitung verwendet, in denen häufig geringfügige Abweichungen im Text auftreten.

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

#### Ladeskript

Ladeskript

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

Ergebnistabelle

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