发明内容
为解决上述问题,本发明提供一种基于统计学的企业名称相似度计算方法,包括如下步骤:
S100:建立分词工具:收集某区域所有的企业名称,并对所获取的企业名称进行分词,计算每个词的凝固度和自由度;将凝固度和自由度满足条件的新词加入ANSJ分词工具词汇库中;
S200:获取IDF值表:利用S100获得的分词工具对企业名称数据集中的每个企业名称进行分词,获得每个企业名称的词条集合,并对每个企业名称的词条集合中的每个词计算IDF值;
S300:计算不同企业名称的相似度:根据S200所获得的每个企业名称的词条集合中的每个词计算IDF值,获得需要对比的不同企业名称分词得到的词汇所对应的IDF值,计算不同企业名称的相似度。
进一步地,S100的具体步骤如下:
S110:收集某区域所有的企业名称,得到企业名称数据集;对企业名称数据集进行分词,并统计每个词、每个词的左邻字和每个词的右邻字的数量;
S120:通过S110中获得的企业名称数据集中的每个词、每个词的左邻字和每个词的右邻字的数量,计算企业名称数据集中的每个词的凝固度和自由度,根据所计算的结果,判断企业名称数据集中的每个词是否成词;
S130:将S120中所确定的词与ANSJ分词工具词汇库中的词进行对比,如果从企业名称数据集中提取的词在ANSJ分词工具词汇库中并不存在,则将不存在于ANSJ分词工具词汇库中的词加入ANSJ分词工具词汇库中。
进一步地,S120中企业名称数据集中的每个词的凝固度和自由度计算方法如下:
凝固度:
左邻字自由度:
右邻字自由度:
其中:第i个词出现的数量用xi表示,第i个词出现的左邻字集合为 为第i个词中出现的第m个左邻字的数量,第i个词出现的右邻字集合为 为第i个词中出现的第k个右邻字的数量;表示每个词出现的数量总和,第i个词由集合C(xi)={xi1,xi2,L,xij}组成,xij表示第i个词中第j个组成词的数量。
进一步地,如果某个词凝固度大于100,并且左右自由度大于1.3,则认为这个词能够成词。
进一步地,S200中IDF值的计算方法具体如下:
其中,D为企业名称数据集中企业数量,{j:tk∈dj}表示词k在所有企业中出现的次数。
进一步地,S300中,两个不同企业名称的相似度计算方法如下:
根据S100获得的分词工具获取两个不同企业名称词条集合,则两个企业名称相似度的计算公式如下:
其中,相同的词表示为S={s1,L,sp},为相同词的IDF值之和,为数据服务提供方获得的企业名称词条集合中每个词的IDF值之和。
进一步地,S400中获取不同企业名称词条集合中每个词的IDF值时,对原IDF值表中的值进行f(x)=x4处理,获得计算相似度时所需的IDF值。
本发明提供的基于统计学的企业名称相似度计算方法,较传统的编辑距离,余弦相似度计算等字符串相似度计算方法具有更高的鲁棒性和可信性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种基于统计学的企业名称相似度计算方法,包括如下步骤:
S100:建立分词工具:收集某区域所有的企业名称,并对所获取的企业名称进行分词,计算每个词的凝固度和自由度;将凝固度和自由度满足条件的新词加入ANSJ分词工具词汇库中;
S100的具体步骤如下:
S110:收集某区域所有的企业名称,得到原始企业名称数据集;对原始企业名称数据集进行分词,并统计每个词左邻字和右邻字的数量;
S120:计算S110获得的原始企业名称数据集中的每个词的凝固度和自由度,根据所计算的结果,判断原始企业名称数据集中的每个词是否成词;
S130:将S120中所确定的词与ANSJ分词工具词汇库中的词进行对比,如果从原始企业名称数据集中提取的词在ANSJ分词工具词汇库中并不存在,则将ANSJ分词工具词汇库中不存在的提取词加入ANSJ分词工具词汇库中。
具体地,第i个词出现的数量用xi表示,第i个词出现的左邻字集合为 为第i个词中出现的第m个左邻字的数量,第i个词出现的右邻字集合为 为第i个词中出现的第k个右邻字的数量。
例如:企业名称为“易联众信息技术股份有限公司”,通过特定步长来进行分词,如果词的字符数最小为2,最大为3,步长为1,则得到的分词结果为:“易联”、“易联众”、“联众”、“联众信”、“众信”、“众信息”、“信息”、“信息技”、“息技”、“息技术”、“技术”、“技术股”、“术股”、“术股份”、“股份”、“股份有”、“份有”、“份有限”、“有限”、“有限公”、“限公”、“限公司”。其中“信息”的左邻字为“众”,右邻字为“技”;研究中使用的最小字符数为2,最大字符数为4,步长为1;
优选地,S120中原始企业名称数据集中的每个词的凝固度和自由度计算方法如下:
凝固度:
左邻字自由度:
右邻字自由度:
其中:第i个词出现的数量用xi表示,第i个词出现的左邻字集合为 为第i个词中出现的第m个左邻字的数量,第i个词出现的右邻字集合为 为第i个词中出现的第k个右邻字的数量;表示每个词出现的数量总和,第i个词由集合C(xi)={xi1,xi2,L,xij}组成,xij表示第i个词中第j个组成词的数量;
凝固度是指一个新词单独出现的频次很高,远高于其组合词的概率之和。例如一个新词由AB两个词组成,如果AB两个词是独立分布的话,则其概率为P(AB)≈P(A)P(B);如果不是独立分布的,则AB两个词同时出现的概率远远大于A词和B词各自出现概率的乘积,用P(AB)>>P(A)P(B)表示,说明AB可能为一个新词;
自由度是判断一个词是否成词的重要标准。如果一个文本片段能够算作一个词的话,它应该能够灵活地出现在各种不同的环境中,具有非常丰富的左邻字集合和右邻字集合;
优选地,通过多次测试,如果某个词凝固度大于100,并且左右自由度大于1.3,则认为这个词能够成词,并将分词过程中所获得的新词加入ANSJ分词工具词汇库中;
举例说明:例如词“股份”其在所有企业名称中出现了1000次,语料库中获取总共出现词次数1000000,则P(股份)=1000/1000000=0.001,而“股”出现了2000次,“份”出现了2000次,则P(股)=2000/100000=0.002,P(份)=2000/100000=0.002,则Unite(股份)=0.001/(0.002*0.002)=250,而“股份”的左邻接字出现“限,术,科”,“限”出现10次,“术”出现5次,“科”出现30次,则LeftEntropy(股份)=-(10/45)log(10/45)-(5/45)log(5/45)-(30/45)log(30/45)=0.8486,同理,“股份”的右邻字自由度计算方式与左邻字自由度计算方式一致。
S200:获取IDF值表:利用S100获得的分词工具对企业名称数据集中的每个企业名称进行分词,获得每个企业名称的词条集合,并对每个企业名称的词条集合中的每个词计算IDF值;
优选地,S200中IDF值的计算方法具体如下:
其中,D为数据集中企业数量,{j:tk∈dj}表示词k在所有企业中出现的次数;
举例说明:企业名称“易联众信息技术股份有限公司”通过分词之后,变为“易联众”、“信息”、“技术”、“股份”、“有限公司”,词“易联众”在其他企业名称中出现10次,总共企业数量有100000家,则IDF(“易联众”)=log(100000/20)=9.21034。
S300:计算不同企业名称的相似度:根据S200所获得的每个企业名称的词条集合中的每个词计算IDF值,获得需要对比的不同企业名称分词得到的词汇所对应的IDF值,计算不同企业名称的相似度;
优选地,S300中,两个不同企业名称的相似度计算方法如下:
根据S100获得的分词工具获取两个不同企业名称词条集合,假定用户输入的企业名称为company1,数据服务提供方获得的企业名称为company2,通过步骤1获得的分词工具对两个名称进行分词,得到词集合company1={x1,L,xn},company2={y1,L,ym};
将企业名称词集合中的词与IDF值表进行比对,获取每个词的IDF值,由于IDF是log计算,其会影响词的区分度,因此,在获取IDF值时,会对原IDF值表中的值进行f(x)=x4处理,从而拉开词的区分度,获得最终的IDF值;
两个企业名称相似度的计算公式如下:
其中,相同的词表示为S={s1,L,sp},为相同词的IDF值之和,为数据服务提供方获得的企业名称词条集合中每个词的IDF值之和。此相似度是为了杜绝用户输入的企业名称,其企业名称主体与目标企业名称主体一致,但用户输入的企业名称中存在过多影响词,从而用传统的余弦相似度计算其相似度偏低的问题。例如:用户输入的是“易联众信息技术股份有限公司福建自贸试验区福州分公司”,其目标企业为“易联众信息技术股份有限公司”,由于“自贸”、“试验区”等词的IDF值较高,如果用余弦相似度计算,其相似度值为0.158,但是用此方法其相似度为0.8577,比较贴合检索实际。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。