** Levenshtein Abstand ** gibt an, wie unterschiedlich die beiden Saiten sind. Wird auch als Bearbeitungsabstand bezeichnet. Ein einzelnes Zeichen ** Einfügen / Löschen / Ersetzen ** definiert die Mindestanzahl von Schritten, die erforderlich sind, um eine Zeichenfolge in die andere umzuwandeln. Referenz: [Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3 % 83% A5% E3% 82% BF% E3% 82% A4% E3% 83% B3% E8% B7% 9D% E9% 9B% A2)
Die Umgebung verwendet Google Colaboratory. Die Python-Version ist unten.
import platform
print("python " + platform.python_version())
# python 3.6.9
Zusätzlich muss die Bibliothek zur Berechnung der Levenstein-Distanz im Voraus installiert werden.
pip install python-Levenshtein
Jetzt schreiben wir den Code. Importieren Sie zunächst die Bibliothek zur Berechnung der Levenstein-Entfernung.
import Levenshtein
Berechnen wir als Versuch den Levenstein-Abstand zwischen "Rievenstein" und "Levenshtein".
#Berechnen Sie die Levenstein-Entfernung
Levenshtein.distance('Rievenstein', 'Levenshtein')
# 3
Das Ergebnis war 3. das ist,
Dies liegt daran, dass ich die Operation dreimal durchgeführt habe.
Sie können unten überprüfen, welche Art von Operation Sie ausgeführt haben.
Levenshtein.editops('Rievenstein', 'Levenshtein')
# [('delete', 0, 0), ('replace', 1, 0), ('insert', 7, 6)]
Der hier angezeigte Inhalt ist (Operation ausgeführt, welches Zahlenzeichen in der ersten Zeichenfolge, welche Nummer in der zweiten Zeichenfolge) ist. Mit anderen Worten
Es bedeutet das.
Sie können auch die Ähnlichkeit Ihrer Ähnlichkeit berechnen, nicht die Häufigkeit, mit der Sie die Operation ausgeführt haben.
Levenshtein.ratio('Rievenstein', 'Levenshtein')
# 0.8181818181818182
Wenn mehrere Zeichenfolgen vorhanden sind, können Sie auch die Zeichenfolge extrahieren, die den Mittelpunkt der Zeichenfolgen darstellt.
Levenshtein.median(['Rievenstein',
'Levenshtein',
'Revenshtein',
'Lievenstein',
'Levenshtain',
'Levennshtein'])
# 'Levenshtein'
Der Hamming-Abstand ist die Anzahl der verschiedenen Zeichen an den entsprechenden Positionen in zwei Zeichenfolgen mit ** gleicher Anzahl von Zeichen **. Referenz: [Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%9F%E3%83%B3%E3%82%B0%E8%B7%9D%E9 % 9B% A2)
Dies kann auch mit derselben Bibliothek berechnet werden.
Levenshtein.hamming('Rievenstein', 'Levenshtein')
# 7
Die Brummentfernung vergleicht Rievenstein- und Levenshtein-Saiten nur mit Zeichen an derselben Stelle. Es wird wie folgt sein.
Wenn man es so betrachtet, wird der Brummabstand als 7 ausgegeben, da die 7 Zeichen mit Ausnahme des letzten "Teins" unterschiedlich sind.
Der Brummabstand muss ** gleich groß sein. ** Ein Fehler tritt auf, wenn die Anzahl der Zeichen unterschiedlich ist.
Es gibt auch die Jaro-Winkler-Distanz, die die teilweise Übereinstimmung zwischen zwei Saiten misst. Je näher es an 1 liegt, desto ähnlicher ist es und je näher es an 0 ist, desto unterschiedlicher ist es. Es scheint verwendet zu werden, um Rechtschreibfehler zu beurteilen.
Levenshtein.jaro_winkler('Rievenstein', 'Levenshtein')
# 0.8787878787878789
Ich habe Python verwendet, um die Levenstein-Entfernung zu berechnen. Ich habe auch die Humming-Distanz und die Jaro Winkler-Distanz als andere Bearbeitungsentfernungen berechnet. Berechnen Sie auf jeden Fall den Bearbeitungsabstand verschiedener ähnlicher Zeichenketten und die Ähnlichkeit.
Einzelheiten zu der diesmal verwendeten Bibliothek finden Sie im Folgenden. https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html#Levenshtein-median
Recommended Posts