一种一对多的混合字符串融合比对方法

文档序号:6526742阅读:525来源:国知局
一种一对多的混合字符串融合比对方法
【专利摘要】本发明公开了一种一对多的混合字符串融合比对方法,将一个源字符串从一组待比对字符串中找到最相似或匹配目标字符串。首先用改进的GST*算法,再使用一种偏有序的字符串比对算法POC。结合以上两种算法分别在字符串无序、部分有序匹配方面各自的特点,将两种算法计算得到的匹配度值进行加权融合求得最终的匹配度。另外,针对同义字符串在不同场合下具有不同的表达方式,采用字符串等价替换策略,对源字符串、待比对字符串中同义字符子串等价替换成相同的字符串,大大提高两个字符串的匹配度。通过将源字符串与一组待匹配字符串分别匹配,再将各匹配度进行排序,将最高匹配度的字符串作为目标字符串,实现了一对多的混合字符串的较佳匹配。
【专利说明】一种一对多的混合字符串融合比对方法
【技术领域】
[0001]本发明属于字符串智能比对【技术领域】,具体涉及一种新型一对多的混合字符串融合比对方法。
【背景技术】
[0002]字符串比对问题是计算机科学中的一个基本问题,其研究内容在信息检索、模式识别等众多领域均有着重要的应用价值[1]_[4]。
[0003]文献I分别研究中文字符串模糊匹配算法,文献2研究了一种基于汉字聚类特征的中文字符串相似度计算方法。文献3对LCS与GST算法做了比较,GST算法是一种贪婪字符串比对算法,也是一种无序匹配算法,目前应用较广,但该算法采用了两个字符串逐个字符比较的方法,所以算法的时间复杂度较大。文献4研究了对GST算法改进后RKR-GST算法,提高了 GST算法的运行效率,但是RKR-GST算法中散列函数的选择对算法的运行影响很大。
[0004]现有的字符串比对方法往往只采用一种算法,没有能够充分利用无序字符子串和部分有序字符子串在匹配度计算时的各自特点,往往它们的比对效果并不理想。在一些某些混合字符串的实际应用中,不但要求比对的准确性高,而且要求比对的速度快。目前,通过单一的匹配度计算方法,往往很难精确地表达字符串的相似程度。
[0005]另外,现有的字符串比对方法没有考虑同义字符串可能存在不同表达方式的情况,使得现有字符串比对方法在此类情况下很难达到较准确、高匹配率的要求。
[0006]参考文献:
[0007][I]陈开渠,赵洁,彭志威.快速中文字符串模糊匹配算法[J].中文信息学报,2003,18(2):58-65
[0008][2]王静婷.基于汉字聚类特征的中文字符串相似度计算研究[J].现代图书情报技术,2011,20 (2):48-53
[0009][3]于海英.字符串相似度度量中LCS和GST算法比较[J].电子科技,2011,24(3):101-103
[0010][4]牛永洁.RKR_GST算法在_NET中的分析与实现[J].信息技术,2012,3:171-174

【发明内容】

