如何在Python中获得字符串与另一个字符串类似的概率?
我想获得像0.9(意味着90%)等十进制值.最好使用标准的Python和库.
例如
similar("Apple","Appel") #would have a high prob.
similar("Apple","Mango") #would have a lower prob.
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以进行简单的模糊字符串比较的 Python 模块。具体来说,我想要字符串相似程度的百分比。我知道这可能是主观的,所以我希望找到一个可以进行位置比较以及最长相似字符串匹配等的库。
基本上,我希望找到足够简单的东西来产生单个百分比,同时仍然足够可配置,以便我可以指定要进行的比较类型。
假设我的程序收到一个输入,例如一串具有任何类型字符的字符.例如,'Bob's Bagel Shop'.然后它得到另一个字符串,上面写着'Fred's Bagel Store'.如何在python中使用正则表达式或其他模块来比较这些并让我的程序告诉我,如果字符串中的任何字符串中的至少5个(或任何我想要的数字)是相同的,但是所有字符都在相同的顺序中,比如'Bagel'这个词?
谢谢.
我有以下两个字符串:
a = 'bjork gudmundsdottir'
b = 'b. gudmundsson gunnar'
Run Code Online (Sandbox Code Playgroud)
两者之间的 Levenshtein 距离是12。当我使用以下公式计算 Levenshtein 距离时,我得到了0.01与python-Levenshtein库的差异:
>>> Ldist / max(len( a ), len( b ))
>>> float(12)/21
0.5714285714285714
# python-Levenshtein
Levenshtein.ratio(a,b)
0.5853658536585366
# difflib
>>> seq=difflib.SequenceMatcher(a=a,b=b)
>>> seq.ratio()
0.5853658536585366
Run Code Online (Sandbox Code Playgroud)
造成这种差异的原因是什么?我在计算中做错了什么。请注意,我已经回顾了这个How python-Levenshtein.ratio 计算类似的问题,它并没有完全回答我的问题。
有人可以解释一下用于计算上述比率的公式吗?