2024-05-17 04:36:04 发布
网友
如何获得一个字符串与Python中另一个字符串相似的概率?
我想得到一个十进制值,比如0.9(意味着90%)等,最好是使用标准的Python和library。
例如
similar("Apple","Appel") #would have a high prob. similar("Apple","Mango") #would have a lower prob.
我想也许你在找一个描述字符串之间距离的算法。以下是一些您可以参考的:
有一个内置的。
from difflib import SequenceMatcher def similar(a, b): return SequenceMatcher(None, a, b).ratio()
使用它:
>>> similar("Apple","Appel") 0.8 >>> similar("Apple","Mango") 0.0
使用difflib中的SequenceMatcher
专业人士: 本机python库,不需要额外的包。缺点:太有限了,还有很多其他很好的字符串相似性算法。
>>> from difflib import SequenceMatcher >>> s = SequenceMatcher(None, "abcd", "bcde") >>> s.ratio() 0.75
这是一个很好的图书馆,覆盖面广,发行量少。 它支持: -Levenshtein距离 -Damerau Levenshtein距离 -Jaro距离 -Jaro Winkler距离 -匹配评分法比较 -汉明距离
专业人士: 易于使用,各种支持的算法,经过测试。cons:不是本机库。
示例:
>>> import jellyfish >>> jellyfish.levenshtein_distance(u'jellyfish', u'smellyfish') 2 >>> jellyfish.jaro_distance(u'jellyfish', u'smellyfish') 0.89629629629629637 >>> jellyfish.damerau_levenshtein_distance(u'jellyfish', u'jellyfihs') 1
我想也许你在找一个描述字符串之间距离的算法。以下是一些您可以参考的:
有一个内置的。
使用它:
解决方案1:Python内置
使用difflib中的SequenceMatcher
专业人士: 本机python库,不需要额外的包。
示例:缺点:太有限了,还有很多其他很好的字符串相似性算法。
解决方案2:jellyfish库
这是一个很好的图书馆,覆盖面广,发行量少。 它支持:
-Levenshtein距离
-Damerau Levenshtein距离
-Jaro距离
-Jaro Winkler距离
-匹配评分法比较
-汉明距离
专业人士: 易于使用,各种支持的算法,经过测试。
cons:不是本机库。
示例:
相关问题 更多 >
编程相关推荐