名称匹配-编辑距离

背景:

    此次项目其中一个任务为公司名称匹配,因此需要用到编辑距离。名称匹配包括中英文,所以针对中英文有不同的计算方法:首先观察中英文名称特征,国内公司一般以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)我想了一个方法就是以空格切分,除去相同单词计算不同字符的编辑距离,这样可以找到因时态单复数影响匹配不到的记录

猜你喜欢

转载自www.cnblogs.com/RQH-nlp/p/9817000.html
今日推荐