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

我有两个超过一百万个名称的列表,命名约定略有不同.这里的目标是匹配那些相似的记录,具有95%置信度的逻辑.我知道有一些我可以利用的库,比如Python中的FuzzyWuzzy模块.然而,就处理而言,似乎将占用太多资源,将1个列表中的每个字符串与另一个列表进行比较,在这种情况下,似乎需要100万乘以另外的百万次迭代次数.这个问题还有其他更有效的方法吗?更新:所以我创建了一个bucketing函数,并...
摘要由CSDN通过智能技术生成

我有两个超过一百万个名称的列表,命名约定略有不同.这里的目标是匹配那些相似的记录,具有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)转换为较小的时间复杂度.

>预处理:在第一

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值