我有一个字符串列表作为查询,还有许多其他字符串列表。我想将查询与其他所有列表进行比较,并提取它们之间的相似度得分。
例子:
query = ["football", "basketball", "martial arts", "baseball"]
list1 = ["apple", "football", "basketball court"]
list2 = ["ball"]
list3 = ["martial-arts", "baseball", "banana", "food", "doctor"]
我现在正在做并且对结果不满意的是对它们的绝对比较。
score = 0
for i in query:
if i in list1:
score += 1
score_of_list1 = score*100//len(list1)
我找到了一个可能使我感到困惑的图书馆,但我在想是否还有其他建议方法。
如果您正在寻找一种方法来查找字符串之间的相似性,那么这个SO问题建议使用Levenshtein距离作为一种方法。
在天真的整合将是(我用随机只是为了有一个结果它没有意义明显。):
#!/usr/bin/env python
query = ["football", "basketball", "martial arts", "baseball"]
lists = [["apple", "football", "basketball court"], ["ball"], ["martial-arts", "baseball", "banana", "food", "doctor"]]
from random import random
def fake_levenshtein(word1, word2):
return random()
def avg_list(l):
return reduce(lambda x, y: x + y, l) / len(l)
for l in lists:
score = []
for w1 in l:
for w2 in query:
score.append(fake_levenshtein(w1, w2))
print avg_list(score)
祝你好运。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句