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

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

Nov 09, 2024 am 02:14 AM

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

So installieren Sie Pakete aus einer Anforderungen.txt -Datei in Python So installieren Sie Pakete aus einer Anforderungen.txt -Datei in Python Sep 18, 2025 am 04:24 AM

Führen Sie Pipinstall-Rrequirements.txt aus, um das Abhängigkeitspaket zu installieren. Es wird empfohlen, zunächst die virtuelle Umgebung zu erstellen und zu aktivieren, um Konflikte zu vermeiden, sicherzustellen, dass der Dateipfad korrekt ist und dass die PIP aktualisiert wurde, und Optionen wie-No-Deps oder -User, um das Installationsverhalten bei Bedarf anzupassen.

Effiziente Zusammenführungsstrategie des PEFT LORA -Adapters und des Basismodells Effiziente Zusammenführungsstrategie des PEFT LORA -Adapters und des Basismodells Sep 19, 2025 pm 05:12 PM

In diesem Tutorial wird beschrieben, wie der PEFT LORA -Adapter mit dem Basismodell effizient zusammengeführt werden kann, um ein völlig unabhängiges Modell zu generieren. Der Artikel weist darauf hin, dass es falsch ist, Transformatoren direkt zu verwenden. Automodel zum Laden des Adapters und zum manuellen Zusammenführen der Gewichte und bietet den richtigen Prozess zur Verwendung der Methode merge_and_unload in der PEFT -Bibliothek. Darüber hinaus unterstreicht das Tutorial auch die Bedeutung des Umgangs mit Word -Segmentern und diskutiert die Kompatibilität und Lösungen von PEFT -Versionen.

So testen Sie Python -Code mit PyTest So testen Sie Python -Code mit PyTest Sep 20, 2025 am 12:35 AM

Python ist ein einfaches und leistungsstarkes Testwerkzeug in Python. Nach der Installation werden Testdateien automatisch gemäß den Namensregeln ermittelt. Schreiben Sie eine Funktion, die mit Test_ für Assertionstests beginnt, verwenden Sie @PyTest.Fixure, um wiederverwendbare Testdaten zu erstellen, die Ausnahmen über pyTest.raises zu überprüfen, unterstützt die laufenden Tests und mehrere Befehlszeilenoptionen und verbessert die Testeneffizienz.

So behandeln Sie Befehlszeilenargumente in Python So behandeln Sie Befehlszeilenargumente in Python Sep 21, 2025 am 03:49 AM

TheArgParSemoduleiTherecommendedwaytoHandleCommand-Lineargumentesinpython, das Robustparsing, Typevalidation, Helpsages, AndersHandling berücksichtigt; usesys.argvForSimpecaseSeRequiringMinimalsetup.

Problemgenauigkeitsproblem der Punktzahl in Python und seinem Berechnungsschema mit hoher Präzisionszahlen Problemgenauigkeitsproblem der Punktzahl in Python und seinem Berechnungsschema mit hoher Präzisionszahlen Sep 19, 2025 pm 05:57 PM

Dieser Artikel zielt darauf ab, das gemeinsame Problem der unzureichenden Berechnungsgenauigkeit der schwimmenden Punktzahlen in Python und Numpy zu untersuchen, und erklärt, dass seine Grundursache in der Darstellungsbeschränkung der Standardzahlen der 64-Bit-Schwimmpunkte liegt. Für Computerszenarien, die eine höhere Genauigkeit erfordern, wird der Artikel die Nutzungsmethoden, -funktionen und anwendbaren Szenarien von mathematischen Bibliotheken mit hoher Präzision einführen und vergleichen

So arbeiten Sie mit PDF -Dateien in Python So arbeiten Sie mit PDF -Dateien in Python Sep 20, 2025 am 04:44 AM

PYPDF2, PDFPLUMBER und FPDF sind die Kernbibliotheken für Python, um PDF zu verarbeiten. Verwenden Sie PYPDF2, um die Textextraktion, das Zusammenführen, die Aufteilung und die Verschlüsselung durchzuführen, z. PDFPLUMBER eignet sich besser zum Aufbewahren von Layout -Textextraktion und Tabellenerkennung und unterstützt extract_tables (), um Tabellendaten genau zu erfassen. FPDF (empfohlene FPDF2) wird zum Generieren von PDF verwendet, und es werden Dokumente erstellt und über add_page (), set_font () und cell () ausgegeben. Beim Zusammenführen von PDFs kann die append () -Methode von PDFWriter mehrere Dateien integrieren

Python bekommen aktuelles Beispiel Beispiel Python bekommen aktuelles Beispiel Beispiel Sep 15, 2025 am 02:32 AM

Die aktuelle Zeit kann in Python über das DateTime -Modul implementiert werden. 1. Verwenden Sie datetime.now (), um die lokale aktuelle Zeit zu erhalten, 2. verwenden Strftime ("%y-%M-%d%H:%m:%s"), um das Ausgabejahr, den Monat, den Tag, die Stunde, die Minute und die zweite, zu formatieren. UTCNOW () und tägliche Operationen können die Anforderungen erfüllen, indem datetime.now () mit formatierten Zeichenfolgen kombiniert werden.

Wie können Sie einen Kontextmanager mit dem @ContextManager -Dekorateur in Python erstellen? Wie können Sie einen Kontextmanager mit dem @ContextManager -Dekorateur in Python erstellen? Sep 20, 2025 am 04:50 AM

Importieren Sie@contextManagerfromContextLibanddefinaGeneratorFunctionThatyieldSexactlyonce, whercodeBeforyieldactsasenterandCodeafteryield (vorzugsweise infinal) actsas __exit __. 2.UsetheFunctionInaThstatement, wherheided ValuesieScessable

See all articles