Solución:
Hay un incorporado.
from difflib import SequenceMatcher
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
Utilizándolo:
>>> similar("Apple","Appel")
0.8
>>> similar("Apple","Mango")
0.0
Creo que tal vez esté buscando un algoritmo que describa la distancia entre cadenas. Aquí hay algunos a los que puede hacer referencia:
- Distancia de Hamming
- Distancia de Levenshtein
- Distancia Damerau-Levenshtein
- Distancia Jaro-Winkler
Solución # 1: Python incorporado
utilizar SequenceMatcher de difflib
pros: biblioteca nativa de Python, no se necesita paquete adicional.
contras: demasiado limitado, existen muchos otros buenos algoritmos para la similitud de cadenas.
ejemplo :
>>> from difflib import SequenceMatcher
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
Solución # 2: biblioteca de medusas
Es una biblioteca muy buena con buena cobertura y pocos números. admite:
– Distancia de Levenshtein
– Distancia Damerau-Levenshtein
– Distancia de Jaro
– Distancia Jaro-Winkler
– Comparación de enfoques de calificación de partidos
– Distancia de Hamming
pros: fácil de usar, gama de algoritmos compatibles, probado.
contras: no biblioteca nativa.
ejemplo:
>>> 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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)