Solución:
Terminé escribiendo mi propia solución después de todo:
def jaccard_similarity(list1, list2):
intersection = len(list(set(list1).intersection(list2)))
union = (len(list1) + len(list2)) - intersection
return float(intersection) / union
Para Python 3:
def jaccard_similarity(list1, list2):
s1 = set(list1)
s2 = set(list2)
return float(len(s1.intersection(s2)) / len(s1.union(s2)))
list1 = ['dog', 'cat', 'cat', 'rat']
list2 = ['dog', 'cat', 'mouse']
jaccard_similarity(list1, list2)
>>> 0.5
Para uso de Python2 return len(s1.intersection(s2)) / float(len(s1.union(s2)))
@aventinus No tengo suficiente reputación para agregar un comentario a su respuesta, pero solo para aclarar las cosas, su solución mide el jaccard_similarity
pero la función se llama erróneamente como jaccard_distance
, que en realidad es 1 - jaccard_similarity
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)