鄭 杰,孔 芳,周國棟
(蘇州大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
省略是一種很常見的語言現(xiàn)象,需要通過上下文來理解被省略的內(nèi)容。省略現(xiàn)象在中文、英文等多種語言中都存在。據(jù)Kim[1]統(tǒng)計在中文和英文的語料中,英文大約有96%是顯式主語,而在中文中卻只有64%。由此可見,中文是一種省略現(xiàn)象十分頻繁的語言。特別是在問答、對話等短文本中,因參與問答、對話雙方的語言習(xí)慣、表達(dá)方式各有差異,故會導(dǎo)致表達(dá)的內(nèi)容呈現(xiàn)出隨意和不規(guī)范的特點(diǎn)。因此,省略現(xiàn)象在這類短文本中尤為突出。由于缺少談話雙方的背景知識,當(dāng)機(jī)器在面對這類會出現(xiàn)大規(guī)模省略現(xiàn)象的短文本時,若不經(jīng)過省略恢復(fù)處理,機(jī)器將很難理解短文本的含義。進(jìn)而導(dǎo)致在問答、對話等系統(tǒng)中給出“錯誤”的回復(fù),用戶體驗(yàn)欠佳。因此,對中文文本,特別是對話、問答這種中文短文本進(jìn)行省略恢復(fù)工作有著非常重要的意義。
本文的主要工作是針對中文短文本中的省略進(jìn)行補(bǔ)齊,結(jié)合深度學(xué)習(xí)的網(wǎng)絡(luò)模型提出了一種基于序列到序列[2]的省略檢測和補(bǔ)全模型。
本文后續(xù)內(nèi)容安排如下: 第1節(jié)簡要介紹了中英文省略恢復(fù)的研究現(xiàn)狀;第2節(jié)詳細(xì)介紹了引入注意力機(jī)制的序列到序列的神經(jīng)網(wǎng)絡(luò)模型;第3節(jié)是實(shí)驗(yàn)過程及實(shí)驗(yàn)結(jié)果分析;第4節(jié)給出了總結(jié)。
目前英文的省略恢復(fù)研究主要針對動詞短語進(jìn)行,并取得了一定的成果。代表性工作有: Dalrymple等[3]和Shieber等[4]對英文進(jìn)行語言學(xué)分析,在英文動詞短語省略恢復(fù)方面建立了一套語言學(xué)理論體系;Nielsen等[5]首次提出一種端到端的可計算的系統(tǒng)來對原始輸入文本進(jìn)行英文動詞短語省略恢復(fù);Liu等[6]繼續(xù)Nielsen的工作,提出一種目標(biāo)檢測、先行詞詞首消解以及先行詞邊界識別的動詞短語省略識別步驟。
中文方面,相關(guān)研究主要集中在主語位置的省略和空語類的恢復(fù)方面。代表性工作包括: Kong等[7-8],Chen等[9-11]在標(biāo)準(zhǔn)公開中文數(shù)據(jù)集上進(jìn)行中文零指代的研究;Cai等[12],Kong等[13],Xue等[14]在中文標(biāo)準(zhǔn)公開數(shù)據(jù)集上進(jìn)行關(guān)于中文空語類省略恢復(fù)研究。但這些研究多關(guān)注省略的恢復(fù),同時對于省略的檢測多采用規(guī)則方法。
在問答、對話等短文本的省略研究方面,代表性工作包括: Huang等[15]對中文口語對話系統(tǒng)中的省略現(xiàn)象進(jìn)行研究。此中文口語對話系統(tǒng)是清華大學(xué)的校園導(dǎo)航EasyNav,對話的形式一般是用戶主導(dǎo)的連續(xù)型請求模式。Huang等基于此中文口語對話系統(tǒng)提出了一種基于主題結(jié)構(gòu)的省略恢復(fù)方法。但他們提出的方法一方面是基于他們的導(dǎo)航系統(tǒng)EasyNav,不具有通用性;另一方面,他們提出的方法也只是停留在理論基礎(chǔ)上,并沒有提出一種具體的可計算模型。Yin等[16]主要針對對話中的零代詞省略進(jìn)行恢復(fù),提出了零代詞恢復(fù)和零代詞消解的框架,并采用聯(lián)合模型減少管道模型帶來的誤差傳播。但其采用的OntoNote 4.0語料,是經(jīng)過標(biāo)注的具有句法規(guī)范的語料,無法體現(xiàn)中文口語對話的隨意性和不規(guī)范性,并不具有代表性。Kumar等人[17]針對英文問答中指代消解問題分別構(gòu)建了基于句法和語義的序列到序列模型,并結(jié)合這兩種模型生成的聯(lián)合模型來學(xué)習(xí)英文問句的語義和語言學(xué)的模式。
綜上所述,我們發(fā)現(xiàn)在中文方面,相關(guān)工作大都集中于規(guī)范的長文本數(shù)據(jù)集,而關(guān)于中文短文本的省略恢復(fù)研究很少;此外,這些研究工作都是基于傳統(tǒng)機(jī)器學(xué)習(xí)方法。本文首次針對中文不規(guī)范的短文本中的省略識別及恢復(fù)任務(wù)展開,提出了一個完整的端到端的神經(jīng)網(wǎng)絡(luò)模型,并通過實(shí)驗(yàn)驗(yàn)證了該模型在短文本的省略檢測和恢復(fù)上的有效性。
本節(jié)主要介紹本文應(yīng)用在中文短文本省略識別和恢復(fù)任務(wù)中的序列到序列的神經(jīng)網(wǎng)絡(luò)模型。序列到序列模型是在2014年被提出的,起初應(yīng)用在機(jī)器翻譯中,之后在摘要生成、語音翻譯等其他領(lǐng)域都得到了廣泛應(yīng)用。
本文首次將序列到序列模型應(yīng)用到中文短文本省略補(bǔ)全的研究中,從實(shí)驗(yàn)結(jié)果可以看出該模型在實(shí)驗(yàn)任務(wù)中也取得了不錯的表現(xiàn)。圖1是本文模型的一個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖,該框架主要包含三個層次,即嵌入層、編碼層和解碼層。接下來本文將從模型的這三個層面分別展開進(jìn)行模型詳細(xì)細(xì)節(jié)的說明。
圖1 序列到序列的省略補(bǔ)全模型
嵌入層(embedding)的主要作用是獲得詞的分布式表示。它會維護(hù)一個嵌入矩陣D∈V*f,其中V表示詞表長度,f表示詞向量的維度。如圖1所示,假設(shè)輸入序列為{“吃”,“了”,“嗎”},在預(yù)處理中首先會將該輸入序列用填充符“
其中,x1,…,xm表示輸入序列中的單詞在詞典里的序號,這里m=5。 嵌入層會根據(jù)標(biāo)簽序列的值xj從嵌入矩陣D中找到序號所對應(yīng)的向量wj∈f,最終標(biāo)簽序列X都會對應(yīng)一個分布式表示,也就是詞向量,如式(2)所示。
2.2.1 LSTM
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)因其能夠捕捉時序信息而在自然語言處理任務(wù)中得到廣泛應(yīng)用。但面對較長的序列時,循環(huán)神經(jīng)網(wǎng)絡(luò)會出現(xiàn)梯度消失和梯度爆炸的問題。而LSTM[18]于(Long Short-Term Memory)1997年被提出,作為RNN的一個變體,可以解決梯度消失的問題。一個LSTM神經(jīng)單元由3個門組成。分別為輸出門,輸入門和遺忘門。這三個門會控制傳輸?shù)较乱粋€時序信息的多少。一般地,LSTM神經(jīng)單元在t時刻的更新規(guī)則如式(3)~式(8)所示。
其中,σ是sigmoid函數(shù),⊙是對應(yīng)元素相乘,Xt是t時刻的輸入(經(jīng)過嵌入層后的向量),ht是t時刻隱層狀態(tài)向量。Ui,Uf,Uc,Uo表示輸入X的權(quán)重矩陣,Wi,Wf,Wc,Wo表示隱層狀態(tài)的權(quán)重矩陣,bi,bf,bc,bo表示偏置。
2.2.2 Bi-LSTM
一般的單向LSTM網(wǎng)絡(luò)只能學(xué)習(xí)歷史信息,而Bi-LSTM的思想是將前向傳播的狀態(tài)和后向傳播的狀態(tài)進(jìn)行拼接,并且已有實(shí)驗(yàn)[19]證明這種雙向結(jié)構(gòu)可以捕捉歷史信息和未來信息,如圖2所示。
圖2 編碼層雙向LSTM結(jié)構(gòu)圖
在本文的序列到序列模型中,用編碼層來獲取源端句子的語義表征。Bi-LSTM模型可以獲得源端序列的歷史信息和未來信息,能夠更好地表征句子的語義信息。所以,在編碼層我們采用Bi-LSTM的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。它的具體運(yùn)算過程如下。
標(biāo)簽序列X在經(jīng)過嵌入層得到的詞向量序列W。在Bi-LSTM中,前向和后向LSTM網(wǎng)絡(luò)都是單獨(dú)計算的。故而,W會分別傳給前向和后向LSTM作為輸入向量。假設(shè)在第i時刻(i≤m),前向LSTM中,第i時刻的輸出如式(9)所示。
在后向LSTM中,第i時刻的輸出如式(10)所示。
圖1中,編碼層最終將輸入序列{“吃”,“了”,“嗎”,“
2.3.1 注意力機(jī)制
注意力機(jī)制最初是指人的心理活動指向或集中于某些事物的能力,引入到神經(jīng)網(wǎng)絡(luò)中就是指神經(jīng)網(wǎng)絡(luò)模型對一些輸出向量“注意”,對另一些輸出向量“忽略”。而模型的這種“注意”和“忽略”是用權(quán)重來動態(tài)模擬的,與當(dāng)前狀態(tài)相關(guān)的向量會被分配高權(quán)重,不相關(guān)的向量會被分配低權(quán)重。那些被分配高權(quán)重的向量在數(shù)值計算中影響較大,而被分配低權(quán)重的向量對數(shù)值運(yùn)算的結(jié)果影響較小,這就是模型會動態(tài)選擇“注意”相關(guān)的內(nèi)容而忽視不相關(guān)內(nèi)容的原因。注意力機(jī)制的原理[20]如圖3所示。
圖3 注意力機(jī)制原理圖
2.3.2 解碼
根據(jù)RNN網(wǎng)絡(luò)結(jié)構(gòu)具有捕捉時序狀態(tài)信息的特點(diǎn),傳統(tǒng)的編碼解碼(Encoder-Decoder)模型認(rèn)為編碼層最后一個時序的輸出向量可以作為源端序列的語義表征。這種做法存在兩種弊端,一方面,是在對長序列進(jìn)行處理時,很難把握長句的依賴關(guān)系,不可避免會造成語義信息的丟失;另一方面,是這種表征方式也無法獲得源端序列的焦點(diǎn)信息。因此,我們采用了Bahdanau Attention,對編碼層的輸出向量計算求得注意力權(quán)重,并得到上下文向量(Context Vector)加入到解碼層的輸入。具體做法如下:
首先,在解碼第一步,序列開始標(biāo)志符“
k≤m,m是源端序列的最大長度,在圖1中的最大長度為5。所以,上下文向量c1通過式(15)計算得到:
同時,第一個時序的預(yù)測標(biāo)簽作為第二個時序的輸入標(biāo)簽,如式(17)所示。
圖1中,第一步解碼預(yù)測標(biāo)簽通過詞典映射后就是符號“你”。
至此,第一步解碼計算完成,之后解碼步驟類似,直到輸出結(jié)束符號“
在訓(xùn)練模式中本文采用式(18)negative log-likelihood來計算損失。
在推理模式下,本文模型采用的標(biāo)簽選擇策略是beam search算法,在下面的章節(jié)中會詳細(xì)介紹。
2.3.3 Beam Search
在推理過程中,常用的方法使用的是貪心算法搜索。這種方法實(shí)現(xiàn)簡單,但是結(jié)果往往不是最優(yōu)解。因此,為了增加候選預(yù)測序列集合,提高模型的性能,我們采用了一種beam search的解碼方法。假設(shè)beam size大小為K,詞典維度為V,它的思想是每次從概率分布中選擇最高的K個值所對應(yīng)的標(biāo)簽作為預(yù)測結(jié)果。設(shè)第i時刻的最高的K個得分結(jié)果按照式(19)計算為:
在下面的實(shí)驗(yàn)章節(jié)中我們會選取不同的beam size進(jìn)行實(shí)驗(yàn),并分析選取不同的beam size后對系統(tǒng)的性能影響情況。
本文使用的實(shí)驗(yàn)數(shù)據(jù)集是通過網(wǎng)絡(luò)以及其他各種途徑搜集的問答和一些真實(shí)場景中的單輪短文本對話,以此為基礎(chǔ)人工標(biāo)注形成的。最終的語料包括14 000多個短文本問題/回答對,經(jīng)過人工標(biāo)注后得到的省略情況如表1所示。
表1 短文本語料中省略分布情況統(tǒng)計
從表1中可以看到,包含省略的實(shí)例在全部語料中的總占比為61.7%,無省略的實(shí)例在全部語料中總占比為38.3%,包含省略和無省略樣例的比例約為1.6∶1,正負(fù)樣例比例較為均衡。
表2給出了摘自標(biāo)注語料庫的部分示例,其中省略成份以“(*)”表示。
表2 中文短文本省略樣例
在語料的預(yù)處理工作中,為了方便模型訓(xùn)練,本文在一個batch中將長度不足最大長度的短句填充零元素標(biāo)識符“
關(guān)于實(shí)驗(yàn)中超參數(shù)的設(shè)置。實(shí)驗(yàn)中設(shè)置隱層神經(jīng)元個數(shù)為1 536個,編碼端神經(jīng)網(wǎng)絡(luò)層數(shù)為2層,batch size大小為50,學(xué)習(xí)速率為初始值0.001的指數(shù)衰減。每50步進(jìn)行一次衰減,衰減速率為0.98。每個神經(jīng)單元的dropout為0.2,訓(xùn)練集、驗(yàn)證集、測試集以8∶1∶1進(jìn)行分割,迭代次數(shù)為200次。
關(guān)于評價指標(biāo),由于在省略恢復(fù)任務(wù)中,沒有一個統(tǒng)一的評價標(biāo)準(zhǔn)。我們借鑒了閱讀理解SQuAD中完全匹配的方法,即預(yù)測結(jié)果必須和標(biāo)準(zhǔn)答案完全一致才算一個正確預(yù)測,并采用準(zhǔn)確率對模型性能進(jìn)行衡量。具體方法如式(20)所示。
其中,有省略預(yù)測正確是指模型補(bǔ)全后的實(shí)例和標(biāo)準(zhǔn)補(bǔ)全后的實(shí)例一致,無省略預(yù)測正確是指模型未補(bǔ)全的實(shí)例和標(biāo)準(zhǔn)未補(bǔ)全的實(shí)例一致,具體會在下一小節(jié)進(jìn)行詳細(xì)的解釋。
首先,為了研究不同beam size對模型實(shí)驗(yàn)結(jié)果的影響,本文選取了beam size從1到20并分別進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖4所示,橫坐標(biāo)表示beam size大小,縱坐標(biāo)表示準(zhǔn)確率。
從圖4中可以看出,在解碼層加入了beam search后系統(tǒng)性能有從0.451到0.550的大約十個百分點(diǎn)的明顯提升,這也證明了beam search確實(shí)可以增加模型預(yù)測結(jié)果集合,提高模型的性能。但是,從beam size為2開始,準(zhǔn)確率的提升就逐漸放緩。當(dāng)beam size到17時,準(zhǔn)確率幾乎沒有變化。這說明已經(jīng)達(dá)到模型的性能上限,繼續(xù)增加beam size只會增加模型訓(xùn)練時間。對于圖4中出現(xiàn)的準(zhǔn)確率抖動現(xiàn)象,一方面這是由于模型中可學(xué)習(xí)的變量參數(shù)都是隨機(jī)初始化的,不同的初始化參數(shù)通過梯度下降可能會得到不同的局部最優(yōu)值;另一方面為了節(jié)省模型訓(xùn)練時間,本文采用了一種神經(jīng)網(wǎng)絡(luò)訓(xùn)練中常用的方法early stop。即在模型訓(xùn)練時,同時觀察驗(yàn)證集的損失變化。當(dāng)驗(yàn)證集損失到達(dá)最小時,會提前結(jié)束訓(xùn)練。這也就會導(dǎo)致當(dāng)提前結(jié)束時,模型可能沒有得到充分學(xué)習(xí),從而帶來準(zhǔn)確率抖動的情況。
圖4 不同beam size對模型準(zhǔn)確率的影響
另外,本文除了對beam search進(jìn)行實(shí)驗(yàn),為了能夠客觀地反映本文中的省略恢復(fù)模型的性能,我們還將beam size設(shè)置為1。即采用簡單的貪心搜索策略,采用語料集上十折交叉驗(yàn)證的評測策略。十折交叉驗(yàn)證的結(jié)果分布如表3所示,準(zhǔn)確率如表4所示。
表3 十折交叉驗(yàn)證結(jié)果分布表
表4 十折交叉驗(yàn)證準(zhǔn)確率
表3中,有省略預(yù)測正確是指訓(xùn)練樣例中目標(biāo)端序列是存在省略現(xiàn)象的,且模型預(yù)測后的補(bǔ)全結(jié)果和目標(biāo)端完全一致,算一次正確的預(yù)測;無省略預(yù)測正確是指訓(xùn)練樣例中目標(biāo)端沒有省略現(xiàn)象,且模型的預(yù)測結(jié)果并沒有對源端序列進(jìn)行省略補(bǔ)全,與目標(biāo)端序列完全一致,算一次正確的預(yù)測;有省略沒有補(bǔ)是指訓(xùn)練樣例中目標(biāo)端序列存在省略,但模型的預(yù)測結(jié)果并沒有進(jìn)行補(bǔ)全操作,和目標(biāo)端結(jié)果不一致,算錯誤預(yù)測;有省略補(bǔ)錯是指訓(xùn)練樣例中目標(biāo)端序列是存在省略的,模型對源端序列進(jìn)行補(bǔ)全操作后與目標(biāo)端序列不一致,即補(bǔ)錯的情況,算錯誤預(yù)測;無省略預(yù)測錯誤是指目標(biāo)端序列不存在省略現(xiàn)象,而模型卻進(jìn)行了省略恢復(fù)操作,算錯誤預(yù)測。下面本文通過從表5到表9中分別用一個例子來對這五種類別進(jìn)行更直觀的解釋。
表5 有省略預(yù)測正確的樣例
表6 無省略預(yù)測正確的樣例
表7 有省略沒有補(bǔ)的樣例
表8 有省略補(bǔ)錯
表9 無省略預(yù)測錯誤
由表3可見,在十次實(shí)驗(yàn)結(jié)果中,有省略補(bǔ)錯的現(xiàn)象占有很高的比例。由表8可見,模型在預(yù)測時,沒有考慮句子的語義信息,故存在“病句”情況,這也在很大程度上制約了模型的性能。另外,從省略恢復(fù)結(jié)果中可以看出,省略補(bǔ)全的內(nèi)容大多以主語等語法結(jié)構(gòu)單元為主。這雖符合中文表達(dá)的特征,但考慮到省略恢復(fù)是為其他任務(wù)服務(wù)的,對于語義信息的補(bǔ)全可能會比語法結(jié)構(gòu)的補(bǔ)全更加重要。這些問題在后續(xù)工作中會重點(diǎn)考慮。
本文首次提出了一種基于序列到序列的中文短文本省略恢復(fù)模型。該模型在編碼層采用Bi-LSTM學(xué)習(xí)源端序列的抽象表征,在解碼層采用beam search算法進(jìn)行解碼,并引入注意力機(jī)制讓模型自動學(xué)習(xí)焦點(diǎn)信息。最后,在中文短文本問答和對話語料上的實(shí)驗(yàn)表明序列到序列的模型在處理中文短文本省略恢復(fù)問題上有較好的表現(xiàn)。
之后的工作會重點(diǎn)處理預(yù)測結(jié)果中出現(xiàn)“病句”的情況。一方面考慮在模型訓(xùn)練中增加規(guī)則限制;另一方面在beam size一定的情況下借助語言生成的相關(guān)策略通過后處理對答案進(jìn)行二次評估,選擇更符合要求的結(jié)果。