名称匹配-编辑距离

背景:

    此次项目其中一个任务为公司名称匹配,因此需要用到编辑距离。名称匹配包括中英文,所以针对中英文有不同的计算方法:首先观察中英文名称特征,国内公司一般以XX(省份|市|区|县)XX(公司标志名称)XX(公司性质:科技|技术发展)有限公司|股份有限公司|有限责任公司|分公司,对应的英文也是如此eg,beijing XX technology co.,ltd.

ratio:一般用于长字符匹配

jaro_winker:用于短字符匹配,会给第一个字符相同的数据赋予较高的值

实施:

中文部分:

1.用正则表达式去除有限公司|股份有限公司|有限责任公司|分公司(re.sub(r'有限公司|股份有限公司|有限责任公司|分公司','',string))同时也可以建立地名词典去除前面地点,防止有的公司省略地点名,定义函数get_sub()实现此模块

2.爬取企业信息曾用名辅助匹配

 

condition[i==j,get_sub(i)==get_sub(j),ratio(get_sub(i),get_sub(j))>0.85]

此处采坑:由于查找字典数据较大,用any()条件判断会计算所有的condition才会执行将匹配到的结果添加进字典,故需要定义一个函数,只要满足一个条件即跳转,按照计算量的大小写入condition中进行判断(最后完成后才知道用哈希表匹配更快)

英文部分:

由于中国公司的英文名相同字符较多eg.beijing XX technology coltd 这种模式下可以是很多家公司,所以在匹配全字相等后(忽略特殊符号,忽略大小写,简写egcompany limited -co.,ltd   croporation-crop incroporationed--INC)我想了一个方法就是以空格切分,除去相同单词计算不同字符的编辑距离,这样可以找到因时态单复数影响匹配不到的记录

转载于:https://www.cnblogs.com/RQH-nlp/p/9817000.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值