專利名稱:一種漢語詞語相近性匹配裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種漢語的詞語相近性匹配裝置及方法,尤其涉及漢語術(shù)語。
背景技術(shù):
領(lǐng)域術(shù)語是指在一個(gè)學(xué)科領(lǐng)域中使用,表示該學(xué)科領(lǐng)域內(nèi)概念或關(guān)系的詞語。術(shù)語可以是詞,也可以是短語,是在特定學(xué)科領(lǐng)域用來表示概念的稱謂,或者說,是通過語音或文字來表達(dá)或限定科學(xué)概念的約定性語言符號(hào)。在我國(guó),人們習(xí)慣稱其為“名詞”。術(shù)語的具體實(shí)例,在閱讀科技文獻(xiàn)、學(xué)習(xí)專業(yè)課程時(shí)隨處可見,比如路由器就是計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域中的術(shù)語,DNA就是生命科學(xué)領(lǐng)域的術(shù)語等。在術(shù)語抽取領(lǐng)域,術(shù)語表示由兩個(gè)或兩個(gè)以上的字所組成的具有一定語法關(guān)系的有確切意義的語言單元,如“國(guó)家導(dǎo)彈防御系統(tǒng)”。領(lǐng)域術(shù)語的提取在各個(gè)領(lǐng)域都有很重要的應(yīng)用。在領(lǐng)域本體構(gòu)建過程中,需要對(duì)領(lǐng)域術(shù)語進(jìn)行及時(shí)地更新,因此領(lǐng)域術(shù)語的提取方法在領(lǐng)域本體的構(gòu)建和維護(hù)過程中發(fā)揮著至關(guān)重要的作用。在信息檢索領(lǐng)域,構(gòu)建索引時(shí)需要引入領(lǐng)域術(shù)語集,領(lǐng)域術(shù)語提取技術(shù)地提高能夠大大提高檢索的準(zhǔn)確率和檢索的覆蓋率,尤其在垂直搜索方面,如果得到某個(gè)領(lǐng)域的術(shù)語,對(duì)于該領(lǐng)域的搜索可以得到更為精確的信息。在瀏覽推薦方面,在用戶的瀏覽行為的推薦方面,利用web資源得到的某領(lǐng)域的領(lǐng)域術(shù)語,可以幫助我們更準(zhǔn)確地把握用戶的瀏覽意圖,通過用戶的具體瀏覽行為推薦相關(guān)的信息給用戶。另外領(lǐng)域術(shù)語的提取在廣告投放中也有很大的作用,通過得到領(lǐng)域詞典,對(duì)于網(wǎng)頁(yè)的分類有很大的幫助,可以更好幫助商業(yè)公司對(duì)于不同的用戶群做更為精細(xì)和準(zhǔn)確的廣告投放。字符串的相近性函數(shù)作為衡量?jī)蓚€(gè)字符串之間近似程度的函數(shù),是字符串匹配 (String matching)、文本比較(Text Comparison)、信肩、才由取(Information Extraction) 中一項(xiàng)基本技術(shù),它的輸入通常是兩個(gè)相同或不同的字符串,返回一個(gè)確定的整數(shù)值。兩個(gè)字符串相近度越高,對(duì)應(yīng)的返回值就越大。這項(xiàng)技術(shù)在計(jì)算生物學(xué)(Computational Biology),信號(hào)處理(Signal Processing)中也有廣泛的應(yīng)用。針對(duì)應(yīng)用場(chǎng)合不同,有很多經(jīng)典的相近性函數(shù)可供選擇。例如編輯距離(Edit
Distance 或 Levenshtein Distance),它考慮了三種編輯操作-插入(insertion),刪
除(Deletion)和替換(Substitution),用將一個(gè)字符串轉(zhuǎn)換成另一個(gè)字符串所需要的最少的編輯操作的數(shù)量作為這兩個(gè)字符串的相近度;Smith-Waterman距離(Smith-Waterman Algorithm)是一種用于找到兩個(gè)序列中相近區(qū)域的算法,經(jīng)常用于計(jì)算生物學(xué)中核苷酸序列、氨基酸序列的比對(duì)。這種算法中,所涉及的操作也只有三種插入、刪除和替換。除了以上精確計(jì)算兩個(gè)字符串差異的這些算法,也存在其他近似的簡(jiǎn)單的基于統(tǒng)計(jì)的方法。例如 Dice ¢5 (Dice Coefficient) 5 Jaccard ¢5 (Jaccard Index 5 Jaccard Similarity Coefficient),這兩種方法在計(jì)算時(shí)都需要先將要比較的字符串S1, &劃分成q-gram,一個(gè)字符串的q-gram指的是它的所有長(zhǎng)度為q的連續(xù)子串,例如,apple的2-gram就是ap, PP, pl,Ie0劃分結(jié)束后,得到兩個(gè)字符串對(duì)應(yīng)的q-gram集合SQ1, SQ2,則Dice (S1, s2)= 2* ι SQ1 η SGl2I/(I SQ1H SGj21) ,Jaccard (S1, S2) = SQ1 Π SQ21 / | SQ1 U SQ2U 考慮到讀音相近的字符更容易出現(xiàn)拼寫錯(cuò)誤,有人發(fā)明了基于讀音的相近性函數(shù),例如Soimdex,這種算法將英文中發(fā)音相近的字母編碼為相同的數(shù)字,例如b,f,ρ,ν都映射為1。h,w這樣不存在發(fā)音相近的字母的情況則不映射。通過上述方式,一個(gè)由英文字母組成的字符串就被轉(zhuǎn)換成一個(gè)字母加數(shù)字的字符串,再通過更進(jìn)一步的計(jì)算得到這兩個(gè)字符串的相近度,作為原字符串的相近度。以上這些方法足以覆蓋需要衡量字符串相近度的大部分領(lǐng)域,但是它們的局限性在于所有的這些方法都是針對(duì)英文,或者可以比較容易地推廣到印歐語系的其他語種(例如法語),對(duì)于漢語這樣的結(jié)合了字形與讀音的語種,它們的應(yīng)用將受到一定的限制。隨著漢語在計(jì)算機(jī)領(lǐng)域使用的推廣,尤其是在互聯(lián)網(wǎng)使用的普及,提出一種適合漢語的相近性函數(shù)是十分有必要的。例如,網(wǎng)絡(luò)中每天都存在著大量漢語文本信息,而這些或是由人工編輯、或是由機(jī)器生成的文檔,存在著大量錯(cuò)誤,在進(jìn)行更深層次的操作之前, 需要先進(jìn)行預(yù)處理,預(yù)處理中的許多步驟(清洗、整合)都涉及到相近性比較。而用戶利用關(guān)鍵字查詢信息時(shí),也可能出現(xiàn)各種錯(cuò)誤(例如只能記住讀音,或者更加簡(jiǎn)單的拼寫錯(cuò)誤),一個(gè)設(shè)計(jì)良好的相近性函數(shù),可以用于幫助用戶直接找到他們期望的詞語。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種漢語的詞語相近性匹配裝置及方法,用以精確地度量漢語發(fā)音、方言、字形等漢語使用中常出現(xiàn)的錯(cuò)誤,從而返回更加符合漢語使用習(xí)慣的函數(shù)值,并且,它能更進(jìn)一步地挖掘用戶的習(xí)慣,校準(zhǔn)、擴(kuò)展原有模型。為了解決上述問題,本發(fā)明公開了一種漢語的詞語相近性匹配裝置及方法,所述方法包括獲取兩個(gè)待比較的字符串A和B ;計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度;獲取兩個(gè)字符串A和B的發(fā)音相近度;獲取兩個(gè)字符串A和B的字形相近度;對(duì)照預(yù)先建立的漢字詞頻統(tǒng)計(jì)表Table3和漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4統(tǒng)計(jì)兩個(gè)字符串A和B的詞頻和錯(cuò)誤信息;根據(jù)統(tǒng)計(jì)結(jié)果確定兩個(gè)字符串A和B編輯時(shí)的相近度、發(fā)音相近度以及字形相近度的權(quán)值,計(jì)算獲取到兩個(gè)待比較的漢語字符串A和B的匹配度,其中,錯(cuò)誤頻率之和與詞頻之和的比值越大,發(fā)音相近度所對(duì)應(yīng)的權(quán)值越小。優(yōu)選的,所述方法還包括建立漢字到拼音的對(duì)照表Tablel ;建立漢字到五筆的對(duì)照表Table2 ;建立漢字詞頻統(tǒng)計(jì)表Table3 ;建立漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4。優(yōu)選的,當(dāng)所獲取的兩個(gè)待比較的字符串A和B為漢字字符串時(shí),所述方法還包括對(duì)照對(duì)照表Tablel將字符串轉(zhuǎn)化為拼音字符串。優(yōu)選的,所述計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度具體包括以下子步驟
計(jì)算兩個(gè)字符串A和B的編輯距離相近度根據(jù)正確鍵盤指法,計(jì)算兩個(gè)字符串A和B的鍵盤分布相近度;對(duì)兩個(gè)字符串A和B的編輯距離相近度和鍵盤分布相近度加權(quán)求和,獲取到兩個(gè)字符串A和B在編輯時(shí)的相近度。優(yōu)選的,所述獲取兩個(gè)字符串A和B的發(fā)音相近度具體包括以下子步驟計(jì)算兩個(gè)字符串A和B的聲母相近度;計(jì)算兩個(gè)字符串A和B的韻母相近度;對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和,獲取到兩個(gè)字符串A 和B的發(fā)音相近度。優(yōu)選的,所述方法在對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和后, 還包括計(jì)算兩個(gè)字符串A和B的模糊音相近度;將計(jì)算的兩個(gè)字符串A和B的模糊音相近度,與對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和的值進(jìn)行加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度。本發(fā)明還公開了一種漢語相近性匹配裝置,所述裝置包括字符串獲取模塊,用來獲取兩個(gè)待比較的字符串A和B ;編輯時(shí)的相近度計(jì)算模塊,用來計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度;發(fā)音相近度獲取模塊,用來獲取兩個(gè)字符串A和B的發(fā)音相近度;字形相近度獲取模塊,用來獲取兩個(gè)字符串A和B的字形相近度;詞頻和錯(cuò)誤信息統(tǒng)計(jì)模塊,用來對(duì)照預(yù)先建立的漢字詞頻統(tǒng)計(jì)表Table3和漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4統(tǒng)計(jì)兩個(gè)字符串A和B的詞頻和錯(cuò)誤頻率;匹配度獲取模塊,根據(jù)詞頻和錯(cuò)誤信息統(tǒng)計(jì)模塊的統(tǒng)計(jì)結(jié)果確定兩個(gè)字符串A和 B編輯時(shí)的相近度、發(fā)音相近度以及字形相近度的權(quán)值,計(jì)算獲取到兩個(gè)待比較的漢語字符串A和B的匹配度,其中,錯(cuò)誤頻率之和與詞頻之和的比值越大,發(fā)音相近度所對(duì)應(yīng)的權(quán)值越小。優(yōu)選的,所述裝置還包括表建立模塊,用于建立漢字到拼音的對(duì)照表Tablel、漢字到五筆的對(duì)照表 Table2、漢字詞頻統(tǒng)計(jì)表Table3、漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4。優(yōu)選的,當(dāng)所獲取的兩個(gè)待比較的字符串A和B為漢字字符串時(shí),所述裝置還包括字符串拼音轉(zhuǎn)化模塊,對(duì)照對(duì)照表Tablel將字符串轉(zhuǎn)化為拼音字符串。優(yōu)選的,所述編輯時(shí)的相近度計(jì)算模塊使用以下步驟計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度計(jì)算兩個(gè)字符串A和B的編輯距離相近度以及根據(jù)正確鍵盤指法,計(jì)算兩個(gè)字符串A和B的鍵盤分布相近度;對(duì)兩個(gè)字符串A和B的編輯距離相近度和鍵盤分布相近度加權(quán)求和,獲取到兩個(gè)字符串A和B在編輯時(shí)的相近度。優(yōu)選的,所述發(fā)音相近度獲取模塊使用以下步驟獲取兩個(gè)字符串A和B的發(fā)音相近度
計(jì)算兩個(gè)字符串A和B的聲母相近度;計(jì)算兩個(gè)字符串A和B的韻母相近度;對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和,獲取到兩個(gè)字符串A 和B的發(fā)音相近度。優(yōu)選的,所述發(fā)音相近度獲取模塊在對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和后,不直接獲取兩個(gè)字符串A和B的發(fā)音相近度,而使用以下步驟獲取兩個(gè)字符串A和B的發(fā)音相近度計(jì)算兩個(gè)字符串A和B的模糊音相近度;將計(jì)算的兩個(gè)字符串A和B的模糊音相近度、與對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和的值進(jìn)行加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明利用編輯距離公式及鍵盤指法規(guī)則得到漢語對(duì)應(yīng)拼音的編輯相近度,即反應(yīng)二者在編輯時(shí)是否容易混淆;通過漢字聲母、韻母的發(fā)音規(guī)律得到字符串的聲母相近度及韻母相近度,同時(shí)結(jié)合方言或者普通發(fā)音中常見的模糊音,計(jì)算字符串之間的發(fā)音相近度;由于漢字的字形是漢語一個(gè)重要特征,所以利用字形編碼——五筆字型編碼計(jì)算字符串之間的字形相近度;在計(jì)算的同時(shí)收集信息,用于更新數(shù)據(jù);綜合上述相近度得到漢語詞整體的相近度,充分考慮了漢語的拼寫習(xí)慣、用戶的輸入習(xí)慣及鍵盤布局、普通話的發(fā)音規(guī)則、方言以及常見錯(cuò)誤發(fā)音的影響、漢字字形等多方面因素,結(jié)合統(tǒng)計(jì)規(guī)律,綜合評(píng)價(jià)漢語詞之間的相近度。使得相近性函數(shù)的返回值越大,漢語詞之間的相近度就越大。
圖1是本發(fā)明實(shí)施例所述的一種漢語相近性匹配方法流程圖;圖2是本發(fā)明實(shí)施例所述的一種漢語相近性匹配方法的示意圖;圖3是本發(fā)明實(shí)施例所述的Tablel,Table2,Table3和Table4的示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。字符串相近性函數(shù)在查詢、檢索領(lǐng)域有著極其重要的意義,它為判斷字符串之間的近似程度、估計(jì)用戶真實(shí)查詢意圖提供依據(jù)。定義良好的相近性函數(shù)能夠通過函數(shù)值準(zhǔn)確反應(yīng)字符串的相近度,即值越大、相近性越大,反之則越小(即值越小、字符串之間的差異越少,反之則越多)。英文中有很多廣泛使用的、針對(duì)不同語境的相近性函數(shù),但是漢語作為綜合了字音與字形的語言,直接使用現(xiàn)有的相近性函數(shù)并不能對(duì)人們直觀理解上的字符串之間的近似程度做到很好地估計(jì)。所以我們提出了一種綜合了語音、字形以及編輯、發(fā)音習(xí)慣的漢語字符串相近性的度量函數(shù)。實(shí)施例參照?qǐng)D1,示出了本發(fā)明的一種漢語相近性匹配方法流程圖,所述方法具體包括步驟S101,獲取兩個(gè)待比較的字符串A和B ;按照實(shí)際應(yīng)用中的需求,獲取當(dāng)前需要比較的兩個(gè)字符串A和B。
優(yōu)選的,所述方法還包括建立漢字到拼音的對(duì)照表Tablel ;建立漢字到五筆的對(duì)照表Table2 ;建立漢字詞頻統(tǒng)計(jì)表Table3 ;建立漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4。實(shí)際應(yīng)用中,通過建立映射表得到漢字拼音對(duì)照表Table1,漢字五筆對(duì)照表 Table2,詞頻統(tǒng)計(jì)表Table3,錯(cuò)誤信息統(tǒng)計(jì)表Table4。其中前兩個(gè)表是固定的,后兩個(gè)表可以在使用過程中進(jìn)行累計(jì)更新,具體的建立從漢字拼音對(duì)照表Table1,包含兩列,分別為漢語字符cruchar和對(duì)應(yīng)拼音字符串sp_string,用Cn_Char建立索引。同一個(gè)漢語字符可以對(duì)應(yīng)兩個(gè)或更多讀音,例如 “會(huì)”對(duì)應(yīng) “hui” 和 “kuai”。建立漢字五筆對(duì)照表Table2,包含兩列,分別為漢語字符Cn_Char和對(duì)應(yīng)五筆字型編碼st_string,用cn_char建立索引。例如“會(huì)”對(duì)應(yīng)的五筆字型編碼為“wfc”。建立詞頻統(tǒng)計(jì)表Table3,包含三列,分別為漢語字符串crustring、對(duì)應(yīng)拼音字符串sp_string、對(duì)應(yīng)詞頻信息worcLfrequency,用國(guó)家發(fā)布的常用詞詞頻初始化,用cn_String建立索引。例如“全力”對(duì)應(yīng)的詞頻為沈18,“會(huì)寧”是甘肅省的一個(gè)縣,是兩萬五千里長(zhǎng)征的終點(diǎn),它不屬于常用詞,因此在初始化的時(shí)候,Tabk3中不包含這一項(xiàng),或者說它對(duì)應(yīng)的詞頻為0。但是隨著信息的統(tǒng)計(jì),可以將它加入到表中,對(duì)應(yīng)拼音字符串為“huining”,第一次加入時(shí)詞頻為1,逐次累加。錯(cuò)誤信息統(tǒng)計(jì)表Table4,包含四列,分別為漢語字符串cn_String,正確的對(duì)應(yīng)拼音字符串crt_string,錯(cuò)誤的拼音字符串err_String以及相應(yīng)的錯(cuò)誤頻率err_ frequency,初始化為空,用crustring和err_string建立索引。例如“會(huì)寧”的正確發(fā)音為“huining”,如果出現(xiàn)錯(cuò)誤發(fā)音“huiling”,我們將其加入到表中,這個(gè)錯(cuò)誤第一次出現(xiàn)時(shí),對(duì)應(yīng)的錯(cuò)誤頻率為1,隨著出現(xiàn)次數(shù)增多而向上累加。如果出現(xiàn)錯(cuò)誤發(fā)音“huinin”,則將“會(huì)寧”和“huinin”作為新的一項(xiàng)加入表中。步驟S102,計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度;假設(shè)當(dāng)前所獲取的兩個(gè)待比較的漢語字符串為string_raWl和String_raw2,如果這兩個(gè)字符串已經(jīng)是拼音字符串,則不做任何處理,即Spjtrir^1 = string_raWl,sp_ String2 = string_raw2o優(yōu)選的,當(dāng)所獲取的兩個(gè)待比較的字符串A和B為漢字字符串時(shí),所述方法還包括對(duì)照對(duì)照表Tablel將字符串轉(zhuǎn)化為拼音字符串。若二者原本為漢字字符串,則先將其轉(zhuǎn)換為拼音字符串。具體轉(zhuǎn)換方法為按字符切分 string—rawi 禾口 string—raw” 得到兩個(gè)漢語字符集合 cn—se、= {cn_charn, cn_ char12, . . . , cn_charlm}禾口 cn_set2 = {cn_char21, cn_char22, . . . , cn_char2J,其中 m、η 為兩個(gè)漢語字符串的長(zhǎng)度。在Table1 中查找 Cr^Chari,」,i = 1,2,j = 1,2,· · ·,m(若 i = 1),j = 1,2,· · ·,
η (若i = 2),得到sp_stringi,」,若Cr^Chari,」有兩個(gè)拼音與之對(duì)應(yīng),則利用stringjaw] 查找Table3,確定相應(yīng)字符在給定上下文中的發(fā)音。通過這樣的方式將Ciuseti轉(zhuǎn)換為 Sp-Seti= {sp—stringi」}。再按序組合成對(duì)應(yīng)的拼音字符串sp_strin&,sp_strin&。例如,如果 string_raWl = “全力”,Stringjaw2 = “會(huì)寧”,“會(huì)”有兩個(gè)發(fā)音“hui” “kuai,,, 而Tabk3中只有“huining”,所以可以認(rèn)為“會(huì)”在此發(fā)音為“hui”而不是“kuai”,即cn_ Set1 = { “全”,“力” Lcruset1 = { “會(huì)”,“寧” },sp—se、= {quan,li},sp_set2 = {hui, ning},sp_string1 = "quanli,,,sp_string2 = "huining,,。針對(duì)上述兩種情況,得到實(shí)際用來比較的拼音字符串Sp_Stringl,sp_strin&。優(yōu)選的,所述計(jì)算兩個(gè)字符串A和B在編輯時(shí)的相近度具體包括以下子步驟計(jì)算兩個(gè)字符串A和B的編輯距離相近度根據(jù)正確鍵盤指法,計(jì)算兩個(gè)字符串A和B的鍵盤分布相近度;對(duì)兩個(gè)字符串A和B的編輯距離相近度和鍵盤分布相近度加權(quán)求和,獲取到兩個(gè)字符串A和B在編輯時(shí)的相近度。具體的,在計(jì)算兩個(gè)字符串在編輯時(shí)的相近度時(shí),由于相近性函數(shù)主要是用于計(jì)算機(jī)領(lǐng)域,所以這部分相近度既包含了傳統(tǒng)相近性函數(shù)中的三種編輯操作(插入、刪除和替換),也包含了鍵盤布局信息。經(jīng)過綜合計(jì)算,得到編輯相近度edit_Similarity 計(jì)算 sp_string1 與 sp_strin& 的編輯距離 edit (sp_stringi; sp_string2),具體的計(jì)算方法可以使用經(jīng)典的動(dòng)態(tài)規(guī)劃矩陣。如果我們假定返回的函數(shù)值越高,字符串的相近度越大,我們需要將編輯距離求倒數(shù),為了避免分母為0,給分母加一個(gè)小的常量,例如1 例如 edit( “quanli ”,“huining”)= 5,貝 ljEdit( “quanli ”,“huining”)= l/(edit(sp_ String1, sp_string2) +1) = 1/ (5+1) = 1/6。根據(jù)正確鍵盤指法,左手食指控制的鍵位為{R,T,F(xiàn),G,V,B},左手中指控制的鍵位為{E,D,C},左手無名指控制的鍵位為{W,S, X},左手小指控制的鍵位為{Q,A,Z},右手食指控制的鍵位為{Y,U,H,J,N,M},右手中指控制的鍵位為{I,K},右手無名指控制的鍵位為{0,L},右手小指控制的鍵位為{P}。屬于同一集合中的字母更加容易出現(xiàn)輸入的錯(cuò)誤, 因此應(yīng)該給予更高的相近度??梢詤⒖糞oimdex中的方法,將一個(gè)集合中的元素映射為唯一的一個(gè)數(shù)字,通過這樣的方式將SPjtrir^1與sp_strin&轉(zhuǎn)化為一個(gè)由數(shù)字組成的字符串nunustrinA和num_strin&,然后通過其他已知的相近性函數(shù)來計(jì)算這二者的相近度。 由于鍵盤分布引入的相近度記為L(zhǎng)ayout (num_stringl,num_string2)。例如我們將上面的集合依次記為1、2、3、4、5、6、7、8,則“全力”和“會(huì)寧”可以表示為nun^strir^ = “454576”,num_string2 = “4妨妨41”。假設(shè)仍然用前面的編輯距離來計(jì)算,edit( "454576", "4454541") = 3,則 Layout ( "454576", "4454541") = 1/ (1+3) = 1/4。上述兩個(gè)值加權(quán)求和,得到編輯相近度edit_similarity(sp_strin&,sp_ tring2) = wn*Edit (sp_string1, sp_string2) +W12^Layout (num_string1, num_string2)。若將W11和W12都設(shè)為1/2 (即對(duì)Edit和Layout賦予相同的權(quán)重),則edit_simiIarity (“全力,,,“會(huì)寧”)=edit_similarity( “quanli”,“huining”)= l/2*Edit( "quanli", “huining”)+l/2*Layout( “454576”,“4454541”)= 1/2*1/6+1/2*1/4 = 5/24。步驟S103,獲取兩個(gè)字符串A和B的發(fā)音相近度;優(yōu)選的,所述獲取兩個(gè)字符串A和B的發(fā)音相近度具體包括以下子步驟計(jì)算兩個(gè)字符串A和B的聲母相近度;計(jì)算兩個(gè)字符串A和B的韻母相近度;對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度。優(yōu)選的,所述方法在對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和后, 還包括計(jì)算兩個(gè)字符串A和B的模糊音相近度;將計(jì)算的兩個(gè)字符串A和B的模糊音相近度,與對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和的值進(jìn)行加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度。漢語和英文很大的一個(gè)不同在于漢語中每個(gè)字母都會(huì)有不隨上下文改變的發(fā)音, 而英文中一些字母可能不發(fā)音,也可能在不同的搭配中發(fā)音不相同。所以漢語中發(fā)音相近度無法像英文那樣,直接通過編輯距離或者Soimdex來衡量。這一步根據(jù)漢語發(fā)音特點(diǎn),得到發(fā)音相近度spellsimilarity 漢語的拼音由聲母和韻母兩部分組成,所以在比較時(shí),也需要從這兩部分來考慮。 綜合兩部分的相近度,得到拼音相近度Wioneticize (sp_stringl,sp_string2)拆分sp_ String1和sp_strin&,即進(jìn)一步劃分為聲母和韻母的組合序列,在對(duì)應(yīng)位置進(jìn)行比較。漢語中的聲母一共有23個(gè),按發(fā)音部位對(duì)聲母分類,一共可以分為7類雙唇音 (b,p,m),唇齒音(f),舌尖前音(z, c, s),舌尖中音(d,t,η, 1),舌尖后音(zh, ch, sh, r), 舌面音(j,q,x),舌根音(g,k,h)。還有其他劃分聲母的方式,但從拼音學(xué)習(xí)過程以及發(fā)音習(xí)慣上而言,這樣的劃分方式更符合我們的需求。屬于同一類的聲母具有較高的相近度,對(duì)于整個(gè)字符串,得到綜合的聲母相近度LitiaI(SPjtrir^nSPjtring2)。例如“全”對(duì)應(yīng)的聲母為“q”,“會(huì)”對(duì)應(yīng)的聲母為“h”,分別為舌面音和舌根音,“力”的聲母為“1”,“寧”的聲母為“n”,都是舌尖中音,因此“會(huì)”(hui)和“全”(quan)的聲母相近度要弱于“力”(Ii) 和“寧”(ing)的聲母相近度。如果將聲母屬于同一個(gè)集合記為1,不屬于同一個(gè)集合記為 0,兩個(gè)聲母的權(quán)重分別為1/2 (2是漢語字符串中漢語字符的個(gè)數(shù)),則Initial (“quanli ”, “huining”)= l/2*Initial( "q","h")+l/2*Initial ( “l(fā),,,“n,,)= 1/2*0+1/2*1 = 1/2。漢語中的韻母一共有36個(gè),按照傳統(tǒng)音韻學(xué),可以用“四呼”將其劃分為4類開 Π ^ (a, ai, an, ang, ao, e,ei,en, eng, er,o,ong, on),(i,ia, ian, iang, iao, ie, in, ing, iong, iou),合Π呼(u,ua, uai, uan, uang, uei,uen, ueng, uo),撮Π呼(ii,iian, ue, to)。和聲母相同,屬于同一類的韻母具有較高的相近,以此為依據(jù)得到兩個(gè)完整字符串的綜合的韻母相近度VoWel(Sp_Stringl,sp_string2)。和聲母類似,如果將屬于同一個(gè)集合記為1,否則記為0,每組韻母的權(quán)重為字符串中韻母?jìng)€(gè)數(shù)的倒數(shù),Initial(“qUanli”, “huining”)= l/2*Initial( “uan”,“ui”)+l/2*Initial( “i”,“ing”)= 1/2*1+1/2*1 =1。Phoneticize (sp_string1, sp_string2) = w21,^Initial (sp_string1, sp_ String2) +W22,*Vowel (sp_stringl,sp_string2),通過前面計(jì)算得到的兩個(gè)值加權(quán)求和得到兩個(gè)字符串的拼音相近度。若給聲母相近度和韻母相近度賦予相同的權(quán)值,即W21 ’ =W22, = 1/2,則 Phoneticize ( “quanli”,“huining” ) = l/2*Initial ( "quanli", “huining”)+l/2*Vowel( “quanli”,“huining”)= 1/2*1/2+1/2*1 = 3/4。除了考慮普通話的正常發(fā)音,還要考慮到人們?nèi)粘I钪薪?jīng)常出現(xiàn)的發(fā)音錯(cuò)誤。 在很多南方口音中,前鼻音和后鼻音較難區(qū)分,而對(duì)于一些非專業(yè)人員,平舌音、翹舌音的區(qū)別也沒有那么明顯。所以針對(duì)這些情況,設(shè)置模糊音匹配。例如{z,Zh}, {c, ch}, {s,sh}, {1, η}, {f, h}, {r, 1}, {an, ang}, {en, eng}, {in, ing}, {ian, iang}, {uan, uang},如果對(duì)應(yīng)的聲母(或韻母)在上面設(shè)置的模糊音中的同一個(gè)集合里,這二者的相近度就應(yīng)該高, 可以計(jì)算得到兩個(gè)字符串這部分的相近度FuZZy(Sp_Stringl,sp_string2)。例如將“全力”和“會(huì)寧”拆分為{h,Ui,n,ing}和{q,Uan,l,i},{n,l}可以進(jìn)行模糊音匹配,如果將進(jìn)行模糊音匹配后集合的交集與集合大小的比值作為二者的相近度,則FuZZy( "quanli", “huining”) = 1/4。sp_stringl和sp_strin&的發(fā)音相近度利用上述兩個(gè)值加權(quán)求和得至Ij : spell_similarity(sp_string1, sp_string2) = w21*Phoneticiz (sp_string1, sp_ String2) +W22^Fuzzy (sp_string1, sp_string2)。 若設(shè) w21 = W22 = 1/2, 貝Ij spell_ similarity(“全力”,“會(huì)寧”)=spell_similarity ( “quanli ”,“huining”)= 1/2氺Phoneticiz ( "quanli,,,"huining,,)+1/2氺Fuzzy ( "454576", "4454541")= 1/2*3/4+1/2*1/4 = 1/2。步驟S104,獲取兩個(gè)字符串A和B的字形相近度;拼音只是漢語中的一部分,它們的相近度只能部分反映兩個(gè)字符串的相近度。如果給定的兩個(gè)字符串原本是漢字字符串,那么也需要將字形因素加入到相近性函數(shù)的考慮范圍中來。五筆字型完全依據(jù)筆畫和字形對(duì)漢字編碼,所以用五筆的編碼方式一定程度上可以反應(yīng)漢語字符在字形上的差異。而另一方面,仍然有很多人在使用五筆輸入法,從用戶使用來考慮,也應(yīng)該將這個(gè)因素加入到相近性函數(shù)中來。例如“全力”的“全”發(fā)音為quan, 而“會(huì)寧”的“會(huì)”發(fā)音為hui,從字音角度,或者從二者拼音的差異來說,都是非常大的。但是它們?cè)谧中紊蠀s很接近,因此很容易被人認(rèn)錯(cuò)?!叭钡奈骞P編碼為“wgf”,“會(huì)”的五筆編碼為“wfc”,它們都包含 ”和“f”,所以可以判定它們的字形一定程度上是接近的。與此相比,“全”和“權(quán)”發(fā)音相同,但是“權(quán)”的五筆編碼為“scy”,可見這兩個(gè)同音字字形差異很大,在拼寫或者選擇時(shí)不容易出現(xiàn)錯(cuò)誤。當(dāng)字符串中包含漢字字符時(shí),在Tabk2中查找CiUChariJi = 1,2, j = 1,2,..., m(若i = 1),j = 1,2,. . .,n(若i = 2),得到st_stringi,」,比較每個(gè)字對(duì)應(yīng)的相近度, 即stroke_simiIarityj (st_stringl,st_string2)。在將它們綜合起來,得到的就是這兩個(gè)字符串的字形相近度 stroke_similarity (string—raw” string_raw2),也可以將 Cr^seti 轉(zhuǎn)換為st_Seti = {sp_stringij},而兩個(gè)字符串對(duì)應(yīng)的集合的相近度,就是它們的字形相近度。例如如果用五筆編碼的Jaccard距離作為衡量?jī)蓚€(gè)漢語字符字形相近度的方式, 則:stroke_similarityi( “全力,,,“會(huì)寧”)=Jaccard( “全,,,“會(huì)”)=Jaccard( “wgf,,, "wfc") = 2/4 = 1/2 ; stroke_simi Iarity2 ( “全力”,“會(huì)寧”)=Jaccard ( “力”,“寧,,) =Jaccard( “l(fā)tn”,“psj”)=0/6 = 0 ;若將一個(gè)字符串中的所有字符都賦予相同的權(quán)重,則 stroke_similarity( “全力,,,“會(huì)寧”)=l/2*stroke_similarityi ( “全力,,,“會(huì)寧,,)+stroke_simiIarity2 ( “全力”,“會(huì)寧”)=1/2*1/2+1/2*0 = 1/4。步驟S105,對(duì)照預(yù)先建立的漢字詞頻統(tǒng)計(jì)表Tab 1 e3和漢字錯(cuò)誤信息統(tǒng)計(jì)表 Table4統(tǒng)計(jì)兩個(gè)字符串A和B的詞頻和錯(cuò)誤信息;統(tǒng)計(jì)信息包含兩部分,一部分為詞語使用信息,另一部分為錯(cuò)誤信息。信息統(tǒng)計(jì)反應(yīng)了特定用戶的使用習(xí)慣,這部分信息保存在Tabk3和Tabk4中。信息的來源可以使本地的用戶,也可以是網(wǎng)絡(luò)。
步驟S106,根據(jù)統(tǒng)計(jì)結(jié)果確定兩個(gè)字符串A和B編輯時(shí)的相近度、發(fā)音相近度以及字形相近度的權(quán)值,計(jì)算獲取到兩個(gè)待比較的漢語字符串A和B的匹配度。通過前面的介紹,可以得到編輯時(shí)的相近度、發(fā)音相近度以及字形相近度三個(gè)相近度:edit_similarity (sp_string1 sp—String2),spell_similarity (sp_string-1 sp—String2)禾口 stroke_similarity (string—I^aw1,string—raw2)。 用 Table3 禾口 Table4 中存儲(chǔ)的統(tǒng)計(jì)信息確定這三個(gè)相近度的權(quán)值Wl、W2、W3,加權(quán)組合得到兩個(gè)字符串整體 的相近度!similarity (string—raw1 string—raw2) = w^edi^similarity (sp_ string” sp_string2) +W2^spel l_simi Iarity (sp_string1 sp_string2) +w3*stroke_ similarity (string—raw” string—raw2) 0當(dāng)設(shè)置三個(gè)相近度權(quán)重相等,即W1 =W2 = W3= 1/3,則similarity ( “全力”,“會(huì)寧”)=l/3*edit_similarity(“quanli”,“huining”)+l/3*spell_similarity(“quanli”, "huining") +l/3*stroke_similarity( “全力”,“會(huì)寧”)=1/3*5/24+1/3*1/2+1/3*1/4 = 23/72。優(yōu)選的,其中,錯(cuò)誤頻率之和與詞頻之和的比值越大,發(fā)音相近度所對(duì)應(yīng)的權(quán)值W2 越小。參見圖2給出了本發(fā)明所述一種漢語相近性匹配方法的示意圖,圖3示出了上述 Tablel,Table2,Table3和Table4的示意圖;需要說明的是,本實(shí)施例所述的方法在正式比較之前,需要建立一些映射表,為后續(xù)過程提供依據(jù)。其中部分表是從一開始就確定的,而另一部分表則在函數(shù)使用過程中通過用戶反饋、或信息抓取來不斷更新。在初始階段就能夠基本確定的表包括漢語字符到拼音、五筆字型編碼(86版)的映射表,這部分表通過國(guó)家或相關(guān)企業(yè)、個(gè)人發(fā)布的標(biāo)準(zhǔn)獲得。而詞頻信息、錯(cuò)誤信息需要不斷補(bǔ)充完善。統(tǒng)計(jì)信息對(duì)于漢語相近性函數(shù)有著非常重要的作用,例如,“灰常(huichang) ”、“會(huì)場(chǎng)(huichang) ”和 “非常(feichang) ”,單從讀音上來說,前兩個(gè)更加接近,并且在網(wǎng)絡(luò)流行語開始變得普遍之前,第一個(gè)詞就是一個(gè)錯(cuò)誤拼寫。但是,在現(xiàn)代漢語使用中,我們可以發(fā)現(xiàn),“灰?!笨梢宰鳛?“非?!钡耐x詞使用,它們倆的近似程度是很高的。如果語義信息不是字符串相近性函數(shù)要考慮的內(nèi)容,那么在很多方言或者較為常見的錯(cuò)誤發(fā)音中,“h”和“f”是經(jīng)常被混淆的, 這就是它們相近的依據(jù)。隨后,可以利用建立好的映射關(guān)系計(jì)算漢語字符串的相近度。對(duì)于兩個(gè)輸入的漢語字符串string” Strir^2,先通過映射表找到它們對(duì)應(yīng)的拼音字符串和五筆編碼字符串。 如果一個(gè)字是多音字,則可以通過詞頻信息判斷哪個(gè)讀音才是正確的。在正式比較之前,可以通過一定的方式對(duì)齊輸入的漢語字符串,即判斷在比較時(shí),String1中的每個(gè)漢語字符與 String2中的哪個(gè)字符對(duì)應(yīng)。接下來就通過比較對(duì)應(yīng)字符之間的相近程度來比較兩個(gè)完整漢語字符串之間的相近度。以上對(duì)本發(fā)明所提供的一種漢語相近性匹配方法進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種漢語詞語相近性匹配裝置,其特征在于,所述裝置包括字符串獲取模塊,用來獲取兩個(gè)待比較的字符串A和B ;編輯時(shí)的相近度獲取模塊,通過計(jì)算兩個(gè)字符串A和B的編輯距離相近度以及根據(jù)正確鍵盤指法,計(jì)算兩個(gè)字符串A和B的鍵盤分布相近度,對(duì)兩個(gè)字符串A和B的編輯距離相近度和鍵盤分布相近度加權(quán)求和,獲取到兩個(gè)字符串A和B在編輯時(shí)的相近度。發(fā)音相近度獲取模塊,通過計(jì)算兩個(gè)字符串A和B的聲母相近度,計(jì)算兩個(gè)字符串A和 B的韻母相近度,對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度;字形相近度獲取模塊,用來獲取兩個(gè)字符串A和B的字形相近度;詞頻和錯(cuò)誤信息統(tǒng)計(jì)模塊,用來對(duì)照預(yù)先建立的漢字詞頻統(tǒng)計(jì)表Table3和漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4統(tǒng)計(jì)兩個(gè)字符串A和B的詞頻和錯(cuò)誤頻率。匹配度獲取模塊,根據(jù)詞頻和錯(cuò)誤信息統(tǒng)計(jì)模塊的統(tǒng)計(jì)結(jié)果確定兩個(gè)字符串A和B編輯時(shí)的相近度、發(fā)音相近度以及字形相近度的權(quán)值,計(jì)算獲取到兩個(gè)待比較的漢語字符串A 和B的匹配度,其中,兩個(gè)字符串A和B的錯(cuò)誤頻率之和與詞頻之和的比值越大,所述發(fā)音相近度所對(duì)應(yīng)的權(quán)值越小。
2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括表建立模塊,用于建立漢字到拼音的對(duì)照表Tablel、漢字到五筆的對(duì)照表Table2、漢字詞頻統(tǒng)計(jì)表Table3、漢字錯(cuò)誤信息統(tǒng)計(jì)表Table4。
3.根據(jù)權(quán)利要求1-2所述的裝置,其特征在于,當(dāng)所獲取的兩個(gè)待比較的字符串A和B 為漢字字符串時(shí),所述裝置還包括字符串拼音轉(zhuǎn)化模塊,對(duì)照對(duì)照表Tablel將字符串轉(zhuǎn)化為拼音字符串。
4.根據(jù)權(quán)利要求1-3所述的裝置,其特征在于,所述發(fā)音相近度獲取模塊在對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和后,不直接獲取兩個(gè)字符串A和B的發(fā)音相近度,而使用以下步驟獲取兩個(gè)字符串A和B的發(fā)音相近度計(jì)算兩個(gè)字符串A和B的模糊音相近度;將計(jì)算的兩個(gè)字符串A和B的模糊音相近度、與對(duì)兩個(gè)字符串A和B的聲母相近度和韻母相近度加權(quán)求和的值進(jìn)行加權(quán)求和,獲取到兩個(gè)字符串A和B的發(fā)音相近度。
全文摘要
本發(fā)明提供了一種漢語詞語相近性匹配裝置及其方法,尤其涉及到漢語術(shù)語,該裝置和方法用以精確地度量漢語發(fā)音、方言、字形、術(shù)語等漢語使用中常出現(xiàn)的錯(cuò)誤,從而返回更加符合漢語使用習(xí)慣的函數(shù)值,并且,它能更進(jìn)一步地挖掘用戶的習(xí)慣,校準(zhǔn)、擴(kuò)展原有模型,并且可以幫助用于幫助用戶直接找到他們期望的詞語。
文檔編號(hào)G06F17/30GK102214238SQ20111018320
公開日2011年10月12日 申請(qǐng)日期2011年7月1日 優(yōu)先權(quán)日2011年7月1日
發(fā)明者徐海燕 申請(qǐng)人:臨沂大學(xué)