本發(fā)明涉及自然語言,特別涉及一種中文搜索詞智能切分方法。
背景技術(shù):
中文信息處理是計算機互聯(lián)網(wǎng)應用中的一個重要構(gòu)成部分,包括多個層面的信息處理任務,包括字詞處理、短語處理、句子處理以及全文處理。在中文信息處理的廣泛應用中,首先遇到的是詞的切分問題。目前對于分詞的研究已經(jīng)取得了很大的成果,廣泛應用到多個技術(shù)領(lǐng)域當中,包括自動檢索、信息分類、話音識別、自動翻譯以及內(nèi)容標注等。而伴隨著信息多元化與復雜化日趨明顯,在信息處理及應用領(lǐng)域必須跨越傳統(tǒng)單純文本的檢索,例如在語音搜索引擎和自動問答系統(tǒng)中,必須對關(guān)鍵字進行語義分析和處理。由于漢語自身的復雜性,歧義和新詞識別仍是急需解決的難題,基于近幾年語音搜索引擎的實際分析能力來看,距離客觀需求標準還是存在較大差距。
技術(shù)實現(xiàn)要素:
為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種中文搜索詞智能切分方法,包括:
對待輸入的文本串,通過預處理得到n組預切分結(jié)果,然后基于統(tǒng)計分析和詞庫優(yōu)化切分結(jié)果,并基于語法對進行新詞進行識別,最后進行詞性標注,得到最終的切分結(jié)果。
優(yōu)選地,所述通過預處理得到n組預切分結(jié)果,進一步包括:
對輸入的文本中包含的字母、符號符號用分隔符隔開,然后構(gòu)建dag圖,對dag圖進行遍歷得到n組預切分結(jié)果,對輸入的文本進行字體轉(zhuǎn)化、文本斷句和原子切分,輸入的文本經(jīng)過預處理模塊后分解成小的處理單元。
優(yōu)選地,所述對dag圖進行遍歷得到n組預切分結(jié)果,進一步包括:
對于預處理后的切分結(jié)果w,給求解概率p(w)賦予一個最大是n種的切分結(jié)果集合;
假設字串s=c1,c2,…,cn的一個切分結(jié)果是w=w1,w2,…,wm,wi所代表的是一個詞,p(wi)所代表的是wi出現(xiàn)概率;
p(wi)的極大估計值是和詞頻相等,也就是:
其中ki表示wi在訓練樣本中出現(xiàn)的次數(shù);
根據(jù)上述公式得到w的聯(lián)合概率:
修改切分得到的dag圖的邊長,采用加1處理:
1)<vk-1,vk>的長度值為lk=-ln(0+1),(k=1,2,…,n)
2)w=c1,c2,…,cj對所對應的有向邊為<vi-1,vj>,其長度值為
最后,得到修改邊長之后的一個dag圖;
然后通過貪心算法,針對所有的節(jié)點位置,記錄n個最短路徑值,同時記錄相應路徑當中的節(jié)點前驅(qū)情況;如果同一長度能夠?qū)鄺l路徑,則將所有路徑中的節(jié)點前驅(qū)進行記錄,從而采用回溯方法求解。
優(yōu)選地,所述基于統(tǒng)計分析和詞庫優(yōu)化切分結(jié)果,進一步包括:
對于輸入文本的第一次分詞,同時利用基于hmm方法識別出部分新詞,然后通過頻度分析,提取權(quán)重較大的值存入遞增詞庫,通過遞增詞庫不斷增加主詞庫的容量,消除由分詞詞庫的大小而引起的歧義。
優(yōu)選地,所述基于語法對進行新詞進行識別,進一步包括:
利用多進程活躍度識別新詞對分詞得到的新詞的識別,輸出為經(jīng)過識別出部分新詞和歧義的切分單元,對歧義切分進行二次修正,計算出分詞的最優(yōu)結(jié)果。
本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點:
本發(fā)明提出了一種中文搜索詞智能切分方法,對于結(jié)構(gòu)復雜的語句識別的準確率明顯提高,克服了單獨使用基于hmm的模型不能體現(xiàn)復合結(jié)構(gòu)特征的缺點,大大改善系統(tǒng)的整體性能,基本符合實際搜索的需要。
附圖說明
圖1是根據(jù)本發(fā)明實施例的中文搜索詞智能切分方法的流程圖。
具體實施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種中文搜索詞智能切分方法。圖1是根據(jù)本發(fā)明實施例的中文搜索詞智能切分方法流程圖。
本發(fā)明的分詞系統(tǒng)包括:預處理模塊、分詞模塊、新詞識別模塊和詞性標注模塊。首先,分詞預處理模塊是對待輸入的文本進行預切分,得到n組預切分的最優(yōu)結(jié)果,對輸入的文本中包含的字母、符號符號用分隔符隔開,然后構(gòu)建dag圖,對dag圖進行遍歷得到n組預切分結(jié)果,即對輸入的文本進行字體轉(zhuǎn)化、文本斷句和原子切分。輸入的文本經(jīng)過預處理模塊后分解成小的處理單元,提高分詞系統(tǒng)的整體性能。
分詞模塊根據(jù)分詞詞庫和統(tǒng)計模型進行分詞,對預處理模塊后的n組預切分結(jié)果進行進一步的優(yōu)化,找出概率最大的結(jié)果。采用了基于詞庫和統(tǒng)計相結(jié)合的算法,對于輸入文本的第一次分詞,同時利用基于改進的hmm方法識別出部分的新詞,然后通過頻度分析,提取權(quán)重較大的值存入遞增詞庫,分詞詞庫是一個動態(tài)更新的詞庫,通過遞增詞庫不斷增加主詞庫的容量,可以最大限度的消除由分詞詞庫的大小而引起的歧義。
在文本經(jīng)過預處理模塊和分詞模塊后,新詞識別模塊利用多進程活躍度識別新詞對分詞得到的新詞的識別,輸出為經(jīng)過識別出部分新詞和歧義的切分單元,對歧義切分進行二次修正,計算出分詞的最優(yōu)結(jié)果。多進程具體包括,通過第一層的統(tǒng)計進程,即活躍度自組織的隱馬爾科夫統(tǒng)計模型,對輸入的文本進行序列的進一步識別,然后利用第二層的規(guī)則進程,即規(guī)則庫中的多個子進程,對統(tǒng)計進程識別的結(jié)果進行修正。匹配監(jiān)控進程,對系統(tǒng)中統(tǒng)計進程和規(guī)則進程的活躍度狀態(tài)值的變化進行監(jiān)測,最終輸出的識別結(jié)果。
通過最后的詞性標注模塊進行標注和修正,輸出切分結(jié)果。
本發(fā)明的方法對待輸入的文本串,通過預處理得到n組預切分結(jié)果,然后通過改進的統(tǒng)計分析過程和詞庫相結(jié)合,進一步優(yōu)化切分結(jié)果,然后通過基于語法的新詞識別方法進行新詞的識別,最后進行詞性標注,得到最終的切分結(jié)果。
對于預處理后的切分結(jié)果w,給求解概率p(w)賦予一個最大是n種的切分結(jié)果集合。假設字串s=c1,c2,…,cn的一個切分結(jié)果是w=w1,w2,…,wm,wi所代表的是一個詞,p(wi)所代表的是wi出現(xiàn)概率。p(wi)的極大估計值是和詞頻相等,也就是:
其中ki表示wi在訓練樣本中出現(xiàn)的次數(shù)。
根據(jù)上述公式得到w的聯(lián)合概率:
修改切分得到的dag圖的邊長,為能夠使得數(shù)據(jù)信息平滑簡單,采用加1處理:
1)<vk-1,vk>的長度值為lk=-ln(0+1),(k=1,2,…,n)
2)w=c1,c2,…,cj對所對應的有向邊為<vi-1,vj>,其長度值為
最后,得到修改邊長之后的一個dag圖。然后通過貪心算法來求解。針對所有的節(jié)點位置,記錄n個最短路徑值,同時記錄相應路徑當中的節(jié)點前驅(qū)情況。如果同一長度能夠?qū)鄺l路徑,則將所有路徑中的節(jié)點前驅(qū)進行記錄,從而采用回溯方法求解。
在本發(fā)明的系統(tǒng)中,對分詞詞庫的結(jié)構(gòu)進行了改進,有主詞庫和遞增詞庫兩部分組成。主詞庫采用多級散列存儲結(jié)構(gòu),在初始化時包括常用的詞,隨著分詞的學習不斷加載詞條,完善主詞庫。遞增詞庫在初始化時數(shù)據(jù)為空,需要不斷更新,并把符合預設條件的詞條實時的存入到主詞庫中。
所述多級散列具體包括以下3部分:首字散列表,每個單元包括兩個內(nèi)容,即關(guān)鍵字和表指針,關(guān)鍵字指向中文字a,表指針指向以a起始的所有詞的第二個字的索引;次字散列表,每個單元包括關(guān)鍵字和字符串指針,關(guān)鍵字指向中文字b,表指針指向以ab開始的全部詞的剩余字符串;剩余串表,排序保存以ab開頭的詞庫中所有詞的字符串。
其中,加載主詞庫的數(shù)據(jù)結(jié)構(gòu)采用以下方法:
1.首先打開文本文件,讀取文件中的第一個詞條;
2.讀取該詞條的首字,并且要和核心詞庫里面的首字散列表進行對比分析;
3.判斷次字關(guān)鍵字詞庫里面是否有相符字符;
4.把剩余的子串添加到詞庫下文里面;
5.循環(huán)判斷文本文件是否已經(jīng)結(jié)束,若是,標記核心詞庫加載成功;否則復第2步到第4步。
遞增詞庫用于持續(xù)擴充主詞庫,在分詞過程當中,統(tǒng)計得出新生詞的詞頻信息。當滿足閾值條件時,則將該詞存入主詞庫,并將該詞從遞增詞庫去除。為了節(jié)省空間,本發(fā)明采用中文字的gb2312碼構(gòu)建得出散列函數(shù)定位相同碼值,并產(chǎn)生遞增詞庫。遞增詞庫的加載是在分詞系統(tǒng)初始化以后,語料是學習階段的待分文本。在實際的加載過程中,需要把所有詞按照規(guī)定的數(shù)據(jù)結(jié)構(gòu)存入遞增詞庫,并且記錄詞語的頻度,在預處理階段將需要分解的文本變成多個短單元,并且統(tǒng)計單句數(shù)量。將遞增詞庫中將空間分為大塊數(shù)據(jù)。在每個大塊數(shù)據(jù)里面,都各自存儲首字相同的詞條。
對于新詞識別,本發(fā)明通過大量訓練語料對統(tǒng)計模型進行訓練,得到初步估計值,然后通過自組織學習,去除掉弱鏈接和實現(xiàn)相鄰的狀態(tài)共享,并對每個狀態(tài)的活躍度值進行監(jiān)測,最后重新進行參數(shù)估計,得到hmm狀態(tài)圖和最優(yōu)的新詞標記序列。
采用5元組來表示統(tǒng)計模型:s,o,r,w,n,各種參數(shù)的定義為:
s={s1,s2,…,sn}表示狀態(tài)集合;
o表示每個s的觀測值,o={o1,o2,…,on}表示觀測值序列;
r={rij}表示狀態(tài)轉(zhuǎn)移矩陣,rij表示狀態(tài)si轉(zhuǎn)移到狀態(tài)sj的概率;
概率分布矩陣w={wj(k)}表示從狀態(tài)sj觀測到ok的概率;
本發(fā)明的新詞識別是以詞性序列作為觀測值,每個狀態(tài)代表某一類新詞的內(nèi)部組成成分、上下文信息或無關(guān)成分。采用{b,i,e}作為新詞的狀態(tài)標記集,其中b、i、e分別表示新詞的開始、內(nèi)部和結(jié)尾。
給定詞性序列x={xl,x2,…,xn},識別過程即獲取最優(yōu)的標注序列y={yl,y2,…,yn},使得條件概率p(y|x)值達到最大,其中
p(y|x)=p(y)p(x|y)/p(x)
識別過程中,觀測值為詞性,p(x)為常數(shù),得到參數(shù)的初步估計值,然后通過hmm的自組織學習,最終輸出y為:
其中p(yi,yi-1)表示狀態(tài)yi-1到狀態(tài)yi的轉(zhuǎn)移概率,p(xi|yi)表示狀態(tài)yi出現(xiàn)的條件下觀測到xi的發(fā)射概率。
對于給定模型和觀測值序列,找出概率最大的狀態(tài)序列,即解碼過程。最后在觀測序列o的條件下,得到最優(yōu)內(nèi)部狀態(tài)序列。
新詞有很大一部分是多個詞復合而成的,其內(nèi)部結(jié)構(gòu)嵌套多種類型的新詞。因此本發(fā)明通過規(guī)則進程中多個子進程的共同協(xié)商協(xié)調(diào),對統(tǒng)計進程識別的結(jié)果進行二次修正。規(guī)則庫中的每條規(guī)則的組成如下:
pos<loc>+context<loc>=result<loc><type>
其中,pos是指詞性序列,loc是指位置,分別用-1,0,1表示前一位,當前位和下一位,context是指內(nèi)部關(guān)鍵詞、前后綴詞和新詞前后的指示詞,result是指新詞修正后的最終結(jié)果,type是指新詞的類型,如人名,地名,機構(gòu)名,術(shù)語,針對不同類型的新詞,提取不同的規(guī)則,并且按照一定權(quán)重進行遍歷選擇。
定義出現(xiàn)在專有名詞前面的詞為前綴詞prens,出現(xiàn)在專有名詞后面的詞為后綴詞sufns,利用前后綴識別出簡單的專有名詞,對于比較復雜的專有名詞,利用首字作為觸發(fā)詞,同時引用到專有名詞用字表,規(guī)則如下:
p0(ns)+w1(sunfs)—t0(ns);
p0(ni)+w1(sunfs)—t0(ni);
p0(nz)+w1(sunfs)—t0(nz);
表示當前詞的詞性為ns、ni或者nz時,且下一個詞的是ns、ni或nz的后綴詞,則當前詞的新詞標記是分別為ns、ni或者nz。
通過新詞的內(nèi)部特征識別復合的新詞,內(nèi)部特征包括內(nèi)部詞性序列和特征詞兩部分,其中內(nèi)部詞性序列是指組成復合詞的各個詞對應的詞性,從訓練語料中獲取,并滿足一定的閾值,特征值是指具有明確指示新詞類別的詞語。規(guī)則如下:
①pos+pro+nh|ns|ni|nz;
②特征詞+nh|ns|ni|nz;
其中pos是指復合ne的詞性串序列,pro是指詞性串出現(xiàn)的次數(shù)除以pos出現(xiàn)的總數(shù),即是詞性串序列出現(xiàn)的概率,nh|ns|ni|nz為pos或特征詞對應的ne類別。
通過不同類型新詞處理子進程的協(xié)商協(xié)調(diào),對統(tǒng)計進程識別的結(jié)果進行消歧,提高系統(tǒng)的正確率。
進一步而言,本發(fā)明通過增加一層匹配監(jiān)控進程,對新詞識別過程中的統(tǒng)計進程和規(guī)則進程的活躍度狀態(tài)值t進行監(jiān)測,并且通過活躍度狀態(tài)值t的變化進行調(diào)整,保證各個進程之間協(xié)商協(xié)調(diào)的工作,具體定義如下:
設a是由n個子進程組成的進程,a=[a1,a2,…,am]t,b是由m個子進程組成進程,b=[b1,b2,…,bm]t,因此,各層進程間的聯(lián)絡矩陣c:
c=abt
當aibj=1時,表示a層中第i個和b層中的第j個子進程有活躍度;當aibj=0時,表示a層中第i個和b層中的第j個子進程沒有活躍度。
設d表示權(quán)重矩陣,d中的元素dij表示a層中的第i個到b層中的第j個子進程的權(quán)重選擇值,則相應的狀態(tài)活躍度值為:
在識別過程中,各個進程的活躍度狀態(tài)值用t表現(xiàn),通過權(quán)重矩陣d,來衡量各層進程中各個子進程的路徑選擇。利用規(guī)則進程對統(tǒng)計進程的結(jié)果進行修正時,只有當對應的詞性序列、內(nèi)部特征和上下文相關(guān)信息相匹配時,此時aibj=1,才能利用規(guī)則庫中的子進程進行修正。當一個詞性同時匹配了規(guī)則進程中的兩種類型時,則選擇活躍度狀態(tài)值t較大的路徑,即詞性出現(xiàn)的次數(shù)除以該詞出現(xiàn)的總次數(shù)的值最大的類型作為新詞識別的結(jié)果。
綜上所述,本發(fā)明提出了一種中文搜索詞智能切分方法,對于結(jié)構(gòu)復雜的語句識別的準確率明顯提高,克服了單獨使用基于hmm的模型不能體現(xiàn)復合結(jié)構(gòu)特征的缺點,大大改善系統(tǒng)的整體性能,基本符合實際搜索的需要。
顯然,本領(lǐng)域的技術(shù)人員應該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網(wǎng)絡上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。