本發(fā)明涉及漢語自然語言處理、漢語新詞語自動識別領域,特別是涉及一種新術語自動識別系統(tǒng)和方法。
背景技術:
伴隨互聯(lián)網(wǎng)的快速發(fā)展,各類新術語層出不窮,這個自然語言處理應用、自動應用軟件(如分詞系統(tǒng))、詞典收編工作燈帶來很大的困難。
新術語識別的研究已經(jīng)展開了多年?,F(xiàn)存的方法有以下三類。第一基于統(tǒng)計的方法。例如,Kenneth Ward Church和Béatrice Daille等人使用互信息(Mutual Information)來抽取詞語的固定組合和搭配,他們認為頻繁共現(xiàn)的鄰近字符組合一般都是術語,然后使用互信息判斷詞組的共現(xiàn)程度。又如,Ted Dunning和Jonathan D.Cohen等人采用用對數(shù)似然比(Log-Likelihood Ratio)來統(tǒng)計低頻詞語的識別問題,從理論和事實兩方面論證了這種方法的有效性。統(tǒng)計方法還包括條件隨機場方法、隱馬爾科夫方法、最大熵方法等。第二是基于語言學特征和詞法模式的方法。例如,劉磊、王石和田國剛采用多特征,結合詞法和句法模式,獲得新的專業(yè)術語。第三是前兩種方法的集成應用,因而克服了各自的不足。
但是,經(jīng)過詳細的實驗分析,上述方法存以下兩個問題。
問題1:新術語識別精度問題。采用純統(tǒng)計的方法,雖然能識別較多地新術語,但是通常會引入大量的錯誤;也即,不是新術語的漢字串,被誤以為是新術語。例如,在語句“總部組織干部學習中央精神”中,采用統(tǒng)計方法時,很容易就將“總部組織干部”、“組織干部”、“干部學習”等誤識為新術語,而本質上,它們均不是。另一方面,要確保新術語額度識別精度很高,識別廣度又受到限制。這是本發(fā)明需要解決的關鍵問題之一。
問題2:新術語識別廣度問題。由于詞語的組合情況很多,因此新術語自動識別很容易遺漏掉新有意義的術語。因此,如何提高識別廣度是一個重要的問題。這也是本發(fā)明需要解決的關鍵問題之一。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題:新術語識別精度問題、識別廣度問題。
針對問題1,本發(fā)明引入了種子術語詞典技術,不僅利用種子詞典進行新術語的識別, 同時也用它來驗證新獲得的新術語。
針對問題2,本發(fā)明引入了多源迭代式新術語識別技術。首先,采用多源分析方法,根據(jù)多個文本進行比照驗證,提升新術語的識別精度;同時將獲得的新術語加入到種子術語詞典中,不斷地循環(huán)使用,從而獲得更多的新術語。
為了實現(xiàn)上述目的,本發(fā)明提供了如下技術方案:一種高效的新術語識別系統(tǒng),其特征在于:包括對輸入文本庫RCorpus中的每篇文檔進行分詞,形成文本詞序列模塊A;對分詞后的文本庫TCorpus中的每篇文檔詞語序列進行新術語識別模塊B;對識別的新術語進行驗證模塊C;
上面所述模塊中,模塊A對輸入文本庫RCorpus中的每篇文擋進行分詞,形成分詞后的文本詞序列,因此形成分詞后的文本庫TCorpus,供新術語識別模塊B使用;新術語識別模塊B對分詞后的文本庫TCorpus中的每篇文檔進行新術語識別,形成一組待驗證的新術語結果,供驗證模塊C使用;驗證模塊C對新術語識別模塊B識別的新術語進行進一步的驗證。
一種高效的新術語識別方法,其特征在于:包括以下步驟:
第一步:文本詞序列模塊A對輸入文本庫RCorpus中的每篇文本進行分詞,形成文本詞序列;
我們采用一個開源的ICTCLAS系統(tǒng)對RCorpus中的每篇輸入文本D進行分詞,分詞結果為T′=W1/pos1W2/pos2…Wi/posi…Wn/posn,其中每個Wi是一個漢語詞、漢字、標點符號、阿拉伯數(shù)字、英文單詞或字母,posi是其對應的詞性;
為了表示區(qū)別,RCorpus中的每篇文本文本經(jīng)過分詞后,所產(chǎn)生的文本,我們記為TCorpus;
第二步:新術語識別模塊B對分詞后的文本庫TCorpus中的每篇文本詞語序列進行新術語識別;
當前待識別文本為Di,Ti為它的標題,Sij為Di的當前待識別的第j條語句;對Sij進行以下步驟的處理,形成候選的新術語結果,存放在集合tmp_result中:
步驟B1:設置tmp_result為空;
tmp_result用于存放識別出的新術語結果,傳遞給驗證模塊C進行驗證。因此,tmp_result中的新術語結果也稱候選的新術語結果,也稱待驗證的新術語結果;
步驟B2:將Sij中連續(xù)最長的、詞性標記為a、b、j、n、m、q的詞形成一個候選新術語,記為NewTerm;所述“連續(xù)最長”,是指在Sij中NewTerm的兩端沒有詞性為a、b、j、n的詞;
步驟B3:如果在Sij中緊接著NewTerm的詞語W的詞性是k,即W可能是NewTerm的后綴, 則設置
步驟B4:如果在Sij中位于NewTerm之前的詞語W的詞性是h,即W可能是NewTerm的后綴,則設置
步驟B5:將(NewTerm,Ti,Sij)放入tmp_result中;
第三步:驗證模塊C對識別的新術語進行驗證;
驗證模塊C的主要工作是采用多源驗證法、特殊驗證法,對新術語識別模塊B產(chǎn)生的tmp_result中的新術語進行驗證,驗證過的新術語放入集合result中;驗證模塊C的方法如下:
步驟C1:設置result為空;
步驟C2:對tmp_result中的每一對(NewTerm,Ti,Sij)循環(huán)做以下步驟C3、C4和C5;
步驟C3:如果在tmp_result中存在(NewTerm,Ti′,Sij′),并且Ti與Ti′不同“即NewTerm出現(xiàn)在TCorpus中的兩篇不同的文本中”,則將NewTerm放入result中;否則,執(zhí)行步驟C4;
如上述步驟C3中所述,盡管NewTerm在題名為Ti的語句Sij中被識別為候選新術語,但是NewTerm并不一定就是一個正確的新術語;但是,在題名為Ti′的語句Sij′中也被識別為新術語,則NewTerm是正確的新術語的可能性會大大提升;
步驟C4:如果在種子詞典中存在一個種子術語Term,使得NewTerm與Term的加權相似度wsim(NewTerm,Term)>α,其中α∈[0,1]為一個閾值),則將NewTerm放入result中;否則,執(zhí)行步驟C5;
為給出兩個術語的加權相似度wsim(NewTerm,Term)的計算,我們先給出函數(shù)2gram的計算方法;對一個非空漢字串Sent=C1C2…Ci-1Ci…CK-1CK,其中Ci為漢字、數(shù)字、英文字母,我們引入一個帶頭尾標記的漢字串Sent=$C1C2…Ci-1Ci…CK-1CK$;2gram(Sent)是一個由Sent中自左向右連續(xù)的兩個字符構成的集合,即2gram(Sent)={$C1,C1C2,…,Ck-1CK,CK$};
需要指出的是,2gram(Sent)中各個元素的重要性不相同:Ci-1Ci是漢語中的一個詞時,Ci-1Ci在2gram(Sent)的作用更大;為了反映出2gram(Sent)中各個元素的重要性,對前面定義的Interset(S1,S2)進行改進,引入一個新的基數(shù),叫作加權交集基數(shù)WInterset(S1,S2);其計算方法如下:對給定了兩個集合S1和S2:
(1)WInterset(S1,S2)=0;
(2)對Interset(S1,S2)每一個元素e,如果e是漢語中的一個詞,則WInterset(S1,S2)=WInterset(S1,S2)+1.2,即WInterset(S1,S2)累加1.2,而不是1;否則WInterset(S1,S2)= WInterset(S1,S2)+1,即WInterset(S1,S2)累加1;
wsim(NewTerm,Term)的計算方法如下:
(1)如果NewTerm與Term具有相同的前綴和后綴,wsim(NewTerm,Term)=1;
(2)如果NewTerm與Term不具有相同的前綴和后綴,
步驟C5:利用NewTerm在Sij的語境進行驗證;具體方法是:當NewTerm在Sij前面的分詞的詞性為c、d、p、r、u、z之一,并NewTerm在Sij后面的分詞的詞性為c、d、p、r、u、z之一時,NewTerm是一個正確的新術語,加入到result中;否則放棄,即不加入到result中;
步驟C6:輸出result做為最后結果。
有益效果:本發(fā)明提出了一種精度高、召回率高的新術語識別方法和系統(tǒng)。在經(jīng)過多達2GB頁面語料的測試中,除了新聞領域,也涵蓋各種行業(yè)和專業(yè)領域。新術語的識別精度為93.8%。因此,本發(fā)明取得了較好的識別性能,已經(jīng)達到了實際應用的目的,為詞典編撰、分詞應用、文本分類、輿情分析、廣告分析等大量的應用,奠定了堅實的基礎。
附圖說明
圖1是本發(fā)明的新術語識別系統(tǒng)的工作流程圖;
圖2是模塊B的工作方法示意圖;
圖3是模塊C的工作方法示意圖。
具體實施方式
為了能夠更清楚的說明本發(fā)明,以下定義并解釋如下的術語:
(1)詞長:即詞的長度。一個漢語詞由一個或多個漢字做成,一個詞的長度等于該詞所含的字的個數(shù)。詞長為1的詞稱為一字詞,詞長為2的詞稱為二字詞,詞長為3的詞稱為三字詞,以此類推。
(2)多字詞:由詞長為3或以上的漢字組成、具有一定意義的詞稱為多字詞,例如“中共精神”、“正能量”,其中前者為四字詞,后者為三字詞。
(3)詞典:由一組詞構成的詞的列表,其中的詞可以是單字詞(即詞長為1)、二字詞(即詞長為2)或多字詞。
(4)新術語:給定一個術語詞典,不在此詞典出現(xiàn)的術語稱為新術語,也稱未收錄術語。
(5)文本詞序列、語句詞序列:對一個文本進行分詞,形成一個詞的序列,稱為文 本詞序列,簡稱詞序列。當文本是一個語句時,我們有時也稱語句詞序列。在上下文清晰的情況下,我們也將語句詞序列簡稱為詞序列。
(6)ICTCLAS系統(tǒng):一個免費的、開源的分詞系統(tǒng)。該系統(tǒng)以文本為輸入,輸出為該文本的分詞序列。ICTCLAS系統(tǒng)下載網(wǎng)址為:http://ictclas.nlpir.org。分詞后,每個分詞標有詞性,其中a表示形容詞、b表示區(qū)別詞、c表示連詞、d表示副詞、h表示前綴詞、j表示簡稱詞、k表示后綴詞、m表示數(shù)詞、n表示名詞、p表示介詞、q表示量詞、r表示代詞、u表示助詞、z表示狀態(tài)詞,等等。
(7)文本:無論是一個短的語句,還是長的文章,我們都統(tǒng)稱文本。為了簡單起見,在說明書中,凡是我們提到的網(wǎng)頁,在無其他特別解釋的情況下,均指經(jīng)過去除HTML標簽、CSS代碼(即層疊樣式表,英文全名Cascading Style Sheets)、DIV代碼(即層疊樣式表中的定位技術,英文全名Division)和JS代碼(英文全名javascripts)等所得到的純文本。
(8)字符串拼接:給定任意兩個字符串V1和V2,V1和V2的拼接為將它們無縫連接在一起得到的新的字符串,記為例如,V1=泛,V2=分析,
(9)集合的交集、并集、基數(shù):給定兩個集合S1和S2,它們的并集記為Interset(S1,S2),是由那些出現(xiàn)在S1中而同時也出現(xiàn)在S2中的元素構成的集合。例如,S1={筆記本,電腦},S2={筆記本,電腦,4G},則Interset(S1,S2)={筆記本,電腦}。既然出現(xiàn)在S1或者出現(xiàn)在S2中的元素構成的集合為S1和S2的并集,記為Union(S1,S2)。例如,S1={筆記本,電腦},S2={筆記本,電腦,4G},則Union(S1,S2)={筆記本,電腦,4G}。集合中元素的個數(shù)為集合的基數(shù),S1的基數(shù)記為|S1|,例如S1={筆記本,電腦},|S1|=2。
下面結合附圖和具體實施方式對本發(fā)明作進一步詳細地說明。
本發(fā)明提出的一種高效的新術語識別系統(tǒng)和方法,以一個文本集RCorpus為輸入(稱為輸入文本庫),采用下面三個模塊進行工作:
模塊A:對輸入文本庫RCorpus中的每篇文本進行分詞,形成文本詞序列。
模塊B:對分詞后的文本庫TCorpus中的每篇文本詞語序列進行新術語識別。
模塊C:對識別的新術語進行驗證。
模塊A:對輸入文本庫RCorpus中的每篇文本進行分詞,形成文本詞序列。
我們采用一個開源的ICTCLAS系統(tǒng)對RCorpus中的每篇輸入文本D進行分詞,分詞結果為T′=W1/pos1W2/pos2…Wi/posi…Wn/posn,其中每個Wi是一個漢語詞、漢字、標點符號、阿拉伯數(shù)字、英文單詞或字母,posi是其對應的詞性。
在分詞中,詞性的標記已經(jīng)在計算機界通行。通常的詞性有n(名稱)、v(動詞)、a(形容詞)、d(副詞)、p(介詞)等。例如,語句“總部組織干部學習中央精神”的分詞結果為:“總部/n組織/n干部/n學習/v中央/n精神/n”。
為了表示區(qū)別,RCorpus中的每篇文本經(jīng)過分詞后,所產(chǎn)生的文本,我們記為TCorpus。
模塊B:對分詞后的文本庫TCorpus中的每篇文本詞語序列進行新術語識別。
模塊B的具體實施,如下所述:
假設當前待識別文本為Di,Ti為它的標題,Sij為Di的當前待識別的第j條語句。對Sij進行以下步驟的處理,形成候選的新術語結果(也稱待驗證的新術語結果),存放在集合tmp_result中:
步驟B1:設置tmp_result為空。
tmp_result用于存放識別出的新術語結果,傳遞給驗證模塊C進行驗證。因此,tmp_result中的新術語結果也稱候選的新術語結果(也稱待驗證的新術語結果)。
步驟B2:將Sij中連續(xù)最長的、詞性標記為a、b、j、n、m、q的詞形成一個候選新術語,記為NewTerm。
步驟B2中所述“連續(xù)最長”,是指在Sij中NewTerm的兩端沒有詞性為a、b、j、n的詞。
步驟B3:如果在Sij中緊接著NewTerm的詞語W的詞性是k(即W可能是NewTerm的后綴),則設置
步驟B4:如果在Sij中位于NewTerm之前的詞語W的詞性是h(即W可能是NewTerm的后綴),則設置
步驟B5:將(NewTerm,Ti,Sij)放入tmp_result中。
模塊C:對識別的新術語進行驗證。
本模塊的主要工作是采用多源驗證法、特殊驗證法,對模塊B產(chǎn)生的tmp_result中的術語進行驗證,驗證過的新術語放入集合result中。模塊C的方法如下:
步驟C1:設置result為空。
步驟C2:對tmp_result中的每一對(NewTerm,Ti,Sij)循環(huán)做以下步驟C3、C4和C5。
步驟C3:如果在tmp_result中存在(NewTerm,Ti′,Sij′),并且Ti與Ti′不同(即NewTerm出現(xiàn)在TCorpus中的兩篇不同的文本中),則將NewTerm放入result中;否則,執(zhí)行步驟C4。
如上述步驟C3中所述,盡管NewTerm在題名為Ti的語句Sij中被識別為候選新術語,但是NewTerm并不一定就是一個正確的新術語。但是,在題名為Ti′的語句Sij′中也被識別為新 術語,則NewTerm是正確的新術語的可能性會大大提升。(當然,如果還存在第三個不同的文本來輔助驗證NewTerm,NewTerm是正確的新術語的可能性會更高,但是這樣會降低新術語識別的寬帶,實驗表明,不需要第三個不同文本的驗證。)
步驟C4:如果在種子詞典中存在一個種子術語Term,使得NewTerm與Term的加權相似度wsim(NewTerm,Term)>α(α∈[0,1]為一個閾值),則將NewTerm放入result中;否則,執(zhí)行步驟C5。
為給出兩個術語的加權相似度wsim(NewTerm,Term)的計算,我們先給出函數(shù)2gram的計算方法。對一個非空漢字串Sent=C1C2…Ci-1Ci…CK-1CK,其中Ci為漢字、數(shù)字、英文字母,我們引入一個帶頭尾標記的漢字串Sent=$C1C2…Ci-1Ci…CK-1CK$。2gram(Sent)是一個由Sent中自左向右連續(xù)的兩個字符構成的集合,即2gram(Sent)={$C1,C1C2,…,Ck-1CK,CK$}。
需要指出的是,2gram(Sent)中各個元素的重要性相同:Ci-1Ci是漢語中的一個詞時,Ci-1Ci在2gram(Sent)的作用更大。為了反映出2gram(Sent)中各個元素的重要性,本發(fā)明對前面定義的Interset(S1,S2)進行改進,引入一個新的基數(shù),叫作加權交集基數(shù)WInterset(S1,S2)。其計算方法如下:對給定了兩個集合S1和S2:
(1)WInterset(S1,S2)=0;
(2)對Interset(S1,S2)每一個元素e,如果e是漢語中的一個詞,則WInterset(S1,S2)=WInterset(S1,S2)+1.2(即WInterset(S1,S2)累加1.2,而不是1);否則如果e不是一個漢語中的詞,則WInterset(S1,S2)=WInterset(S1,S2)+1(即WInterset(S1,S2)累加1);
wsim(NewTerm,Term)的計算方法如下:
(1)如果NewTerm與Term具有相同的前綴和后綴,wsim(NewTerm,Term)=1;
(2)如果NewTerm與Term不具有相同的前綴和后綴,
對上述公式的第一種情形,我們給出一個例子做為解釋。令NewTerm=“中共十八大第四次會議”,Term=“中共洛川會議”。此時wsim(“中共十八大第四次會議”,“中共洛川會議”)=1,因為Term和NewTerm有共同的前綴和后綴。
步驟C5:利用NewTerm在Sij的語境進行驗證。具體方法是:當NewTerm在Sij前面的分詞的詞性為c、d、p、r、u、z之一,并NewTerm在Sij后面的分詞的詞性為c、d、p、r、u、z之一時,NewTerm是一個正確的新術語,加入到result中;否則放棄,即不加入到result中。
步驟C6:輸出result做為最后結果。
實驗效果
本發(fā)明提出了一種高效的多字新術語識別方法和系統(tǒng)。在經(jīng)過多達2GB頁面語料的測試中,除了新聞領域,也涵蓋各種行業(yè)和專業(yè)領域。在計算新術語與詞典中的種子術語的相似度wsim(NewTerm,Term)時,反復實驗表明α=0.6時結果最好,此時多字新術語的識別精度為93.8%。因此,本發(fā)明取得了較好的識別性能,已經(jīng)達到了實際應用的目的,為詞典編撰、分詞應用、文本分類、輿情分析、廣告分析等大量的應用,奠定了堅實的基礎。