張勝剛 艾山·吾買爾 吐爾根·依布拉音 買合木提·買買提 米爾夏提·力提甫
關鍵詞: 小語種; 機器翻譯; theano; 神經網絡; 開源系統; 負載均衡
中圖分類號: TN711?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ? ? 文章編號: 1004?373X(2018)24?0157?05
Implementation of Uyghur?Chinese translation system based on neural network
ZHANG Shenggang1,2, Hasan Wumaier1,2, Tuergen Yibulayin1,2, Mahmut Maimaiti1,2, Mirxat Litip1
(1. School of Information Science and Engineering, Xinjiang University, Urumqi 830046, China;
2. Xinjiang Laboratory of Multi?Language Information Technology, Urumqi 830046, China)
Abstract: The machine translation of minority languages is generally to achieve online service system on the basis of the open source system due to reasons such as development costs and user scale. At present, the source codes provided by neural machine translation are mostly written by the theano, but the machine translation written by the theano cannot meet users′ needs due to its slow translation speed. How to realize the stable Uyghur?Chinese neural network machine translation system based on the theano is taken as the research object. The multi?layer bi?directional network framework of the ALU neuron is used as the translation model. The django is used to realize the translation service interface. The nginx+uwsgi is selected to achieve load balancing, so as to improve the translation speed. The experimental results show that, the translation speed of the system constituted by 5 translation engines is 1.3~1.55 times higher than that of the system constituted by 10 translation engines. The research results in this paper have an important reference value for using the open source system to rapidly realize the translation system that can meet daily visits of less than 10 million times per day.
Keywords: minority language; machine translation; theano; neural network; open source system; load balancing
隨著“一帶一路”倡儀的提出,為了使得沿線的所有民族之間都可以無障礙自由的溝通,機器翻譯變得日益重要。機器翻譯(Machine Translation,MT)指的是利用機器實現自動從一種語言轉換為另一種相應的語言,在翻譯過程中可以分為源語言和目標語言。機器翻譯的歷史可以大致分為4個階段。在第一個階段中機器翻譯主要是基于情報學中的“加密/解密”方法,但這一方法并沒有獲得成功。在第二個階段中機器翻譯主要利用語言學家手工書寫翻譯規則,然而語言學家編寫的規則有限并且成本巨大,若某個句子不符合翻譯規則則該句就無法正常翻譯。第三階段的機器翻譯主要是基于概率統計的方法[1?3]。通俗來講,基于統計的機器翻譯的基本思想是利用概率統計方法找到大規模的平行語料的翻譯規律從而構建相應的機器翻譯模型。更具體來說就是將源語言的句子分割為詞單元或者短語單元等,然后將其輸入到翻譯模型中并選擇最好的目標語言句子進行輸出。第四階段也就是目前階段主要是基于神經網絡的機器翻譯(神經機器翻譯,NMT)[4?7]。通過多個不同的非線性處理單元,基于神經網絡的方法能夠自動對任意數據進行特征抽取和學習并擬合任意的非線性關系。目前基于神經網絡的機器翻譯一般采用encoder?decoder模型,encoder端主要將源語言句子編碼為一個稀疏稠密的實數向量,decoder端則根據編碼器端的結果生成目標語言句子。盡管基于神經網絡的機器翻譯方法目前已經成為主流方法,但是由于網絡的復雜性和模型的龐大等原因導致在實際工程應用時翻譯速度很慢。本文基于神經網絡的機器翻譯模型采用 nginx+uwsgi+django組合的方式實現了基于神經網絡的維漢機器翻譯的服務接口,并利用nginx實現對多個維漢機器翻譯引擎進行負載均衡,從而可以同時保證翻譯質量和翻譯速度。
端到端神經機器翻譯的基本思想是通過神經網絡直接實現自然語言之間的自動翻譯。因此基于神經網絡的機器翻譯常采用編碼器?解碼器模型(encoder?decoder)來實現序列之間的自動轉換。編碼器端主要將輸入的源語言句子編碼為稠密稀疏的實數向量,而解碼器端則根據編碼器端編碼的結果生成目標語言句子。為了獲得好的翻譯結果,機器翻譯需要句子的全局上下文信息。循環神經網絡(Recurrent Neural Network,RNN)[5]通常作為基于神經網絡機器翻譯模型的編碼器和解碼器。RNN的當前時刻狀態不僅受到當前時刻輸入的影響,還受到之前時刻狀態影響,因此理論上可以捕獲句子的全局上下文信息。為了緩解RNN本身固有的梯度消失(Vanishing Gradient)和梯度爆炸(Gradient explosion)的問題,通常實際使用是RNN的兩個變體: 長短時記憶網絡(LSTM)和門控循環單元(GRU)。在RNN網絡中由于存在上下時刻間時序上的依賴從而無法并行計算,因此訓練的時間代價很高。卷積神經網絡(Convolutional Neural Network,CNN)能夠對一個窗口內的局部上下文信息進行特征抽取,而且不同窗口間的計算過程可以并行,從而能夠充分利用 GPU設備的并行計算能力。 因此有人提出了CNN?based 神經網絡機器翻譯模型(ConvSeq2Seq)[8]。為了增強CNN的建模能力,ConvSeq2Seq模型通過堆疊多層 CNN來增強感受野的范圍。然而原則上ConvSeq2Seq還是存在上下文信息缺失的問題,特別是當序列變得很長的時候。最近有人提出了完全通過Attention機制構建翻譯模型(Transformer)并且獲得了很大的成功[9]。
此前已有不少研究者和機構嘗試搭建維漢機器翻譯系統,新疆大學的Tilmach維漢機器翻譯系統[10]。該系統主要是基于傳統的基于短語的統計方法實現。中國民族語文翻譯局的在線維漢翻譯系統,該系統則主要是基于self?attention機制來構造整個系統,該模型既能保證并行訓練的速度優勢,又能快速地得到句子中任意兩個時刻的交互狀態??捉鹩⒌仁褂脦ё⒁饬C制的編碼器解碼器模型搭建了維漢口語機器翻譯模型[11]。本文主要從工程角度入手探討如何同時保證基于神經網絡的維漢機器翻譯系統的翻譯速度和翻譯質量。
2.1 ?神經網絡機器翻譯模型
神經網絡機器翻譯模型以端到端的方式實現輸入序列到輸出序列的直接映射。假設給定的源語言為X={x1,x2,…,xn},目標語言為Y={y1,y2,…,ym},基于神經網絡建模翻譯概率如下:
[P(YX)=t=1mP(yty<t,X)] (1)
式中,y<t=y1,y2,…,yt-1。在基于神經網絡機器翻譯模型中使用LSTM,GRU或者其他非線性單元根據當前的輸入xt和前一時刻的隱藏狀態ht-1計算當前的隱藏狀態ht:
[ht=RNN(ht-1,xt)] (2)
為了能得到更加豐富的上下文信息,在編碼器端通常對源語言進行雙向編碼;然后對兩個方向的編碼結果進行整合作為最終的隱藏狀態,該過程為:
[h→t=RNN(h→t-1,xt)] (3)
[ht←=RNN(h←t-1,xt)] (4)
[ht=htht←→] (5)
在解碼器端生成目標語言過程如下:
[q=g(yt-1,ct,st)] (6)
[p(yty<t,X)=softmax(q)] (7)
式中:q是要預測目標端詞的張量;g(·)是一個非線性單元,如第一節提到的LSTM,GRU或者CNN等;st是解碼器端的隱藏狀態,其計算方法和編碼器端相同;ct是源端所有隱藏狀態的加權和,通過注意力機制計算得到。ct的計算方法如下:
[ct=attention(st-1,h)=i=1nat,ihi] (8)
[at,i=softmax(VTatanh(Wast-1+Uahj))] (9)
式中,Va,Wa,Ua均為神經網絡要訓練的參數。模型的整體結構如圖1所示。
2.2 ?維漢機器翻譯系統
為了更好地捕獲句子中的深層信息提高譯文質量,本文構建的維漢機器翻譯模型在上文所述的模型的基礎上將其變為深層神經網絡并且借鑒文獻[12]的思想,將網絡中的非線性單元從傳統的GRU修改為ALU,從而可以減小訓練的難度并進一步提高翻譯質量。當翻譯完成后系統對譯文進行了后處理以緩解由于神經機器翻譯中的集外詞問題導致的譯文質量下降[13]。
系統在實現上首先使用Django Web開源框架,在維漢機器翻譯引擎的基礎上實現維漢機器翻譯的網絡服務接口。然后使用開源Web服務器nginx不停地監聽來自用戶的請求并將用戶傳來的Web請求交給相應的接口進行處理并返回。為了能處理更多的用戶請求量,在兩者之間設置了uwsgi服務器用來接收來自nginx的服務請求。為了進一步提高翻譯速度和并發量,整個維漢翻譯系統由多個維漢機器翻譯引擎構成,并使用nginx進行負載均衡。本系統采用的負載均衡方法為輪詢方式,整個維漢機器翻譯系統結構圖如圖2所示。
為了驗證基于神經網絡維漢機器翻譯系統性能,本文設置了多組實驗,從翻譯質量、翻譯速度和并發量三個方面來進行測試。
3.1 ?接口調用說明
本文系統的調用方式是基于Web的服務接口,具體關于調用的詳細信息如表1所示,輸入示例如表2所示,返回結果示例如表3所示。