Я считаю, что вы хотите получить jaccard_similarity
для каждого списка в list1
.Если это так, просто прокрутите их.Также внесены небольшие исправления в строки в jaccard_similarity
.
list1=[
['Search','engines','using','machine','learning','pattern','detections'],
['machine','learning','helped','Google','automatically','sift','pages']
]
list2 = ['Machine','learning','ever','evolving','technology']
def jaccard_similarity(list1, list2):
intersection = len(set(list1).intersection(list2)) #no need to call list here
union = len(list1 + list2) - intersection #you only need to call len once here
return intersection / union #also no need to cast to float as this will be done for you
for l in list1:
print(jaccard_similarity(l, list2))
Или в понимании
similarities = [jaccard_similarity(l, list2) for l in list1]
Редактировать Вот гораздо более простой способ получитьjaccard_similarity
кстати:
def jaccard_similarity(list1, list2):
s1, s2 = set(list1), set(list2)
return len(s1 & s2) / len(s1 | s2)