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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-07 21:05:031056Durchsuche

Die Levenshtein-Distanz, auch bekannt als Bearbeitungsdistanz, ist eine grundlegende Metrik zur Bewertung der Ähnlichkeit zwischen zwei Zeichenfolgen. Es berechnet die Mindestanzahl von Operationen, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Zu diesen Vorgängen gehören:

  1. Einfügung: Ein Zeichen hinzufügen.
  2. Löschen: Entfernen eines Zeichens.
  3. Ersetzung: Ersetzen eines Zeichens durch ein anderes.

Dieses Konzept ist für viele moderne Anwendungen von zentraler Bedeutung, beispielsweise für die Rechtschreibprüfung, die Fuzzy-Suche und den Vergleich von DNA-Sequenzen.

Das mathematische Konzept

Der Levenshtein-Abstand zwischen zwei Strings (A) und (B) mit den Längen (n) bzw. (m) kann mithilfe eines dynamischen Programmieransatzes berechnet werden. Wir definieren eine Matrix (D) der Größe ((n 1) mal (m 1)), wobei jeder Eintrag (D[i][j]) den Mindestaufwand für die Transformation der ersten (i) Zeichen von (A) darstellt die ersten (j) Zeichen von (B).

Die Wiederholungsbeziehung ist wie folgt:

Levenshtein Distance: The Ultimate Guide to Measuring Textual Similarity

Python-Implementierung

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]

# Example usage
print(levenshtein_distance("kitten", "sitting"))  # Output: 3

Praktische Anwendungen

1. Rechtschreibprüfung

Rechtschreibprüfungen verwenden die Levenshtein-Distanz, um Korrekturen für Tippfehler vorzuschlagen. Wenn Sie beispielsweise „helo“ eingeben, wird möglicherweise „Hallo“ oder „Held“ vorgeschlagen.

2. Fuzzy-Suche

In Suchmaschinen hilft Levenshtein dabei, Ergebnisse zurückzugeben, selbst wenn Benutzer Tipp- oder Rechtschreibfehler machen.

3. DNA-Vergleich

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

4. Authentifizierung und Betrugserkennung

Systeme, die Identitätsbetrug erkennen, können Benutzereingaben mit vorhandenen Datensätzen 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 kann es so optimiert werden, dass nur zwei Speicherzeilen verwendet werden, da jede ( D[i][j] ) nur von ( D[i-1][j] ), ( D[i][j-1] abhängt. ) und ( D[i-1][j-1] ).

def optimized_levenshtein(a, b):
    n, m = len(a), len(b)
    prev = list(range(m + 1))
    curr = [0] * (m + 1)

    for i in range(1, n + 1):
        curr[0] = i
        for j in range(1, m + 1):
            insert = curr[j - 1] + 1
            delete = prev[j] + 1
            substitute = prev[j - 1] + (0 if a[i - 1] == b[j - 1] else 1)
            curr[j] = min(insert, delete, substitute)
        prev, curr = curr, prev

    return prev[m]

# Example usage
print(optimized_levenshtein("kitten", "sitting"))  # Output: 3

Abschluss

Die Levenshtein-Distanz ist ein leistungsstarkes, vielseitiges Werkzeug, das in verschiedenen Bereichen weit verbreitet ist. Obwohl es einfach zu verstehen ist, unterstreichen seine Optimierungen und komplexen Anwendungen seinen Wert in modernen Systemen.

Berücksichtigen Sie zur weiteren Untersuchung Varianten wie den Damerau-Levenshtein-Abstand, der Transpositionen berücksichtigt. Jetzt sind Sie in der Lage, dieses Tool in Ihre Projekte zu integrieren oder Ihre Kollegen mit Ihrem tiefen Verständnis 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