彭 雪 李正華 張 民
(蘇州大學計算機科學與技術學院 江蘇 蘇州 215006)
依存句法分析作為自然語言處理的基礎研究任務,主要用于刻畫句子中詞語與詞語之間的依存關系。給定一個自然語句S=W0W1…Wn,依存句法結構可以描述為d={(h,m,l),0≤h≤n,1≤m≤n,l∈L},(h,m,l)是一條從頭節點Wh指向修飾詞Wm的依存弧,依存關系為l。
得益于神經網絡較好的特征表示能力,依存句法分析取得了巨大的進步[1-4]。但是,當測試的文本與訓練文本差別較大時,解析性能迅速下降。近年來,隨著網絡的迅速發展,出現了大量的由用戶自己撰寫的文本。這些文本往往不符合常規的語法規范,與訓練文本差異較大,進一步加大了跨領域分析問題的難度,成為自然語言處理的主要挑戰。
提高跨領域分析性能最直接有效的方法是標注大量的目標領域數據。但數據標注是一項非常復雜的工作,需要花費大量的時間、人力和金錢。與英語相比,漢語的語序更加靈活,缺省情況更多,因此標注起來更加復雜。由于缺乏標注數據,前人的工作多集中在無監督跨領域方法的研究,即訓練集中不包含目標領域的標注數據集,但是該方法一直沒有取得較大的進展。
隨著語言模型迅速發展,ELMo(Embeddings from Language Models)[5]、BERT(Bidirectional Encoder Representations from Transformers)[6]等通過其極強的上下文信息學習能力,已經幫助很多數據驅動的自然語言處理任務提高性能[7-9]。在使用語言模型時,一方面,可以通過大規模的通用文本預訓練語言模型,使其適應大多數的自然語言處理任務;另一方面,可以使用其他數據對語言模型進行微調,以適應不同的任務需求,進一步提升性能。因此,通過語言模型從無標注數據中學習更多領域相關的特征,來幫助提高跨領域依存句法分析性能也是一個有效的方法。
本文基于三個較大規模的目標領域[10],主要工作如下:
(1) 提出了一種簡單而有效的領域嵌入方法,將源領域與目標領域訓練集有效的結合。
(2) 在數據合并過程中,使用語料庫加權策略。選擇不同權重,在驗證集的最高實驗結果和最低實驗結果之間相差約1%。
(3) 將BERT應用到跨領域依存句法分析任務中,并通過微調方法從大規模的目標領域無標注數據中學習有效信息。
由于缺乏充足的標注數據,前人將研究重心放在無監督領域遷移方法,重點研究如何從大規模的無標注目標領域數據中抽取出有效的特征。
自訓練方法(Self-Training)作為典型的無監督領域遷移方法,在成分句法分析[11]和依存句法分析[12]的跨領域遷移任務中都被證明具有一定的作用。Yu等[13]在NLPCC-2019跨領域依存句法分析評測任務中使用基于模型融合的自訓練方法,首先根據不同的隨機種子,利用標注數據訓練了三個句法分析器;進而利用三個句法分析器解析目標領域的無標注數據,并從中隨機選擇部分數據加入原始的訓練數據重新訓練三個句法分析器;重復操作一定的次數。Sagae等[14]在CoNLL-2007依存句法跨領域分析任務中使用聯合訓練(Co-Training)的方法并取得最好的性能。
在多源跨領域分析任務中,已標注的訓練數據中包含多個領域,由于各個領域之間存在較大的差異,在一定程度上會影響分析性能。因此,當給定一個目標領域,如何能夠將其與源領域數據有效結合成為很多學者研究的重點。McClosky等[15]首次將該場景應用到成分句法分析中,他們首先使用一個回歸模型測試跨領域的性能,并根據得到的性能合并在每個源領域上單獨訓練的模型。Guo等[16]基于多任務學習框架,使用專家混合的方法,采用元訓練方法來計算源領域和目標領域之間的差異,并用于情感分類和詞性標注任務。
當訓練數據中存在小規模的目標領域標注數據時,對跨領域分析任務可以起到非常大的作用。
文獻[17]介紹了一種簡單而有效的特征增強方法,在很多序列標注任務上都取得較好的性能。其主要思路是通過對每個領域的每個特征加上一個虛領域(共享領域)特征來區分某個領域的特征和共享特征。Finkel等[18]在其方法的基礎上進一步提出了層次貝葉斯方法,這兩項工作可以理解為基于傳統離散特征機器學習框架的多任務學習方法。
Kim等[19]提出了專家混合方法用于跨領域意圖分類任務,與無監督領域遷移中Guo等提出的方法相比,他們使用少量的目標領域數據訓練了一個注意力模塊,用于計算目標領域與源領域的差異。
Flannery等[20]基于主動學習的方法,標注了一批局部標注數據,即只標注句子中的部分詞語,極大地降低了標注成本。類似地,Joshi等[21]標注了一批局部標注的目標領域數據用于成分句法分析。兩個工作均取得較好的結果,同時也說明了目標領域的標注數據對于跨領域分析的重要性。主流的上下位關系自動獲取方法可按數據。
本文使用目前性能最好的基于圖的雙仿射神經網絡依存句法分析器(Biaffine Parser)[2]作為基準模型。該模型首先利用雙向長短期記憶網絡(Bi-directional Long Short-Term Memory,Bi-LSTM)對句子進行編碼;進而利用多層感知機(Multi-Layer Perceptron,MLP)對Bi-LSTM的輸出降維,進行二次編碼;最后使用雙仿射變換(Biaffine)計算得分,找出一棵最優的依存句法樹。
本文依存句法分析主要完成兩個任務:① 預測詞語的頭節點;② 預測與頭節點之間的依存關系標簽。頭節點與依存關系標簽的分數計算過程類似,由于篇幅有限,下面以預測詞語的頭節點為例介紹分數的計算過程。如圖1所示。

