蘇依拉 孫曉騫 巴圖其其格 仁慶道爾吉
(內蒙古工業大學信息工程學院 內蒙古 呼和浩特 010080)
機器翻譯并不是一個年輕的研究方向,自1949年,Warren Weaver提出使用計算機來解決機器翻譯的任務開始,機器翻譯就開始在不同的范例下得到了一定的研究[1]。1954年在美國喬治敦大學用IBM計算機進行的機器翻譯實驗取得了理想的效果。但是1964年,全世界的機器翻譯被ALPAC報告打入了低谷[2]。1970年,隨著Chomsky語言學的興起以及人工智能的不斷發展,人們認為實現機器翻譯必須對互譯的語言有一定的理解,在這種情況下,基于規則的方法逐漸發展起來了[3-4]。1980年,基于實例和基于統計的方法被提出,而從1999年開始,基于統計的機器翻譯方法取得了突破性的進展,但隨后由于模型的復雜度不斷增加,造成了翻譯效果得不到明顯提高等問題[5-8]。
基于Seq2Seq的神經機器翻譯(Neural Machine Translation,NMT)框架由編碼器和解碼器組成,編碼器讀取輸入序列并輸出單個矢量,解碼器讀取該矢量以產生輸出序列[9]。自2013年以來,該框架獲得了迅速的發展,相對于統計機器翻譯而言在翻譯質量上獲得了顯著的提升[10-12]。然而,基于Seq2Seq的神經機器翻譯系統的訓練通常需要上百萬句的平行語料庫,并且人工標注代價十分昂貴,因此規模通常是有限的,這可能會限制相關的應用和研究[13]。世界上除了少數像英文和中文等資源豐富的語言才有較好的平行語料庫外,大多數語種都屬于資源稀缺語種,語料庫比較匱乏。西里爾蒙漢平行語料庫就存在嚴重匱乏的問題。
針對上述問題,Ren等[14]提出在數據稀缺語種上使用基于三角架構的方法,其主要思想是,加入第三種語言與目標語言構成三角架構,而所謂的第三種語言必須是數據集比較豐富的大語種。該方法雖然能夠有效緩解數據稀疏問題造成的翻譯質量不高的問題,但是尋找第三種語言極其的關鍵,像西里爾蒙古語這種資源嚴重匱乏的語種,英蒙平行語料庫的構建也相當困難,因此所述的第三種語言的尋找也是一個難題。近年來,遷移學習受到了廣泛的關注,Zoph等[15]將遷移學習引入低資源語言的神經機器學習中,其思路是,把資源比較豐富的語言訓練的翻譯模型的參數遷移到資源相對缺乏語言翻譯模型的訓練過程中,該方法在一定程度上緩解了平行語料庫不足的問題。但是這種方法的前提是,需要訓練出資源豐富語種之間的翻譯模型,無形之中加大了研究的困難。
西里爾蒙古語和漢語之間的翻譯相關研究主要集中在統計機器翻譯中,研究比較滯后,因此本文將對偶學習應用在西里爾蒙漢機器翻譯中。
在機器翻譯中為了節省計算資源和降低計算復雜度,通常將詞典設置得比較小,這將會導致未登錄詞的產生,再加上西里爾蒙古語屬于黏著語,詞干和詞綴的組合方式較多,導致了西里爾蒙漢機器翻譯中嚴重的未登錄詞現象[16-18]。2016年Sennrich等[19]提出了使用BPE技術切分詞語的方法,近兩年該方法得到了迅速發展,并且在機器翻譯中有效地緩解了因未登錄詞導致的譯文質量不高的問題。
因此,本文首先通過BPE技術對西里爾蒙古語和漢語進行預處理,然后通過KenLM框架預訓練語言模型,使用Nematus框架預訓練翻譯模型,最后利用隨機梯度下降算法進行對偶學習的西里爾蒙漢機器翻譯模型的訓練以提高譯文的質量。將端到端的神經機器翻譯作為基線系統,利用BLEU值作為譯文的評價指標。
端到端的神經機器翻譯框架已經成為神經機器翻譯中非常經典的框架,其包括編碼器和解碼器,所以也叫作編碼器解碼器框架(Encoder-Decoder),其結構如圖1所示。

