Lösung #1: Python eingebaut
verwenden SequenceMatcher von difflib
Vorteile: eingebaute Python-Bibliothek, kein zusätzliches Paket erforderlich.
Nachteile: zu begrenzt, es gibt so viele andere gute Algorithmen für die Ähnlichkeit von Strings.
Beispiel :
>>> from difflib import SequenceMatcher
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
Lösung #2: jellyfish Bibliothek
es ist eine sehr gute Bibliothek mit guter Abdeckung und wenigen Problemen. es unterstützt:
- Levenshtein-Distanz
- Damerau-Levenshtein-Distanz
- Jaro-Distanz
- Jaro-Winkler-Distanz
- Vergleich durch den Match-Bewertungsansatz
- Hamming-Distanz
Vorteile: einfach zu bedienen, Vielzahl unterstützter Algorithmen, getestet.
Nachteile: keine eingebaute Bibliothek.
Beispiel:
>>> import jellyfish
>>> jellyfish.levenshtein_distance(u'jellyfish', u'smellyfish')
2
>>> jellyfish.jaro_distance(u'jellyfish', u'smellyfish')
0.89629629629629637
>>> jellyfish.damerau_levenshtein_distance(u'jellyfish', u'jellyfihs')
1