張海玲,邵玉斌,賈繼康,龍 華,杜慶治
(昆明理工大學(xué)信息工程與自動化學(xué)院,云南 昆明 650500)
隨著信息時代的潮流發(fā)展,人們對自然語言處理NLP(Natural Language Processing)的研究也更加如火如荼。 NLP是一個交叉學(xué)科,涉及的技術(shù)范疇眾多,例如語音合成與識別、句法分析和語言模型[1 - 3]等,現(xiàn)已廣泛集成到Web和移動應(yīng)用程序中,幫助實(shí)現(xiàn)人與計算機(jī)之間的自然交互,顯然已是信息社會中不可或缺的一部分。句法分析是自然語言處理中的關(guān)鍵技術(shù)之一,其基本任務(wù)是確定句子所包含的句法單位和這些句法單位之間的依存關(guān)系。賓州中文樹庫CTB(Chinese TreeBank)[4]的發(fā)布,不但為漢語句法分析提供了一個公共的訓(xùn)練、測試平臺,也促進(jìn)了句法分析的發(fā)展,使得句法分析成為自然語言處理應(yīng)用的關(guān)鍵因素,在機(jī)器翻譯、問答系統(tǒng)、信息檢索與抽取和語音識別等領(lǐng)域都有重要的應(yīng)用價值[5]。
句法分析的研究主要有基于統(tǒng)計和規(guī)則的方法[6,7]。由于語種的特點(diǎn),特別是漢語,大部分句法分析的研究都處在字、詞、語塊的階段,在語句成分方面的研究甚少[8]。雖然目前已有多個原本為英語制定的句法分析模型被移植到CTB上來[9],但是還存在以下問題:中文不具有諸如英語、法語等其他語言那樣嚴(yán)格意義的形態(tài)變化[10,11],忽略了漢語的局限性及特點(diǎn)。若針對某一類語料構(gòu)建句法分析器,那么該句法分析器對該類型句子的句法分析效果較為顯著[12],但若用該句法分析器對通用語料進(jìn)行句法分析,其效果就會大打折扣。
從句子成分角度來看,無論是獨(dú)立語,還是具有修飾成分的句子,句法分析研究都是從字、詞角度實(shí)現(xiàn)。若從局部出發(fā)[13],而不是對整個句子進(jìn)行層次化分析,就會存在一定的局限性。因此,本文提出了一種實(shí)現(xiàn)層次化分析句子成分的算法,該算法首先使用海量的真實(shí)文本作為數(shù)據(jù)集,進(jìn)行目標(biāo)測試;其次,以分詞及詞性標(biāo)注為前提,根據(jù)語法和統(tǒng)計制定的語言規(guī)則為基礎(chǔ),實(shí)現(xiàn)二、三元詞結(jié)合的句法分析模型。綜合來說該算法既保留了二元、三元的規(guī)則特性,又對語言規(guī)則進(jìn)行了更全面的融合且有效提高了層次化分析準(zhǔn)確率,相比較從字、詞的研究角度出發(fā)的基于RNN(Recurrent Neural Network)的中文二分結(jié)構(gòu)句法分析方法的序列標(biāo)注模型[14]和詞匯化模型[15],準(zhǔn)確率均有明顯提升,為未來關(guān)于句法分析的研究提供了比較新穎的思路。
設(shè)S=[w1,w2,w3,…,wi-1,wi,wi+1,…,wn],其中S表示由n個詞元有序組合而成的句子,字符wi表示S的第i個詞元,wi具有表1中的某個詞性。
Table 1 part-of-speech tag set
其中,第2~4列分別表示詞性、詞性粗分以及細(xì)分表示。nr,vd,rr和ad依次表示:人名、副動詞、人稱代詞和形容詞性慣用語。
按照句法合成規(guī)則,將句子S通過S1→S2→…→Si迭代合成,最終得到最優(yōu)合成結(jié)果Si,其中0≤i 具體句子的層次化分析,如圖1所示。 Figure 1 Hierarchical analysis diagram圖1 合成示意圖 圖1中,Source為原始句子及其詞性,Target為目標(biāo)合成句子及其詞性。第i+1步是在第i步的基礎(chǔ)上合成的,例如,第2步是在第1步基礎(chǔ)上利用規(guī)則[n n],將“鄧小平”與“同志”合成得到“鄧小平同志”。 在制定句法規(guī)則時將采用中國科學(xué)院計算技術(shù)研究所漢語詞性標(biāo)記集[16],其共計99個詞性標(biāo)記(22個一類,66個二類,11個三類)。為了在制定規(guī)則時能夠?qū)崿F(xiàn)有效性及合理性,即采用詞性標(biāo)記集作為規(guī)則需要,詞性標(biāo)記集如表1所示。 在句子S=[w1,w2,…,wi-1,wi,wi+1,…,wn]中,詞元wi具有表1中的某個詞性。例如:(wi|ti)表示wi的詞性為ti。 S中相鄰的2個詞(wi,wi+1)記為一個二元詞單元ui,所在位置不可顛倒,即(wi,wi+1)≠(wi+1,wi)。由于漢語詞通常具有多類詞性,根據(jù)漢語詞性標(biāo)記集可對一個詞進(jìn)行多種詞性劃分,而在統(tǒng)計方法中,以條件概率來判定詞語劃分和詞性標(biāo)注結(jié)果。中文詞匯與其對應(yīng)詞性的最佳組合為: (1) 其中,W=[w1,…,wn]表示n個詞元組成的有序序列,T=[t1,…,tn]表示與W相對應(yīng)的詞性序列。由條件概率公式可得: (2) 式(2)中分母P(S)與詞元序列、詞性序列無關(guān),為常數(shù),故可省略,式(2)即可簡化為: [Wbest,Tbest]=arg maxP(W,T,S) (3) 由于求解句子S的最優(yōu)詞元和詞性的組合,即為求解每一部分的最優(yōu)詞元W和詞性T的組合,進(jìn)一步可得: (4) 由式(4)可知,如何計算概率P(W,T)是分詞和詞性標(biāo)注問題的關(guān)鍵,根據(jù)一階馬爾科夫過程[17]的性質(zhì)可得: P(W,T)=P(T)P(W|T)= P(t1,t2,…,tn)P(w1,w2,…,wn|t1,t2,…,tn)≈ (5) 由于詞的詞性同上下文中的詞及其詞性都有密切聯(lián)系,即根據(jù)式(5)可得: P(W,T)=P(T)P(W|T)= P(t1,t2,…,tn)P(w1,w2,…,wn|t1,t2,…,tn)= P(t1,t2,…,tn,w1,w2,…,wn)= (6) 為了在層次化分解過程中能夠獲取當(dāng)前唯一詞性,需要進(jìn)一步實(shí)現(xiàn)適當(dāng)?shù)木€性平滑,對式(6)進(jìn)行變形: P(ti,wi|ti-1,wi-1)= P(t1|ti-1,wi-1)·P2(wi|ti-1,wi-1,ti) (7) 實(shí)現(xiàn)線性插值平滑: P(ti,ti-1,wi-1)= λ1P(ti|ti-1,wi-1)+(1-λ1)P(ti-1,ti) (8) P(wi,ti-1,wi-1,ti)= λ21P(wi|ti-1,wi-1,t1)+(1-λ21)· [λ22(P(wi|ti-1,ti)+(1-λ22)P(wi|ti))] (9) 其中, (10) 通過極大似然估計法獲取概率P(x|y),從而選擇更為恰當(dāng)?shù)暮铣稍~性,其中λ1,λ21,λ22為平滑參數(shù),P(ti,wi|ti-1,wi-1)是根據(jù)前一個詞及詞性實(shí)現(xiàn)對當(dāng)前的詞及詞性的概率估計。 在NLP領(lǐng)域中,分詞和詞性標(biāo)注是一項基礎(chǔ)且重要的任務(wù)。在分詞和詞性標(biāo)注正確的情況下,可進(jìn)行句法分析。例如,S=[我|n,是|v,中國|n,人|n],通過P(x|y)=count(中國,人)/count(人)進(jìn)行概率估計,根據(jù)ui=(wi,wi+1),從而(中國|n,人|n)=(中國人|n),即得到一個新合成詞ui為“中國人”,詞性ti為名詞,其中合成詞是通過2.1節(jié)所描述的句法規(guī)則實(shí)現(xiàn)合成。若出現(xiàn)S=[我|n,是|v,中|v,國|n,人|n]分詞和詞性標(biāo)注不準(zhǔn)確的情況,則會出現(xiàn)“是中”“國人”這樣的新合成詞,從而對句法分析造成影響。但是,目前分詞和詞性標(biāo)注技術(shù)已較為成熟,可以忽略這種極少數(shù)的情況。 為了實(shí)現(xiàn)句法合成規(guī)則制定的有效性和簡易性,所有詞性類別都將以給定詞性標(biāo)注集中的粗分表示作為詞性標(biāo)記,最終得到由詞和詞性組成的句子S,如下所示: S=[w1|t1,w2|t2,…,wi-1|ti-1,wi|ti, wi+1|ti+1,…,wn|tn] 根據(jù)對漢語句法分析的研究和理解,以及句式結(jié)構(gòu)之間的相關(guān)性[18,19],本文將提煉出的詞性標(biāo)記集和語言之間的常見規(guī)則集合結(jié)合到一起,構(gòu)建出表2所示的二元句法規(guī)則庫。其中,pi,pi+1表示符合二元詞性規(guī)則的初始詞性,po表示二元合成詞性。 Table 2 Binary syntactic synthesis rule base 根據(jù)圖1所述合成方式,獲取二元詞ui的詞性。例如num=3時,pi=v,pi+1=v,則po=v,即二元詞詞性為動詞。(pi,pi+1)滿足句法合成規(guī)則: ui=(wi,wi+1) (11) Pt=(ti,ti+1) (12) Pt為二元詞ui的詞性合成結(jié)果。ui的新詞性記為: (ui|Pt)=(wi|ti,wi+1|ti+1) (13) Pt由二元詞性(ti,ti+1)決定,根據(jù)表2中的二元規(guī)則庫和圖2所述的匹配過程合成,Pt=po。 對句子S實(shí)現(xiàn)層次化分析合成: S=[w1|t1,w2|t2,w3|t3,…,wn|tn] S1=[w1|t1,w2|t2,u1|t′1,…,wn|tn], u1=(w3,w4) S2=[w1|t1,w2|t2,u1|t′1,…,u2|t2,…,wn|tn], u2=(w10,w11) S3=[w1|t1,u3|t′3,…,u2|t′2,…,wn|tn], u3=(u1,w2) ? Si=[…,u3|t′3,…,u2|t′2,…,ui|t′i,…], ui=(wi,wi+1) ? (14) 句子詞元按照倒序的原則,規(guī)則庫按照自頂向下的方法進(jìn)行解析。句子S匹配合成得到ui,新的Si再次遍歷規(guī)則庫進(jìn)行下一次的匹配合成,其中ui可能還會與相鄰字符wi實(shí)現(xiàn)匹配,直至規(guī)則庫中無可匹配規(guī)則為止。 按照S′=[wn|tn,wn-1|tn-1,…,wi|ti,…,w1|t1]的順序掃描S′實(shí)現(xiàn): [wn|tn,wi|ti,…,w1|t1](pi,pi+1)=Si (15) 式(15)是針對式(14)的一個說明,表示依據(jù)表2中的句法合成規(guī)則,實(shí)現(xiàn)按照倒序原則對S′和規(guī)則庫中所對應(yīng)的詞性進(jìn)行交互,實(shí)現(xiàn)規(guī)則匹配。如若倒序過程中,句子中詞元的詞性與規(guī)則庫中的po屬性相同,則輸出第i次合成句子的結(jié)果Si。在Si基礎(chǔ)上再通過匹配規(guī)則進(jìn)行合成,輸出Si+1: […,u3|t′3,…,ui|t′i,…](pi,pt+1)=Si+1 (16) 其中,Si為第i(1≤i≤n)次合成句子成分結(jié)果,Si+1是在Si合成的基礎(chǔ)上再依據(jù)表2的合成規(guī)則,按照圖1所述方式實(shí)現(xiàn)合成,直到?jīng)]有規(guī),則可匹配則合成結(jié)束。 三元句法合成規(guī)則庫與二元的構(gòu)建原則類似,如表3所示。 Table 3 Ternary syntactic sythesis rule base 其中,pi-1,pi和pi+1表示符合三元詞性規(guī)則的初始詞性,pe表示三元合成詞性。根據(jù)表3所述句法合成規(guī)則,S=[w1,w2,w3,…,wi-1,wi,wi+1,…,wn]滿足: vt=(wi-1,wi,wi+1) (17) Pt=(ti-1,ti,ti+1) (18) 其中,相鄰的3個詞(wi-1,wi,wi+1)記為一個三元詞vt。Pt為詞單元vt的詞性合成結(jié)果,即Pt=pe。根據(jù)式(11)~式(13)所述原則,合成的新詞元vt具有新的詞性,記為: (wi-1|ti-1,wi|ti,wi+1|ti+1)=(vt|Pt) (19) 句子S層次化分析滿足: S1=[v1|t′1,…,wi|ti,…,wn|tn], v1=(w1,w2,w3) S2=[v1|t′1,…,v2|t′2,…,wn|tn], v2=(w10,w11,w12) ? Si=[v1|t′1,…,v2|t′2,…,vt|t′t], vt=(wi-1,wi,wi+1) ? (20) 在層次化分析過程中,句法解析同二元過程,即句子詞元按照倒序的原則,規(guī)則庫按照自頂向下的方法進(jìn)行解析,而并非依據(jù)字符下標(biāo)i升序。按照三元規(guī)則庫實(shí)現(xiàn)匹配,輸出Si,產(chǎn)生新的合成詞vt,再次依據(jù)規(guī)則匹配輸出,一直到?jīng)]有可匹配規(guī)則為止,其中0≤i (ti-1,ti,ti+1)=Pt=pe (21) 其中ti-1,ti,ti+1是3個連續(xù)詞元各自的詞性。掃描S′則需要滿足: [wn|tn,…,wi|ti,…,w1|t1] (pi-1,pi,pi+1)=Si (22) 句子解析過程中判斷匹配是否滿足Pt,如若倒序過程中滿足Pt等于pe,即符合三元規(guī)則,輸出第i次合成句子成分的結(jié)果Si,在最新合成句子成分結(jié)果的基礎(chǔ)上繼續(xù)進(jìn)行合成,直到?jīng)]有可匹配的合成規(guī)則,合成結(jié)束。其中0≤i 3.3.1 算法分析及流程 本文利用句法中詞性間的緊密聯(lián)系性,對句法規(guī)則進(jìn)行了總結(jié)和統(tǒng)計,首先提出了二元和三元的層次化模型。但是,由于中文本身的復(fù)雜性和語義多變性,獨(dú)立的二元或者三元模型在進(jìn)行漢語句法結(jié)構(gòu)分析時具有一定的局限性,效果不佳,為了更好地適應(yīng)句式成分,于是本文提出了二元詞與三元詞相結(jié)合的模型,進(jìn)而實(shí)現(xiàn)層次化句法分析。具體流程如圖2所示。 Figure 2 Diagram of hierarchical statement analysis algorithm 圖2 層次化語句分析算法流程圖 二元和三元規(guī)則匹配的具體流程如圖3所示。根據(jù)表2和表3的規(guī)則庫文件,實(shí)現(xiàn)由pi,pi+1或pi-1,pi,pi+1匹配合成得到po或pe。其中,POS_t是由句子S=[w1,…,wi-1,wi,wi+1,…,wn]獲取的詞性序列[t1,t2,…,ti-1,ti,ti+1,…,tn-1,tn],對該序列從右至左依次獲取詞性,對連續(xù)詞元的詞性進(jìn)行規(guī)則庫匹配,合成新的ui的詞性,再對原詞性序列進(jìn)行替換,直至遍歷完P(guān)OS_t。 Figure 3 Rule matching diagram圖3 規(guī)則匹配示意圖 3.3.2 層次化解析 具體算法描述如算法1所示。 算法1基于二元與三元模型相結(jié)合的句法規(guī)則層次化分析算法 輸入:語句S=[w1|t1,…,wi|ti,…,wn|tn]。 輸出:可視化的語句層次化分析。 步驟1按照從右至左的順序提取(ti,ti+1); 步驟2按自頂向下的方式遍歷二元規(guī)則文件; 步驟4如若二元規(guī)則文本與S不匹配,則按照ti+1titi-1倒序方式遍歷三元規(guī)則文件; 步驟5三元規(guī)則文本和S進(jìn)行匹配; 步驟7如若S與三元規(guī)則不匹配,則輸出Si-1,其中Si-1表示上一步合成的結(jié)果; 步驟8繼續(xù)解析Si/Si-1; 步驟9循環(huán)步驟2~步驟8,判別Si/Si-1是否能繼續(xù)被合成; 步驟10將Si/Si-1轉(zhuǎn)換為XML格式; 步驟11將XML格式轉(zhuǎn)化為可識別目錄樹形格式文本。 其中,在句式中能合成的二元詞匯普遍多于三元詞匯,所以算法設(shè)計先遍歷二元規(guī)則,在層次化語句分析過程中,利用分詞和詞性標(biāo)注模型獲取句子中每個詞元的當(dāng)前最新詞性,并對其進(jìn)行標(biāo)注,例如中文句: S=[小明|n,和|c,小賈|n 歡樂|a 地|u 騎|v,小藍(lán)|n,車|n,去|v,呈貢區(qū)|n,飯店|n,吃|v,鍋包肉|n] 圖4所示為該中文句的具體的層次化解析過程。 Figure 4 Statement decomposition example圖4 語句解析示例 將整個層次化語句解析過程轉(zhuǎn)化為能夠被識別的樹形結(jié)構(gòu)格式,進(jìn)而實(shí)現(xiàn)語句解析可視化結(jié)果,如圖5所示。 Figure 5 Hierarchical statement parsing visualization example圖5 層次化語句解析可視化示例 本文實(shí)驗(yàn)采用了1998年人民日報的語料和CTB數(shù)據(jù)集(部分),其中人民日報選擇22 565個句子,CTB數(shù)據(jù)集選擇10 362個句子,按照程序兼容性格式處理后作為實(shí)驗(yàn)測試語料。通過二元和三元詞相結(jié)合的層次化分析方法實(shí)現(xiàn)語句的分析合成。 語句分析評價指標(biāo)主要有:準(zhǔn)確率P、召回率R和F-score,如式(23)~式(25)所示: (23) (24) (25) 其中,A為系統(tǒng)反饋的正確的解析結(jié)果個數(shù);B為系統(tǒng)反饋的錯誤的解析結(jié)果個數(shù);C為文本中總的句子個數(shù)。 通過二元、三元以及二者相結(jié)合改進(jìn)模型的3種方式,分別對語料文件逐句處理,若句子最終合成結(jié)果為S,則將該句子記為系統(tǒng)反饋正確的解析結(jié)果;否則,記為系統(tǒng)反饋的錯誤的解析結(jié)果。若句子包含不可識別的詞性或標(biāo)點(diǎn)符號,則表示系統(tǒng)反饋不能解析該句子。 為驗(yàn)證本文方法的準(zhǔn)確率及適用性,將實(shí)驗(yàn)分為3組進(jìn)行。首先對語料進(jìn)行選取和預(yù)處理操作,然后分別構(gòu)建二元模型、三元模型以及結(jié)合模型,對3種模型進(jìn)行實(shí)驗(yàn),最終得到如表4所示的實(shí)驗(yàn)結(jié)果。 通過二元規(guī)則模型,在人民日報語料上所獲取的準(zhǔn)確率、召回率分別為70.41%,61.02%;通過三元規(guī)則模型語句分析所獲取的準(zhǔn)確率、召回率分別為53.52%,46.00%,造成未能成功解析語句的主要原因有: (1) 對于準(zhǔn)確率評判規(guī)則的定義不夠全面,導(dǎo)致反饋分析結(jié)果比較單一。 (2) 二元和三元規(guī)則的設(shè)定未能較全覆蓋語料,導(dǎo)致層次化分解結(jié)果出現(xiàn)誤差。 (3) 三元規(guī)則合成的結(jié)果值偏低,是由于語料中涉及連詞的部分并不很多,且三元規(guī)則基數(shù)小于二元規(guī)則基數(shù),所以合成難度較大。 Table 4 Experimental results of statement hierarchical analysis 4) 由于語料庫中詞性種類偏多,在解析過程中可能未識別未登錄詞性,從而導(dǎo)致無法進(jìn)行句法識別分析。 在改進(jìn)模型中,在人民日報語料和CTB語料上的準(zhǔn)確率、召回率分別是82.04%,80.83%和80.57%,79.16%,與其他模型相比明顯提高。而從字、詞的研究角度出發(fā)的較新的句法分析文獻(xiàn)[18,19]中提出的基于RNN的中文二分結(jié)構(gòu)句法分析方法中的RNN-INT模型和基于詞匯化模型的漢語句法分析,其準(zhǔn)確率分別為42.99%,77.57%。本文算法在文獻(xiàn)[18,19]的基礎(chǔ)上進(jìn)一步提高了句法分析識別的準(zhǔn)確率,同時本文所提方法是一種較新穎的句式結(jié)構(gòu)研究方法。從實(shí)驗(yàn)結(jié)果可以看出,只要獲取詞元的詞性和定義的層次化語句合成規(guī)則能夠滿足語料需求,同時評判結(jié)果的指標(biāo)足夠全面,實(shí)驗(yàn)最終得到的語句解析的準(zhǔn)確率也就會相應(yīng)提高。 在自然語言研究中,依存句法的發(fā)展始終受到漢語自身特點(diǎn)的限制。由于目前關(guān)于句法分析的研究大部分是從字、詞角度出發(fā)的,準(zhǔn)確率相對而言不夠高,而從句式結(jié)構(gòu)角度出發(fā)的研究相對較少,所以本文基于海量的人民日報語料,通過由語法和統(tǒng)計得出的語言規(guī)則,從而實(shí)現(xiàn)了中文的語句分析和區(qū)別于依存句法可視化句法樹分析,準(zhǔn)確率達(dá)到82.04%,效果比較理想。本文所提方法相較于已有的依存句法方法更為靈活、新穎,對之后進(jìn)一步進(jìn)行文本校對、機(jī)器翻譯和信息抽取等工作具有很好的參考價值。 由于中文本身的復(fù)雜性和語義多變性等特點(diǎn),使得對漢語進(jìn)行句法分析研究較為困難,而本文提出的在語言規(guī)則下的句法分析算法,能夠針對句式成分,在層次化分析過程中得到有效、良好的效果。但是,隨著社會的發(fā)展,很多詞都會潛移默化地產(chǎn)生額外的詞性,若作為句法分析基礎(chǔ)工作的分詞和詞性標(biāo)注不夠準(zhǔn)確,則會增加句法分析的難度。后續(xù)需要對本文方法做進(jìn)一步完善。2.2 詞元結(jié)合規(guī)則及詞性最優(yōu)模型
3 句法合成的依存關(guān)系模型構(gòu)建
3.1 二元層次化模型構(gòu)建
3.2 三元層次化模型構(gòu)建
3.3 二、三元結(jié)合層次化模型構(gòu)建
4 實(shí)驗(yàn)設(shè)計與結(jié)果分析
4.1 實(shí)驗(yàn)設(shè)計
4.2 結(jié)果與分析
5 結(jié)束語