圖1 編碼器解碼器架構圖
該模型的基本思想是:當給定一個源語言句子時,編碼器會將其編碼為維數固定的向量,解碼器根據此向量將其轉化為目標語言句子。其中,編碼器和解碼器都可以使用循環神經網絡(Recurrent Neural Networks,RNN)來實現,但是通常使用的是長短期記憶(Long Short Term Memory,LSTM)網絡。LSTM網絡也是循環神經網絡的一種。因為RNN容易出現梯度消失的現象,而LSTM可以有效地避免這個問題。
(1) 編碼器。編碼器中的LSTM網絡將輸入的源語言句子x=(x1,x2,…,xI)進行編碼,用在西里爾蒙古語和漢語的翻譯中就是將西里爾蒙古語句子進行編碼,并計算出隱層狀態(h1,h2,…,hI)。在計算隱層狀態時,LSTM的輸入門、遺忘門和輸出門,分別用:ii、fi和Oj表示,其結構如圖2所示。

圖2 LSTM隱藏層結構圖
首先通過遺忘門決定什么信息可以通過單元狀態,然后由輸入門決定需要更新的信息,最后由輸出門決定模型的輸出。隱藏層狀態hi的計算如下所示:
(1)
式中:sigmod和tanh為非線性激活函數,W表示參數矩陣,b表示偏置,xi表示i時刻輸入的句子,hi-1表示i-1時刻的隱藏層狀態。
隱藏層狀態是整個句子的壓縮表示,包含了整個句子的語義信息,此時,編碼器的編碼過程結束。
(2) 解碼器。解碼器同樣使用LSTM網絡來實現。在給定源語言句子x和目標語言(y1,y2,…,yi-1)的條件下,解碼器根據隱藏狀態來估計當前的目標詞yi是由哪個源語言詞產生,即挑選出與目標詞最為匹配的源語言詞。具體地,通過比較每個源語言詞可能產生該目標詞的概率,然后挑出概率最大的,計算概率的公式如式(2)所示。同樣的方法依次生成目標語言中的每一個字。
p(yi|y1,y2,…,yi-1,X)=g(yi-1,si,ci)
(2)
si=f(si-1,yi,ci)
(3)
式中:上下文向量ci依賴編碼器編碼所得到的隱層狀態(h1,h2,…,hI),通過每個隱層狀態的加權平均得到上下文向量ci,計算過程如下所示:
(4)
hi到ci的權重aij的計算式為:
(5)
eij的計算式為:
eij=a(si-1,hj)
(6)
分詞是將句子以單詞或者詞根切分開并通過空格隔開的過程,是進行自然語言處理任務首要且必不可少的操作。比較流行的分詞方法有基于詞典的分詞和基于統計的分詞方法。但這兩種分詞方法并不是最好的,各有各的優缺點?;谠~典的分詞方法由于詞典大小的限制,很難做到覆蓋所有的詞,所以在分詞時通常會產生歧義。比如:“夏洛特煩惱”,這個句子可以分成“夏洛特/煩惱”,也可以分成“夏洛/特煩惱”,顯然這兩個句子的意思大體一樣,但是由于分詞的原因會產生細微的差別。如果詞典里有“夏洛特”這個名詞的話,就會切分得比較好,反而如果詞典里沒有這個名詞的話,切分后的句子就會和原來的句子產生一定的差異。統計的方法容易帶來最少切分問題。
(1) Jieba分詞。Jieba分詞結合了前面兩種分詞方法,首先對前綴詞進行掃面,前綴詞是指詞典中的詞按照前綴包含的順序排列,例如:詞典中有“北”這個詞,后面以“北”開頭的像“北京”、“北京市”等詞就都會出現,形成一種層級包含的結構。假如將詞看成節點,詞與詞之間的分詞符看作了邊,那分詞方案就會對應著從第一個字到最后一個字的一條分詞的路徑。所以,基于前綴的分詞可以快速構建包含全部有可能分詞結果的有向無環圖,而且這個圖中包含多條分詞的路徑。有向指的是全部的路徑都始于第一個字并且止于最后一個字,無環指的是節點之間不構成閉環。標注了的語料,可以使用動態規劃的方法找出最大概率的路徑并將其作為最終的分詞結果。
(2) BPE技術。BPE技術是2016年Sennrich等首次提出的對句子進行不同粒度切分的方法,該方法的提出是為了有效緩解機器翻譯過程中的未登錄詞現象。在訓練機器翻譯模型時,為了節省資源經常將詞典設置得比較小且詞典一般都不是來自自身的訓練集,這樣就導致了未登錄詞大量出現。
而BPE技術會首先將需要預處理的語料以最小的單元切分開,針對不同的語言,最小的單元也不同,對于西里爾蒙古語而言最小的單元就是西里爾蒙古文字母,對于漢語而言最小單元就是一個漢字。然后會對語料中所有相鄰的最小單元組合出現的次數進行統計并且排序,找出出現頻率最高的組合,并將這些組合加入到詞典中同時刪除掉詞典中頻率最低的詞使詞典的大小保持不變。循環上面的過程,直到詞典里的詞在自身語料庫中出現的頻率都是較高的。例如,起初詞典里有“我們”這個詞,如果在遇到“我們的”這個詞時,機器根本翻譯不出來,但是經過BPE技術的處理后,有可能發現“我們的”這個詞出現的概率更高,所以就將“我們的”這個詞加入到詞典中去替換掉出現頻率最低的詞。
本文首先使用BPE技術對通過網絡爬蟲爬取的84 835句對西里爾蒙漢平行語料中的西里爾蒙古文和67 288句西里爾蒙文單語數據進行處理。得到的處理后的結果如圖3所示。

