田文洪,高印權(quán),黃厚文,黎在萬,張朝陽
(電子科技大學 信息與軟件工程學院,四川 成都 610054)
句子是自然語言處理中除字、詞、短語外另一個重要的研究層級。篇章句間關(guān)系識別(discourse relation recognition)是句子層級研究中不可或缺的環(huán)節(jié)。篇章句間關(guān)系識別的主要任務(wù)是,研究一段文本中前后相連的兩個論元之間的邏輯關(guān)系(例如,比較關(guān)系、拓展關(guān)系、并列關(guān)系和因果關(guān)系等)。該任務(wù)是自然語言理解的基礎(chǔ)研究問題。正確地判斷文本句間邏輯關(guān)系意味著能夠有效地理解文本的語義關(guān)系。因此,該任務(wù)能夠有效地提升對話系統(tǒng)、自動問答等系統(tǒng)的性能,對多種自然語言處理任務(wù)的解決起到輔助作用。
篇章句間關(guān)系識別可以根據(jù)是否存在邏輯連接詞分為兩類: 存在邏輯連接詞(例如,所以、然而等)的顯式句間關(guān)系識別(explicit discourse relation recognition);不存在邏輯連接詞的隱式句間關(guān)系識別(implicit discourse relation recognition)。如例1所示,該句中存在表示因果關(guān)系的連接詞“因為”“所以”,因此,該句子的篇章關(guān)系為顯式句間關(guān)系。例2中的句子雖然沒有邏輯連接詞,但是可以根據(jù)前后兩句的內(nèi)容推測出前一個分句是后一個分句的原因。因此,該例句的篇章句間關(guān)系是因果關(guān)系。形如例2的句子稱為隱式句間關(guān)系語句。連接詞的存在與否是判斷篇章關(guān)系類型的重要依據(jù)。
例1因為今天下雨,所以道路濕了。
例2今天下雨,道路濕了。
本文所研究的內(nèi)容主要針對隱式篇章句間關(guān)系的識別,使用的語料為張牧宇等[1]在2013年發(fā)布的哈工大社會計算與信息檢索研究中心中文篇章級語義關(guān)系語料庫(HIT-CIR Chinese Discourse Relation Corpus),在張牧宇等的另一文獻[2]中對該語料庫做了詳細敘述。該語料有選取了多個領(lǐng)域的中文語句,標記有525篇、共計六個大分類的篇章句間關(guān)系。
基于該語料庫,本文提出了一種基于雙向長短時記憶(Bi-LSTM)網(wǎng)絡(luò)的多任務(wù)學習架構(gòu),并采用融合詞向量的方法解決隱式篇章句間關(guān)系識別任務(wù)。本文方案中的多任務(wù)學習架構(gòu)能夠充分使用到隱式句間關(guān)系和顯式句間關(guān)系的語料,間接地擴充訓練集樣本數(shù)量。不僅如此,多任務(wù)學習的底層權(quán)重共享機制可以充分挖掘隱式句間關(guān)系分類和顯式句間關(guān)系分類之間的關(guān)聯(lián),增強底層網(wǎng)絡(luò)的特征提取能力。同時,方案中的融合詞嵌入的方法能夠充分挖掘文本自身的信息。經(jīng)過驗證,本文方法取得較好的識別性能,對比張牧宇等[1]中的最好方法有著非常明顯的性能提升,平均F1值提升約13%,個別類別的F1值提升近一倍,平均召回率(Recall)提升9%。
隱式句間關(guān)系識別的難點在于該任務(wù)的語料不存在類似于顯式的篇章句間關(guān)系中的連接詞,缺乏較好的特征。同時,數(shù)據(jù)集的稀少和樣本的分布不均衡也是隱式句間關(guān)系識別無法得到很好解決的原因之一。解決該問題可以從多種角度出發(fā)。首先,根據(jù)語句中詞匯之間的依賴關(guān)系、句法關(guān)系以及淺層語義等關(guān)系進行分析判斷。徐凡等[3]將句子的句法特征、淺層語義特征、情感分析特征和詞匯特征整合到一起,使用樹核的方法進行分類,取得較好效果。再者,基于機器學習的判斷方法也在該問題上有著廣泛的實踐。王智強等[4]使用篇章框架的方法來解決該問題。機器學習的方法例如SVM(support vector machine)[5]、最大熵[1]等方法被應(yīng)用到該問題的解決中,SVM由于其對邊界實例的敏感性,效果較最大熵要更好[1]。聚類的方法也被用到該問題的解決中[6]。目前,基于深度學習的方法被廣泛地應(yīng)用到自然語言處理問題的解決中。該類方法相較于傳統(tǒng)的方法能夠大幅度減少特征工程的工作量,在節(jié)省人工的同時,也能取得較好的效果。Liu Y等[7]使用了CNN(convolution neural network)對句子進行特征提取,然后通過多任務(wù)學習網(wǎng)絡(luò)聯(lián)合顯式句間關(guān)系語料和隱式句間關(guān)系語料解決該問題。同時,循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neutral network,RNN)以及注意力模型(attention model)也被應(yīng)用到該任務(wù)的解決中[8],該方法在訓練模型時,同時將整個句子以及句子的前后兩個子句加入到模型的訓練之中,取得較好的泛化能力。當然,針對語料特征的解決方法也被應(yīng)用到解決該問題中,由于樣本的不均衡,隱式句間關(guān)系識別的樣本較少的類別很難得到較好的結(jié)果。朱珊珊等[9]根據(jù)隱式篇章關(guān)系數(shù)據(jù)這一特點設(shè)計了基于框架語義向量的訓練樣本拓展的方法,該方法比主流的欠采樣方法得到更好的結(jié)果。
本文將雙向長短時記憶神經(jīng)網(wǎng)絡(luò)、融合詞嵌入和多任務(wù)模型結(jié)構(gòu)進行融合,設(shè)計了基于多任務(wù)學習循環(huán)神經(jīng)網(wǎng)絡(luò)的隱式句間關(guān)系識別模型,模型網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,task1為主任務(wù),識別隱式句間關(guān)系;task2為輔助任務(wù),識別顯式句間關(guān)系。模型共有三個Bi-LSTM,上方Bi-LSTM和下方Bi-LSTM網(wǎng)絡(luò)分別是task1和task2獨享的網(wǎng)絡(luò),用于提取各自任務(wù)獨有的特征。中間的Bi-LSTM用于提取任務(wù)task1和task2通用的特征。最后將結(jié)果輸出到softmax層中,計算最終的損失值。
(1)
按照該順序?qū)ask1和task2的輸入詞向量輸入到任務(wù)獨享的Bi-LSTM中提取任務(wù)獨有的特征,同時輸入到共享的Bi-LSTM中提取任務(wù)通用的特征,如式(2)~(4)所示。
最后,將每個Bi-LSTM的最后一個時間步的隱藏層單元狀態(tài)作為輸出。task1和task2分別將任務(wù)獨享的Bi-LSTM輸出和共享的Bi-LSTM的輸出連接到一起,輸出到softmax層中,得到最終的預測值,如式(5)、式(6)所示。
task1和task2均使用交叉熵(cross entropy)作為損失函數(shù),設(shè)置task1和task2的損失權(quán)重為α1和α2,如式(7)所示,其中ytrue和ypred分別表示真實值和預測值。
(7)
該網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計旨在使用共享結(jié)構(gòu)進行訓練,學習到兩種任務(wù)所共同具有的特征,針對具體任務(wù)的網(wǎng)絡(luò)訓練學習到具體的任務(wù)的特征。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neutral network,RNN)[10]是一種具有循環(huán)結(jié)構(gòu)的網(wǎng)絡(luò),能夠針對時間序列進行建模,有效地捕捉時間序列上的信息傳遞特征。它與自然語言文本中詞匯的前后順序關(guān)系非常地契合。因此,在很多自然語言處理任務(wù)中,循環(huán)神經(jīng)網(wǎng)絡(luò)都能取得不錯的效果。但是,循環(huán)神經(jīng)網(wǎng)絡(luò)中的梯度消失和梯度爆炸問題是影響其效果的因素之一。
長短時記憶網(wǎng)絡(luò)[10](long short term memory,LSTM)引入記憶塊的概念,通過門(gate)控制信息的輸入、遺忘以及輸出,用以保持和更新細胞狀態(tài),從而有效地減輕梯度消失和梯度爆炸問題。LSTM的結(jié)構(gòu)如圖2所示。
圖2 LSTM結(jié)構(gòu)圖
LSTM中門的概念實際上是一個全連接層,它的輸入是上一時刻的隱藏層單元狀態(tài),輸出是對應(yīng)到細胞狀態(tài)(cell state)的每一個單元的信息乘數(shù)因子。該乘數(shù)因子的大小控制著信息的輸入、遺忘和輸出百分比。門的結(jié)構(gòu)如式(8)所示。
gate(x)=σ(Wx+b)
(8)
其中,σ為sigmoid函數(shù),輸出0到1之間的實數(shù)向量;W和b分別為門的權(quán)重與偏置。
LSTM設(shè)計了三個門函數(shù): 輸入門(input gate)、遺忘門(forget gate)和輸出門(output gate)。這三個門的計算公式均可由式(8)給出。
(9)
(10)
(11)
(12)
(13)
(14)
LSTM網(wǎng)絡(luò)由于其出色的性能被廣泛地應(yīng)用到自然語言處理任務(wù)中,其細胞狀態(tài)結(jié)構(gòu)能夠根據(jù)上一時刻的細胞狀態(tài)和當前時刻的輸入更新細胞狀態(tài),學習到文本序列中較長的短時記憶。
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bi-RNN)[12]是Schuster等在RNN的基礎(chǔ)上做的改進,它的思想是不僅考慮順序的時間步驟的信息傳遞過程,同時考慮逆序時間步驟上的信息傳遞。通過這種方式捕捉到更多的時間順序上的特征。其結(jié)構(gòu)如圖3所示。
圖3 Bi-RNN結(jié)構(gòu)圖[10]
雙向長短時記憶網(wǎng)絡(luò)[10](bidirectional long short term memory,Bi-LSTM)是Bi-RNN和LSTM的結(jié)合,專門用來處理長期依賴缺失的問題。前向網(wǎng)絡(luò)按照順序讀取每一時刻的輸入,計算權(quán)重;后向網(wǎng)絡(luò)按照逆序讀取輸入并計算權(quán)重。然后,將前向和后向的輸出融合到一起作為Bi-LSTM的輸出。該模型不但考慮了順序的特征,而且考慮了逆序的特征,在很多自然語言處理任務(wù)中,Bi-LSTM比LSTM的效果更好。
詞嵌入(word embedding)是一種詞的表示方法,它使用一組低維、稠密、實值的向量表示文本中的每一個詞。在深度學習處理過程中,通常將這組詞嵌入方法所表示的詞向量作為模型的輸入。當然,詞嵌入所訓練的方式不同,它能夠表示出不同的意義。NNLM(neural network language model)[13]是Bengio等在2003提出的訓練方法,該方法訓練出的詞向量表示的是該句子從語言模型角度出發(fā)的整體出現(xiàn)概率。Word2Vec[14]是Mikolov等在2013年提出的無監(jiān)督詞嵌入訓練方法。該方法訓練出的詞向量可以表示詞匯在淺層語義上的距離(king-queen=man-woman)。神經(jīng)網(wǎng)絡(luò)詞向量Word2Vec的訓練思想有兩種[15],分別代表兩種訓練方式: 第一種是通過中間的詞預測周圍的詞,也就是skip-gram方法;第二種是通過周圍的詞去預測中間的詞,也就是CBOW模型。當然,該模型也用到負采樣(Negative Sampling)、Hierarchical softmax等方法加速訓練。
為了充分利用文本的信息,擴充詞向量的表示能力,本文選擇的方法是使用skip-gram的Word2Vec訓練出的100維詞向量和詞性向量,將其進行拼接,作為模型的輸入。這種方法相當于從特征工程的角度豐富詞向量所表示內(nèi)容,讓詞向量不僅從Word2Vec這一部分中表達詞的語義關(guān)系,也能通過拼接詞性向量表示其他相關(guān)信息。句子的詞性序列在一定程度上反映了句子的句法上的信息。融合詞向量的過程為: 首先,將41種詞性生成詞嵌入表示形式;再通過觀察詞匯在具體語句中的詞性,將詞性對應(yīng)的詞向量與Word2Vec詞向量拼接到一起。綜上,本文所使用的模型輸入包括兩個部分: Word2Vec詞向量部分和詞性向量部分;最后,將這兩部分拼接在一起,作為表示具體詞匯的融合詞向量。
多任務(wù)學習是針對傳統(tǒng)的單任務(wù)學習提出的一種學習概念。單任務(wù)學習是一次只學習一個任務(wù),生成的模型只針對單個學習任務(wù)。張牧宇等[1]使用的SVM或最大熵模型均是針對隱式句間關(guān)系或顯式句間關(guān)系的單任務(wù)學習方法。多任務(wù)學習是多個任務(wù)同時進行學習,旨在利用任務(wù)之間的關(guān)聯(lián)性,通過共同訓練的方式提升模型的性能。多任務(wù)學習深度神經(jīng)網(wǎng)絡(luò)在進行訓練時,多個任務(wù)的網(wǎng)絡(luò)同時進行損失函數(shù)的誤差反向傳播。這些任務(wù)通過共享底層的特征表示層來相互促進學習,從而提升模型的性能和泛化能力。同時,多任務(wù)學習可以間接地擴大訓練的語料,對語料較少的任務(wù)提供一種可行的解決方案。
多任務(wù)學習在文本分類任務(wù)上有著深入的研究。Liu P等[16]設(shè)計了多種基于循環(huán)神經(jīng)網(wǎng)絡(luò)的多任務(wù)學習結(jié)構(gòu),并將該結(jié)構(gòu)應(yīng)用到文本分類之中。該結(jié)構(gòu)中共享部分Bi-LSTM的隱藏層,能夠向用于具體任務(wù)的Bi-LSTM傳遞信息,起到底層網(wǎng)絡(luò)共享特征的作用。Liu P等[17]將對抗網(wǎng)絡(luò)的思想加入到多任務(wù)學習文本分類的訓練之中,使得共享層的網(wǎng)絡(luò)能夠更加純粹地學習到共享的特征,有效地提升了分類的性能;Liu Y等[7]使用了CNN(convolution neural network)作為底層的共享表示層,并使用動態(tài)池化層(dynamic pooling)選取重要特征。本文所使用的多任務(wù)學習結(jié)構(gòu)深受這些新方法的啟發(fā)。
自然語言處理中很多問題的子問題是具有相關(guān)性的。例如中文分詞和命名實體識別,Qi Y等[18]使用多任務(wù)學習方法提升命名實體識別的準確率。Liu Y等[7]使用多任務(wù)學習來處理隱式句間關(guān)系,他們使用卷積神經(jīng)網(wǎng)絡(luò)作為底層的共享層,上層的網(wǎng)絡(luò)使用不同的分支結(jié)構(gòu)計算不同任務(wù)的損失。之所以可以使用多任務(wù)學習進行隱式句間關(guān)系分類,是因為隱式句間關(guān)系和顯式句間關(guān)系也存在這種任務(wù)之間的關(guān)聯(lián)。從前文中提到的例1和例2可以看出這兩個任務(wù)之間的聯(lián)系。如果例1去掉連接詞后在內(nèi)容上和例2一致,可以判斷出句子間存在因果關(guān)系。反過來例2加上合適的連接詞“因為”“所以”,在內(nèi)容上和例1一致。因此,某些隱式句間關(guān)系的句子可添加上合適的連接詞,轉(zhuǎn)化為相應(yīng)的顯式句間關(guān)系的實例;反過來,可將部分顯式句間關(guān)系的句子轉(zhuǎn)化為隱式句間關(guān)系的實例。可以看出,兩種任務(wù)的語料除連接詞外,文本內(nèi)容存在著相似性,利用這種聯(lián)系可以將這兩個任務(wù)放在多任務(wù)學習框架下共同訓練。本文將隱式句間關(guān)系識別設(shè)置為主任務(wù),顯式句間關(guān)系識別設(shè)置為輔助任務(wù)。多任務(wù)學習過程中,兩種任務(wù)同時對底層的共享表示層網(wǎng)絡(luò)進行梯度下降,學習通用特征;而較為上層的網(wǎng)絡(luò)學習特定任務(wù)的特征。該方法能夠有效地提高模型性能及泛化能力,在一定程度上擴充了數(shù)據(jù)集規(guī)模。
本文所使用硬件環(huán)境為: 處理器AMD Ryzen 1700k CPU;顯示接口卡Nvidia GeForce GTX 1060 6 GB;內(nèi)存8 GB。軟件環(huán)境為: Python 3.5,jieba3k 0.35.1,Tensorflow-gpu 1.4.0,Keras 2.1.5,Gensim 2.3.0。
實驗使用的數(shù)據(jù)是張牧宇等[1]在2013年提出的HIT-CDTB語料。該語料標記了525篇語料,將這些語料中的句子按照句間關(guān)系類型分為兩類: 顯式句間關(guān)系和隱式句間關(guān)系。按照句子的類型分為三個類別: 分句句間關(guān)系、復句句間關(guān)系和句群句間關(guān)系。按照句子的篇章句間關(guān)系分為六個大類: 時序關(guān)系、因果關(guān)系、條件關(guān)系、比較關(guān)系、拓展關(guān)系和并列關(guān)系。同時,這六個大類又細分為55個小的分類。具體的語料細節(jié)可以參見文獻[2]。由于這六個類比中的時序關(guān)系和條件關(guān)系的語料過少,因此舍棄這兩種,只選用剩下的四個類別的語料進行分類的訓練和測試。
本實驗選取的是分句句間關(guān)系和復句句間關(guān)系中只包含因果關(guān)系、對比關(guān)系、拓展關(guān)系和并列關(guān)系的語料,隱式和顯示關(guān)系總數(shù)分別為14 987條和13 130條。具體語料數(shù)量如表1所示。
表1 語料統(tǒng)計表
在隱式句間關(guān)系的性能評估中,本文采用的是常用的R(召回率)、P(準確率)和F1(召回率和精確率的調(diào)和平均值),以F1值作為評測的主要參考指標。
本文設(shè)計了三個實驗。
實驗一為了驗證多任務(wù)學習相比傳統(tǒng)機器學習的優(yōu)越性,在實驗數(shù)據(jù)相同的情況下,設(shè)計了包括文獻[1]中性能較好的SVM方法及文獻[5]中SVM方法的對比實驗,得到了測試數(shù)據(jù)中的P、R、F1值,如表2所示。
實驗二為了驗證多任務(wù)學習在數(shù)據(jù)集較少的情況下優(yōu)于現(xiàn)有的深度學習方法,在實驗數(shù)據(jù)相同的情況下,設(shè)計了包括文獻[8]文中在CDTB數(shù)據(jù)集上性能較好的A Recurrent Neural Model with Attention(RNN-Att)方法的對比實驗,得到了測試數(shù)據(jù)中的P、R、F1值,如表3所示。
表2 隱式句間關(guān)系識別結(jié)果
表3 與RNN-Att模型對比實驗
實驗三為了驗證詞性向量的有效性,設(shè)計了添加詞性向量與不添加詞性向量的對比實驗。在保證實驗其他參數(shù)相同的條件下,得到了在測試數(shù)據(jù)集中的P、R、F1值,如表4所示。
表4 詞性向量對比實驗
實驗使用3.1節(jié)中提到的約28 117萬條語料作為實驗數(shù)據(jù)。隨機選取80%的數(shù)據(jù)作為訓練集,余下作為測試集。
首先,使用jieba分詞工具對數(shù)據(jù)進行分詞和詞性標注;其次,使用Gensim工具包下的Word2Vec模塊將樣本集中所有的句子訓練生成100維詞向量,同時也對詞性做embedding處理,生成32維向量,兩者進行拼接,生成132維向量作為模型輸入;然后,使用Keras完成多任務(wù)學習Bi-LSTM代碼的編寫;最后,由于數(shù)據(jù)存在類別不均衡的問題,測試每個類別的二分類時,均調(diào)整提升較少類別的采樣權(quán)重,使用過采樣的方式減輕數(shù)據(jù)不均衡造成的影響。同時,兩個任務(wù)均使用交叉熵作為損失函數(shù),經(jīng)過多次測試,得到最優(yōu)超參數(shù)設(shè)置: 學習率設(shè)置為0.000 5;隱式句間關(guān)系任務(wù)損失權(quán)重設(shè)置為0.65;顯式句間關(guān)系任務(wù)損失權(quán)重設(shè)置為0.35。
實驗結(jié)果表明,使用融合詞向量作為輸入的多任務(wù)循環(huán)神經(jīng)網(wǎng)絡(luò)模型的實驗結(jié)果在準確率、召回率以及F1值指標上均取得很好結(jié)果,其中大部分指標取得目前該語料測試上的最好結(jié)果。與張牧宇等[1]的論文中的最好結(jié)果對比: 平均F1值提升約0.13,召回率(Recall)平均提升0.09,準確率(Precision)在拓展、并列關(guān)系上平均提升0.28,其余兩類雖有所下降,是由于這兩個類別的樣本較少。同時,并列關(guān)系的F1值提升近一倍,模型很好地學習到并列關(guān)系的相關(guān)特征。與姬建輝等[5]的方法對比:F1值有明顯提升。文本所使用的方法能夠有效地學習到隱式句間關(guān)系的相關(guān)特征,達到較好的性能。但是,從表中仍然可以看出因果關(guān)系、對比關(guān)系的訓練結(jié)果較差,這種情況的出現(xiàn)是因為這兩個類別的樣本較少,分別是1 027條和467條。在樣本較少的任務(wù)上,深度學習方法很難獲取很好的效果,而基于概率或者規(guī)則的方法往往能取得更好的結(jié)果。與Samuel R?nnqvist等[8]文中方法對比:P、R、F1在因果、對比、并列三類關(guān)系上有明顯提升,在擴展關(guān)系上有所下降。這說明多任務(wù)學習在數(shù)據(jù)集不夠充足的情況下表現(xiàn)較好,因為可以通過輔助任務(wù)來彌補數(shù)據(jù)集不足的缺點,但是在數(shù)據(jù)集足夠的情況下不一定可以取得最好的效果。
本文進行模型簡化測試,以定量評估本文模型詞性特征的貢獻度。本文將引入融合詞向量與僅使用單一的Word2Vec詞向量此兩種方案進行實驗對比。實驗表明: 使用融合詞向量后,效果有一定提升,多任務(wù)Bi-LSTM+W2V+pos方法的F1平均值為0.53,而多任務(wù)Bi-LSTM+W2V方法的F1平均值為0.48;因此,前者比后者F1平均值提升0.05;同理可計算出召回率R平均提升0.055,準確率P平均提升0.025。
本文提出了基于多任務(wù)學習的循環(huán)神經(jīng)網(wǎng)絡(luò)和融合詞向量進行隱式句間關(guān)系識別的方法。由于隱式句間關(guān)系識別和顯式句間關(guān)系識別在一定程度上有內(nèi)在的聯(lián)系,因此,使用多任務(wù)學習的方法,用顯式句間關(guān)系的語料和隱式句間關(guān)系的語料共同訓練,學習兩種任務(wù)之間共同的特征,從而提升模型的泛化能力。同時,使用了融合詞向量的方法,在Word2Vec的基礎(chǔ)上加入詞性的先驗知識,也在一定程度上提升模型的性能。本文使用的方法比目前已有結(jié)果有一定的提升。在今后的研究中,可以嘗試針對隱式句間關(guān)系語句的前后兩個分句的結(jié)構(gòu)設(shè)計更精細的模型來獲取語句的特征,從而提升模型的識別效果。同時,吸收傳統(tǒng)的特征工程的一些可用的經(jīng)驗,包括將先驗知識應(yīng)用到深度學習的模型中等方法,該類處理方式不但能夠提升模型的性能,也能提高深度模型的可解釋性。