如何获得一个字符串与Python中另一个字符串相似的概率?
我想得到一个像0.9 (意思是90%)等十进制值。最好是用标准的Python和库。
例如:
similar("Apple","Appel") #would have a high prob.
similar("Apple","Mango") #would have a lower prob.
发布于 2013-06-30 16:18:52
有一个内置的。
from difflib import SequenceMatcher
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
使用它:
>>> similar("Apple","Appel")
0.8
>>> similar("Apple","Mango")
0.0
发布于 2017-01-19 06:26:29
TheFuzz
是一个package,它在Python语言中实现了Levenshtein distance,在某些情况下,如果你想让两个不同的字符串被认为是相同的,它会有一些帮助函数。例如:
>>> fuzz.ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
91
>>> fuzz.token_sort_ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
100
发布于 2013-06-30 15:41:14
您可以创建如下函数:
def similar(w1, w2):
w1 = w1 + ' ' * (len(w2) - len(w1))
w2 = w2 + ' ' * (len(w1) - len(w2))
return sum(1 if i == j else 0 for i, j in zip(w1, w2)) / float(len(w1))
https://stackoverflow.com/questions/17388213
复制相似问题