Levenshtein-Distanz-Rechner
Eingaben
| Erste Zeichenkette | kitten |
|---|---|
| Zweite Zeichenkette | sitting |
Levenshtein-Distanz-Rechner
Berechnet die Levenshtein-Distanz (Editierdistanz) zwischen zwei Zeichenketten – die minimale Anzahl an Einfügungen, Löschungen und Ersetzungen einzelner Zeichen, um die eine in die andere zu überführen – samt einer Ähnlichkeit in Prozent.
Eingaben
Zeichenketten
Ergebnisse
Geben Sie einen Wert ein, um die Ergebnisse zu sehen.
Ergebnisse
Levenshtein-Distanz
Die Levenshtein-Distanz, auch Editierdistanz genannt, misst, wie verschieden zwei Zeichenketten sind, indem sie die kleinste Anzahl an Einzelzeichen-Bearbeitungen zählt, die nötig sind, um die eine in die andere zu überführen. Die erlaubten Bearbeitungen sind Einfügen, Löschen und Ersetzen, jede mit Kosten eins. Der Rechner nimmt zwei Zeichenketten entgegen und liefert diese Distanz zusammen mit einer Ähnlichkeit in Prozent – nützlich für Rechtschreibprüfung, unscharfen Abgleich und den Vergleich von Sequenzen wie DNA.
Die drei Bearbeitungsoperationen
Jede Umwandlung zwischen zwei Zeichenketten lässt sich als Folge dreier Grundzüge ausdrücken. Eine Einfügung fügt ein Zeichen hinzu, eine Löschung entfernt eines, und eine Ersetzung tauscht ein Zeichen gegen ein anderes. Die Levenshtein-Distanz fragt nach der günstigsten solchen Folge, wobei jeder Zug eins kostet. Da eine Ersetzung ein einzelner Schritt ist und nicht ein Löschen gefolgt von einem Einfügen, zählt das Ändern eines Buchstabens stets als eine Bearbeitung, nicht als zwei.
Benannt nach Wladimir Lewenstein, der sie 1965 definierte, verallgemeinert das Maß die ältere Hamming-Abstand-Rechner: Die Hamming-Distanz erlaubt nur Ersetzungen und nur bei gleich langen Zeichenketten, während die Levenshtein-Distanz auch Einfügungen und Löschungen zulässt und so Zeichenketten unterschiedlicher Länge verarbeitet.
Die Tabelle der dynamischen Programmierung
Die Distanz wird berechnet, indem eine Tabelle gefüllt wird – mit einer Zeile je Zeichen der ersten Zeichenkette (plus einer führenden leeren Zeile) und einer Spalte je Zeichen der zweiten (plus einer führenden leeren Spalte). Die Zelle enthält die Editierdistanz zwischen den ersten Zeichen von A und den ersten Zeichen von B.
Die erste Zeile und Spalte zählen Bearbeitungen gegen die leere Zeichenkette, also und . Jede andere Zelle ist das Minimum dreier Kandidaten:
D[i][j]=min⎩⎨⎧D[i−1][j]+1D[i][j−1]+1D[i−1][j−1]+c(Lo¨schung)(Einfu¨gung)(Ersetzung)dabei sind die Ersetzungskosten gleich 0, wenn die Zeichen übereinstimmen, und 1, wenn sie sich unterscheiden. Die Antwort steht in der Zelle unten rechts. Das Füllen der Tabelle braucht eine Zeit proportional zum Produkt der beiden Längen, .
Rechenbeispiel
Nehmen wir das klassische Paar „kitten“ und „sitting“. Der optimale Weg durch die Tabelle ergibt drei Bearbeitungen:
kittensittensittin→sitten→sittin→sitting(k→s ersetzen)(e→i ersetzen)(g einfu¨gen)Eine kürzere Folge gibt es nicht, also beträgt die Distanz 3. Die längere Zeichenkette hat 7 Zeichen, somit ist die Ähnlichkeit , also etwa 57 %.
Ähnlichkeit und ihre Grenzen
Der Rechner normiert die rohe Distanz mit
zu einem Ähnlichkeitswert. Das Teilen durch die Länge der längeren Zeichenkette hält das Ergebnis zwischen 0 % für völlig verschiedene und 100 % für identische Zeichenketten; zwei leere Zeichenketten gelten als identisch. Dies ist eine gängige Normierung – andere Werkzeuge teilen durch die Summe der Längen oder verwenden verhältnisbasierte Maße –, daher sind Ähnlichkeitszahlen aus verschiedenen Quellen nicht direkt vergleichbar.
Wo sie eingesetzt wird
Rechtschreibprüfungen ordnen Korrekturvorschläge nach der Editierdistanz zum falsch geschriebenen Wort. Such- und Datenbanksysteme nutzen sie für unscharfen Abgleich und tolerieren so Tippfehler beim Nachschlagen von Namen oder Adressen. In der Bioinformatik liegt die Editierdistanz dem Sequenzalignment für den Vergleich von DNA, RNA und Proteinen zugrunde, wo Einfügungen und Löschungen Mutationen entsprechen. Das einfache Levenshtein-Kostenmodell behandelt alle Bearbeitungen gleich; Anwendungen, die unterschiedliche Strafen für verschiedene Operationen brauchen oder sehr lange Sequenzen effizient ausrichten müssen, erweitern es um gewichtete Kosten oder spezialisierte Alignment-Algorithmen.
Häufig gestellte Fragen (FAQ)
Was ist die Levenshtein-Distanz?
Die Levenshtein-Distanz, auch Editierdistanz genannt, ist die minimale Anzahl an Einzelzeichen-Bearbeitungen – Einfügungen, Löschungen oder Ersetzungen –, um eine Zeichenkette in eine andere zu überführen. Sie wurde 1965 vom sowjetischen Mathematiker Wladimir Lewenstein eingeführt.
Beispielsweise beträgt die Distanz zwischen „kitten“ und „sitting“ genau 3: k→s ersetzen, e→i ersetzen und am Ende ein g einfügen. Eine kürzere Folge von Bearbeitungen gibt es nicht.
Der Wert wird mit einer Tabelle der dynamischen Programmierung berechnet, deren Zellen jeweils die Editierdistanz zwischen Präfixen der beiden Zeichenketten enthalten. Das Füllen der Tabelle benötigt eine Zeit, die proportional zum Produkt der beiden Längen ist.
Worin unterscheidet sie sich von der Hamming-Distanz?
Die Hamming-Distanz zählt nur Ersetzungen und ist ausschließlich für gleich lange Zeichenketten definiert – sie vergleicht Zeichen Position für Position. Die Levenshtein-Distanz erlaubt zusätzlich Einfügungen und Löschungen und funktioniert daher auch für unterschiedlich lange Zeichenketten und erfasst Verschiebungen in der Ausrichtung.
Bei zwei gleich langen Zeichenketten ist die Levenshtein-Distanz stets kleiner oder gleich der Hamming-Distanz, denn die Ersetzung ist eine ihrer Operationen, sie kann aber über Einfügungen und Löschungen einen günstigeren Weg finden.
Wie wird der Ähnlichkeitswert in Prozent berechnet?
Die Ähnlichkeit wird als 1 − Distanz / max(len_a, len_b) angegeben, ausgedrückt in Prozent. Das Teilen durch die Länge der längeren Zeichenkette normiert den Wert auf den Bereich von 0 % (völlig verschieden) bis 100 % (identisch). Sind beide Zeichenketten leer, gilt die Ähnlichkeit als 100 %.
Dies ist eine gängige Normierung; andere Werkzeuge teilen durch die Summe der Längen oder verwenden verhältnisbasierte Maße, daher sind Ähnlichkeitswerte verschiedener Definitionen nicht direkt vergleichbar.