python字符串模糊匹配_Python中的模糊字符串匹配

我有两个超过一百万个名称的列表,命名约定略有不同.这里的目标是匹配那些相似的记录,具有95%置信度的逻辑.

我知道有一些我可以利用的库,比如Python中的FuzzyWuzzy模块.

然而,就处理而言,似乎将占用太多资源,将1个列表中的每个字符串与另一个列表进行比较,在这种情况下,似乎需要100万乘以另外的百万次迭代次数.

这个问题还有其他更有效的方法吗?

更新:

所以我创建了一个bucketing函数,并应用了一个简单的规范化,即删除空格,符号并将值转换为小写等…

for n in list(dftest['YM'].unique()):

n = str(n)

frame = dftest['Name'][dftest['YM'] == n]

print len(frame)

print n

for names in tqdm(frame):

closest = process.extractOne(names,frame)

通过使用pythons pandas,将数据加载到按年分组的较小桶中,然后使用FuzzyWuzzy模块,process.extractOne用于获得最佳匹配.

结果仍然有点令人失望.在测试期间,上面的代码用于仅包含5千个名称的测试数据框,并且占用将近一个小时.

测试数据被拆分.

>姓名

>出生日期的年月

我正在用他们的YM在同一桶中的桶进行比较.

问题可能是因为我使用的FuzzyWuzzy模块?感谢任何帮助.

解决方法:

这里有几种级别的优化可以将此问题从O(n ^ 2)转换为较小的时间复杂度.

>预处理:在第一

你可能感兴趣的:(python字符串模糊匹配)