圖1 依存弧分數計算模型圖
給定一個自然語句S=W0W1…Wn,Wi表示句子中的第i(i∈[1,n])個詞語,n表示句子中的詞數。首先將第i個詞語的詞向量ewi和詞性向量eti拼接起來得到向量Xi,作為模型的輸入。其計算式表示為:
Xi=ewi?eti
(1)
將句子映射為向量輸入到模型后,利用Bi-LSTM對句子進行雙向編碼。將第i個詞語的前向LSTM和反向LSTM最后一個隱藏層的輸出Hfi、Hbi拼接后得到向量hi,該向量中集成了詞語的上下文信息。其計算式表示為:
hi=Hfi?Hbi
(2)
向量hi中包含了能夠預測當前詞語所有可能的頭結點、依存關系標簽和其他與當前決策無關的信息。這些冗余的信息不僅降低了計算的速度,同時增加了過擬合的風險。因此,在計算分數之前,模型利用MLP對hi進行降維處理,去除這些多余信息。其計算式表示為:
(3)
(4)
式中:MLPH和MLPD分別處理該詞語作為依存詞和作為頭節點情況。
最后,利用雙仿射變換計算依存弧得分,其計算式表示為:
(5)

結合源領域和目標領域數據最直接的方法是將多個訓練數據集直接合并為一個數據集。該方法并不區分源領域數據集和目標領域數據集,合并后直接用于訓練基礎的依存句法分析器。這種方法的主要缺點是模型對源領域和目標領域使用相同的參數,無法充分學習特定于某個領域的特征。當源領域與目標領域數據差異過大時,源領域數據反而會降低分析性能。
Stymne等[22]提出了一種樹庫嵌入方法,通過對一種語言使用多個異構樹庫(遵循不同的標注規范)來提升性能。參考該工作,我們在每個詞語的向量表示后面拼接一個額外的領域特征向量作為模型的輸入。如圖2所示,edomain用于表示該句子所在的領域。

