免费起名核名

公司起名_公司起名字大全免费

工商核名

公司核名_工商核名查询系统官网
开公司想不出好名字? 企名网为您推荐
已为 家公司推荐名字
如:贵州企通达财务咨询有限公司,城市是“上海”,行业是“科技”
公司起名,需要注意哪些事项?

工商核名

非常重要,真实有效的号码才能收到核名结果

查询成功

稍后将有工作人员告知您查询结果,感谢您的耐心等待!

公司名称匹配算法

发表日期:2022-12-10 08:39:06

Dataxon微信官方账号

在项目中,两个独立的系统需要匹配公司名称来实现数据通信。一个体系有40万家公司,另一个体系有3600家公司。如果两个系统以SQL LIKE的形式直接链接,发现只能匹配到1100多个公司名称。如果剩下的2500家左右的公司需要通过纯人工的方式进行人工匹配,不仅工作量大而且效率低。

通过对不良案例的分析,发现公司名称不匹配主要存在两个问题:

公司的简称往往是人们根据习惯约定的,没有标准的形式。例如,的缩写,它使用公司全名的一部分作为缩写,可以通过字符串包含轻松匹配。而很多公司的缩写是其他形式的,比如“‘is’的缩写”,是由公司全称的不同部分拼接而成,直接通过字符串模糊匹配很难达到很好的效果。另外,有些公司可能会有很多缩写,比如有些人的缩写,有些人的缩写。

总之,各种缩写使得匹配时很难正确识别字符串。传统的解决方案通常是维护公司全称和简称之间的映射关系,作为共同的知识库。但是,如果我们仅仅依靠公共知识库来解决这个问题,由于公司数量众多,并且随着时间的推移而发生变化,维护和更新公共知识库将成为一个大问题。

例如,的缩写是,但是当你以LIKE的形式取系统进行匹配时,你会发现总共有35个带有子字符串的公司全称,其中一些子字符串如下:

北京大岳文化传播有限公司成都岳跃文化传播有限公司杭州一岳文化传媒有限公司北京丁岳文学信息技术有限公司深圳华月文化传媒有限公司上海秦岳文化科技发展有限公司这些匹配的公司全称所包含的匹配子串往往是语义碎片化的,但直接包含匹配无法进行语义切分,导致匹配错误率随着缩写词的减少而增加。

基于上述问题,处理公司名称匹配的工作主要分为两部分:

数据清洗,主要是通过分词对公司全称进行拆解,并结合可能的简称形式;模糊匹配,主要基于最短编辑距离算法,计算待猜短名和待匹配短名的匹配得分,然后通过筛选匹配得分最高的,找到最佳匹配结果。

以下是对各部分工作的详细介绍:

公司名称一般由四部分组成:地区、关键字(x)、行业和公司后缀(Org_Suffix)。

比如地区是,是关键词,是行业字,公司后缀,这样我们就可以用RXIO来表示这家公司的名称结构。

其他结构的公司名称也可以用类似的方式表示,例如:

在实现方面,使用了分词工具jieba[1]提供的词性标注功能。因为词性标注需要提前分词然后识别每个词的词性,所以这一块的准确性和使用的分词工具、分词模式有一定的关系。

比如分词后,词性标注如下,就很容易把他的结构表示为RXIIO。效果如图所示:

通过对每个标记进行分词和词性标注,可以将不同的标记分为四类:RXIO。其中公司后缀O类型数量有限,可以通过建立公司后缀词库来识别。R类可以用带词性ns(代表地名)的token直接分类。关键词X型和行业I型的识别比较模糊,所以我没有严格区分。我主要是结合词性和自定义行业词库来完成关键词和行业的分类。用上面的方法清洗完所有公司的全称后,就可以得到一条正式的数据,如图:

有了公司全称的正式表示,接下来就是猜测它可能的缩写结构了。

比如可以表示为RXO=R[1-1]X,其中R[1-1]代表第一个区域切分的第一个单词;

例如,缩写可以表示为RXO=RX,所以我们得到这个形式。公司全称可能的缩写形式有R[1]X和RX。

以此类推,通过统计一些公司全称对应的简称形式,可以得到一个规则,来表达可能对应不同形式结构的公司全称的简称形式:

同时,你可以不断地给它添加新的规则。当你将这些规则应用于https://www.zhucesz.com/步骤中获得的所有公司名称的正式表示的数据时,你可以得到与每个公司的全称相对应的一个可能的缩写形式,如图所示:

有了公司简称的所有可能组合,就可以用levenshtein算法计算它们的匹配度。如果匹配分数达到一定阈值,则可以认为是匹配的。

常用的levenshtein算法有最短编辑距离算法和余弦相似度算法,这里使用最短编辑距离算法进行匹配。最短编辑算法介绍如下:

最小编辑距离算法

给定任意两个字符串X和Y,使用以下三个操作将字符串X更改为字符串Y:

插入操作,成本为1;成本为1的删除操作;替换,代价为2,这里是Levenshtein编辑距离,其他算法中的替换代价与其他两类运算(1)相同;比如“意图”变成“执行”,有三个替换,一个删除,一个插入,那么这两个词的最短编辑距离就是8(如下图)。

更多参考:

https://www.zhucesz.com/的具体编程实现请参考:

在https://www.zhucesz.com/计算出最短的编辑距离后,它可以根据它们的字符串长度来计算其相似度。公式如下:

相关代码如下:

通过相似度计算公式,可以计算出一个公司名称所有可能的缩写形式与待匹配公司名称的相似度,然后取得分最高的一个作为两家公司的最终匹配得分。效果如下:

在查看匹配分数的时候,我们会发现有些公司的匹配结果明显错误,但是他们的匹配分数却很高。比如“时间”的缩写与“时间”的相似度最高,匹配分数为92分。但是,的短名和的熟人只考了83分。

显然,用最短的编辑距离来计算公司名称的相似度,根本就忽略了公司名称各部分权重的差异,这就导致了相同或者比关键词匹配更重要。

鉴于仅使用最短编辑算法进行匹配无法体现语义相似度,在匹配中引入了公司名称各部分的权重计算。在相同的编辑距离下,如果权重较高的词匹配,匹配度会更高。例如,关键字、行业词汇和本地名词已用分词标记,如果显示:

匹配时,分别计算各部分的匹配得分,然后根据的权重分布计算最终加权匹配得分,从而修正了直接匹配的不足,关键字部分匹配得分越高,公司最终匹配得分越高:

与SQL LIKE的原始形式仅匹配1100家公司相比,该方案增加了456家匹配分数为100的公司,789家匹配分数超过90的公司和1810家匹配分数超过80的公司。

该方案主要基于字符串模糊匹配的语义分裂和加权匹配,其效果取决于早期分词和形式分类的质量。如果公司名称不能按照语义正确拆分归类到不同的类别,后期的加权匹配效果会大打折扣。

随着人工智能的发展,基于深度学习的语义匹配已经成为NLP中的基础技术,我们也可以参考这项技术。

本文需要解决的是公司简称与全称的匹配问题。传统的字符串模糊匹配通常在匹配字符数相差很大的情况下(简称一般2 ~ 6个字符长,全名一般10个字符以上)得分较低。针对这一问题,本文总结了一些提高匹配率的途径和方法,主要包括以下四个步骤:

参考数据

[1]

街霸: https://www.zhucesz.com/