劉明童,張玉潔,徐金安,陳鈺楓
(北京交通大學(xué) 計算機與信息技術(shù)學(xué)院,北京 100044)
依存句法分析一直是自然語言處理中的關(guān)鍵技術(shù)之一,廣泛應(yīng)用于機器翻譯[1]、信息抽取[2]和語義角色標(biāo)注[3]等自然語言處理任務(wù)中。目前主流的依存句法分析框架主要包括基于轉(zhuǎn)移(transition-based)[4-5]和基于圖(graph-based)[6]的兩種模型。近年來,基于神經(jīng)網(wǎng)絡(luò)的依存句法分析方法日益成為關(guān)注熱點,是自然語言處理的重要方向之一。本文主要針對基于轉(zhuǎn)移的依存句法分析模型的分析棧和決策層的表示方法開展研究。
早期的方法主要依賴人工定義特征模板提取依存分析過程中的特征[4-7]。主要問題是特征模板的構(gòu)建需要大量專家知識,而且系統(tǒng)在特征提取上的計算代價較大[8]。后來,基于神經(jīng)網(wǎng)絡(luò)的依存句法分析模型顯示出了優(yōu)勢[9-12],研究者利用神經(jīng)網(wǎng)絡(luò)建模分析棧、緩沖區(qū)和決策序列,通過神經(jīng)網(wǎng)絡(luò)進行特征的自動提取,將依存分析過程中每一時刻各個部分對應(yīng)的狀態(tài)表示為低維稠密的特征向量,不需要人工定義大量的特征模板,避免了復(fù)雜的特征工程?;谏窠?jīng)網(wǎng)絡(luò)的模型主要研究分析過程中特征的表示和利用方法,已有模型[9-11]在局部信息和全局信息的表示上存在以下問題。一方面,沒有對單棵依存子樹獨立編碼表示,導(dǎo)致無法利用各個依存子樹的局部特征,而依存關(guān)系的判斷是針對當(dāng)前兩個節(jié)點(節(jié)點可以是依存子樹根節(jié)點,也可以是單詞)預(yù)測正確的轉(zhuǎn)移動作,因此依存關(guān)系的建立需要直接考慮依存子樹的信息作為特征;另一方面,這些模型沒有對歷史生成的依存弧信息和轉(zhuǎn)移動作信息進行編碼,以致整個分析過程丟失了全局信息,而依存樹的建立需要從句子整體的視角考慮更多的全局特征[7]。為了利用更多的局部特征和全局特征,針對分析棧的表示,本文提出基于依存子樹和歷史已生成的依存弧表示分析棧,利用TreeLSTM網(wǎng)絡(luò)編碼依存子樹信息,利用LSTM網(wǎng)絡(luò)編碼歷史生成的依存弧序列,以更好地表示分析棧的局部信息和全局信息。針對決策層的表示,本文提出基于LSTM網(wǎng)絡(luò)的轉(zhuǎn)移動作序列預(yù)測,引入歷史決策動作信息作為特征輔助當(dāng)前決策。
本文組織如下: 第1節(jié)介紹相關(guān)研究;第2節(jié)針對多特征融合編碼中的局部特征和全局特征,描述基于依存子樹和歷史生成依存弧的分析棧表示方法,以及基于LSTM網(wǎng)絡(luò)的轉(zhuǎn)移動作序列預(yù)測方法;第3節(jié)介紹依存句法分析模型的實現(xiàn)和訓(xùn)練細(xì)節(jié);第4節(jié)介紹評測實驗和結(jié)果分析;第5節(jié)對本文研究進行總結(jié)。
在基于神經(jīng)網(wǎng)絡(luò)的依存句法分析方面,Chen和Manning[9]利用神經(jīng)網(wǎng)絡(luò)將單詞、詞性標(biāo)簽和依存類型標(biāo)簽表示為連續(xù)、低維、稠密的向量,只利用少量人工定義的特征模板,就比傳統(tǒng)完全基于特征模板的方法取得了更好的性能。該方法主要利用核心特征模板抽取局部特征作為決策輸入,其主要問題是沒有考慮依存子樹的局部特征,而且該方法沒有提供歷史分析信息參與決策。為了利用更多的歷史信息,Dyer[10]等人提出基于轉(zhuǎn)移的Stack-LSTM依存分析模型,Wang[12]等人進一步改進Stack-LSTM模型中依存子樹的編碼方法。Stack-LSTM模型采用三個單向的LSTM網(wǎng)絡(luò)編碼依存分析過程中的信息,將傳統(tǒng)的緩沖區(qū)、分析棧和轉(zhuǎn)移動作序列的歷史均記錄在LSTM單元中,使用LSTM的最后一個隱藏層表示作為決策輸入,最后利用多層感知機預(yù)測轉(zhuǎn)移動作。該方法實現(xiàn)了完全自動的特征提取,模型精度得到提升。其主要問題是利用LSTM累計的信息表示當(dāng)前分析棧的狀態(tài),無法表示依存子樹的局部特征,而依存關(guān)系的建立需要考慮節(jié)點所在依存子樹的信息。Kiperwasser和Goldberg[11]采用BiLSTM網(wǎng)絡(luò)獲取單詞的上下文特征表示,用分析棧棧頂?shù)亩鄠€元素作為特征,考慮了依存子樹根節(jié)點單詞表示對轉(zhuǎn)移動作的影響,但是沒有考慮依存子樹的整體信息,也沒有考慮歷史分析信息,導(dǎo)致決策丟失了全局信息。針對這些問題,本文研究基于依存子樹和依存弧相結(jié)合的分析棧表示方法,同時研究歷史轉(zhuǎn)移動作信息的表示方法,通過多特征融合編碼,以有效利用分析過程中的局部特征和全局特征,改進轉(zhuǎn)移動作決策的精度。
我們提出基于多特征融合編碼的神經(jīng)網(wǎng)絡(luò)依存句法分析模型,采用基于轉(zhuǎn)移的依存句法分析框架,主要框圖如圖1所示。下面從分析棧表示方法、緩沖區(qū)表示方法和轉(zhuǎn)移動作序列表示方法三個模塊詳細(xì)介紹我們的模型。
圖1 本文提出的基于多特征融合編碼的神經(jīng)網(wǎng)絡(luò)依存句法分析模型
基于轉(zhuǎn)移的依存句法分析框架[4-5]由以下三部分組成: 分析棧S(stack)存放已完成的依存子樹,每個元素存放依存子樹的根節(jié)點;緩沖區(qū)B(buffer)存放待分析句子的單詞序列;依存弧A(dependency arcs)存放已生成的依存關(guān)系(head-modifier pairs)。分析棧棧頂?shù)牡谝粋€元素定義為右焦點詞,分析棧棧頂?shù)牡诙€元素定義為左焦點詞,它們分別是兩顆子樹的根節(jié)點。三種動作的定義如下:
① SHIFT: 將緩沖區(qū)的第一個元素移入分析棧中。
② LEFT-ARC(l): 針對棧頂兩個元素,建立左焦點詞依存于右焦點詞的依存關(guān)系。
③ RIGHT-ARC(l): 針對棧頂兩個元素,建立右焦點詞依存于左焦點詞的依存關(guān)系。
依存關(guān)系的建立發(fā)生在左焦點詞和右焦點詞之間,即子樹的根節(jié)點。一旦LEFT-ARC(l)或RIGHT-ARC(l)動作發(fā)生,兩個焦點詞中的一個會成為另一個的子節(jié)點,即生成一棵依存子樹。由此,依存句法分析轉(zhuǎn)換成轉(zhuǎn)移動作決策問題,基于當(dāng)前分析狀態(tài)的信息預(yù)測下一步轉(zhuǎn)移動作,其核心是依存分析狀態(tài)的表示和利用,分析狀態(tài)包括分析棧、緩沖區(qū)、依存弧以及轉(zhuǎn)移動作序列。本文的工作集中在基于神經(jīng)網(wǎng)絡(luò)的分析狀態(tài)表示方法,通過設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)有效地提取和利用分析狀態(tài)作為特征,用于轉(zhuǎn)移動作決策。
分析棧狀態(tài)包括依存子樹(dependency subtrees)和歷史已生成的依存弧(head-modifier pairs)。對此,我們提出基于TreeLSTM網(wǎng)絡(luò)的依存子樹表示方法和基于LSTM網(wǎng)絡(luò)的依存弧序列表示方法。
(1)基于TreeLSTM的依存子樹表示方法
我們設(shè)計基于TreeLSTM[13]神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)對已完成的每棵依存子樹單獨編碼,通過門控制機制(gate mechanism)選擇輸入信息,在合成子樹表示時選擇性地關(guān)注諸如動詞、名詞等重要節(jié)點,從而更好地編碼依存子樹的表示。已有的分析棧表示方法[10]累計LSTM的最后一個隱藏層向量表示整個分析棧的狀態(tài),該結(jié)構(gòu)無法利用依存子樹的信息。同時,已有方法[10]采用Recursive Neural Network(RecNN)編碼依存子樹,該結(jié)構(gòu)在處理較深的依存子樹時會出現(xiàn)梯度消失的風(fēng)險。在此,我們關(guān)注每棵依存子樹的信息,對于新建立依存關(guān)系的頭節(jié)點和修飾節(jié)點,我們定義hhead和chead為建立依存關(guān)系的頭節(jié)點的隱藏層向量和記憶單元向量,定義hmodi和cmodi為建立依存關(guān)系的修飾節(jié)點的隱藏層向量和記憶單元向量。對于新合成的依存子樹,定義hst和cst為依存子樹根節(jié)點的隱藏層向量和記憶單元向量,hst和cst的計算如式(1)~式(3)所示。
(2)基于LSTM的依存弧序列表示方法
我們提出基于LSTM網(wǎng)絡(luò)的依存弧序列表示方法,對已生成的歷史依存弧序列編碼作為全局特征。具體地,當(dāng)一個依存弧生成時,我們將頭節(jié)點和修飾節(jié)點作為LSTM[14]網(wǎng)絡(luò)的輸入,利用LSTM網(wǎng)絡(luò)的門控機制選擇性的記憶歷史信息的特性,累計已生成的依存弧信息,得到全局特征表示輔助轉(zhuǎn)移動作決策。依存弧序列編碼計算如式(4)所示。
其中,hhead和hmodi分別表示頭節(jié)點和修飾節(jié)點對應(yīng)的隱藏層向量。
由此,我們用TreeLSTM對依存子樹編碼獲取局部特征,用LSTM對依存弧序列編碼獲取全局特征,通過增加對分析棧中局部特征和全局特征的編碼表示獲取更多特征參與轉(zhuǎn)移動作預(yù)測。
由于基于轉(zhuǎn)移的依存分析框架是一種局部的決策式處理方法,因此需要更多的全局信息幫助句法結(jié)構(gòu)消歧,我們分別累計依存弧和轉(zhuǎn)移動作的歷史信息獲取全局特征,參與轉(zhuǎn)移動作決策。
我們設(shè)計基于BiLSTM的緩沖區(qū)表示方法,對構(gòu)成句子的所有單詞進行累計的表示,即使單詞移除緩沖區(qū),信息也不會丟失,從而避免了單向LSTM編碼方式丟失移出緩沖區(qū)單詞信息的問題[10]。為了獲取更加豐富的上下文信息表示單詞特征,我們結(jié)合LSTM每一時刻的隱藏層向量ht和記憶單元向量ct表示緩沖區(qū)中的每一個單詞如式(9),式(10)所示。
我們利用上面提出的多特征融合編碼方法,搭建神經(jīng)網(wǎng)絡(luò)依存句法分析模型,模型的訓(xùn)練目標(biāo)和實施細(xì)節(jié)描述如下。
首先,我們利用端到端的方法訓(xùn)練整個模型。目標(biāo)函數(shù)采用交叉熵?fù)p失函數(shù),添加l2正則化項防止過擬合,通過超參數(shù)λ調(diào)整目標(biāo)函數(shù)權(quán)重,如式(11)所示。
其中,θ表示模型中所有的參數(shù)。在選取轉(zhuǎn)移動作時,我們只計算當(dāng)前狀態(tài)下有效的動作,例如,當(dāng)分析棧中元素為空、緩沖區(qū)存在單詞時,只能執(zhí)行SHIFT轉(zhuǎn)移動作。最終,在訓(xùn)練階段,每一步?jīng)Q策按照標(biāo)準(zhǔn)的動作執(zhí)行分析操作;在測試階段,我們采用貪心決策算法選取當(dāng)前概率最大的動作執(zhí)行分析操作。
在此,我們添加“ROOT”詞表示根節(jié)點,“NULL”詞表示可能用到的無效特征組合(例如,分析棧中元素個數(shù)小于3時),未登錄詞通過高斯采樣得到。
最后,關(guān)于模型實施具體細(xì)節(jié)描述如下。我們設(shè)置預(yù)訓(xùn)練的詞向量為300維,可學(xué)習(xí)的詞向量為30維,詞性標(biāo)簽向量為50維,所有的ReLU層為300維。設(shè)置BiLSTM、LSTM和TreeLSTM結(jié)構(gòu)的隱藏層為300維。在實驗中,預(yù)訓(xùn)練的詞向量保持固定不變。我們采用Adam[16]優(yōu)化算法用于模型參數(shù)學(xué)習(xí),設(shè)置初始學(xué)習(xí)率α為5E-4,β1為0.9,β2為0.999。在每一輪迭代中,學(xué)習(xí)率α以ρ=0.95的頻率衰減。設(shè)置l2正則化強度為1E-6,訓(xùn)練batch的大小為8。為了防止過擬合,我們使用了dropout[17]正則化技術(shù),設(shè)置詞向量輸入層的drop率為0.2,BiLSTM輸出層的drop率為0.5,ReLU層輸出層的drop率為0.07。我們對預(yù)訓(xùn)練的詞向量和最終整合的詞向量使用了batch normalization[18]正則技術(shù)。其中,dropout層作用在batch normalization層之后。
為了驗證本文所提方法的有效性,我們在漢語數(shù)據(jù)上進行了評測實驗。
本文使用賓州漢語樹庫CTB5作為實驗數(shù)據(jù),我們采用了標(biāo)準(zhǔn)的數(shù)據(jù)劃分[9],利用標(biāo)注數(shù)據(jù)中的分詞和詞性標(biāo)簽進行依存句法分析,表1給出了CTB5漢語數(shù)據(jù)的統(tǒng)計信息。
表1 CTB5漢語數(shù)據(jù)統(tǒng)計信息
實驗過程中,我們使用UAS和LAS兩種評測指標(biāo)評價模型的性能,和先前工作一致,評測結(jié)果不考慮標(biāo)點符號[9],利用開發(fā)集選擇性能最好的模型參數(shù)用于測試階段。我們和已有公開發(fā)表的基于轉(zhuǎn)移的漢語依存句法分析系統(tǒng)進行了性能比較,比較結(jié)果如表2所示。UAS和LAS兩種評測指標(biāo)定義如下。
表2 和已有基于轉(zhuǎn)移的漢語依存分析系統(tǒng)的性能比較結(jié)果
續(xù)表
① 不考慮依存弧類型的依存正確率(unlabeled attachment score, UAS): 修飾關(guān)系正確的單詞(包括根節(jié)點對應(yīng)的單詞)數(shù)量占總詞數(shù)的百分比。
② 考慮依存弧類型的依存正確率(labeled attachment score, LAS): 修飾關(guān)系和依存弧類型都正確的單詞(包括根節(jié)點對應(yīng)的單詞)數(shù)量占總詞數(shù)的百分比。
從表2的結(jié)果可以看出,相比于Dyer提出的Stack-LSTM依存句法分析系統(tǒng)[10],我們的模型在UAS和LAS評測指標(biāo)上分別取得了0.6和1.1個百分點的提高。相比于Kiperwasser 和Goldberg的依存句法分析系統(tǒng)[11],我們的模型在UAS和LAS評測指標(biāo)上分別取得了0.2和0.7點的提高。和已有模型的比較結(jié)果表明,本文提出的基于多特征融合編碼的依存分析模型,對依存子樹局部特征、歷史依存弧信息和歷史決策動作信息的編碼對于改進依存句法分析性能的有效性。最終,通過引入更多的局部信息和全局信息參與轉(zhuǎn)移動作決策,我們的模型達到87.8%的UAS得分和86.8%的LAS得分,為目前公開的基于轉(zhuǎn)移的系統(tǒng)中最好的性能。
我們分析了模型中各個部分對最終依存句法分析精度的影響,實驗結(jié)果展示在表3中。
表3 模型各個部分有效性分析結(jié)果
從表3的實驗結(jié)果來看,移除我們模型中的任何一部分(1)~(5)都會降低依存分析的精度,由此證明了我們所提模型中各個部分的有效性。針對分析棧的表示,當(dāng)移除基于TreeLSTM編碼的依存子樹表示(1)時,模型沒有利用單棵依存子樹的信息作為特征預(yù)測轉(zhuǎn)移動作,只利用了子樹根節(jié)點單詞基于上下文的BiLSTM隱藏層表示參與決策,模型性能在UAS和LAS評測指標(biāo)上都下降了0.5個百分點,這一結(jié)論表明了依存子樹的信息在轉(zhuǎn)移動作預(yù)測中的重要性,同時也表明了在預(yù)測兩個節(jié)點之間的依存關(guān)系時局部特征需要考慮單棵依存子樹節(jié)點的完整信息。當(dāng)移除基于LSTM編碼的歷史依存弧序列表示(2)時,模型性能在UAS和LAS評測指標(biāo)上分別下降了0.4和0.5個百分點, 這表明引入歷史依存弧的信息作為全局特征用于決策,提高了轉(zhuǎn)移動作預(yù)測精度。
針對決策層的表示,當(dāng)移除基于LSTM的轉(zhuǎn)移動作預(yù)測(3),僅利用MLP作為預(yù)測函數(shù)時,模型性能在UAS和LAS上分別下降了0.4和0.3個百分點。由此可以發(fā)現(xiàn)LSTM比MLP在預(yù)測轉(zhuǎn)移序列上更為有效,因為LSTM可以傳遞歷史轉(zhuǎn)移動作和分析狀態(tài)的信息, 從而引入更多的全局特征用于當(dāng)前決策。
針對緩沖區(qū)表示,當(dāng)我們移除基于BiLSTM的單詞特征表示層(4),僅利用詞向量表示緩沖區(qū)每一個元素時,模型性能在UAS和LAS評價指標(biāo)上分別下降了4.3和5.1個百分點,由此表明依存句法分析需要從句子整體考慮更多的上下文信息。最終,實驗結(jié)果表明,本文提出的基于TreeLSTM網(wǎng)絡(luò)編碼依存子樹和基于LSTM網(wǎng)絡(luò)編碼依存弧序列的表示方法,以及基于LSTM網(wǎng)絡(luò)編碼的轉(zhuǎn)移動作序列預(yù)測模型,通過多特征融合編碼,將更多依存分析中的局部特征和全局特征用于轉(zhuǎn)移動作決策,有效提高了依存句法分析的精度。
本節(jié)針對模型結(jié)構(gòu)對依存分析性能的影響,分別調(diào)查了不同類型依存弧的LAS精度,在CTB測試集上的實驗結(jié)果如圖2所示。
圖2 模型結(jié)構(gòu)對不同依存類型的LAS影響結(jié)果
從圖2的結(jié)果來看,root和vmod依存類型的精度較低,表明了這類依存關(guān)系較難正確預(yù)測。在移除基于TreeLSTM網(wǎng)絡(luò)的依存子樹表示時,圖2 的結(jié)果展示了利用依存子樹作為特征預(yù)測轉(zhuǎn)移動作提高了幾乎所有依存類型的精度,進一步表明了編碼依存子樹信息對依存關(guān)系預(yù)測的重要性。同時,圖2的結(jié)果也表明利用更多的歷史分析信息作為全局特征,包括歷史生成的依存弧信息、歷史轉(zhuǎn)移動作信息,有效提高了模型在prd、obj和pmod依存類型上的精度。在移除BiLSTM的模型中,圖2展示了各類依存關(guān)系的精度都呈現(xiàn)了明顯的性能下降,這表明基于上下文特征的單詞表示,在依存關(guān)系預(yù)測中有十分重要的作用。
本文提出基于多特征融合編碼的神經(jīng)網(wǎng)絡(luò)依存句法分析模型,采用基于轉(zhuǎn)移的依存句法分析框架。本文基于依存子樹和歷史依存弧信息表示分析棧,設(shè)計基于TreeLSTM網(wǎng)絡(luò)編碼各個依存子樹和基于LSTM網(wǎng)絡(luò)編碼依存弧序列,以更好地表示分析棧的狀態(tài)。同時,設(shè)計基于LSTM網(wǎng)絡(luò)編碼轉(zhuǎn)移動作序列,引入了歷史轉(zhuǎn)移動作的信息輔助當(dāng)前決策。最終,在決策時,我們?nèi)诤狭艘来孀訕湫畔?、緩沖區(qū)單詞信息、歷史依存弧信息和歷史轉(zhuǎn)移動作信息用于當(dāng)前轉(zhuǎn)移動作預(yù)測,有效結(jié)合了局部特征和全局特征。實驗結(jié)果表明本文所提模型明顯提高了依存句法分析的精度。針對未來的研究工作,我們需要利用無標(biāo)注數(shù)據(jù)獲取更多的依存句法訓(xùn)練數(shù)據(jù),以提高模型泛化能力。同時,可以結(jié)合基于搜索的技術(shù),如beam-search,進一步改進模型性能。