Soluzione # 1: Python builtin
uso SequenceMatcher da difflib
pro: libreria Python nativo, non è necessario alcun pacchetto aggiuntivo.
cons: troppo limitato, ci sono tanti altri buoni algoritmi per la similarità delle stringhe là fuori.
esempio:
>>> from difflib import SequenceMatcher
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
Soluzione # 2: jellyfish biblioteca
sua una buona biblioteca con una buona copertura e alcuni problemi. supporta:
- Levenshtein Distanza
- Damerau-Levenshtein Distanza
- Jaro Distanza
- Jaro-Winkler Distanza
- Partita Voto metodo di confronto di
- distanza di Hamming
pro: facile da usare, gamma di algoritmi supportati, testati.
cons: non la libreria nativa.
esempio:
>>> 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
fonte
2017-09-08 22:49:25
non credo "probabilità" è proprio il termine giusto qui. In ogni caso, consulta http://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-string-comparison – NPE
La parola che stai cercando è rapporto, non probabilità. –
Dai un'occhiata a [distanza di Hamming] (http://en.wikipedia.org/wiki/Hamming_distance). – Diana