[0011]鉴于现有技术的以上不足,本发明的目的是提供一种更准确的混合字符串融合比对方法。解决了实际应用中以单一匹配度计算方法很难达到精确表达字符串之间相似程度、同义字符串存在不同表达方式情形下现有字符串比对方法几乎失效等问题。
[0012]本发明的目的是通过以下的手段实现的:
[0013]一种一对多的混合字符串融合比对方法,对基于汉字聚类特征的由汉字、数字、英文字母组成的混合字符串的相似度进行融合比对,以提高表达字符串的相似的精确度,包括以下主要步骤:
[0014]I)取出源字符串和一组待匹配字符串;
[0015]2)读出事先在存储器中构建的字符串等价替换字典,对该组待匹配字符串中部分字符(子串)进行等价替换;利用等价替换字典,将上述在源字符串场合和待匹配字符串场合具有不同描述但含义相同的两种子串进行统一;
[0016]3)取出源字符串,依此取出等价替换后的该待匹配字符串数组中的一个待匹配字符串;
[0017]4)利用GST*算法计算源字符串与该待匹配字符串的匹配度a:
[0018]采用传统GST算法,得到两个字符串中各公共子串,将它们存入公共子串链表中。如果某个公共子串的字符长度与较长字符串字符长度的比值大于或等于0.33,则在计算匹配度时将该公共子串的字符个数乘以权重,该权重为大于I的常数;如果某个公共子串的字符长度与较长字符串字符长度的比值小于0.33、且公共子串的字符个数大于最小匹配长度,则计算匹配度时将该公共子串的字符个数直接带入计算;
[0019]5)利用偏有序字符串匹配算法POC (Partial Order Comparison, P0C)计算源字符串和待匹配字符串的匹配度b:
[0020]将两个待匹配的含有汉字、数字和英文字母的混合字符串分别称为源字符串和待匹配字符串,
[0021]首先,先搜索出 源字符串与待匹配字符串中相同的字符或汉字,记录下它们的个数,;
[0022]其次,以源字符串和待匹配字符串中较长字符串为标准,求匹配度l(match_degreel):
[0023]
匹配度1-「才洞封守域'汉.)白勺f — 100](1)
mml-[较长字符串的字个数xlooJ⑴
[0024]以其中较短字符串为标准,求匹配度2 (match_degree2):
[0025]
匹配度2 =[相J字f数XIOOI⑵
L较短字符串的字个数 _
[0026]公式(I)、(2)中口表示取整;
[0027]再次,分别比较源字符串和待匹配字符串中第I个或第2个数字与字母,最后I个或倒数第2个数字与字母,如果其中I项相等,则调整匹配度2的matCh_degree2数值为match—degree2+l:
[0028]对匹配度I和匹配度2赋予不同的权重0.41、0.59,求源字符串和待匹配字符串的最终匹配值b:
[0029]b = match_degreelX0.41+match_degree2X0.59 (3)
[0030]6)将步骤4)GST*计算所得的匹配度a和步骤5)P0C计算所得的匹配度b进行加权融合,融合方法是,如果匹配度a大于匹配度b,则最终匹配度为a;如果匹配度a小于匹配度b,则最终匹配度等于(a+b)/2;
[0031]7)将源字符串和待匹配字符串数组中每个待匹配字符串计算所获得匹配度进行排序,把最大匹配度对应的待匹配字符串,作为与源字符串最匹配的目标字符串。
[0032]在步骤4)中,先搜索出源字符串与待匹配字符串相同的各公共子串,再对不同长度的公共子串赋予不同的权重,增大了较长公共字符子串的权重。
[0033]本发明的GST*算法,针对传统GST算法存在的较短公共子串匹配度可能比较长公共子串的匹配度更大的现象,对其进行了改进:如果公共子串的字符长度与较长字符串字符长度的比值大于或等于0.33,则在计算匹配度时将该公共子串的字符个数乘以权重(大于I的常数);如果公共子串的字符长度与较长字符串字符长度的比值小于0.33、且公共子串的字符个数大于最小匹配长度,则计算匹配度时将该公共子串的字符个数直接带入计算。
[0034]在步骤5)中,将两个含有数字、字母、汉字的混合字符串分别作为源字符串和待匹配字符串;分别以其中较长字符串、较短字符串为标准,求出匹配度I和匹配度2 ;然后再比较第一个或多个数字与字母、最后一个或多个数字与字母是否相等,对匹配度2进行修改。最后对两种匹配度分别赋予不同权重,得到两个字符串之间的匹配度值。
[0035]本发明的偏有序字符串比对算法POC考虑到匹配度2更能反映实际匹配情况,因此赋予匹配度2稍微较大的权重。
[0036]本发明给出了字符串等价替换策略。比如,“高压侧”与“220KV侧”,“千伏”与“kV”,在含义上是 等价的。采用现有各类比对算法均不能准确地反映它们之间的等价关系,因此提出字符串等价替换策略。事先构建一个字符子串等价替换字典,采用:待匹配中子串=等价的源侧子串的形式,比如千伏=kV,它表示等号两侧的字符子串在含义上是相同的,等号左侧子串代表待匹配字符串中的某子串,等号右侧子串代表与左侧等价的源字符串中子串。
[0037]在做匹配度计算之前,先检查待匹配字符串中是否含有字符子串等价替换字典中各行中左侧的字符子串,如果有,则替换它为等号右侧的源侧字符子串。在此基础上,再运用本融合比对算法进行比对,计算得到相应的匹配度,这样大大提高了匹配的精确度,能够反映出参与比较两个字符串之间真实的匹配情况。
[0038]本发明适用于一对多混合字符串的比对。分别计算源字符串与一组待匹配字符串的匹配度,并将得到的各匹配度进行排序,从中找出与源字符串匹配度最大的待匹配字符串,把它确定为目标字符串,从而实现了一对多字符串的较佳匹配。
【专利附图】

