【发布时间】:2009-09-24 11:43:00
【问题描述】:
我想找出两个字符串之间的字符串相似度。 This 页面有其中一些示例。 Python 的实现为Levenshtein algorithm。在这些限制下是否有更好的算法(希望是 python 库)。
- 我想在字符串之间进行模糊匹配。例如matches('Hello, All you people', 'hello, all You people') 应该返回True
- 假阴性是可以接受的,假阳性是可以接受的,极少数情况除外。
- 这是在非实时设置中完成的,因此速度不是(太多)问题。
- [编辑] 我在比较多字串。
除了 Levenshtein 距离(或 Levenshtein 比率)以外的其他算法是否适合我的情况?
【问题讨论】:
-
关于第 2 点:阅读:en.wikipedia.org/wiki/Receiver_operating_characteristic。根据您的第 2 点,最好的相似度指标是仅调用相同的字符串相似。超出此范围的任何模糊都会产生误报。
-
嗯.. 那么接近人类智能的无错误就是我要寻找的。例如。人类可以得出结论,Appel 可能与 Apple 相同,但 Ape 不是。可能没有把我的观点说清楚。
-
(1) “无错误”是不可能的,即使完全匹配也是如此。 “苹果”(水果)!=“苹果”(电脑等制造商)。 (2)如果“接近人类的智能”可用,它既不是在一大堆代码中,也不是免费的。 (3) 考虑使用允许换位的方法——将 appel/apple 的排名高于 ape/apple 和ape/appel。
标签: python algorithm string levenshtein-distance