圖3 經過BPE技術處理的西里爾蒙文
然后將經過Jieba分詞處理的84 835句對西里爾蒙漢平行語料中的漢語和67 288句漢語單語數據進行處理。得到的分詞結果如圖4所示。

圖4 經過Jieba分詞和BPE技術處理的漢語
雖然端到端的神經機器翻譯方法近年來已經取得了顯著的效果,但是該系統僅依靠平行語料庫進行參數估計。由于小語種的語料通常不管是在數量、質量還是覆蓋范圍上都受到很大的限制,所以如何利用單語數據來有效緩解因平行語料庫匱乏導致的譯文質量不高的問題已經被提到日程上了。
文獻[20]提出了對偶學習機制,在這個機制中,單語數據與平行雙語數據扮演者相似的角色,在訓練過程中,可以顯著降低對平行數據的要求。
對偶學習的基本思想是:以西里爾蒙文和漢語之間的翻譯為例,假如西里爾蒙文用字母A表示,漢語用字母B表示。首先使用較少的西里爾蒙漢平行語料訓練A到B和B到A的翻譯模型,將這兩個模型作為初始模型,互為對偶任務。盡管A和B之間的平行語料庫較少,但是很有可能找到大量的A和B的單語語料,把A語言的單語句子a先通過A到B的翻譯模型翻譯成b′,再通過B到A的翻譯模型將b′翻譯回A語言中的句子a′,最后通過對偶學習方法訓練模型的參數以減小a和a′之間的差異。同樣的方法可以減小b與b′之間的差異。該過程可以通過圖5得到更深刻的理解。

