在 Python 中如何获得一个字符串与另一个字符串相似的概率?
我想得到一个十进制值,如 0.9(表示 90%)等。最好使用标准 Python 和库。
例如
similar("Apple","Appel") #would have a high prob.
similar("Apple","Mango") #would have a lower prob.
原文由 tenstar 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 中如何获得一个字符串与另一个字符串相似的概率?
我想得到一个十进制值,如 0.9(表示 90%)等。最好使用标准 Python 和库。
例如
similar("Apple","Appel") #would have a high prob.
similar("Apple","Mango") #would have a lower prob.
原文由 tenstar 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 difflib 中的 SequenceMatcher
优点:原生 python 库,不需要额外的包。
缺点:太有限了,还有很多其他好的字符串相似性算法。
_例子_:
>>> from difflib import SequenceMatcher
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
它是一个非常好的库,覆盖面广,问题少。它支持:
- 编辑距离
- Damerau-Levenshtein 距离
- 哈罗距离
- Jaro-Winkler 距离
- 匹配评分方法比较
- 汉明距离
优点:易于使用,支持算法的范围,经过测试。
缺点:不是本地库。
_例子_:
>>> 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
原文由 Iman Mirzadeh 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
有一个内置的。
使用它: