更好的模糊匹配性能?

Chr*_*ong 3 python performance fuzzy-comparison difflib levenshtein-distance

我目前使用的方法get_close_matches从法difflib迭代通过15000个字符串列表以获得对大约15000串的另一个列表最接近的匹配:

a=['blah','pie','apple'...]
b=['jimbo','zomg','pie'...]

for value in a:
    difflib.get_close_matches(value,b,n=1,cutoff=.85)
Run Code Online (Sandbox Code Playgroud)

每个值需要 0.58 秒,这意味着完成循环需要 8,714 秒或 145 分钟。是否有其他库/方法可能更快或提高此方法的速度?我已经尝试将两个数组转换为小写,但它只会导致速度略有增加。

hob*_*obs 5

fuzzyset指数字符串通过自己的双字母组和卦所以它找到近似匹配的O(日志(N)) VS O(N)difflib。对于我的 100 万个以上单词和单词对的模糊集,它可以在大约 20 秒内计算出索引,并在不到 100 毫秒的时间内找到最接近的匹配项。


Igg*_*boo 1

尝试这个

https://code.google.com/p/pylevenshtein/

Levenshtein Python C 扩展模块包含用于快速计算的函数 - Levenshtein(编辑)距离和编辑操作 - 字符串相似度 - 近似中值字符串,以及一般字符串平均 - 字符串序列和集合相似度 它支持普通字符串和 Unicode 字符串。