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
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '3' |
Übersicht
Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in eine neue Registerkarte ein.
Das Ladeskript umfasst:
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
=LevenshteinDist('Silver', InputText), um die minimale Anzahl von Bearbeitungen einzelner Zeichen zu berechnen, die erforderlich sind, um die Stringwerte für InputText in das Wort 'Silver' zu ändern.
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'.
Ü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 eine neue Registerkarte ein.
Das Ladeskript umfasst:
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
=LevenshteinDist(ProductA, ProductB), um die minimale Anzahl von Bearbeitungen einzelner Zeichen zu berechnen, die erforderlich sind, um die Stringwerte für ProductB so zu ändern, dass sie mit ProductA übereinstimmen.
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.
Load script
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;
Result
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 |