任 眾,侯宏旭,吉亞圖,武子玉,白天罡,雷 穎
(內(nèi)蒙古大學(xué) 計(jì)算機(jī)學(xué)院,內(nèi)蒙古 呼和浩特 010021)
蒙古語(yǔ)是中國(guó)少數(shù)民族蒙古族的語(yǔ)言,也是蒙古國(guó)的官方語(yǔ)言,所以蒙漢機(jī)器翻譯對(duì)于民族團(tuán)結(jié)以及中蒙交流都有著重要意義和價(jià)值。近年來(lái),統(tǒng)計(jì)機(jī)器翻譯[1]的發(fā)展進(jìn)入瓶頸期,深度學(xué)習(xí)[2]成為研究熱潮,神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯成為機(jī)器翻譯研究的重要方向。
蒙古語(yǔ)屬于黏著語(yǔ),其構(gòu)詞規(guī)則如圖1所示,一個(gè)蒙古語(yǔ)詞由一個(gè)詞根與多個(gè)詞綴組成。蒙漢機(jī)器翻譯存在雙語(yǔ)對(duì)齊語(yǔ)料不足、資源稀少等問(wèn)題。這使得數(shù)據(jù)稀疏問(wèn)題更加凸顯。因此本文想要通過(guò)對(duì)蒙漢雙語(yǔ)使用子字粒度的切分,來(lái)緩解數(shù)據(jù)稀疏問(wèn)題,以提升翻譯質(zhì)量。與此同時(shí),子字粒度切分縮小了雙語(yǔ)詞典的大小,降低了神經(jīng)網(wǎng)絡(luò)模型的計(jì)算復(fù)雜度,可以大大減少訓(xùn)練周期。
圖1 蒙古文詞匯構(gòu)成
本文使用CWMT2009[3]和CWMT2017蒙漢雙語(yǔ)語(yǔ)料,并在基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN)的蒙漢神經(jīng)機(jī)器翻譯系統(tǒng)上進(jìn)行了子字粒度切分的多方面對(duì)比實(shí)驗(yàn)。
在本文中,CNN系統(tǒng)采用Gehring等提出的架構(gòu)[8-9]的開(kāi)源CNN模型。該模型依然是由編碼器、解碼器和注意力機(jī)制三個(gè)部分組成,如圖2所示,其中編碼器和解碼器由多層卷積層組成,且每個(gè)卷積層之間加入線性門(mén)控單元(GLU)[10]和一個(gè)殘差連接[11]。該模型利用CNN卷積核獲取局部信息,并通過(guò)增加CNN卷積層數(shù)來(lái)獲取長(zhǎng)距離依賴信息,因此編碼器和解碼器均為多層的深層CNN,每層解碼器配備一個(gè)注意力機(jī)制。
在機(jī)器翻譯任務(wù)中,對(duì)語(yǔ)料的切分是語(yǔ)料預(yù)處理過(guò)程中非常重要的一步。句子所包含的特征,由多個(gè)局部特征共同組成。而在語(yǔ)料預(yù)處理階段,句子切分粒度越大,切分結(jié)果越能夠保存更完整的局部特征,但是加重了數(shù)據(jù)稀疏問(wèn)題;切分粒度越小,其包含局部特征越少,但是數(shù)據(jù)稀疏問(wèn)題會(huì)得到緩解。尤其在雙語(yǔ)資源相對(duì)匱乏的蒙漢機(jī)器翻譯任務(wù)中,切分粒度的把控尤為重要。
子字粒度切分是將句子切分成介于詞和字之間的粒度大小,這樣的做法可以在一定程度上保留局部特征,同時(shí)盡可能減小粒度,從而緩解數(shù)據(jù)稀疏問(wèn)題,提高翻譯效果,同時(shí)縮小詞典規(guī)模,減少訓(xùn)練周期。
Sennrich等人[12]在2016年提出了一種使用Byte Pair Encoding(BPE)編碼[13]來(lái)處理文本切分粒度的方法。
BPE算法的基本思路:首先將語(yǔ)料以最小單元(蒙古文是指蒙古文字母,漢文是指漢字)切分;然后統(tǒng)計(jì)語(yǔ)料中所有相鄰最小單元組合出現(xiàn)的頻數(shù);再找出頻數(shù)最大的組合;將最大組合合并后替換語(yǔ)料庫(kù)中原來(lái)組合;循環(huán)上面操作。
傳統(tǒng)的中文分詞法是利用一個(gè)第三方詞典切分句子,而B(niǎo)PE算法切分子字,是通過(guò)統(tǒng)計(jì)自身語(yǔ)料中詞頻,獲得自身的詞典,再根據(jù)詞典切分句子。相較于傳統(tǒng)分詞處理,首先切分使用的詞典來(lái)源于自身訓(xùn)練集,因此在對(duì)測(cè)試集的切分粒度也會(huì)與訓(xùn)練集保持一致,從而間接減少集外詞的數(shù)量;更重要的是,BPE允許出現(xiàn)多粒度切分,即詞頻高的詞會(huì)被切分成詞,詞頻低的詞則會(huì)被切分成字,這樣可以在保留一部分局部信息的前提下,縮小詞典大小,間接緩解了數(shù)據(jù)稀疏問(wèn)題。
BPE算法有兩種應(yīng)用方法:一是獨(dú)立BPE,即構(gòu)建兩個(gè)獨(dú)立詞典:一個(gè)源語(yǔ)言詞典,一個(gè)目標(biāo)語(yǔ)言詞典;二是聯(lián)合BPE,兩個(gè)語(yǔ)言放一塊,共同生成一個(gè)詞典。理論上后者效果好一點(diǎn),可以保證源語(yǔ)言和目標(biāo)語(yǔ)言分割的一致性。尤其表現(xiàn)在擁有共享字母表的兩種語(yǔ)言及同源詞和外來(lái)詞上。
蒙漢機(jī)器翻譯模型非常適合使用子字切分來(lái)提升翻譯效果。在子字切分時(shí),我們往往需要在目標(biāo)端語(yǔ)言中加入標(biāo)記符號(hào),用來(lái)還原詞,但是漢文中字、詞、短語(yǔ)的界限非常模糊,且最小單位字也能作為獨(dú)立的切分模塊,因此省去了標(biāo)記符號(hào),降低了噪聲;蒙古文是一種純粹的拼音文字[14],它是由蒙古文字母組成蒙古文詞,再組成蒙古文句子,因此子字粒度可以大大緩解數(shù)據(jù)稀疏,從而提升整體的翻譯效果。
如表1所示,因?yàn)槠涿晒盼淖帜阜N類相對(duì)較少,因此在兩種切分粒度下(操作數(shù)指相鄰最小單元組合合并次數(shù),可以間接影響切分粒度,操作數(shù)越大,粒度相對(duì)越大)與原文比較變化不明顯;漢文可以明顯看到傳統(tǒng)分詞與BPE切分子字結(jié)果不同。子字粒度切分使得高頻詞得以保留,低頻詞切分為更小粒度的蒙文字母或高頻字母組合,緩解了數(shù)據(jù)稀疏問(wèn)題。
表1 使用子字粒度切分蒙漢雙語(yǔ)對(duì)比
同樣,如表2所示,我們?cè)贑WMT2009提供的6萬(wàn)句對(duì)的蒙漢雙語(yǔ)語(yǔ)料和CWMT2017蒙漢評(píng)測(cè)提供的26萬(wàn)句對(duì)的雙語(yǔ)語(yǔ)料上分別統(tǒng)計(jì)了不同切分粒度的詞典大小。蒙古文切詞處理,漢文分別切字(*_char)和切詞(*_word)處理對(duì)比使用BPE算法進(jìn)行蒙漢子字切分(*_BPE)處理,可以明顯看出蒙漢兩端詞典大小均有明顯減小;同時(shí),當(dāng)我們使用較大訓(xùn)練語(yǔ)料時(shí),詞典規(guī)模也會(huì)變大,從而增加了計(jì)算量。而子字切分的方式可以大大縮小詞典規(guī)模,來(lái)緩解這個(gè)問(wèn)題。
表2 使用子字粒度切分蒙漢雙語(yǔ)詞典大小統(tǒng)計(jì)
本文在2.1節(jié)介紹了使用BPE算法實(shí)現(xiàn)子字粒度切分有兩種方式:獨(dú)立BPE和聯(lián)合BPE。我們?cè)贑WMT2009的蒙漢雙語(yǔ)對(duì)齊語(yǔ)料上分別進(jìn)行了兩種切分,分析在蒙漢神經(jīng)機(jī)器翻譯任務(wù)中哪種子字切分方式更適合。
圖3 CWMT2009不同操組數(shù)聯(lián)合詞典占比圖
如圖3所示,我們分別進(jìn)行了操作數(shù)為5 000、20 000和40 000的聯(lián)合BPE切分實(shí)驗(yàn)。理論上,聯(lián)合BPE可以盡可能地保持源語(yǔ)言和目標(biāo)語(yǔ)言分割的一致性。但是我們看到操作數(shù)不同的情況下,聯(lián)合詞典中蒙漢的占比差距較大。蒙漢占比不相近,使得蒙漢在切分子字粒度時(shí)粒度不一致。我們分析認(rèn)為這與聯(lián)合BPE的優(yōu)勢(shì)并不矛盾,詞典占比不均的原因主要是蒙漢語(yǔ)言差異大,蒙古文是典型的拼音文字,而漢文字、詞、短語(yǔ)沒(méi)有明確分割界限,且作為蒙古文最小切分單元的蒙古文字母的數(shù)量遠(yuǎn)遠(yuǎn)少于漢文字。經(jīng)統(tǒng)計(jì)我們得知,蒙古文單詞平均由5個(gè)蒙古文字母組成,而漢文中絕大多數(shù)是二字詞。在BPE計(jì)算共現(xiàn)頻數(shù)時(shí),蒙古文字母組合頻數(shù)大,會(huì)優(yōu)先組合蒙古文。因此隨著操作數(shù)的增加,蒙古文高頻組合結(jié)合完成后,越來(lái)越多的漢文字組合才被加入到詞典中,蒙漢占比也越來(lái)越趨近于相等。
我們將蒙漢占比較為平衡的40 000操作數(shù)的切分結(jié)果與原文進(jìn)行了對(duì)比,如表3所示。我們發(fā)現(xiàn)蒙古文中存在大量與原文一致的句子,而漢文中粒度卻參差不齊。因此,我們分析認(rèn)為使用聯(lián)合BPE進(jìn)行子字粒度切分,在蒙漢雙語(yǔ)語(yǔ)料上無(wú)法體現(xiàn)自身的優(yōu)勢(shì),而使用獨(dú)立BPE進(jìn)行子字粒度切分可以人為控制蒙漢雙語(yǔ)各自的切分粒度,達(dá)到最優(yōu)的切分結(jié)果,這樣子字粒度切分才會(huì)發(fā)揮出其應(yīng)有的效果。
表3 40 000操作數(shù)蒙漢子字切分結(jié)果
實(shí)驗(yàn)數(shù)據(jù)均基于CWMT2009的蒙漢雙語(yǔ)語(yǔ)料(6萬(wàn)句)和CWMT2017蒙漢評(píng)測(cè)提供的雙語(yǔ)語(yǔ)料(26萬(wàn)句)。漢文語(yǔ)料分詞處理采用中科院計(jì)算所開(kāi)發(fā)的ICTCLAS[15]中文分詞系統(tǒng)進(jìn)行切分,蒙古文和漢文均使用tokenizer[16]進(jìn)行詞語(yǔ)切分處理。BPE子字切分操作數(shù)均為最優(yōu)結(jié)果的經(jīng)驗(yàn)值。在本文中采用BLEU4[17]作為翻譯效果的評(píng)測(cè)指標(biāo)。
由于蒙漢機(jī)器翻譯雙語(yǔ)語(yǔ)料有限,詞典本身就較小,因此我們的實(shí)驗(yàn)不限制詞典大小。本文想要通過(guò)對(duì)比子字粒度切分處理后詞典大小變化,并結(jié)合最終翻譯模型的BLEU值的提升,來(lái)驗(yàn)證子字粒度可以通過(guò)緩解數(shù)據(jù)稀疏問(wèn)題來(lái)提高模型翻譯質(zhì)量。
本文使用CWMT2009的蒙漢雙語(yǔ)語(yǔ)料分別訓(xùn)練RNN和CNN兩個(gè)模型,且分別進(jìn)行了分詞和子字粒度切分等對(duì)比實(shí)驗(yàn),用來(lái)驗(yàn)證子字切分粒度的普適性,以及對(duì)模型的提升。其次,我們使用CWMT2017的語(yǔ)料訓(xùn)練RNN模型,與使用CWMT2009訓(xùn)練的RNN進(jìn)行對(duì)比,以驗(yàn)證子字粒度切分對(duì)數(shù)據(jù)稀疏的緩解和縮短訓(xùn)練周期的作用。
實(shí)驗(yàn)使用的RNN和CNN模型是此前調(diào)優(yōu)的結(jié)果,本文所有實(shí)驗(yàn)均使用以下參數(shù):
① RNN模型,使用的Google 開(kāi)源的seq2seq系統(tǒng)作為RNN系統(tǒng)。系統(tǒng)參數(shù)如下:編碼器和解碼器均為4層的雙向LSTM循環(huán)單元[18],隱藏層節(jié)點(diǎn)數(shù)512,batchsize 128,dropout 0.3。
② CNN模型,使用的是Facebook AI Research 開(kāi)源系統(tǒng)fairseq作為CNN翻譯系統(tǒng)。系統(tǒng)參數(shù)如下:編碼器不少于5層和解碼器不少于9層,解碼器的每一層均配備一個(gè)注意力機(jī)制,編碼器和解碼器的核寬度不小于3,詞向量維度500,隱層單元數(shù)量不少于500,batchsize 32,訓(xùn)練算法Nesterov’s accelerated gradient (NAG)[19]。
3.2.1 蒙古文子字粒度切分
由于BPE操作數(shù)是個(gè)經(jīng)驗(yàn)值,不同的語(yǔ)言種類、語(yǔ)料大小最優(yōu)操作數(shù)也不同。
本實(shí)驗(yàn)設(shè)置操作數(shù)為5 000、10 000、15 000、17 500和20 000,將蒙古文切分成子字粒度、漢文分詞,分別訓(xùn)練RNN模型,測(cè)試集BLEU值如圖4所示(橫坐標(biāo)為操作數(shù),縱坐標(biāo)為BLEU值)。最終得出該語(yǔ)料蒙古文的最優(yōu)操作數(shù)的經(jīng)驗(yàn)值為17 500。
如表4所示,通過(guò)原文與最優(yōu)切分結(jié)果的對(duì)比,本文發(fā)現(xiàn),蒙古文子字切分粒度還是比較大的,與分詞差別不大。蒙古文詞構(gòu)成通常是由詞干和多個(gè)詞綴構(gòu)成[20]。結(jié)合蒙古文形態(tài)分析,我們認(rèn)為子字粒度切分其實(shí)相當(dāng)于蒙古文詞綴的切分,而最優(yōu)的切分結(jié)果能夠使得切分的蒙古文子字片段既保留了較為完整的局部信息,又提高出現(xiàn)頻率,從而緩解數(shù)據(jù)稀疏問(wèn)題。
同理,經(jīng)過(guò)大量實(shí)驗(yàn),得到CWMT2017蒙古文獨(dú)立BPE的最優(yōu)操作數(shù)的經(jīng)驗(yàn)值為35 000左右。
3.2.2 漢文子字粒度切分
漢文與蒙古文差異較大,尤其是蒙古文有明確的分詞邊界,而漢文字、詞、短語(yǔ)界限模糊。因此我們想到兩種子字粒度切分方式,如圖5所示:一是漢文直接使用BPE算法切分子字;二是模擬蒙古文子字粒度切分方法,先進(jìn)行中文分詞處理,人為加入詞邊界,再使用BPE算法切分子字。
圖5 漢文子字切分方法
兩者相比,前者切分結(jié)果存在大于分詞的粒度,可能包含更多的局部特征,也可能破壞原本詞的局部特征。例如,“大學(xué) 生活”→“大學(xué)生活”或者“大學(xué)生”+“活”;后者切分結(jié)果的粒度一定小于分詞,不會(huì)破壞分詞前后信息。例如,“大學(xué) 生活”→“大學(xué)”+“生活”或者“大學(xué)”+“生”+“活”。
如圖6所示,在保持蒙古文獨(dú)立BPE操作數(shù)為最優(yōu)操作數(shù)不變的基礎(chǔ)上,漢文使用第一種子字切分方法,操作數(shù)設(shè)置為500、1 000、1 500、2 000、2 500和5 000,分別訓(xùn)練RNN模型。當(dāng)操作數(shù)為1 000時(shí),模型效果最佳,BLEU值達(dá)到32.83。同理,我們使用第二種方法,操作數(shù)分別設(shè)置為1 000、2 000、3 000、5 000、7 000和10 000,可以看到當(dāng)操作數(shù)為5 000時(shí)模型效果最佳,BLEU值達(dá)到34.16。
圖6 漢文兩種子字切分方法對(duì)比
通過(guò)對(duì)比實(shí)驗(yàn)可以明顯看出漢文先進(jìn)行中文分詞,再進(jìn)行子字粒度切分的效果更好。同理,我們得到CWMT2017漢文獨(dú)立BPE的最優(yōu)操作數(shù)的經(jīng)驗(yàn)值為15 000左右。
3.2.3 詞綴切分與BPE子字切分對(duì)比
根據(jù)蒙古文形態(tài)分析發(fā)現(xiàn),理論上對(duì)蒙古文切分后綴也可以減小粒度,緩解數(shù)據(jù)稀疏問(wèn)題,因此通過(guò)規(guī)則和字典對(duì)蒙古文進(jìn)行了詞綴分析,用來(lái)作為子字切分的對(duì)比實(shí)驗(yàn)。根據(jù)蒙古文構(gòu)詞規(guī)則,得知改變構(gòu)詞后綴一般會(huì)改變?cè)撛~的詞義和語(yǔ)義,而改變構(gòu)形后綴只會(huì)改變?cè)~性,因此我們通過(guò)蒙古文構(gòu)詞規(guī)則和后綴字典對(duì)構(gòu)形后綴和結(jié)尾后綴進(jìn)行切分。
如表5所示,從后綴切分與子字粒度切分實(shí)例對(duì)比可以發(fā)現(xiàn):子字粒度切分結(jié)果與兩種后綴切分結(jié)果相似。
表5 子字切分與詞綴切分實(shí)例對(duì)比
如表6所示,我們統(tǒng)計(jì)了CWMT2009語(yǔ)料上兩種后綴切分后詞典大小。可以看到,與原始語(yǔ)料相比,詞典大小明顯縮小,但是比子字粒度切分的詞典大。
表6 子字切分與詞綴切分詞典大小統(tǒng)計(jì)
如表7所示,因?yàn)樽幼至6惹蟹趾秃缶Y切分結(jié)果相近,因此在CWMT2009上的表現(xiàn)兩者也互有輸贏。我們分析認(rèn)為:兩者相比,后綴切分的優(yōu)勢(shì)在于切分準(zhǔn)確,不會(huì)破壞蒙古文詞本身。但是子字粒度切分優(yōu)勢(shì)在于它完全根據(jù)共現(xiàn)頻率來(lái)切分,不需要外部的規(guī)則和字典,且粒度可控,應(yīng)用更廣泛(漢文也可以使用)。
表7 CWMT2009上的表現(xiàn)對(duì)比
表8可以看出,同為RNN模型,無(wú)論小語(yǔ)料庫(kù)(6w)還是大語(yǔ)料庫(kù)(26萬(wàn)),漢文分詞均不如漢文分字的模型效果好,但是隨著語(yǔ)料庫(kù)的擴(kuò)大,兩種粒度的差距從3.68縮小到了0.39。我們結(jié)合表2認(rèn)為,漢文分詞效果較差的原因并不是較大粒度本身帶來(lái)的,而是大粒度切分會(huì)放大小語(yǔ)料庫(kù)數(shù)據(jù)稀疏問(wèn)題,致使翻譯結(jié)果不理想。語(yǔ)料庫(kù)的擴(kuò)大,直接緩解數(shù)據(jù)稀疏問(wèn)題,因此漢文分詞與分字效果差距并不明顯。
表8 RNN中不同語(yǔ)料大小與不同粒度結(jié)果對(duì)比
如表9所示,蒙漢雙語(yǔ)均使用子字粒度切分的RNN模型效果最好,BLEU值達(dá)到了34.16,相比于蒙漢均分詞和蒙古文分詞,漢文分字的模型分別提升了4.81和1.13。
表9 CWMT2009在RNN模型上的表現(xiàn)
由于語(yǔ)料較小,訓(xùn)練周期本身不長(zhǎng),因此子字粒度切分雖然使得RNN模型訓(xùn)練周期縮短,但效果并不顯著。其中蒙漢雙語(yǔ)均使用子字粒度切分的模型訓(xùn)練周期最短。
如表10所示,相同語(yǔ)料下,CNN模型對(duì)比效果與RNN模型相近,依然是蒙漢雙語(yǔ)均使用子字粒度切分的模型效果最好,BLEU值達(dá)到了35.28。因此子字粒度切分在不同模型中都能提高翻譯效果,且縮短訓(xùn)練周期,其普適性較高。
表10 CWMT2009在CNN模型上的表現(xiàn)
如表11所示,RNN模型在CWMT2017的26萬(wàn)語(yǔ)料下的表現(xiàn)。由于測(cè)試集使用的是日常用語(yǔ)領(lǐng)域的語(yǔ)料,而CWMT2017在日常用語(yǔ)的基礎(chǔ)上加入了大量政府文獻(xiàn)、法律等領(lǐng)域的語(yǔ)料,使得最終翻譯效果沒(méi)有CWMT2009上的理想。因此我們只能做同語(yǔ)料下不同處理方法之間的對(duì)比。
表11 CWMT2017在RNN模型上的表現(xiàn)
因此我們可以看到,蒙漢均使用子字粒度切分的模型翻譯效果提升依然顯著,且訓(xùn)練周期縮短更為明顯,縮短了三分之二。由此可見(jiàn)子字粒度切分隨著語(yǔ)料的擴(kuò)大,縮短訓(xùn)練周期的效果越來(lái)越顯著。
實(shí)驗(yàn)從同語(yǔ)料不同模型和同模型不同語(yǔ)料兩個(gè)角度進(jìn)行驗(yàn)證,使用子字粒度切分,將低頻詞切分成相對(duì)高頻的子字片段,緩解數(shù)據(jù)稀疏問(wèn)題,可以使得多種模型翻譯效果得到顯著提升,且通過(guò)縮小詞典大小,顯著縮短訓(xùn)練周期。
子字粒度切分技術(shù)在語(yǔ)料相對(duì)匱乏的前提下,主要是通過(guò)切分低頻詞,來(lái)緩解語(yǔ)料匱乏帶來(lái)的嚴(yán)重?cái)?shù)據(jù)稀疏問(wèn)題,從而提高蒙漢神經(jīng)機(jī)器翻譯的效果。詞典規(guī)模和網(wǎng)絡(luò)模型的訓(xùn)練周期隨著語(yǔ)料規(guī)模的增大而增加。我們通過(guò)限制詞典的大小來(lái)減少計(jì)算復(fù)雜度,但這會(huì)使得一部分原本在詞典中的低頻詞成為集外詞,影響翻譯質(zhì)量。子字粒度切分會(huì)將低頻詞切分成更小單元,這樣集外詞可以由粒度較小的子字單元拼接而成。因此子字粒度切分在大語(yǔ)料限制詞典大小的前提條件下,可以充分體現(xiàn)其減少集外詞的能力,來(lái)提高模型的翻譯效果。
因此,在蒙漢神經(jīng)機(jī)器翻譯任務(wù)中,子字粒度切分技術(shù)無(wú)論在現(xiàn)在還是未來(lái)都是一個(gè)很有應(yīng)用價(jià)值的技術(shù)。