張勝剛 艾山·吾買爾 吐?tīng)柛ひ啦祭? 買合木提·買買提 米爾夏提·力提甫
關(guān)鍵詞: 小語(yǔ)種; 機(jī)器翻譯; theano; 神經(jīng)網(wǎng)絡(luò); 開(kāi)源系統(tǒng); 負(fù)載均衡
中圖分類號(hào): TN711?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 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
隨著“一帶一路”倡儀的提出,為了使得沿線的所有民族之間都可以無(wú)障礙自由的溝通,機(jī)器翻譯變得日益重要。機(jī)器翻譯(Machine Translation,MT)指的是利用機(jī)器實(shí)現(xiàn)自動(dòng)從一種語(yǔ)言轉(zhuǎn)換為另一種相應(yīng)的語(yǔ)言,在翻譯過(guò)程中可以分為源語(yǔ)言和目標(biāo)語(yǔ)言。機(jī)器翻譯的歷史可以大致分為4個(gè)階段。在第一個(gè)階段中機(jī)器翻譯主要是基于情報(bào)學(xué)中的“加密/解密”方法,但這一方法并沒(méi)有獲得成功。在第二個(gè)階段中機(jī)器翻譯主要利用語(yǔ)言學(xué)家手工書(shū)寫翻譯規(guī)則,然而語(yǔ)言學(xué)家編寫的規(guī)則有限并且成本巨大,若某個(gè)句子不符合翻譯規(guī)則則該句就無(wú)法正常翻譯。第三階段的機(jī)器翻譯主要是基于概率統(tǒng)計(jì)的方法[1?3]。通俗來(lái)講,基于統(tǒng)計(jì)的機(jī)器翻譯的基本思想是利用概率統(tǒng)計(jì)方法找到大規(guī)模的平行語(yǔ)料的翻譯規(guī)律從而構(gòu)建相應(yīng)的機(jī)器翻譯模型。更具體來(lái)說(shuō)就是將源語(yǔ)言的句子分割為詞單元或者短語(yǔ)單元等,然后將其輸入到翻譯模型中并選擇最好的目標(biāo)語(yǔ)言句子進(jìn)行輸出。第四階段也就是目前階段主要是基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯(神經(jīng)機(jī)器翻譯,NMT)[4?7]。通過(guò)多個(gè)不同的非線性處理單元,基于神經(jīng)網(wǎng)絡(luò)的方法能夠自動(dòng)對(duì)任意數(shù)據(jù)進(jìn)行特征抽取和學(xué)習(xí)并擬合任意的非線性關(guān)系。目前基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯一般采用encoder?decoder模型,encoder端主要將源語(yǔ)言句子編碼為一個(gè)稀疏稠密的實(shí)數(shù)向量,decoder端則根據(jù)編碼器端的結(jié)果生成目標(biāo)語(yǔ)言句子。盡管基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯方法目前已經(jīng)成為主流方法,但是由于網(wǎng)絡(luò)的復(fù)雜性和模型的龐大等原因?qū)е略趯?shí)際工程應(yīng)用時(shí)翻譯速度很慢。本文基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯模型采用 nginx+uwsgi+django組合的方式實(shí)現(xiàn)了基于神經(jīng)網(wǎng)絡(luò)的維漢機(jī)器翻譯的服務(wù)接口,并利用nginx實(shí)現(xiàn)對(duì)多個(gè)維漢機(jī)器翻譯引擎進(jìn)行負(fù)載均衡,從而可以同時(shí)保證翻譯質(zhì)量和翻譯速度。
端到端神經(jīng)機(jī)器翻譯的基本思想是通過(guò)神經(jīng)網(wǎng)絡(luò)直接實(shí)現(xiàn)自然語(yǔ)言之間的自動(dòng)翻譯。因此基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯常采用編碼器?解碼器模型(encoder?decoder)來(lái)實(shí)現(xiàn)序列之間的自動(dòng)轉(zhuǎn)換。編碼器端主要將輸入的源語(yǔ)言句子編碼為稠密稀疏的實(shí)數(shù)向量,而解碼器端則根據(jù)編碼器端編碼的結(jié)果生成目標(biāo)語(yǔ)言句子。為了獲得好的翻譯結(jié)果,機(jī)器翻譯需要句子的全局上下文信息。循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[5]通常作為基于神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型的編碼器和解碼器。RNN的當(dāng)前時(shí)刻狀態(tài)不僅受到當(dāng)前時(shí)刻輸入的影響,還受到之前時(shí)刻狀態(tài)影響,因此理論上可以捕獲句子的全局上下文信息。為了緩解RNN本身固有的梯度消失(Vanishing Gradient)和梯度爆炸(Gradient explosion)的問(wèn)題,通常實(shí)際使用是RNN的兩個(gè)變體: 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)和門控循環(huán)單元(GRU)。在RNN網(wǎng)絡(luò)中由于存在上下時(shí)刻間時(shí)序上的依賴從而無(wú)法并行計(jì)算,因此訓(xùn)練的時(shí)間代價(jià)很高。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)能夠?qū)σ粋€(gè)窗口內(nèi)的局部上下文信息進(jìn)行特征抽取,而且不同窗口間的計(jì)算過(guò)程可以并行,從而能夠充分利用 GPU設(shè)備的并行計(jì)算能力。 因此有人提出了CNN?based 神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型(ConvSeq2Seq)[8]。為了增強(qiáng)CNN的建模能力,ConvSeq2Seq模型通過(guò)堆疊多層 CNN來(lái)增強(qiáng)感受野的范圍。然而原則上ConvSeq2Seq還是存在上下文信息缺失的問(wèn)題,特別是當(dāng)序列變得很長(zhǎng)的時(shí)候。最近有人提出了完全通過(guò)Attention機(jī)制構(gòu)建翻譯模型(Transformer)并且獲得了很大的成功[9]。
此前已有不少研究者和機(jī)構(gòu)嘗試搭建維漢機(jī)器翻譯系統(tǒng),新疆大學(xué)的Tilmach維漢機(jī)器翻譯系統(tǒng)[10]。該系統(tǒng)主要是基于傳統(tǒng)的基于短語(yǔ)的統(tǒng)計(jì)方法實(shí)現(xiàn)。中國(guó)民族語(yǔ)文翻譯局的在線維漢翻譯系統(tǒng),該系統(tǒng)則主要是基于self?attention機(jī)制來(lái)構(gòu)造整個(gè)系統(tǒng),該模型既能保證并行訓(xùn)練的速度優(yōu)勢(shì),又能快速地得到句子中任意兩個(gè)時(shí)刻的交互狀態(tài)??捉鹩⒌仁褂脦ё⒁饬C(jī)制的編碼器解碼器模型搭建了維漢口語(yǔ)機(jī)器翻譯模型[11]。本文主要從工程角度入手探討如何同時(shí)保證基于神經(jīng)網(wǎng)絡(luò)的維漢機(jī)器翻譯系統(tǒng)的翻譯速度和翻譯質(zhì)量。
2.1 ?神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型
神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型以端到端的方式實(shí)現(xiàn)輸入序列到輸出序列的直接映射。假設(shè)給定的源語(yǔ)言為X={x1,x2,…,xn},目標(biāo)語(yǔ)言為Y={y1,y2,…,ym},基于神經(jīng)網(wǎng)絡(luò)建模翻譯概率如下:
[P(YX)=t=1mP(yty<t,X)] (1)
式中,y<t=y1,y2,…,yt-1。在基于神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型中使用LSTM,GRU或者其他非線性單元根據(jù)當(dāng)前的輸入xt和前一時(shí)刻的隱藏狀態(tài)ht-1計(jì)算當(dāng)前的隱藏狀態(tài)ht:
[ht=RNN(ht-1,xt)] (2)
為了能得到更加豐富的上下文信息,在編碼器端通常對(duì)源語(yǔ)言進(jìn)行雙向編碼;然后對(duì)兩個(gè)方向的編碼結(jié)果進(jìn)行整合作為最終的隱藏狀態(tài),該過(guò)程為:
[h→t=RNN(h→t-1,xt)] (3)
[ht←=RNN(h←t-1,xt)] (4)
[ht=htht←→] (5)
在解碼器端生成目標(biāo)語(yǔ)言過(guò)程如下:
[q=g(yt-1,ct,st)] (6)
[p(yty<t,X)=softmax(q)] (7)
式中:q是要預(yù)測(cè)目標(biāo)端詞的張量;g(·)是一個(gè)非線性單元,如第一節(jié)提到的LSTM,GRU或者CNN等;st是解碼器端的隱藏狀態(tài),其計(jì)算方法和編碼器端相同;ct是源端所有隱藏狀態(tài)的加權(quán)和,通過(guò)注意力機(jī)制計(jì)算得到。ct的計(jì)算方法如下:
[ct=attention(st-1,h)=i=1nat,ihi] (8)
[at,i=softmax(VTatanh(Wast-1+Uahj))] (9)
式中,Va,Wa,Ua均為神經(jīng)網(wǎng)絡(luò)要訓(xùn)練的參數(shù)。模型的整體結(jié)構(gòu)如圖1所示。
2.2 ?維漢機(jī)器翻譯系統(tǒng)
為了更好地捕獲句子中的深層信息提高譯文質(zhì)量,本文構(gòu)建的維漢機(jī)器翻譯模型在上文所述的模型的基礎(chǔ)上將其變?yōu)樯顚由窠?jīng)網(wǎng)絡(luò)并且借鑒文獻(xiàn)[12]的思想,將網(wǎng)絡(luò)中的非線性單元從傳統(tǒng)的GRU修改為ALU,從而可以減小訓(xùn)練的難度并進(jìn)一步提高翻譯質(zhì)量。當(dāng)翻譯完成后系統(tǒng)對(duì)譯文進(jìn)行了后處理以緩解由于神經(jīng)機(jī)器翻譯中的集外詞問(wèn)題導(dǎo)致的譯文質(zhì)量下降[13]。
系統(tǒng)在實(shí)現(xiàn)上首先使用Django Web開(kāi)源框架,在維漢機(jī)器翻譯引擎的基礎(chǔ)上實(shí)現(xiàn)維漢機(jī)器翻譯的網(wǎng)絡(luò)服務(wù)接口。然后使用開(kāi)源Web服務(wù)器nginx不停地監(jiān)聽(tīng)來(lái)自用戶的請(qǐng)求并將用戶傳來(lái)的Web請(qǐng)求交給相應(yīng)的接口進(jìn)行處理并返回。為了能處理更多的用戶請(qǐng)求量,在兩者之間設(shè)置了uwsgi服務(wù)器用來(lái)接收來(lái)自nginx的服務(wù)請(qǐng)求。為了進(jìn)一步提高翻譯速度和并發(fā)量,整個(gè)維漢翻譯系統(tǒng)由多個(gè)維漢機(jī)器翻譯引擎構(gòu)成,并使用nginx進(jìn)行負(fù)載均衡。本系統(tǒng)采用的負(fù)載均衡方法為輪詢方式,整個(gè)維漢機(jī)器翻譯系統(tǒng)結(jié)構(gòu)圖如圖2所示。
為了驗(yàn)證基于神經(jīng)網(wǎng)絡(luò)維漢機(jī)器翻譯系統(tǒng)性能,本文設(shè)置了多組實(shí)驗(yàn),從翻譯質(zhì)量、翻譯速度和并發(fā)量三個(gè)方面來(lái)進(jìn)行測(cè)試。
3.1 ?接口調(diào)用說(shuō)明
本文系統(tǒng)的調(diào)用方式是基于Web的服務(wù)接口,具體關(guān)于調(diào)用的詳細(xì)信息如表1所示,輸入示例如表2所示,返回結(jié)果示例如表3所示。