【附图说明】:
[0039]图1为新型一对多字符串的融合比对方法的流程图。
[0040]图2为一对多混合字符串的融合比对方法的应用实例。
【具体实施方式】
[0041]下面结合附图对本发明的方法作进一步的详述
[0042]下面结合附图对本发明做进一步地详细说明。本发明具体涉及一种混合字符串的融合比对方法。首先将待匹配的字符串分别称为源字符串和待匹配字符串。本发明更能适合于从一组待匹配字符串中寻找与源字符串最匹配的目标匹配字符串。
[0043]【具体实施方式】如下。[0044]1.取出源字符串和一组待匹配字符串;
[0045]2.读出事先构建的字符串等价替换字典,对该组待匹配字符串中部分字符进行等价替换。例如“高压侧”与“220KV侧”等价,“千伏”与“kV”等价。在进行字符串匹配度计算之前,利用等价替换字典可将上述不同描述进行统一;
[0046]3.取出源字符串,依此取出等价替换后的该组待匹配字符串数组中的一个待匹配字符串;
[0047]4.利用GST*算法计算源字符串与待匹配字符串的匹配度。
[0048]GST*算法与传统的GST算法的改进效果,通过以下举例说明。
[0049]例如“abcde”与“qbcio”、“abcde”与“qbico”为两组待比较字符串,利用GST算法计算两组字符串匹配度均为40%。
[0050]而采用GST*算法计算两组字符串匹配度,结果分别为43.2%和40%。可看出GST*算法的比对结果更准确一些。
[0051 ] GST*算法使具有较长公共子串的两字符串的匹配度更高。
[0052]5.利用偏有序字符串匹配算法POC计算源字符串和待匹配字符串的匹配度。
[0053]将两个待匹配的含有汉字、数字和字母的混合字符串分别称为源字符串和待匹配字符串。
[0054]首先,先搜索出源字符串与待匹配字符串相同的字符,记录下它们的个数。
[0055]其次,以源字符串和待匹配字符串中较长字符串为标准,求匹配度l(match_degreel):
[0056]
匹配度I =「相胃?.符!
L较长字符串的字个数 」
[0057]以其中较短字符串为标准,求匹配度2(match_degree2):
[0058]
匹配度2斗相字f数x ioo1、2)
L较短字符串的字个数 _
[0059]公式(1)、(2)中[口]表示取整。
[0060]再次,分别比较源字符串和待匹配字符串中第I个(或第2个)数字与字母,最后I个(或倒数第2个)数字与字母,如果其中I项相等,则调整匹配度2的match_degree2数值为 match_degree2+lο
[0061]最后,由于在实际应用中,匹配度2更能反映实际匹配情况,因此赋予匹配度2更大的权重。
[0062]对匹配度I和匹配度2赋予不同的权重0.41、0.59,求源字符串和待匹配字符串的最终匹配值b:
[0063]b = match_degreelX0.41+match_degree2X0.59 (3)
[0064]6)将步骤4)GST*计算所得的匹配度a和步骤5)P0C计算所得的匹配度b进行加权融合,融合方法是,如果匹配度a大于匹配度b,则最终匹配度为a。如果匹配度a小于匹配度b,则最终匹配度等于(a+b)/2。
[0065]得到最终的比对结果,充分利用了两种算法的特点;[0066]7.检查循环是否执行完毕;
[0067]8.对各匹配度进行排序,找出匹配度最大对应的字符串,作为最匹配的目标字符
串O
[0068]图2为本发明的混合字符串一对多比对方法的应用实例。计算了一组混合字符串的匹配情况。图2中分别列出利用GST*算法、偏有序字符串匹配算法(P0C算法)、两种算法加权融合方法后GST*_P0C的匹配度。
[0069]可看到,图2中第I条比对、第2条比对中,第I条的待匹配字符串比第2条的待匹配字符串更接近于第I列的源字符串。
[0070]从图2中结果能够得出结论,利用本发明算法得到了较为理想的比对结果。
【权利要求】
1.一种一对多的混合字符串融合比对方法,对基于汉字聚类特征的由汉字、数字、英文字母组成的混合字符串的相似度进行融合比对,以提高表达字符串的相似的精确度,包括以下主要步骤: 1)取出源字符串和一组待匹配字符串; 2)读出事先在存储器中构建的字符串等价替换字典,对该组待匹配字符串中部分字符(子串)进行等价替换;利用等价替换字典,将上述在源字符串场合和待匹配字符串场合具有不同描述但含义相同的两种子串进行统一; 3)取出源字符串,依此取出等价替换后的该待匹配字符串数组中的一个待匹配字符串; 4)利用GST*算法计算源字符串与该待匹配字符串的匹配度a: 采用传统GST算法,得到两个字符串中各公共子串,将它们存入公共子串链表中。如果某个公共子串的字符长度与较长字符串字符长度的比值大于或等于0.33,则在计算匹配度时将该公共子串的字符个数乘以权重,该权重为大于I的常数;如果某个公共子串的字符长度与较长字符 串字符长度的比值小于0.33、且公共子串的字符个数大于最小匹配长度,则计算匹配度时将该公共子串的字符个数直接带入计算; 5)利用偏有序字符串匹配算法POC(Partial Order Comparison, P0C)计算源字符串和待匹配字符串的匹配度b: 将两个待匹配的含有汉字、数字和英文字母的混合字符串分别称为源字符串和待匹配字符串, 首先,先搜索出源字符串与待匹配字符串中相同的字符或汉字,记录下它们的个数,; 其次,以源字符串和待匹配字符串中较长字符串为标准,求匹配度I (match_degreel):匹配度i1QJ(D
L较长字符串的字个数 」 以其中较短字符串为标准,求匹配度2 (match—degree2):匹配度2 =X100I(2)
L较短子付串的子个数_ 公式(I)、(2)中[]表示取整; 再次,分别比较源字符串和待匹配字符串中第I个或第2个数字与字母,最后I个或倒数第2个数字与字母,如果其中I项相等,则调整匹配度2的match_degree2数值为match_degree2+l: 对匹配度I和匹配度2赋予不同的权重0.41、0.59,求源字符串和待匹配字符串的最终匹配值b:
b = match_degreelX0.41+match_degree2X0.59 (3) 6)将步骤4)GST*计算所得的匹配度a和步骤5)P0C计算所得的匹配度b进行加权融合,融合方法是,如果匹配度a大于匹配度b,则最终匹配度为a;如果匹配度a小于匹配度b,则最终匹配度等于(a+b)/2; 7)将源字符串和待匹配字符串数组中每个待匹配字符串计算所获得匹配度进行排序,把最大匹配度对应的待匹配字符串,作为与源字符串最匹配的目标字符串。
2.根据权利要求所述之一对多的混合字符串融合比对方法,其特征在于,在步骤4)中,先搜索出源字符串与待匹配字符串相同的各公共子串,再对不同长度的公共子串赋予不同的权重,增大较长公共字符子串的权重。
3.根据权利要求所述之一对多的混合字符串融合比对方法,其特征在于,在步骤5)中,将两个含有数字、字母、汉字的混合字符串分别作为源字符串和待匹配字符串;分别以其中较长字符串、较短 字符串为标准,求出匹配度I和匹配度2 ;然后再比较第一个或多个数字与字母、最后一个或多个数字与字母是否相等,对匹配度2进行修改。最后对两种匹配度分别赋予不同权重,得到两个字符串的匹配度值。
【文档编号】G06F17/30GK104008119SQ201310746846
【公开日】2014年8月27日 申请日期:2013年12月30日 优先权日:2013年12月30日
【发明者】童晓阳, 甄威, 郑永康, 姜振超, 庄先涛, 吴继维, 张茜, 丁宣文 申请人:西南交通大学, 国网四川省电力公司电力科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1