In Bezug auf die Bearbeitungsentfernung ist es ein wenig alt, aber der Artikel von Naoya Ito ist hilfreich. Einfach ausgedrückt ist dies eine Methode, um die Nähe zweier Zeichenfolgen als numerischen Wert auszudrücken.
Referenz: Entfernung bearbeiten (Levenshtein-Entfernung) --naoyas Hatena-Tagebuch
Es gab ein Paket namens Python-Levenshtein, also lasst es uns einfügen.
$ sudo pip install python-Levenshtein
Schreiben wir einen Code wie diesen.
#!/usr/bin/env python
# coding: utf8
import Levenshtein
string1 = "Taiji Inoue"
string2 = "Yasuji Inoue"
string1 = string1.decode('utf-8')
string2 = string2.decode('utf-8')
print Levenshtein.distance(string1, string2)
$ python levenshtein.py
1
Japanisch ist auch in Ordnung. Wenn Sie ein Zeichen ersetzen, ist es das richtige Zeichen, sodass der Bearbeitungsabstand 1 beträgt.
Ich kann das Wort Python nicht gut tippen, und wenn ich es bemerke, wird es zu Pyhton. Der Bearbeitungsabstand zwischen Pyhton und Python beträgt 2. (Weil es dasselbe ist, wenn Sie die beiden Buchstaben tauschen)
Wenn Sie sich die [Dokumentation] ansehen (https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html), können Sie anscheinend auch die Jaro-Winkler-Entfernung usw. berechnen.
Wenn Sie es als MySQL registrieren, das wie das folgende gespeichert ist, sieht es wie ORDER BY LEVENSHTEIN (Titel "Hogehoge") aus. Dies ist praktisch, da es in der Reihenfolge der Buchstaben angezeigt wird. Der Index funktioniert jedoch nicht. Wenn Sie also alle Datensätze durchsuchen und die Anzahl der Datensätze groß ist, ist die Abfrage ziemlich umfangreich.
https://github.com/fza/mysql-doctrine-levenshtein-function
PHP- [Multi-Byte-Unterstützung] Ermitteln der Levenstein-Distanz-Qiita
Recommended Posts