圖5 西里爾蒙古語與漢語互異的對偶學習
圖5中男機器人只懂西里爾蒙古語,女機器人只懂漢語,首先男機器人通過噪聲信道發一句西里爾蒙古語給女機器人,噪聲信道通過翻譯模型將西里爾蒙古語翻譯成漢語,女機器人接收到這句漢語之后首先檢查這個句子,但她無法確認這個翻譯是否正確。然后她通過另外一個噪聲信道使用另外一個翻譯模型將接收到的漢語句子翻譯成西里爾蒙文發送給男機器人,接收到此西里爾蒙文之后,男機器人會檢查該西里爾蒙文句子并通知女機器人她接收的信息是否包含了他原來的意思。通過這樣的反饋過程,兩個機器人就可以知道這兩個通信信道也就是兩個翻譯模型表現得是否良好以及能否提高它們的效果。同樣,這個通話過程也可以從第二個機器人開始。
通過上面的例子發現,盡管沒有平行語料庫,仍然能夠通過兩個翻譯模型的相互反饋得到質量比較好的翻譯模型。
本文的實驗數據分為兩個部分,第一部分是通過網絡爬蟲在TED網站上爬取的84 835句西里爾蒙漢對齊語料,第二部分是由內蒙古大學構建的67 288句漢語單語數據和通過谷歌翻譯將這67 288句漢語數據翻譯成的西里爾蒙古語單語數據組成而成。其中,在訓練兩個語言模型時分別使用的67 288句西里爾蒙文單語數據和漢語單語數據;在訓練預翻譯模型時,使用大約20%的(24 835句)西里爾蒙漢對齊語料。對24 835句平行語料的劃分如表1所示。

表1 數據集劃分表
本文首先對語料庫進行了分詞預處理和劃分,接著需要訓練兩個語言模型和一個翻譯模型,最后通過隨機梯度下降算法訓練得到基于對偶學習的西里爾蒙漢機器翻譯模型。本文的整體框架圖如圖6所示。

圖6 整體框架圖
圖6中:第一部分分別為西里爾蒙古語和漢語單語語料的預處理過程,得到了預處理后的單語語料;第二部分分別使用西里爾蒙古語和漢語單語數據訓練語言模型;第三部分首先從TED網站上爬取的西里爾蒙漢對齊語料進行預處理,然后進行翻譯模型的預訓練;第四部分通過使用隨機梯度下降算法進行對偶學習的翻譯模型訓練。
語言模型是利用統計的方法描述自然語言內在的規律,簡單地說,語言模型是用來計算一個句子出現概率的模型。常用的語言模型訓練工具有:SRILM、IRSTLM、BerkeyLM和KenLM等。這幾種所用的算法思想是基本一致的,只是在實現時有細微的不同。KenLM模型是在文獻[21]中提到的,該模型的兼容性特別好。因此,本文使用了KenLM作為語言模型的訓練工具。
將預處理好的67 288句漢語單語數據和西里爾蒙古語單語數據通過KenLM模型進行訓練分別得到漢語語言模型和西里爾蒙古語語言模型,并且將其分別保存在文件名為zh.zip和mn.zip的壓縮文件中。為通過對偶學習方法訓練翻譯模型做好準備工作。
近年來,基于神經網絡的翻譯框架越來越多,Nematus是英國愛丁堡大學自然語言處理小組開發的一款基于thano的開源神經機器翻譯系統,具體為基于注意力機制的編碼器解碼器模型,在學術界具有一定的影響力。因此,本文使用Nematus框架預訓練翻譯模型。將預處理好的24 835句西里爾蒙漢對齊語料通過Nematus框架進行預訓練得到的西里爾蒙漢預翻譯模型存儲在前綴為model.mm2zh.npz的文件中,其中第180輪也就是最后一輪得到的預翻譯模型如圖7所示。

圖7 mn2zh翻譯模型
得到的中文到西里爾蒙文的預翻譯模型存儲在前綴為model.zh2mn.npz的文件中,其中第180輪也就是最后一輪得到的預翻譯模型如圖8所示。

圖8 zh2mn翻譯模型
本文將BLEU值作為譯文質量的衡量指標,訓練了180個epoch時得到如表2所示的實驗結果。

