Die Levenshtein-Distanz, auch bekannt als Bearbeitungsdistanz, ist eine wesentliche Metrik zur Beurteilung der Ähnlichkeit zwischen zwei Zeichenfolgen. Es zählt die minimale Anzahl von Operationen, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Zu diesen Vorgängen gehören:
Dieses Konzept ist das Herzstück vieler moderner Anwendungen, wie z. B. Rechtschreibkorrektur, Fuzzy-Suche und DNA-Vergleich.
Der Levenshtein-Abstand zwischen zwei Saiten (A) und (B) mit den Längen (n) bzw. (m) kann mithilfe eines dynamischen Ansatzes berechnet werden. Wir definieren eine Matrix (D) von Dimensionen ((n 1) mal (m 1)), wobei jedes (D[i][j]) den minimalen Aufwand darstellt, um die (i) ersten Zeichen von (A) in zu transformieren (j) erste Zeichen von (B).
Die Wiederholungsformel lautet:
Hier ist eine einfache Python-Implementierung zur Berechnung der Levenshtein-Distanz:
def levenshtein_distance(a, b): n, m = len(a), len(b) dp = [[0] * (m + 1) for _ in range(n + 1)] for i in range(n + 1): for j in range(m + 1): if i == 0: dp[i][j] = j elif j == 0: dp[i][j] = i elif a[i - 1] == b[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) return dp[n][m] # Exemple d'utilisation print(levenshtein_distance("kitten", "sitting")) # Sortie : 3
Rechtschreibprüfungen verwenden Levenshtein, um bei Tippfehlern naheliegende Wörter vorzuschlagen. Wenn Sie beispielsweise „helo“ eingeben, wird möglicherweise „Hallo“ oder „Held“ vorgeschlagen.
In Suchmaschinen ermöglicht die Levenshtein-Distanz, Ergebnisse zu erhalten, selbst wenn der Benutzer Tippfehler macht.
In der Bioinformatik hilft dieser Abstand dabei, die Ähnlichkeit zwischen zwei DNA-Sequenzen zu messen, wobei jede Operation eine mögliche Mutation darstellt.
Systeme zur Erkennung von Identitätsdiebstahl können Benutzereingaben mit vorhandenen Daten vergleichen und dabei kleine Textunterschiede berücksichtigen.
Der klassische Algorithmus verwendet eine vollständige Matrix, die speicherintensiv sein kann. Glücklicherweise können wir mit nur zwei Speicherzeilen optimieren, da jede Berechnung ( D[i][j] ) nur von ( D[i-1][j] ), ( D[i][j-1] ) abhängt. , und (D[i-1][j-1]).
def levenshtein_distance(a, b): n, m = len(a), len(b) dp = [[0] * (m + 1) for _ in range(n + 1)] for i in range(n + 1): for j in range(m + 1): if i == 0: dp[i][j] = j elif j == 0: dp[i][j] = i elif a[i - 1] == b[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) return dp[n][m] # Exemple d'utilisation print(levenshtein_distance("kitten", "sitting")) # Sortie : 3
Die Levenshtein-Distanz ist ein leistungsstarkes, vielseitiges und in vielen Bereichen weit verbreitetes Werkzeug. Obwohl es einfach zu verstehen ist, beweisen seine komplexen Optimierungen und Anwendungen seinen Wert in modernen Systemen.
Bei näherer Betrachtung können wir uns auch Varianten wie der Damerau-Levenshtein-Distanz zuwenden, die Transpositionen berücksichtigt. Jetzt sind Sie in der Lage, dieses Tool in Ihre Projekte zu integrieren oder einfach Ihre Kollegen mit Ihrem fundierten Wissen zu beeindrucken!
Das obige ist der detaillierte Inhalt vonLevenshtein-Distanz: Der ultimative Leitfaden zur Messung der Textähnlichkeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!