LEVDIST( )-Funktion
Gibt die Levenshtein-Distanz zwischen zwei angegebenen Zeichenfolgen zurück. Diese gibt an, wie sehr sich die beiden Zeichenfolgen voneinander unterscheiden.
Syntax
LEVDIST(Zeichenfolge1; Zeichenfolge2 <;Groß-/Kleinschreibung beachten>)
Parameter
Name | Typ | Beschreibung |
---|---|---|
Zeichenfolge1 | Zeichen | Die erste Zeichenfolge des Vergleichs. |
Zeichenfolge2 | Zeichen | Die zweite Zeichenfolge des Vergleichs. |
Groß-/Kleinschreibung beachten Optional |
logisch |
Geben Sie T für einen Vergleich von Zeichenfolgen an, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, und F, um Groß- und Kleinschreibung zu ignorieren. Durch Auslassen wird der Standardwert „T“ verwendet. |
Ausgabe
Numerisch. Der Wert ist die Levenshtein-Distanz zwischen zwei Zeichenfolgen.
Beispiele
Einfache Beispiele
Gibt „3“ zurück (zwei Ersetzungen und eine Einfügung sind erforderlich, um „smith“ in „Smythe“ umzuwandeln):
LEVDIST("smith";"Smythe")
Gibt „2“ zurück. Da die Groß-/Kleinschreibung ignoriert wird, sind nur zwei Ersetzungen erforderlich, um „smith‘s“ in „Smythes“ umzuwandeln:
LEVDIST("smith's";"Smythes";F)
Gibt die Levenshtein-Distanz zwischen den einzelnen Werten im Feld Nachname und der Zeichenfolge „Smith“ zurück:
LEVDIST(TRIM(Nachname);"Smith")
Weiterführende Beispiele
Rangfolge der Werte im Vergleich mit „Smith"
Erstellen Sie das Kalkulationsfeld Lev_Dist, um die Levenshtein-Distanz zwischen „Smith“ und jedem Wert innerhalb des Felds Nachname anzuzeigen:
DEFINE FIELD Lev_Dist COMPUTED LEVDIST(TRIM(Nachname);"Smith"; F)
Fügen Sie das Kalkulationsfeld Lev_Dist der Ansicht hinzu. Nehmen Sie dann eine Schnellsortierung in aufsteigender Reihenfolge vor, damit alle Werte im Feld Nachname nach ihren Unterschieden mit „Smith“ aufgelistet werden.
Fuzzy-Duplikate für „Smith“ isolieren
Erstellen Sie einen Filter, der alle Werte im Feld Nachname isoliert, die sich innerhalb einer angegebenen Levenshtein-Distanz von „Smith“ befinden:
SET FILTER TO LEVDIST(TRIM(Nachname);"Smith"; F) < 3
Durch eine Änderung der Zahl im Ausdruck können Sie den Betrag der Levenshtein-Distanz in den gefilterten Werten anpassen.
Bemerkungen
Wann Sie LEVDIST( ) verwenden sollen
Verwenden Sie die LEVDIST( )-Funktion, um nahezu identische Werte (Fuzzy-Duplikate) zu suchen oder eine uneinheitliche Buchstabierung in manuell eingegebenen Daten zu lokalisieren. LEVDIST( ) erkennt auch exakte Duplikate.
Funktionsweise
Die LEVDIST( )-Funktion gibt die Levenshtein-Distanz zwischen den beiden bewerteten Zeichenfolgen zurück. Dabei handelt es sich um einen Wert, der die Mindestzahl von Bearbeitungen einzelner Zeichen darstellt, die erforderlich sind, um eine Zeichenfolge auf eine andere zu überführen.
Jede erforderliche Bearbeitung steigert den Wert der Levenshtein-Distanz um 1. Je größer die Levenshtein-Distanz, desto größer ist der Unterschied zwischen den zwei Zeichenfolgen. Eine Distanz von Null (0) bedeutet, dass die Zeichenfolgen identisch sind.
Bearbeitungsarten
Die Bearbeitungen können drei Arten aufweisen:
- Einfügen
- Löschen
- Ersetzen
Buchstabendreher (zwei nebeneinanderliegende Buchstaben in falscher Reihenfolge) werden von durch den Levenshtein-Algorithmus nicht erkannt und zählen als zwei Bearbeitungsschritte – insbesondere zweifaches Ersetzen.
Nicht alphanumerische Zeichen
Interpunktionszeichen, Sonderzeichen und Leerzeichen werden als einzelne Zeichen behandelt, genauso wie Buchstaben und Zahlen.
Groß- und Kleinschreibung von Zahlen
Die Änderung der Groß- und Kleinschreibung eines Zeichens zählt als eine Ersetzung, wenn die Einstellung Groß-/Kleinschreibung beachten nicht deaktiviert wurde.
Die Position von Zeichen
Bei der Levenshtein-Distanz wird die Position von Zeichen berücksichtigt. Dieselben Zeichen können in unterschiedlicher Anordnung zu einer anderen Levenshtein-Distanz führen.
Gibt „2“ zurück:
LEVDIST("abc"; "dec")
Gibt „3“ zurück:
LEVDIST("abc"; "cde")
TRIM( ) mit LEVDIST( ) verwenden
Um akkurate Ergebnisse zu erzielen, wenn Sie mit LEVDIST( ) eine Literalzeichenfolge wie „Smith“ mit einem Zeichenfeld vergleichen, müssen mit der TRIM( )-Funktion abschließende Leerzeichen aus dem Feld entfernt werden.
Wenn Sie zwei Felder miteinander vergleichen, müssen Sie die TRIM( )-Funktion für jedes Feld verwenden.
Der Levenshtein-Algorithmus zählt Leerzeichen als Zeichen. Daher werden abschließende Leerzeichen in die Berechnung der Anzahl erforderlicher Bearbeitungen zum Abgleichen von zwei Zeichenfolgen eingeschlossen.
Verwandte Funktionen
- ISFUZZYDUP( ) bietet eine alternative Methode zum Vergleichen von Zeichenfolgen anhand der Levenshtein-Distanz.
Im Gegensatz zum Standardverhalten von LEVDIST( ) unterscheidet ISFUZZYDUP( ) nicht zwischen Groß- und Kleinschreibung.
- DICECOEFFICIENT( ) ignoriert beim Vergleich von Zeichenfolgen die relative Position von Zeichen oder Zeichenblöcken völlig oder berücksichtigt sie weniger stark.
- SOUNDSLIKE( ) und SOUNDEX( ) vergleichen Zeichenfolgen anhand eines phonetischen (Klang) anstatt eines orthografischen Vergleichs (Buchstabierung).