基于信息熵的對象名稱匹配方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術領域,尤其涉及一種基于信息熵的對象名稱匹配方法。
【背景技術】
[0002]對象識別又稱記錄匹配,其目的是從(不可靠的)各種數(shù)據(jù)源中識別出表示同一現(xiàn)實對象的記錄。對象識別在數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)分析等應用中具有重要作用。對象識別所用的數(shù)據(jù)中,一類普遍遇到且非常重要的數(shù)據(jù)是名稱類數(shù)據(jù),如機構名稱、藥品名稱、建筑物名稱等。如何有效的計算出兩個名稱之間的相似度對對象識別至關重要。
[0003]名稱匹配的結果通常通過比較字符串相似度來得出?,F(xiàn)有的字符串相似度計算方法包括編輯距離、向量空間、Q-Gram等。但是,現(xiàn)有的字符串相似度計算方法不能很好的識別兩個對象名稱之間內在的相似度。例如,傳統(tǒng)的Q-Gram計算方法判斷“深圳市華傲數(shù)據(jù)技術有限公司”與“華傲數(shù)據(jù)技術有限公司”的相似度較低為0.74,但人們很容易判別出這兩個名字實際上代表同一家企業(yè);傳統(tǒng)的Q-Gram計算方法判斷“天津市南開區(qū)宏業(yè)汽車配件經(jīng)營部”與“天津市南開區(qū)久晟汽車配件經(jīng)營部”之間的相似度為0.76,但人們知道它們代表的是兩家企業(yè)。因此,用戶利用傳統(tǒng)的Q-Gram計算方法進行對象名稱匹配時,會得出一些不正確的結論,無法有效識別兩個對象名稱之間的相似度。
【發(fā)明內容】
[0004]本發(fā)明的目的在于提供一種基于信息熵的對象名稱匹配方法,改進兩個對象名稱之間相似度的識別。
[0005]為實現(xiàn)上述目的,本發(fā)明提供一種基于信息熵的對象名稱匹配方法,包括:
[0006]步驟10、收集所有待識別對象名稱,統(tǒng)計每個字符出現(xiàn)的次數(shù)freq以及對象名稱的總數(shù)totalNum,如果字符在一對象名稱中出現(xiàn)多次按一次計算;
[0007]步驟20、對每個字符,根據(jù)對象名稱的總數(shù)totalNum及字符出現(xiàn)的次數(shù)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字符串序列中出現(xiàn)的次數(shù)記為numl,將token在該第二 Q-Gram字符串序列中出現(xiàn)的次數(shù)記為num2,如果沒有出現(xiàn)則相應的次數(shù)為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]為實現(xiàn)上述目的,本發(fā)明還提供了一種基于信息熵的對象名稱匹配方法,包括:
[0019]步驟1、收集所有待識別對象名稱,統(tǒng)計每個字符出現(xiàn)的次數(shù)freq以及對象名稱的總數(shù)totalNum,如果字符在一對象名稱中出現(xiàn)多次按一次計算;
[0020]步驟2、對每個字符,根據(jù)對象名稱的總數(shù)totalNum及字符出現(xiàn)的次數(shù)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字符串序列中出現(xiàn)的次數(shù)記為numl,將token在該第二 Q-Gram字符串序列中出現(xiàn)的次數(shù)記為num2,如果沒有出現(xiàn)則相應的次數(shù)為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]綜上所述,本發(fā)明基于信息熵的對象名稱匹配方法能夠有效識別兩個對象名稱之間的相似度,處理名稱類數(shù)據(jù)匹配問題效果更佳。
【附圖說明】
[0031]圖1為本發(fā)明基于信息熵的對象名稱匹配方法的流程圖。
【具體實施方式】
[0032]下面結合附圖,通過對本發(fā)明的【具體實施方式】詳細描述,將使本發(fā)明的技術方案及其有益效果顯而易見。
[0033]參見圖1,其為本發(fā)明基于信息熵的對象名稱匹配方法的流程圖。
[0034]主要包括:
[0035]步驟10、收集所有待識別對象名稱,統(tǒng)計每個字符出現(xiàn)的次數(shù)freq以及對象名稱的總數(shù)totalNum,如果字符在一對象名稱中出現(xiàn)多次按一次計算。
[0036]步驟20、對每個字符,根據(jù)對象名稱的總數(shù)totalNum及字符出現(xiàn)的次數(shù)freq之間的比值計算字符的信息熵。
[0037]本發(fā)明考慮到名稱每個字符在整個名稱中的權重是不一樣的,有些字符是很關鍵的,而有些字符在某些場合些通常會忽略,如機構名稱“深圳市華傲數(shù)據(jù)技術有限公司”中,“深圳市”3個字符代表企業(yè)所處區(qū)域,當在某個特定區(qū)域內計算一批機構名之間的相似度時(如識別所有廣東省內的企業(yè)),這個3個字符通常是無關緊要的;“華傲”是名稱中最關鍵的部分;“數(shù)據(jù)技術”代表企業(yè)的類別,有一定的參考意義;“有限公司”代表企業(yè)的性質,通常在比較時也是無關緊要的。因此比較名稱時需要區(qū)分每個字符的權重。本發(fā)明的方案是基于Q-Gram計算相似度的方法,同時利用了每個字符的信息熵。
[0038]字符的信息商可以用公式log(totalNum/freq)來計算,log可以取2、e或其它任意適合的常數(shù)為底。在本發(fā)明中,字符的信息熵的計算公式可以根據(jù)如下條件選定:如果某個字符出現(xiàn)的越頻繁,其信息含量越低;反之,說明其信息含量高,對對象的區(qū)分更有價值。
[0039]通過步驟10和20計算得出所有字符的信息熵,用于接下來計算兩個對象名稱的相似度。
[0040]步驟30、將第一對象名稱和第二對象名稱分別轉換為第一和第二 Q-Gram字符串序列。
[0041]假設對象名稱I為strl,對象名稱2為str2。
[0042]在第一較佳實施例中,分別將strl、str2轉換成2_Gram字符串序列strlTokens、str2Tokens,即每連續(xù)的2個字符組成一個新字符串,如“南開區(qū)天誠醫(yī)藥保健品研宄所”對應的2-Gram字符串序列:
[0043][南開,開區(qū),區(qū)天,天誠,誠醫(yī),醫(yī)藥,藥保,保健,健品,品研,研宄,宄所]。
[0044]或者,在第二較佳實施例中,分別將strl、str2轉換成3_Gram字符串序列strlTokens、str2Tokens,即每連續(xù)的3個字符組成一個新字符串,如“南開區(qū)天誠醫(yī)藥保健品研宄所”對應的3-Gram字符串序列:
[0045][南開區(qū),開區(qū)天,區(qū)天誠,天誠醫(yī),誠醫(yī)藥,醫(yī)藥保,藥保健,保健品,健品研,品研宄,研宄所]。
[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字符串序列中出現(xiàn)的次數(shù)記為numl,將token在該第二 Q-Gram字符串序列中出現(xiàn)的次數(shù)記為num2,如果沒有出現(xiàn)則相應的次數(shù)為O ;計算token對應的信息熵差為:|numl_num2| Xentropy,并加到總信息摘差 difference 上。也