基于信息熵的对象名称匹配方法
【技术领域】
[0001]本发明涉及数据处理技术领域,尤其涉及一种基于信息熵的对象名称匹配方法。
【背景技术】
[0002]对象识别又称记录匹配,其目的是从(不可靠的)各种数据源中识别出表示同一现实对象的记录。对象识别在数据清洗、数据集成、数据分析等应用中具有重要作用。对象识别所用的数据中,一类普遍遇到且非常重要的数据是名称类数据,如机构名称、药品名称、建筑物名称等。如何有效的计算出两个名称之间的相似度对对象识别至关重要。
[0003]名称匹配的结果通常通过比较字符串相似度来得出。现有的字符串相似度计算方法包括编辑距离、向量空间、Q-Gram等。但是,现有的字符串相似度计算方法不能很好的识别两个对象名称之间内在的相似度。例如,传统的Q-Gram计算方法判断“深圳市华傲数据技术有限公司”与“华傲数据技术有限公司”的相似度较低为0.74,但人们很容易判别出这两个名字实际上代表同一家企业;传统的Q-Gram计算方法判断“天津市南开区宏业汽车配件经营部”与“天津市南开区久晟汽车配件经营部”之间的相似度为0.76,但人们知道它们代表的是两家企业。因此,用户利用传统的Q-Gram计算方法进行对象名称匹配时,会得出一些不正确的结论,无法有效识别两个对象名称之间的相似度。
【发明内容】
[0004]本发明的目的在于提供一种基于信息熵的对象名称匹配方法,改进两个对象名称之间相似度的识别。
[0005]为实现上述目的,本发明提供一种基于信息熵的对象名称匹配方法,包括:
[0006]步骤10、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算;
[0007]步骤20、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵;
[0008]步骤30、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列;
[0009]步骤40、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息j:商,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和;
[0010]步骤50、求该第一和第二 Q-Gram字符串序列内所有Q-Gram字符串的信息熵的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息商差difference为O ;
[0011]步骤60、对于该并集内每个Q-Gram字符串token及其信息摘entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息j:商差为:
numl-num2 X entropy,并加到总信息摘差 difference 上;
[0012]步骤70、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy — difference)/totalEntropy。
[0013]其中,所述Q-Gram 为 2_Gram。
[0014]其中,所述Q-Gram 为 3_Gram。
[0015]其中,字符的信息摘=log(totalNum/freq)。
[0016]其中,所述对象名称为机构名称、药品名称或建筑物名称。
[0017]其中,所述对象名称包含中文字符或英文字符。
[0018]为实现上述目的,本发明还提供了一种基于信息熵的对象名称匹配方法,包括:
[0019]步骤1、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算;
[0020]步骤2、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵;
[0021]步骤3、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列;
[0022]步骤4、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和;
[0023]步骤5、求该并集内所有Q-Gram字符串的信息摘的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息摘差difference为O ;
[0024]步骤6、对于该并集内每个Q-Gram字符串token及其信息摘entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息j:商差为:
numl-num2 X entropy,并加到总信息摘差 difference 上;
[0025]步骤7、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy —difference)/totalEntropy。
[0026]其中,所述Q-Gram 为 2-Gram 或 3-Gram。
[0027]其中,字符的信息摘=log(totalNum/freq) ο
[0028]其中,所述对象名称为机构名称、药品名称或建筑物名称。
[0029]其中,所述对象名称包含中文字符或英文字符。
[0030]综上所述,本发明基于信息熵的对象名称匹配方法能够有效识别两个对象名称之间的相似度,处理名称类数据匹配问题效果更佳。
【附图说明】
[0031]图1为本发明基于信息熵的对象名称匹配方法的流程图。
【具体实施方式】
[0032]下面结合附图,通过对本发明的【具体实施方式】详细描述,将使本发明的技术方案及其有益效果显而易见。
[0033]参见图1,其为本发明基于信息熵的对象名称匹配方法的流程图。
[0034]主要包括:
[0035]步骤10、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算。
[0036]步骤20、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵。
[0037]本发明考虑到名称每个字符在整个名称中的权重是不一样的,有些字符是很关键的,而有些字符在某些场合些通常会忽略,如机构名称“深圳市华傲数据技术有限公司”中,“深圳市”3个字符代表企业所处区域,当在某个特定区域内计算一批机构名之间的相似度时(如识别所有广东省内的企业),这个3个字符通常是无关紧要的;“华傲”是名称中最关键的部分;“数据技术”代表企业的类别,有一定的参考意义;“有限公司”代表企业的性质,通常在比较时也是无关紧要的。因此比较名称时需要区分每个字符的权重。本发明的方案是基于Q-Gram计算相似度的方法,同时利用了每个字符的信息熵。
[0038]字符的信息商可以用公式log(totalNum/freq)来计算,log可以取2、e或其它任意适合的常数为底。在本发明中,字符的信息熵的计算公式可以根据如下条件选定:如果某个字符出现的越频繁,其信息含量越低;反之,说明其信息含量高,对对象的区分更有价值。
[0039]通过步骤10和20计算得出所有字符的信息熵,用于接下来计算两个对象名称的相似度。
[0040]步骤30、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列。
[0041]假设对象名称I为strl,对象名称2为str2。
[0042]在第一较佳实施例中,分别将strl、str2转换成2_Gram字符串序列strlTokens、str2Tokens,即每连续的2个字符组成一个新字符串,如“南开区天诚医药保健品研宄所”对应的2-Gram字符串序列:
[0043][南开,开区,区天,天诚,诚医,医药,药保,保健,健品,品研,研宄,宄所]。
[0044]或者,在第二较佳实施例中,分别将strl、str2转换成3_Gram字符串序列strlTokens、str2Tokens,即每连续的3个字符组成一个新字符串,如“南开区天诚医药保健品研宄所”对应的3-Gram字符串序列:
[0045][南开区,开区天,区天诚,天诚医,诚医药,医药保,药保健,保健品,健品研,品研宄,研宄所]。
[0046]步骤40、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和。
[0047]在第一较佳实施例中,计算每个2-Gram字符串的信息熵。
[0048]或者,在第二较佳实施例中,计算每个3-Gram字符串的信息熵。
[0049]步骤50、求该第一和第二 Q-Gram字符串序列内所有Q-Gram字符串的信息熵的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息摘差difference为O。
[0050]也就是求strlTokens、str2Tokens内每个字符串信息摘的总和,记为totalEntropy,并且初始化2个名称的总信息摘差difference为O。
[0051]步骤60、对于该并集内每个Q-Gram字符串token及其信息摘entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息熵差为:|numl_num2| Xentropy,并加到总信息摘差 difference 上。也
就是 difference+ =numl_num2| X entropyο
[0052]步骤70、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy — difference)/totalEntropy。
[0053]至此,2个对象名称之间的相似度计算完毕。
[0054]本发明基于信息熵的对象名称匹配方法可以适合于各类对象名称,特别是机构名称、药品名称或建筑物名称,而且优选适用于同一类待识别对象名称的匹配,例如,待识别数据均为机构名称,均为药品名称或均为建筑物名称。对象名称中可以包含中文字符或英文字符,其它语言的字符,或其它符号。
[0055]实验表明,相比于原始的Q-Gram计算相似度的方法,本发明的计算效果有明显的改善,例如:
[0056]在第一较佳实施例中采用2-Gram时,
[0057]1.对于“天津市南开区宏业汽车配件经营部”与“天津市南开区久晟汽车配件经营部”,原始Q-Gram相似度为0.765,本方法计算出的值为0.656,本方法更能区分它们属于不同的企业;
[0058]2.对于“天津市南开区星辰计算机耗材经营部”和“天津市南开区顺惟计算机耗材经营部”,原始Q-Gram相似度为0.778,本方法计算出的值为0.654,同样更具有区分度;
[0059]3.对于“南开区天诚医药保健品研宄所”和“天津市南开区天诚医药保健品研宄所”,原始Q-Gram相似度为0.788,本方法计算出的值为0.986,本方法更能揭示它们代表同一家企业;
[0060]在第二较佳实施例中采用3-Gram时,
[0061]1.对于“天津市南开区宏业汽车配件经营部”与“天津市南开区久晟汽车配件经营部”,原始Q-Gram相似度为0.765,本方法计算出的值为0.571,本方法更能区分它们属于不同的企业;
[0062]2.对于“天津市南开区星辰计算机耗材经营部”和“天津市南开区顺惟计算机耗材经营部”,原始Q-Gram相似度为0.778,本方法计算出的值为0.586,同样更具有区分度;
[0063]3.对于“南开区天诚医药保健品研宄所”和“天津市南开区天诚医药保健品研宄所”,原始Q-Gram相似度为0.788,本方法计算出的值为0.977,本方法更能揭示它们代表同一家企业。
[0064]在第三较佳实施例中,本发明还提供了一种基于信息熵的对象名称匹配方法,包括:
[0065]步骤1、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算;
[0066]步骤2、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵;
[0067]步骤3、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列;
[0068]步骤4、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和;
[0069]步骤5、求该并集内所有Q-Gram字符串的信息摘的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息摘差difference为O ;
[0070]步骤6、对于该并集内每个Q-Gram字符串token及其信息商entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息j:商差为:
numl-num2 X entropy,并加到总信息摘差 difference 上;
[0071]步骤7、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy —difference)/totalEntropy。
[0072]该第三较佳实施例与第一或第二较佳实施例的区别在于步骤5中是求并集内所有Q-Gram字符串的信息j:商的总和totalEntropy,相对减小了 totalEntropy,放大了difference对相似度的影响,相比于原始的Q-Gram计算相似度的方法,计算效果同样有明显的改善。
[0073]综上所述,本发明基于信息熵的对象名称匹配方法能够有效识别两个对象名称之间的相似度,处理名称类数据匹配问题效果更佳。
[0074]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于信息熵的对象名称匹配方法,其特征在于,包括: 步骤10、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算; 步骤20、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵; 步骤30、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列;步骤40、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和; 步骤50、求该第一和第二 Q-Gram字符串序列内所有Q-Gram字符串的信息熵的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息商差difference为O ; 步骤60、对于该并集内每个Q-Gram字符串token及其信息摘entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息j:商差为:numl-num2 X entropy,并加到总信息摘差 difference 上; 步骤70、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy —difference)/totalEntropy。2.根据权利要求1所述的基于信息熵的对象名称匹配方法,其特征在于,所述Q-Gram为 2-Gram。3.根据权利要求1所述的基于信息熵的对象名称匹配方法,其特征在于,所述Q-Gram为 3_Gram04.根据权利要求1所述的基于信息熵的对象名称匹配方法,其特征在于,字符的信息火商=log (totalNum/freq) ο5.根据权利要求1所述的基于信息熵的对象名称匹配方法,其特征在于,所述对象名称为机构名称、药品名称或建筑物名称。6.根据权利要求1所述的基于信息熵的对象名称匹配方法,其特征在于,所述对象名称包含中文字符或英文字符。7.一种基于信息熵的对象名称匹配方法,其特征在于,包括: 步骤1、收集所有待识别对象名称,统计每个字符出现的次数freq以及对象名称的总数totalNum,如果字符在一对象名称中出现多次按一次计算; 步骤2、对每个字符,根据对象名称的总数totalNum及字符出现的次数freq之间的比值计算字符的信息熵; 步骤3、将第一对象名称和第二对象名称分别转换为第一和第二 Q-Gram字符串序列;步骤4、计算该第一和第二 Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵,Q-Gram字符串的信息熵为Q-Gram字符串中每个字符的信息熵之和; 步骤5、求该并集内所有Q-Gram字符串的信息j:商的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息摘差difference为O ; 步骤6、对于该并集内每个Q-Gram字符串token及其信息摘entropy,将token在该第一 Q-Gram字符串序列中出现的次数记为numl,将token在该第二 Q-Gram字符串序列中出现的次数记为num2,如果没有出现则相应的次数为O ;计算token对应的信息j:商差为:numl-num2 X entropy,并加到总信息摘差 difference 上; 步骤7、计算得出该第一对象名称和第二对象名称的相似度为:(totalEntropy —difference)/totalEntropy。8.根据权利要求7所述的基于信息熵的对象名称匹配方法,其特征在于,所述Q-Gram为 2-Gram 或 3-Gram。9.根据权利要求7所述的基于信息熵的对象名称匹配方法,其特征在于,字符的信息火商=log (totalNum/freq) ο10.根据权利要求7所述的基于信息熵的对象名称匹配方法,其特征在于,所述对象名称为机构名称、药品名称或建筑物名称。
【专利摘要】本发明涉及一种基于信息熵的对象名称匹配方法。该方法包括:步骤10、收集所有待识别对象名称;步骤20、计算每个字符的信息熵;步骤30、将第一对象名称和第二对象名称分别转换为第一和第二Q-Gram字符串序列;步骤40、计算该第一和第二Q-Gram字符串序列的并集内每个Q-Gram字符串的信息熵;步骤50、求该第一和第二Q-Gram字符串序列内所有Q-Gram字符串的信息熵的总和totalEntropy,初始化该第一对象名称和第二对象名称的总信息熵差difference为0;步骤60、对于该并集内每个q-Gram字符串token及其信息熵entropy,计算token对应的信息熵差,并加到总信息熵差difference上;步骤70、计算该第一对象名称和第二对象名称的相似度。本发明基于信息熵的对象名称匹配方法能够有效识别两个对象名称之间的相似度。
【IPC分类】G06F17/27, G06F17/30
【公开号】CN104899189
【申请号】CN201510280012
【发明人】王明兴, 贾西贝
【申请人】深圳市华傲数据技术有限公司
【公开日】2015年9月9日
【申请日】2015年5月27日