一種一對多的混合字符串融合比對方法
【專利摘要】本發(fā)明公開了一種一對多的混合字符串融合比對方法,將一個源字符串從一組待比對字符串中找到最相似或匹配目標(biāo)字符串。首先用改進(jìn)的GST*算法,再使用一種偏有序的字符串比對算法POC。結(jié)合以上兩種算法分別在字符串無序、部分有序匹配方面各自的特點(diǎn),將兩種算法計算得到的匹配度值進(jìn)行加權(quán)融合求得最終的匹配度。另外,針對同義字符串在不同場合下具有不同的表達(dá)方式,采用字符串等價替換策略,對源字符串、待比對字符串中同義字符子串等價替換成相同的字符串,大大提高兩個字符串的匹配度。通過將源字符串與一組待匹配字符串分別匹配,再將各匹配度進(jìn)行排序,將最高匹配度的字符串作為目標(biāo)字符串,實(shí)現(xiàn)了一對多的混合字符串的較佳匹配。
【專利說明】一種一對多的混合字符串融合比對方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于字符串智能比對【技術(shù)領(lǐng)域】,具體涉及一種新型一對多的混合字符串融合比對方法。
【背景技術(shù)】
[0002]字符串比對問題是計算機(jī)科學(xué)中的一個基本問題,其研究內(nèi)容在信息檢索、模式識別等眾多領(lǐng)域均有著重要的應(yīng)用價值[1]_[4]。
[0003]文獻(xiàn)I分別研究中文字符串模糊匹配算法,文獻(xiàn)2研究了一種基于漢字聚類特征的中文字符串相似度計算方法。文獻(xiàn)3對LCS與GST算法做了比較,GST算法是一種貪婪字符串比對算法,也是一種無序匹配算法,目前應(yīng)用較廣,但該算法采用了兩個字符串逐個字符比較的方法,所以算法的時間復(fù)雜度較大。文獻(xiàn)4研究了對GST算法改進(jìn)后RKR-GST算法,提高了 GST算法的運(yùn)行效率,但是RKR-GST算法中散列函數(shù)的選擇對算法的運(yùn)行影響很大。
[0004]現(xiàn)有的字符串比對方法往往只采用一種算法,沒有能夠充分利用無序字符子串和部分有序字符子串在匹配度計算時的各自特點(diǎn),往往它們的比對效果并不理想。在一些某些混合字符串的實(shí)際應(yīng)用中,不但要求比對的準(zhǔn)確性高,而且要求比對的速度快。目前,通過單一的匹配度計算方法,往往很難精確地表達(dá)字符串的相似程度。
[0005]另外,現(xiàn)有的字符串比對方法沒有考慮同義字符串可能存在不同表達(dá)方式的情況,使得現(xiàn)有字符串比對方法在此類情況下很難達(dá)到較準(zhǔn)確、高匹配率的要求。
[0006]參考文獻(xiàn):
[0007][I]陳開渠,趙潔,彭志威.快速中文字符串模糊匹配算法[J].中文信息學(xué)報,2003,18(2):58-65
[0008][2]王靜婷.基于漢字聚類特征的中文字符串相似度計算研究[J].現(xiàn)代圖書情報技術(shù),2011,20 (2):48-53
[0009][3]于海英.字符串相似度度量中LCS和GST算法比較[J].電子科技,2011,24(3):101-103
[0010][4]牛永潔.RKR_GST算法在_NET中的分析與實(shí)現(xiàn)[J].信息技術(shù),2012,3:171-174
【發(fā)明內(nèi)容】
[0011]鑒于現(xiàn)有技術(shù)的以上不足,本發(fā)明的目的是提供一種更準(zhǔn)確的混合字符串融合比對方法。解決了實(shí)際應(yīng)用中以單一匹配度計算方法很難達(dá)到精確表達(dá)字符串之間相似程度、同義字符串存在不同表達(dá)方式情形下現(xiàn)有字符串比對方法幾乎失效等問題。
[0012]本發(fā)明的目的是通過以下的手段實(shí)現(xiàn)的:
[0013]一種一對多的混合字符串融合比對方法,對基于漢字聚類特征的由漢字、數(shù)字、英文字母組成的混合字符串的相似度進(jìn)行融合比對,以提高表達(dá)字符串的相似的精確度,包括以下主要步驟:
[0014]I)取出源字符串和一組待匹配字符串;
[0015]2)讀出事先在存儲器中構(gòu)建的字符串等價替換字典,對該組待匹配字符串中部分字符(子串)進(jìn)行等價替換;利用等價替換字典,將上述在源字符串場合和待匹配字符串場合具有不同描述但含義相同的兩種子串進(jìn)行統(tǒng)一;
[0016]3)取出源字符串,依此取出等價替換后的該待匹配字符串?dāng)?shù)組中的一個待匹配字符串;
[0017]4)利用GST*算法計算源字符串與該待匹配字符串的匹配度a:
[0018]采用傳統(tǒng)GST算法,得到兩個字符串中各公共子串,將它們存入公共子串鏈表中。如果某個公共子串的字符長度與較長字符串字符長度的比值大于或等于0.33,則在計算匹配度時將該公共子串的字符個數(shù)乘以權(quán)重,該權(quán)重為大于I的常數(shù);如果某個公共子串的字符長度與較長字符串字符長度的比值小于0.33、且公共子串的字符個數(shù)大于最小匹配長度,則計算匹配度時將該公共子串的字符個數(shù)直接帶入計算;
[0019]5)利用偏有序字符串匹配算法POC (Partial Order Comparison, P0C)計算源字符串和待匹配字符串的匹配度b:
[0020]將兩個待匹配的含有漢字、數(shù)字和英文字母的混合字符串分別稱為源字符串和待匹配字符串,
[0021]首先,先搜索出 源字符串與待匹配字符串中相同的字符或漢字,記錄下它們的個數(shù),;
[0022]其次,以源字符串和待匹配字符串中較長字符串為標(biāo)準(zhǔn),求匹配度l(match_degreel):
[0023]
匹配度1-「才洞封守域'漢.)白勺f — 100](1)
mml-[較長字符串的字個數(shù)xlooJ⑴
[0024]以其中較短字符串為標(biāo)準(zhǔn),求匹配度2 (match_degree2):
[0025]
匹配度2 =[相J字f數(shù)XIOOI⑵
L較短字符串的字個數(shù) _
[0026]公式(I)、(2)中口表示取整;
[0027]再次,分別比較源字符串和待匹配字符串中第I個或第2個數(shù)字與字母,最后I個或倒數(shù)第2個數(shù)字與字母,如果其中I項(xiàng)相等,則調(diào)整匹配度2的matCh_degree2數(shù)值為match—degree2+l:
[0028]對匹配度I和匹配度2賦予不同的權(quán)重0.41、0.59,求源字符串和待匹配字符串的最終匹配值b:
[0029]b = match_degreelX0.41+match_degree2X0.59 (3)
[0030]6)將步驟4)GST*計算所得的匹配度a和步驟5)P0C計算所得的匹配度b進(jìn)行加權(quán)融合,融合方法是,如果匹配度a大于匹配度b,則最終匹配度為a;如果匹配度a小于匹配度b,則最終匹配度等于(a+b)/2;
[0031]7)將源字符串和待匹配字符串?dāng)?shù)組中每個待匹配字符串計算所獲得匹配度進(jìn)行排序,把最大匹配度對應(yīng)的待匹配字符串,作為與源字符串最匹配的目標(biāo)字符串。
[0032]在步驟4)中,先搜索出源字符串與待匹配字符串相同的各公共子串,再對不同長度的公共子串賦予不同的權(quán)重,增大了較長公共字符子串的權(quán)重。
[0033]本發(fā)明的GST*算法,針對傳統(tǒng)GST算法存在的較短公共子串匹配度可能比較長公共子串的匹配度更大的現(xiàn)象,對其進(jìn)行了改進(jìn):如果公共子串的字符長度與較長字符串字符長度的比值大于或等于0.33,則在計算匹配度時將該公共子串的字符個數(shù)乘以權(quán)重(大于I的常數(shù));如果公共子串的字符長度與較長字符串字符長度的比值小于0.33、且公共子串的字符個數(shù)大于最小匹配長度,則計算匹配度時將該公共子串的字符個數(shù)直接帶入計算。
[0034]在步驟5)中,將兩個含有數(shù)字、字母、漢字的混合字符串分別作為源字符串和待匹配字符串;分別以其中較長字符串、較短字符串為標(biāo)準(zhǔn),求出匹配度I和匹配度2 ;然后再比較第一個或多個數(shù)字與字母、最后一個或多個數(shù)字與字母是否相等,對匹配度2進(jìn)行修改。最后對兩種匹配度分別賦予不同權(quán)重,得到兩個字符串之間的匹配度值。
[0035]本發(fā)明的偏有序字符串比對算法POC考慮到匹配度2更能反映實(shí)際匹配情況,因此賦予匹配度2稍微較大的權(quán)重。
[0036]本發(fā)明給出了字符串等價替換策略。比如,“高壓側(cè)”與“220KV側(cè)”,“千伏”與“kV”,在含義上是 等價的。采用現(xiàn)有各類比對算法均不能準(zhǔn)確地反映它們之間的等價關(guān)系,因此提出字符串等價替換策略。事先構(gòu)建一個字符子串等價替換字典,采用:待匹配中子串=等價的源側(cè)子串的形式,比如千伏=kV,它表示等號兩側(cè)的字符子串在含義上是相同的,等號左側(cè)子串代表待匹配字符串中的某子串,等號右側(cè)子串代表與左側(cè)等價的源字符串中子串。
[0037]在做匹配度計算之前,先檢查待匹配字符串中是否含有字符子串等價替換字典中各行中左側(cè)的字符子串,如果有,則替換它為等號右側(cè)的源側(cè)字符子串。在此基礎(chǔ)上,再運(yùn)用本融合比對算法進(jìn)行比對,計算得到相應(yīng)的匹配度,這樣大大提高了匹配的精確度,能夠反映出參與比較兩個字符串之間真實(shí)的匹配情況。
[0038]本發(fā)明適用于一對多混合字符串的比對。分別計算源字符串與一組待匹配字符串的匹配度,并將得到的各匹配度進(jìn)行排序,從中找出與源字符串匹配度最大的待匹配字符串,把它確定為目標(biāo)字符串,從而實(shí)現(xiàn)了一對多字符串的較佳匹配。
【專利附圖】
【附圖說明】:
[0039]圖1為新型一對多字符串的融合比對方法的流程圖。
[0040]圖2為一對多混合字符串的融合比對方法的應(yīng)用實(shí)例。
【具體實(shí)施方式】
[0041]下面結(jié)合附圖對本發(fā)明的方法作進(jìn)一步的詳述
[0042]下面結(jié)合附圖對本發(fā)明做進(jìn)一步地詳細(xì)說明。本發(fā)明具體涉及一種混合字符串的融合比對方法。首先將待匹配的字符串分別稱為源字符串和待匹配字符串。本發(fā)明更能適合于從一組待匹配字符串中尋找與源字符串最匹配的目標(biāo)匹配字符串。
[0043]【具體實(shí)施方式】如下。[0044]1.取出源字符串和一組待匹配字符串;
[0045]2.讀出事先構(gòu)建的字符串等價替換字典,對該組待匹配字符串中部分字符進(jìn)行等價替換。例如“高壓側(cè)”與“220KV側(cè)”等價,“千伏”與“kV”等價。在進(jìn)行字符串匹配度計算之前,利用等價替換字典可將上述不同描述進(jìn)行統(tǒng)一;
[0046]3.取出源字符串,依此取出等價替換后的該組待匹配字符串?dāng)?shù)組中的一個待匹配字符串;
[0047]4.利用GST*算法計算源字符串與待匹配字符串的匹配度。
[0048]GST*算法與傳統(tǒng)的GST算法的改進(jìn)效果,通過以下舉例說明。
[0049]例如“abcde”與“qbcio”、“abcde”與“qbico”為兩組待比較字符串,利用GST算法計算兩組字符串匹配度均為40%。
[0050]而采用GST*算法計算兩組字符串匹配度,結(jié)果分別為43.2%和40%??煽闯鯣ST*算法的比對結(jié)果更準(zhǔn)確一些。
[0051 ] GST*算法使具有較長公共子串的兩字符串的匹配度更高。
[0052]5.利用偏有序字符串匹配算法POC計算源字符串和待匹配字符串的匹配度。
[0053]將兩個待匹配的含有漢字、數(shù)字和字母的混合字符串分別稱為源字符串和待匹配字符串。
[0054]首先,先搜索出源字符串與待匹配字符串相同的字符,記錄下它們的個數(shù)。
[0055]其次,以源字符串和待匹配字符串中較長字符串為標(biāo)準(zhǔn),求匹配度l(match_degreel):
[0056]
匹配度I =「相胃?.符!
L較長字符串的字個數(shù) 」
[0057]以其中較短字符串為標(biāo)準(zhǔn),求匹配度2(match_degree2):
[0058]
匹配度2斗相字f數(shù)x ioo1、2)
L較短字符串的字個數(shù) _
[0059]公式(1)、(2)中[口]表示取整。
[0060]再次,分別比較源字符串和待匹配字符串中第I個(或第2個)數(shù)字與字母,最后I個(或倒數(shù)第2個)數(shù)字與字母,如果其中I項(xiàng)相等,則調(diào)整匹配度2的match_degree2數(shù)值為 match_degree2+lο
[0061]最后,由于在實(shí)際應(yīng)用中,匹配度2更能反映實(shí)際匹配情況,因此賦予匹配度2更大的權(quán)重。
[0062]對匹配度I和匹配度2賦予不同的權(quán)重0.41、0.59,求源字符串和待匹配字符串的最終匹配值b:
[0063]b = match_degreelX0.41+match_degree2X0.59 (3)
[0064]6)將步驟4)GST*計算所得的匹配度a和步驟5)P0C計算所得的匹配度b進(jìn)行加權(quán)融合,融合方法是,如果匹配度a大于匹配度b,則最終匹配度為a。如果匹配度a小于匹配度b,則最終匹配度等于(a+b)/2。
[0065]得到最終的比對結(jié)果,充分利用了兩種算法的特點(diǎn);[0066]7.檢查循環(huán)是否執(zhí)行完畢;
[0067]8.對各匹配度進(jìn)行排序,找出匹配度最大對應(yīng)的字符串,作為最匹配的目標(biāo)字符
串O
[0068]圖2為本發(fā)明的混合字符串一對多比對方法的應(yīng)用實(shí)例。計算了一組混合字符串的匹配情況。圖2中分別列出利用GST*算法、偏有序字符串匹配算法(P0C算法)、兩種算法加權(quán)融合方法后GST*_P0C的匹配度。
[0069]可看到,圖2中第I條比對、第2條比對中,第I條的待匹配字符串比第2條的待匹配字符串更接近于第I列的源字符串。
[0070]從圖2中結(jié)果能夠得出結(jié)論,利用本發(fā)明算法得到了較為理想的比對結(jié)果。
【權(quán)利要求】
1.一種一對多的混合字符串融合比對方法,對基于漢字聚類特征的由漢字、數(shù)字、英文字母組成的混合字符串的相似度進(jìn)行融合比對,以提高表達(dá)字符串的相似的精確度,包括以下主要步驟: 1)取出源字符串和一組待匹配字符串; 2)讀出事先在存儲器中構(gòu)建的字符串等價替換字典,對該組待匹配字符串中部分字符(子串)進(jìn)行等價替換;利用等價替換字典,將上述在源字符串場合和待匹配字符串場合具有不同描述但含義相同的兩種子串進(jìn)行統(tǒng)一; 3)取出源字符串,依此取出等價替換后的該待匹配字符串?dāng)?shù)組中的一個待匹配字符串; 4)利用GST*算法計算源字符串與該待匹配字符串的匹配度a: 采用傳統(tǒng)GST算法,得到兩個字符串中各公共子串,將它們存入公共子串鏈表中。如果某個公共子串的字符長度與較長字符串字符長度的比值大于或等于0.33,則在計算匹配度時將該公共子串的字符個數(shù)乘以權(quán)重,該權(quán)重為大于I的常數(shù);如果某個公共子串的字符長度與較長字符 串字符長度的比值小于0.33、且公共子串的字符個數(shù)大于最小匹配長度,則計算匹配度時將該公共子串的字符個數(shù)直接帶入計算; 5)利用偏有序字符串匹配算法POC(Partial Order Comparison, P0C)計算源字符串和待匹配字符串的匹配度b: 將兩個待匹配的含有漢字、數(shù)字和英文字母的混合字符串分別稱為源字符串和待匹配字符串, 首先,先搜索出源字符串與待匹配字符串中相同的字符或漢字,記錄下它們的個數(shù),; 其次,以源字符串和待匹配字符串中較長字符串為標(biāo)準(zhǔn),求匹配度I (match_degreel):匹配度i1QJ(D
L較長字符串的字個數(shù) 」 以其中較短字符串為標(biāo)準(zhǔn),求匹配度2 (match—degree2):匹配度2 =X100I(2)
L較短子付串的子個數(shù)_ 公式(I)、(2)中[]表示取整; 再次,分別比較源字符串和待匹配字符串中第I個或第2個數(shù)字與字母,最后I個或倒數(shù)第2個數(shù)字與字母,如果其中I項(xiàng)相等,則調(diào)整匹配度2的match_degree2數(shù)值為match_degree2+l: 對匹配度I和匹配度2賦予不同的權(quán)重0.41、0.59,求源字符串和待匹配字符串的最終匹配值b:
b = match_degreelX0.41+match_degree2X0.59 (3) 6)將步驟4)GST*計算所得的匹配度a和步驟5)P0C計算所得的匹配度b進(jìn)行加權(quán)融合,融合方法是,如果匹配度a大于匹配度b,則最終匹配度為a;如果匹配度a小于匹配度b,則最終匹配度等于(a+b)/2; 7)將源字符串和待匹配字符串?dāng)?shù)組中每個待匹配字符串計算所獲得匹配度進(jìn)行排序,把最大匹配度對應(yīng)的待匹配字符串,作為與源字符串最匹配的目標(biāo)字符串。
2.根據(jù)權(quán)利要求所述之一對多的混合字符串融合比對方法,其特征在于,在步驟4)中,先搜索出源字符串與待匹配字符串相同的各公共子串,再對不同長度的公共子串賦予不同的權(quán)重,增大較長公共字符子串的權(quán)重。
3.根據(jù)權(quán)利要求所述之一對多的混合字符串融合比對方法,其特征在于,在步驟5)中,將兩個含有數(shù)字、字母、漢字的混合字符串分別作為源字符串和待匹配字符串;分別以其中較長字符串、較短 字符串為標(biāo)準(zhǔn),求出匹配度I和匹配度2 ;然后再比較第一個或多個數(shù)字與字母、最后一個或多個數(shù)字與字母是否相等,對匹配度2進(jìn)行修改。最后對兩種匹配度分別賦予不同權(quán)重,得到兩個字符串的匹配度值。
【文檔編號】G06F17/30GK104008119SQ201310746846
【公開日】2014年8月27日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年12月30日
【發(fā)明者】童曉陽, 甄威, 鄭永康, 姜振超, 莊先濤, 吳繼維, 張茜, 丁宣文 申請人:西南交通大學(xué), 國網(wǎng)四川省電力公司電力科學(xué)研究院