圖2 領域嵌入模型圖
與直接合并相比,該方法中大多數參數是共享的,模型仍然可以學習通用特征。同時,模型也可以通過領域特征更好地學習特定于源領域與目標領域各自的特征,解決了直接合并時源領域與目標領域差異過大帶來的問題。
在上述兩種方法中,由于源領域和目標領域的標注數據規模通常差異較大,在訓練模型時,可能出現目標領域的標注數據被源領域數據淹沒的情況。為了避免出現該問題,本文使用簡單的語料庫加權策略[23]。
在每輪迭代之前,從目標領域和源領域訓練集中隨機抽取比例為1 ∶M的訓練數據,將選出的標注數據合并后隨機打亂,作為該輪迭代的訓練集。M作為超參數,在驗證集上選擇使模型性能最高的值。
除了使用目標領域的標注數據外,如何利用相對容易獲得的大規模無標注數據幫助提升跨領域分析性能也是一個值得探討的問題。最近提出的雙向語言模型BERT由巨大的數據、模型和計算開銷訓練而成。其基于雙向的Transform編碼,通過Masked Language Model(MLM)和Next Sentence Prediction(NSP)兩個無監督任務訓練模型,實現了真正意義上的上下文相關的信息學習,具有強大的表征能力。
本文使用以下兩種方法將BERT應用到跨領域依存句法分析任務中:
(1) 使用預訓練BERT模型獲得詞表示。谷歌發布了一個使用大規模無標注數據預訓練的中文BERT模型。該模型訓練數據主要來自維基百科,領域覆蓋全面,較為通用。這里直接使用該模型獲得詞表示。
(2) 利用目標領域無標注數據微調BERT。本文選取的目標領域具有較強的領域特色,為了使BERT獲得的詞表示中包含更多目標領域的有效信息,我們使用目標領域的無標注數據和訓練集微調語言模型。
微調語言模型時,將模型參數初始化為預訓練中文BERT模型的參數。利用目標領域的無標注數據和訓練集迭代訓練模型3次,將模型最后四層的輸出加權平均后作為詞表示,代替之前使用的預訓練詞向量作為模型的輸入。即將式(1)中的ewi替換為ebi,如式(6)所示,ebi為通過BERT模型獲得的詞向量。
Xi=ebi?eti
(6)
另外,對于中文,給定一個自然語句,BERT模型為句子中的每個字生成一個字向量。而依存句法分析是基于詞語的任務。因此,這里將每個詞語中第一個字符的字向量作為該詞語的詞向量表示。
本文選取了一個源領域和三個目標領域研究跨領域依存句法分析任務。其中源領域為平衡語料(Balanced Corpus,BC),數據主要來源于人民日報等較為規范的文本。三個目標領域分別為產品評論(Comments Products,PC)、產品博客(Product Blogs,PB)和“誅仙”小說(ZX)數據。數據均由Peng等[10]在NLPCC-2019舉辦的依存句法跨領域分析評測任務中提供。表1中統計了各領域的句子數。

表1 數據統計
1) 評級標準。本文使用目前常用的兩種依存句法分析評價指標:
(1) 只考慮依存弧預測是否正確(Unlabeled Attachment Score,UAS),其計算式為:
(7)
(2) 除了考慮依存弧,還要考慮依存標簽是否預測正確(Labeled Attachment Score,LAS),其計算式為:
(8)
2) 參數設置。本文實驗基于PyTorch重現的Biaffine Parser,模型中向量維度、學習率等超參數均參考Dozat等[2]中使用的參數。具體細節如下:每個詞的詞向量和詞性向量均為100維;Bi-LSTM的神經元維度為400,層數為3;使用Adam優化器,其初始的學習步長為0.2,β1和β2設為0.9;使用mini-Batch方式更新參數,Batch大小設為200。句法分析器最多迭代訓練1 000輪,每輪迭代訓練結束后在驗證集上測試當前模型性能,保存最優模型。如果連續50次迭代,驗證集的最優LAS沒有改變,則停止訓練。
4.3.1單一領域訓練集訓練模型
表2給出了使用單一領域的標注數據訓練的模型(Single-Model)在驗證集上的結果。可以看到:① 使用各自領域訓練的模型在對應領域上性能最好,其中源領域數據的性能最好,三個目標領域性能相對較低。主要原因是BC訓練集規模較大,是PC、PB訓練集規模的3倍,是ZX訓練集的10倍。② 在源領域數據上訓練的模型(BC-Model)在BC領域上的LAS為74.75%,但是在目標領域數據上性能明顯下降。尤其是在PC數據上,LAS僅為25.64%,PB、ZX數據訓練的模型的性能與BC-Model之間的差異相對較小,但是也有7%的差異,可見跨領域分析任務的重要性。