表2 預翻譯模型的BLEU值
由表2可知,第157輪得到的翻譯模型的BLEU值最高并且BLEU值呈現波動上升趨勢。
將預訓練的語言模型和翻譯模型作為對偶學習模型訓練的初始模型,西里爾蒙古文詞典大小為4 536個詞,漢語詞典大小為9 168個詞,LSTM編碼器和解碼器的詞向量維度設定為500維,Dropout設定為0.2,初始學習率設定為0.000 1,迭代20輪。分別得到西里爾蒙古語到漢語和漢語到西里爾蒙古語的對偶學習翻譯模型,對每輪得到的西里爾蒙漢翻譯模型進行測試,圖9和圖10分別為第一輪和第二十輪的測試結果。

圖9 第一輪測試結果

圖10 第二十輪測試結果
同樣,對每輪得到的漢語到西里爾蒙古語翻譯模型進行測試,圖11和圖12分別為第一輪和第二十輪的測試結果。

圖11 第一輪測試結果

圖12 第二十輪測試結果
通過圖9-圖12可以看出,在翻譯模型訓練的初期,也就是第一輪,由于模型還沒有學習到很好的參數,所以譯文的流利度不高,語句表達得也不太清楚,而隨著訓練的繼續進行,翻譯模型逐漸學習到了能夠比較明確表示語句之間關系的參數信息,到第14輪時,譯文的質量和流利度都有了一定的提升。表3給出了20輪的BLEU值。

表3 翻譯模型的BLEU值
通過表3可以看出,對偶學習訓練方法有效提高了預訓練模型的質量。
使用所有的平行數據集(84 835句對)分別進行了OpenNMT(語料沒有經過BPE處理)、Nematus(語料進行了BPE處理)和對偶學習的西里爾蒙漢互譯模型的訓練。使用20%的平行數據集(24 835句對)分別進行了OpenNMT、Nematus和對偶學習的西里爾蒙漢互譯模型的訓練。得到如表4所示的對比結果。

表4 對比實驗的BLEU值
在西里爾蒙古語到漢語的OpenNMT和Nematus模型的互譯中,數據集的大小對翻譯效果的影響較大,而在基于對偶學習的神經機器翻譯中,數據集的大小對翻譯效果的影響明顯減小了。
表4的數據表明,基于對偶學習的西里爾蒙漢機器翻譯的效果遠遠超過了傳統的基于端到端的神經機器翻譯模型,尤其是在平行語料庫的規模比較小的時候、有效地證明了所提出的基于對偶學習的西里爾蒙漢互譯方法的優越性。針對只有24 835句平行語料訓練出的6個翻譯模型,進行了系統測試集的翻譯譯文的示例對比,如表5所示。

表5 機器翻譯譯文示例對比
通過表5可以看出,OpenNMT翻譯出來的句子語義表達得不夠清楚,并且伴有未登錄詞的出現;Nematus翻譯出來的句子語義表達得也不夠清楚,但是未登錄詞明顯較少了;基于對偶學習的神經機器翻譯生成的譯文不僅語義表達相對清楚而且也克服了未登錄詞現象的產生,有效提高了譯文的質量。
大語種之間的機器翻譯已經相對比較成熟,西里爾蒙古語與漢語之間由于平行語料庫的匱乏其效果一直不盡人意。為了緩解數據稀疏問題,本文進行了基于對偶學習的西里爾蒙漢機器翻譯的研究,通過實驗驗證了在較少的數據集上基于對偶學習的神經機器翻譯模型比傳統的神經機器翻譯的譯文質量有很大的提升。針對譯文中的未登錄詞現象,本文采用了BPE技術,提高了西里爾蒙漢機器翻譯譯文的質量。但是本文通過網絡爬蟲爬取的語料畢竟有限,如果語料庫的規模能夠再大一些,理論上譯文的質量會得到更進一步的提升。因此,接下來的工作將力爭收集大量高質量的平行語料庫,并且試圖將其他更有效的方法應用在西里爾蒙漢機器翻譯中。