蘇依拉,高 芬,仁慶道爾吉
(內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,內(nèi)蒙古 呼和浩特 010080)
自2013年以來(lái),得益于深度學(xué)習(xí)方面取得的進(jìn)展以及一些資源豐富的大規(guī)模平行語(yǔ)料庫(kù)的可用性,神經(jīng)機(jī)器翻譯(neural machine translate,NMT)模型獲得了迅速發(fā)展[1],與統(tǒng)計(jì)機(jī)器翻譯(statistical machine translation, SMT)模型相比,其翻譯質(zhì)量明顯提升。機(jī)器翻譯是解決不同民族和國(guó)家之間信息交流所面臨的“語(yǔ)言屏障”問(wèn)題的關(guān)鍵技術(shù),在加強(qiáng)文化交流、促進(jìn)民族團(tuán)結(jié)以及推動(dòng)對(duì)外貿(mào)易等方面都意義重大[2]。蒙漢機(jī)器翻譯對(duì)于蒙漢兩種文化的價(jià)值觀相互滲透,凝聚民族的核心文化,促進(jìn)良好民族關(guān)系的建立具有重要意義。然而由于內(nèi)蒙古地區(qū)經(jīng)濟(jì)發(fā)展相對(duì)緩慢,蒙漢平行語(yǔ)料收集困難,利用現(xiàn)有的神經(jīng)網(wǎng)絡(luò)方法會(huì)放大數(shù)據(jù)稀疏以及訓(xùn)練過(guò)擬合等問(wèn)題,導(dǎo)致翻譯質(zhì)量不高。并且在翻譯模型中,編碼器和解碼器的計(jì)算復(fù)雜度比較高,由于計(jì)算量和GPU內(nèi)存的限制,神經(jīng)機(jī)器翻譯模型需要事先確定一個(gè)規(guī)模受到限制的常用詞詞表,神經(jīng)機(jī)器翻譯系統(tǒng)往往將詞匯表限制為高頻詞,并將其他所有低頻詞視為未登錄詞(out-of-vocabulary, OOV)。中文的字是最小的音義結(jié)合體,但是在現(xiàn)代漢語(yǔ)中,詞才是中文的基本表達(dá)單位,并且中文以雙字詞或者多字詞為主,而大部分的詞都是由多個(gè)字組合而成。中文分詞的統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法優(yōu)于傳統(tǒng)的規(guī)則方法,尤其是在未登錄詞上具有無(wú)可比擬的優(yōu)勢(shì)。主流的深度學(xué)習(xí)算法也大多使用詞或子詞作為基礎(chǔ)的語(yǔ)義單元,在詞或子詞層面學(xué)習(xí)嵌入表征。
雖然詞粒度級(jí)別的模型在很多任務(wù)上得到普遍應(yīng)用,但是詞粒度級(jí)別的輸入單元有大量顯著不足: (1)詞粒度數(shù)據(jù)會(huì)放大稀疏問(wèn)題,容易導(dǎo)致過(guò)擬合,并且過(guò)多的未登錄詞會(huì)阻礙模型的學(xué)習(xí)能力。(2)分詞會(huì)引入噪聲,并且詞的多義性會(huì)影響分詞的方法,同時(shí)人對(duì)詞的顆粒度的認(rèn)識(shí)都會(huì)有差別,故分詞方法的不同導(dǎo)致分詞效果不同,錯(cuò)誤的分詞將會(huì)影響后續(xù)翻譯模型效果;(3)直觀上看,詞攜帶的語(yǔ)義信息比字更豐富,但是對(duì)于神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯而言,詞粒度模型是否優(yōu)于字粒度模型還不清楚。
相比于詞粒度,字粒度具有以下優(yōu)點(diǎn): (1)可以縮小詞匯表,以詞為單位時(shí),詞匯表太大,而以字為單位時(shí),詞匯表(即字表)的大小適中。詞匯表越大,深度學(xué)習(xí)所需要的參數(shù)就越多,訓(xùn)練起來(lái)就越困難。(2)以字粒度為單元,不依賴于分詞工具的正確性。(3)可以讓模型集中在不同字的交互方面,例如,以“可能””這個(gè)詞為例,“可”可能有“可愛(ài)”“可能”“可以”等多種意思。“能”也有可能有“能力”“能夠”等多種意思。但是因?yàn)樯疃葘W(xué)習(xí)模型善于處理遠(yuǎn)距離依賴關(guān)系,模型在后面的層是會(huì)去學(xué)習(xí)“可”和“能”組合起來(lái)的意思。
文獻(xiàn)[3-4]證明,中文輸入粒度是混合字與詞粒度的子詞粒度的效果比單純的詞粒度的效果更好。中文分詞效果差的原因是在較小語(yǔ)料庫(kù)的情況下,大粒度的切分會(huì)放大數(shù)據(jù)稀疏問(wèn)題,使得翻譯效果不太好,子詞粒度切分后,由分詞后的低頻詞切換成高頻詞,從一定程度上緩解數(shù)據(jù)稀疏問(wèn)題,提高了翻譯質(zhì)量。故本文基于LSTM和Transformer為基本的蒙漢翻譯模型,以內(nèi)蒙古工業(yè)大學(xué)構(gòu)建的126萬(wàn)蒙漢平行語(yǔ)料庫(kù)和3萬(wàn)蒙漢專(zhuān)有名詞為實(shí)驗(yàn)數(shù)據(jù),對(duì)中文輸入粒度進(jìn)行子詞粒度和字粒度切分的對(duì)比實(shí)驗(yàn)。
本文的內(nèi)容安排如下: 第1節(jié)為神經(jīng)機(jī)器翻譯模型概述,主要介紹了目前比較熱門(mén)的神經(jīng)機(jī)器翻譯技術(shù)和方法。第2節(jié)為相關(guān)技術(shù)介紹,主要介紹了中文的詞、子詞、字粒度。第3節(jié)為實(shí)驗(yàn)部分,主要包括語(yǔ)料庫(kù)的劃分、實(shí)驗(yàn)設(shè)置和實(shí)驗(yàn)結(jié)果。第4節(jié)為結(jié)論部分,對(duì)文中所做的工作進(jìn)行了總結(jié)和展望。
NMT相比于傳統(tǒng)的SMT而言,是一個(gè)能夠通過(guò)訓(xùn)練把一個(gè)序列映射到另一個(gè)序列的神經(jīng)網(wǎng)絡(luò),輸出的可以是長(zhǎng)度變化了的序列,這對(duì)實(shí)現(xiàn)自動(dòng)翻譯、人機(jī)對(duì)話以及文字概括等有很大好處。NMT其實(shí)就是一個(gè)編碼器—解碼器結(jié)構(gòu),編碼器把源語(yǔ)言序列進(jìn)行編碼,并提取源語(yǔ)言中的有用信息,再通過(guò)解碼器將這些信息轉(zhuǎn)換至目標(biāo)語(yǔ)言中來(lái),以實(shí)現(xiàn)對(duì)語(yǔ)言的翻譯。
長(zhǎng)短期記憶網(wǎng)絡(luò)[5](long short term memory, LSTM)是一種特殊的RNN。LSTM能夠避免長(zhǎng)期依賴性問(wèn)題,其實(shí)現(xiàn)建模的公式如式(1)~式(4)所示。
其中,σ是元素的Sigmoid函數(shù)。對(duì)于給定的一個(gè)包含n個(gè)單詞的句子(x1,x2,...,xn),每個(gè)單詞表示為d維的詞向量。
本文的實(shí)驗(yàn)使用了哈佛大學(xué)開(kāi)源的神經(jīng)機(jī)器翻譯系統(tǒng)OpenNMT,這是基于注意力機(jī)制的LSTM翻譯模型。注意力機(jī)制[6]的結(jié)構(gòu)原理如圖1所示。
圖1 注意力機(jī)制
Transformer[7]是完全基于注意力機(jī)制的Seq2Seq[8]模型,采用多頭自注意力[9]來(lái)構(gòu)造編碼器和解碼器。它的設(shè)計(jì)思想是把序列中的所有單詞并行處理,同時(shí)借助自注意力機(jī)制將上下文與較遠(yuǎn)的單詞結(jié)合起來(lái)。在每個(gè)步驟中,句子中的每一個(gè)詞的信息都可以借助自注意力機(jī)制與句子中的所有其他的詞進(jìn)行溝通。圖2為T(mén)ransformer結(jié)構(gòu)圖。
圖2 Transformer結(jié)構(gòu)
傳統(tǒng)蒙古文雖然屬于阿爾泰語(yǔ)系蒙古語(yǔ)族,但卻與印歐語(yǔ)系中的大部分語(yǔ)言一樣,屬于一種拼音文字,只是它的構(gòu)成基礎(chǔ)是回鶻字母[10]。所以和英語(yǔ)一樣,蒙古文句子由字、空格以及標(biāo)點(diǎn)符號(hào)構(gòu)成,句子本身就已經(jīng)算是具有詞級(jí)粒度的形式。蒙古語(yǔ)屬于黏著語(yǔ),黏著語(yǔ)的一個(gè)特點(diǎn)是通過(guò)在詞根的前、中、后位置綴接其他構(gòu)詞成分作為派生新詞的手段,因此蒙古文構(gòu)詞及其形態(tài)變換非常豐富,導(dǎo)致集外詞和未登錄詞現(xiàn)象頻發(fā)。文獻(xiàn)[3-4]證明,蒙古文進(jìn)行子詞粒度的切分能夠減少集外詞和未登錄詞現(xiàn)象, 故本文蒙古文的輸入粒度是子詞。蒙古文的具體構(gòu)詞規(guī)則如圖3所示。
圖3 蒙古文構(gòu)詞規(guī)則
2.2.1 詞級(jí)粒度
漢語(yǔ)屬于漢藏語(yǔ)系,每句話只由單個(gè)的字和標(biāo)點(diǎn)符號(hào)構(gòu)成。漢語(yǔ)分詞是將連續(xù)的中文字符序列按照某種規(guī)則分割成詞的序列過(guò)程[12]。當(dāng)然,語(yǔ)料的切分也會(huì)帶來(lái)相應(yīng)的一些問(wèn)題,比如會(huì)出現(xiàn)歧義詞現(xiàn)象和破壞語(yǔ)料整體的語(yǔ)義關(guān)系等。
本文中文分詞使用的分詞工具是雙向LSTM和CRF(Bi-LSTM-CF)模型[13]。CRF[14](conditional random fields)中文名稱是條件隨機(jī)場(chǎng),其主要作用是彌補(bǔ)最大熵馬爾科夫模型(maximum entropy markov model,MEMM)分詞方法的不足,也就是為了緩解 MEMM 中的標(biāo)記偏置問(wèn)題。CRF是一種判別式模型,CRF通過(guò)定義條件概率P(Y|X)來(lái)描述模型。
融合雙向LSTM和CRF(Bi-LSTM-CRF)模型分詞算法結(jié)構(gòu)如圖4所示。圖4中,輸入層為詞嵌入表示層,經(jīng)過(guò)一個(gè)雙向的LSTM網(wǎng)絡(luò)編碼,輸出層是一個(gè)CRF層,經(jīng)過(guò)LSTM網(wǎng)絡(luò)輸出的實(shí)際上是當(dāng)前位置對(duì)于各詞性的得分, CRF是對(duì)詞性得分加上前一位置的詞性概率轉(zhuǎn)移的約束,其優(yōu)點(diǎn)在于引入了一些語(yǔ)法規(guī)則的先驗(yàn)信息。
圖4 融合雙向LSTM和CRF模型的網(wǎng)絡(luò)結(jié)構(gòu)圖
2.2.2 子詞級(jí)粒度
子詞級(jí)粒度切分指的是將語(yǔ)料切分為比詞級(jí)粒度更小的單元。把罕見(jiàn)詞拆分為子詞單元的組合,子詞單元的拆分策略,是借鑒了一種數(shù)據(jù)壓縮算法BPE,其基本原理是: 首先將語(yǔ)料以最細(xì)粒度為單元進(jìn)行分切,構(gòu)造一個(gè)初始化子詞表,接著統(tǒng)計(jì)出語(yǔ)料中所有單元之間組合出現(xiàn)的次數(shù),最后將統(tǒng)計(jì)到的次數(shù)按從大到小的順序排列,選擇出現(xiàn)次數(shù)最多的組合替換初始子詞表中的單個(gè)單元,在這個(gè)過(guò)程中最重要的是系統(tǒng)需要自動(dòng)學(xué)習(xí)一個(gè)詞典,從而才能依據(jù)學(xué)習(xí)到的詞典對(duì)語(yǔ)料進(jìn)行切分。經(jīng)過(guò)子詞切分后,即便是訓(xùn)練語(yǔ)料庫(kù)里沒(méi)有見(jiàn)過(guò)的新詞,也可以通過(guò)拼接子詞來(lái)生成翻譯。子詞切分可以有效地緩解神經(jīng)機(jī)器翻譯中的OOV和罕見(jiàn)詞翻譯。
2.2.3 字級(jí)粒度
將中文進(jìn)行字粒度切分,分字使用自己編寫(xiě)的腳本文件,通過(guò)將原語(yǔ)料讀入之后,為每個(gè)字之間加入空格,然后輸出到新的文本保存即可。
本文實(shí)驗(yàn)數(shù)據(jù)來(lái)源于內(nèi)蒙古工業(yè)大學(xué)構(gòu)建的126萬(wàn)蒙漢平行語(yǔ)料庫(kù)和3萬(wàn)蒙漢專(zhuān)有名詞。3萬(wàn)的蒙漢名詞庫(kù)包含地名、人名、農(nóng)業(yè)名詞、醫(yī)學(xué)名詞和物理名詞等。126萬(wàn)蒙漢平行語(yǔ)料包括政府新聞、法律公文、日常對(duì)話、日常用語(yǔ)、網(wǎng)絡(luò)對(duì)話與聊天等。蒙漢平行語(yǔ)料庫(kù)數(shù)據(jù)集的劃分如表1所示。
表1 實(shí)驗(yàn)數(shù)據(jù)集劃分
對(duì)蒙漢平行語(yǔ)料庫(kù)中的蒙文進(jìn)行子詞粒度切分后,統(tǒng)計(jì)出詞表,如表2所示。
表2 蒙古文詞表統(tǒng)計(jì)
從表2可以看出,語(yǔ)料庫(kù)里蒙古文總共有14 946 860個(gè),只出現(xiàn)過(guò)一次的詞有323 508個(gè)。經(jīng)過(guò)子詞粒度切分操作后,蒙古文總共有17 128 867個(gè)詞,只出現(xiàn)過(guò)一次的詞有19 865個(gè)。只出現(xiàn)一次的比率從2.2%下降到0.1%,有效緩解了數(shù)據(jù)稀疏。
對(duì)126萬(wàn)蒙漢平行語(yǔ)料庫(kù)中的中文分別進(jìn)行詞粒度、子詞粒度和字粒度切分后,統(tǒng)計(jì)出詞表如表3所示。
表3 中文詞表統(tǒng)計(jì)
Zipf定律表明,大部分中文詞的出現(xiàn)頻率都很小,并且在數(shù)據(jù)集中的占比十分有限,這導(dǎo)致模型不能充分學(xué)得數(shù)據(jù)中的語(yǔ)法、語(yǔ)義知識(shí)。如表3所示,經(jīng)過(guò)雙向LSTM和CRF(Bi-LSTM-CR)模型分詞后,數(shù)據(jù)集中的中文詞總共有11 891 530個(gè),其中有320 860個(gè)詞僅出現(xiàn)了一次,占數(shù)據(jù)集總詞的2.7%。這表明,詞粒度級(jí)別的數(shù)據(jù)放大了數(shù)據(jù)稀疏,比較容易導(dǎo)致過(guò)擬合問(wèn)題。子詞切分粒度下,中文詞總共有14 180 095個(gè),并且有24 241個(gè)詞只出現(xiàn)了1次,比率為0.2%,說(shuō)明經(jīng)過(guò)子詞粒度切分后,減少了數(shù)據(jù)稀疏。字粒度模型下,中文詞(即字)總共有21 808 187個(gè),只出現(xiàn)了一次的詞僅有7 142個(gè),占比率0.03%。經(jīng)過(guò)字粒度切分后,只出現(xiàn)過(guò)一次詞的比率從詞粒度的2.7%縮小到0.03%,極大減少了低頻詞。
基于Transformer的蒙漢翻譯模型本文選用清華大學(xué)自然語(yǔ)言處理小組開(kāi)發(fā)的機(jī)器翻譯庫(kù)THUMT。使用一臺(tái)搭載NVIDIA Tesla P100 GPU,RAM 16GB;基于LSTM的蒙漢翻譯模型本文選用開(kāi)源庫(kù)OpenNMT,使用一臺(tái)搭載NVIDIA 1070 Ti GPU,RAM 8GB。實(shí)驗(yàn)環(huán)境為Ubuntu 16.04, Linux系統(tǒng),語(yǔ)言為Python 2.7.0,TensorFlow 版本為1.6.0,Anaconda 3-5.2.0。用multi-bleu.per腳本評(píng)測(cè)翻譯性能BLUE值。
LSTMLSTM神經(jīng)網(wǎng)絡(luò)的編碼器和解碼器的隱藏層數(shù)設(shè)置為4層,詞向量維度設(shè)置為1 000,解碼器中全局注意力機(jī)制中輸入特征設(shè)置為500,輸出特征設(shè)置為500,激活函數(shù)選擇tanh()。Torch 0.4.0,TorchText 0.2.3。dropout設(shè)置為0.3,train_steps設(shè)置為200 000,學(xué)習(xí)率初始值設(shè)置為0.1,學(xué)習(xí)率衰減速率設(shè)置為1。
TransformerTransformer的神經(jīng)網(wǎng)絡(luò)層數(shù)設(shè)置為6層,多頭注意力機(jī)制設(shè)置為8頭,激活函數(shù)使用GELU,優(yōu)化函數(shù)使用Adam優(yōu)化算法,學(xué)習(xí)率初始值設(shè)置為0.1,一階矩估計(jì)的指數(shù)衰減率設(shè)置為0.9,二階矩估計(jì)的指數(shù)衰減率設(shè)置為0.98,train_steps設(shè)置為200 000,batch_size設(shè)置為4 096。
如圖5、圖6所示,本文分別統(tǒng)計(jì)出了基于LSTM神經(jīng)網(wǎng)絡(luò)蒙漢機(jī)器翻譯模型和基于Transformer神經(jīng)網(wǎng)絡(luò)蒙漢機(jī)器翻譯模型在200 000 train_steps上對(duì)蒙文進(jìn)行子詞粒度切分,中文分別進(jìn)行子詞和字粒度切分的測(cè)試集和驗(yàn)證集的BLEU值以及其變化趨勢(shì)。
表4和表5分別是基于LSTM翻譯系統(tǒng)和Transformer翻譯模型, 對(duì)蒙文進(jìn)行子詞粒度切分,中文分別進(jìn)行子詞和字粒度切分的測(cè)試集的BLEU值和ACC值。
圖5 基于LSTM翻譯模型測(cè)試集的BLEU值變化趨勢(shì)
圖6 基于Transformer翻譯模型驗(yàn)證集的BLEU值變化趨勢(shì)
表4 基于LSTM的翻譯模型的BLEU值和ACC值
表5 基于Transformer的翻譯模型的BLEU值和ACC值
從表4可以看出,基于LSTM翻譯模型,對(duì)蒙文進(jìn)行子詞粒度切分,對(duì)中文進(jìn)行子詞粒度切分后,BLEU值達(dá)到了25.25,準(zhǔn)確率ACC達(dá)到了58.5;對(duì)中文進(jìn)行字粒度切分后,BLEU值達(dá)到43.58,準(zhǔn)確率ACC達(dá)到了72.7。基于Transformer翻譯模型中,中文子詞粒度翻譯模型的BLEU值為44.14,中文字粒度翻譯模型的BLEU值為57.90,相對(duì)于子詞粒度提高了13.76個(gè)BLEU值,準(zhǔn)確率大約提高了10個(gè)值。
圖5、圖6、表4和表5說(shuō)明基于字粒度的模型優(yōu)于混合字和詞的子詞模型,這表明了基于字粒度的模型已經(jīng)編碼了語(yǔ)言建模任務(wù)所必要的語(yǔ)言信息,另外加入詞反而會(huì)損害其翻譯表現(xiàn)。在蒙漢翻譯中,解碼端的UNK對(duì)于詞影響更大。字級(jí)別的模型在驗(yàn)證集和測(cè)試集上都顯著優(yōu)于混合詞級(jí)別和字級(jí)別的子詞模型。字粒度的模型能集中在不同字的交互方面,更能捕捉單元之間的語(yǔ)義聯(lián)系,提高翻譯質(zhì)量。
在蒙漢機(jī)器翻譯中,翻譯單元的大小直接影響著翻譯的性能,而翻譯單元的大小又是通過(guò)語(yǔ)料的切分粒度而體現(xiàn)的,所以本文主要介紹了對(duì)中文語(yǔ)料切分的兩種方式: 字切分粒度和混合字與詞的子詞切分粒度。對(duì)于每一種方法,都通過(guò)原理概述和實(shí)驗(yàn)來(lái)進(jìn)行說(shuō)明,最后對(duì)各方法的實(shí)驗(yàn)結(jié)果進(jìn)行了對(duì)比分析。結(jié)果表明在蒙漢機(jī)器翻譯中,對(duì)中文進(jìn)行字級(jí)別粒度切分要優(yōu)于混合詞和字的子詞粒度切分。本文的結(jié)論與Meng Y[15]等人的結(jié)論也一致。但是字粒度切分也存在問(wèn)題,一個(gè)很關(guān)鍵的問(wèn)題就是一字多義,而詞在一定程度上減輕了這個(gè)問(wèn)題,這也是在統(tǒng)計(jì)時(shí)代分詞存在的必要性。而最新超火的預(yù)訓(xùn)練語(yǔ)言模型bert就完全舍棄了分詞的過(guò)程,而是采用字粒度劃分。如果一字多義的問(wèn)題能夠通過(guò)預(yù)訓(xùn)練語(yǔ)言模型來(lái)解決,下一步擬將最新的預(yù)訓(xùn)練模型應(yīng)用于蒙漢翻譯。本文對(duì)中文劃分粒度的研究為后續(xù)的蒙漢機(jī)器翻譯的研究做了很好的理論鋪墊,也為后續(xù)的實(shí)驗(yàn)打下了堅(jiān)實(shí)基礎(chǔ),是非常重要的一個(gè)環(huán)節(jié)。