表2 單一領域訓練集訓練模型在驗證集上的結果(%)
4.3.2源領域與目標領域訓練集合并訓練模型
在將源領域訓練集與目標領域訓練集合并時,使用語料庫加權策略避免目標領域訓練集被源領域訓練集淹沒。
為了選擇語料庫加權策略中的最優比例,每次迭代時嘗試使用以下兩種方法:
(1) 不使用全部的目標領域訓練集,只隨機選擇其中的1 500句,并與選擇的1 500×M句源領域數據合并后作為本次迭代的訓練集;
(2) 目標領域訓練集中所有數據均作為本次迭代的訓練集。
假設目標領域參與訓練的數據為N1,源領域參與訓練的數據為N2,則M為不大于N2/N1的整數。
針對以上兩種方法,本文均測試了使用不同的M,在目標領域驗證集上的性能。對比兩種方法中的最優實驗結果,最終選擇使用第二種方法。表3中記錄了在領域嵌入方法基礎上,使用第二種方法的實驗結果??梢钥闯?,PC、PB、ZX的M分別為1、2、5時,在驗證集上性能最高。

表3 源領域與目標領域不同權重比例在驗證集上結果(%)
表4中記錄了源領域與目標領域標注數據結合后訓練的模型在驗證集上的結果。

表4 源領域與目標領域訓練集合并在驗證集上的結果(%)
Concat行是將源領域與目標領域直接合并后的實驗結果。與Single-Model相比,PC、PB上并沒有取得提升,甚至在PC數據上的性能略有下降,其主要原因是PC、PB數據為電商數據,與BC數據差異較大,增加源領域數據后反而會干擾模型,使分析性能下降。而將BC與ZX數據合并后性能提高了約4%,其主要原因是ZX領域的訓練集規模較小,僅有1 600。
DE行是使用領域嵌入方法的實驗結果。使用領域嵌入方法后,每個詞語輸入向量中包含了該詞語所屬領域信息,模型可以學習特定于其領域的特征,在三個目標領域上均取得了提升。
BERT行記錄的是在領域嵌入方法的基礎上,使用Google官方發布的預訓練的中文BERT模型的結果。在三個目標領域的LAS上取得了至少7%的提升。
FT行記錄的是在領域嵌入方法的基礎上,使用三個目標領域的無標注數據和訓練集微調中文BERT模型的結果。可以看到,在PC數據上的性能提升最大,約提升1.7%。一方面是因為PC數據的無標注數據規模較大,約35萬;另一方面,PC數據為用戶對于商品的評論,文本不夠規范,BERT可以從其無標注數據中學習到更多該領域的特定信息。
4.3.3最終結果
表5記錄了在測試集上的最終實驗結果,與上文在驗證集上的分析基本一致。

表5 在測試集上的結果(%)
在NLPCC-2019舉辦的依存句法跨領域分析評測任務中,Li等[24]取得了半監督子任務的最好性能。他們基于子詞進行句法分析,提出了新的解碼算法和tri-training方法,具體細節可以參考他們的論文。表5中“Li等”行記錄了其使用基于子詞的BERT方法和改進的tri-training方法得到的最好實驗結果。與本文直接使用簡單的領域嵌入方法和BERT方法相比,在PB領域的LAS高最多,也僅高出0.4%。但與本文微調BERT后的性能相比,在PC上的LAS低最多,為1.49%。表中BC表示使用BC訓練集訓練的模型,Single表示使用各自領域的訓練集訓練的模型。
本文基于三個具有鮮明領域特色的目標領域樹庫,研究了半監督依存句法跨領域分析問題,提出了一種簡單而有效的半監督方法:領域嵌入,將源領域訓練集與目標領域訓練集有效結合。在結合時,使用語料庫加權策略控制源領域與目標領域數據規模。此外,本文還使用無標注數據幫助提升跨領域依存句法分析性能。通過微調BERT方法,從大規模無標注數據中學習領域特征,在三個目標領域數據上均達到目前最好的性能。
在研究半監督跨領域分析方法時,本文只選擇了一個源領域數據。根據直接合并方法的弊端,我們考慮在以后的工作中選擇多個源領域數據,重點研究給定某個目標領域時,如何自動地找到與其最相似的源領域數據,從而可以從規模較大的源領域標注數據中學習更多的與目標領域之間的通用特征,幫助提升目標領域性能。