Heim  >  Artikel  >  Backend-Entwicklung  >  Levenshtein-Distanz: Der ultimative Leitfaden zur Messung der Textähnlichkeit

Levenshtein-Distanz: Der ultimative Leitfaden zur Messung der Textähnlichkeit

DDD
DDDOriginal
2024-11-09 02:14:02846Durchsuche

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:

  1. Einfügen: Fügen Sie ein Zeichen hinzu.
  2. Löschen: Ein Zeichen löschen.
  3. Ersetzung: Ersetzen Sie ein Zeichen durch ein anderes.

Dieses Konzept ist das Herzstück vieler moderner Anwendungen, wie z. B. Rechtschreibkorrektur, Fuzzy-Suche und DNA-Vergleich.

Das mathematische Konzept

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:

Distance de Levenshtein : Le Guide Ultime pour Mesurer la Similarité Textuelle

Implementierung in Python

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

Praktische Anwendungen

1. Rechtschreibkorrektur

Rechtschreibprüfungen verwenden Levenshtein, um bei Tippfehlern naheliegende Wörter vorzuschlagen. Wenn Sie beispielsweise „helo“ eingeben, wird möglicherweise „Hallo“ oder „Held“ vorgeschlagen.

2. Fuzzy-Suche

In Suchmaschinen ermöglicht die Levenshtein-Distanz, Ergebnisse zu erhalten, selbst wenn der Benutzer Tippfehler macht.

3. DNA-Vergleich

In der Bioinformatik hilft dieser Abstand dabei, die Ähnlichkeit zwischen zwei DNA-Sequenzen zu messen, wobei jede Operation eine mögliche Mutation darstellt.

4. Authentifizierung und Betrugserkennung

Systeme zur Erkennung von Identitätsdiebstahl können Benutzereingaben mit vorhandenen Daten vergleichen und dabei kleine Textunterschiede berücksichtigen.

Optimierung: Levenshtein-Distanz mit reduziertem Speicher

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

Abschluss

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!

Haben Sie Fragen oder Ideen zur Levenshtein-Distanz? Teile sie in den Kommentaren! ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn