頭旦才讓?zhuān)是鄸|主,尼瑪扎西*,于永斌,鄧權(quán)芯
(1. 青海師范大學(xué)藏文信息處理教育部重點(diǎn)實(shí)驗(yàn)室 西寧 810008;2. 西藏大學(xué)信息科學(xué)技術(shù)學(xué)院 拉薩 850000;3. 電子科技大學(xué)信息與軟件工程學(xué)院 成都 610054)
機(jī)器翻譯是利用計(jì)算機(jī)自動(dòng)地將一種自然語(yǔ)言轉(zhuǎn)換為相同含義的另一種自然語(yǔ)言的過(guò)程[1]。機(jī)器翻譯在語(yǔ)言形態(tài)上分為語(yǔ)音翻譯和文本翻譯,其歷史發(fā)展已從基于規(guī)則的機(jī)器翻譯、基于統(tǒng)計(jì)的機(jī)器翻譯發(fā)展至基于神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯(即神經(jīng)機(jī)器翻譯)。目前,神經(jīng)機(jī)器翻譯已經(jīng)取代統(tǒng)計(jì)機(jī)器翻譯,成為Google、微軟、百度、搜狗等商用在線(xiàn)機(jī)器翻譯系統(tǒng)的核心技術(shù)[2]。
神經(jīng)機(jī)器翻譯最早在2013 年被提出,但是存在長(zhǎng)距離重新排序和梯度爆炸消失等問(wèn)題,翻譯效果不理想[3]。2014 年,文獻(xiàn)[4]提出了編碼器和解碼器框架,引入了長(zhǎng)短時(shí)記憶模型,解決了長(zhǎng)距離重新排序和梯度爆炸消失等問(wèn)題,同時(shí)神經(jīng)機(jī)器翻譯的主要難題變成了固定長(zhǎng)度向量問(wèn)題。2015 年,文獻(xiàn)[5]將注意力機(jī)制應(yīng)用到機(jī)器翻譯中,解決了固定長(zhǎng)度向量問(wèn)題。
注意力機(jī)制的模型將注意力放在一些相關(guān)性高的詞上,編碼器和解碼器之間通過(guò)注意力機(jī)制連接[6],在翻譯目標(biāo)單詞時(shí)檢測(cè)其與源端語(yǔ)句相關(guān)的部分,解碼時(shí)融合了更多的源語(yǔ)言端信息,可以顯著提升機(jī)器翻譯效果,是目前神經(jīng)機(jī)器翻譯的主流方法,應(yīng)用廣泛。2018 年,文獻(xiàn)[7]使用自注意力機(jī)制來(lái)增強(qiáng)序列標(biāo)注模型的全局表示能力,從序列標(biāo)注任務(wù)端減少漢文分詞對(duì)隨后翻譯對(duì)影響的方法。在此基礎(chǔ)上,文獻(xiàn)[8]提出了格到序列的神經(jīng)機(jī)器翻譯模型。通過(guò)實(shí)驗(yàn),該模型在翻譯性能上顯著優(yōu)于傳統(tǒng)的基于注意力機(jī)制的序列到序列基線(xiàn)系統(tǒng)。同年,文獻(xiàn)[9]提出簡(jiǎn)單循環(huán)單元的注意力機(jī)制模型。2019 年,文獻(xiàn)[10]提出了一個(gè)稀疏注意力模型,解決了注意力權(quán)重分布問(wèn)題。2020 年,文獻(xiàn)[11]提出了一種深度注意力模型,大大提高了系統(tǒng)翻譯的忠實(shí)度。綜上,基于注意力機(jī)制的模型成為目前神經(jīng)機(jī)器翻譯領(lǐng)域的主流模型。
近幾年,研究人員在基于注意力機(jī)制模型的基礎(chǔ)上,利用不同的方法進(jìn)行了漢藏藏漢神經(jīng)機(jī)器翻譯研究。2017 年,文獻(xiàn)[12]基于注意力機(jī)制和遷移學(xué)習(xí)方法,將英漢神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型參數(shù)遷移到藏漢神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯模型中。2018 年,文獻(xiàn)[13]將注意力機(jī)制模型應(yīng)用于漢藏機(jī)器翻譯任務(wù)中,實(shí)現(xiàn)了漢藏書(shū)面語(yǔ)料和口語(yǔ)語(yǔ)料的神經(jīng)機(jī)器翻譯。2019 年,文獻(xiàn)[14]在transformer 模型上,運(yùn)用百萬(wàn)句子單語(yǔ)數(shù)據(jù)大規(guī)模迭代式回譯策略,實(shí)現(xiàn)了藏漢神經(jīng)機(jī)器翻譯模型,文獻(xiàn)[15]也使用transformer實(shí)現(xiàn)了藏漢神經(jīng)機(jī)器翻譯模型,并將藏語(yǔ)單語(yǔ)語(yǔ)言模型融合到藏漢神經(jīng)機(jī)器翻譯中。
漢藏機(jī)器翻譯中的命名實(shí)體處理一直是最難以突破的一個(gè)技術(shù)環(huán)節(jié),為處理命名實(shí)體、同源詞、外來(lái)詞和形態(tài)復(fù)雜的詞,本文在模型訓(xùn)練時(shí),改進(jìn)藏文字節(jié)對(duì)編碼算法,優(yōu)化了基于注意力機(jī)制的翻譯模型,使得漢藏神經(jīng)機(jī)器翻譯效果更加準(zhǔn)確。
藏文是拼音文字,音節(jié)之間用分隔符隔開(kāi),詞與詞之間沒(méi)有明確的分隔符,再者藏文有格助詞、助動(dòng)詞等漢語(yǔ)文法不具有的語(yǔ)法單元,所以對(duì)應(yīng)的翻譯句子長(zhǎng)度比漢語(yǔ)長(zhǎng)。
為了解決長(zhǎng)句的翻譯問(wèn)題,本文系統(tǒng)(陽(yáng)光漢藏機(jī)器翻譯系統(tǒng)V2)采用了基于注意力機(jī)制的神經(jīng)機(jī)器翻譯模型。
式中,GRU1和GRU2是兩個(gè)門(mén)控循環(huán)單元,從兩個(gè)方向循環(huán)地對(duì)x 編碼,然后拼接每個(gè)詞的輸出狀態(tài),即h={h1,h2,···,hls}。
解碼器依次生成藏文詞 yj:
通過(guò)最大化藏文詞匯的似然來(lái)優(yōu)化整個(gè)翻譯模型:
式中,GRU 是非線(xiàn)性函數(shù); αj是每次解碼動(dòng)態(tài)更新的漢文上下文表示,依賴(lài)于漢文編碼序列h={h1,h2,···,hi}即每個(gè)漢文詞語(yǔ)狀態(tài)的加權(quán)和:
式中, αi,j是第i 個(gè)漢文詞語(yǔ)與第j 個(gè)藏文詞語(yǔ)之間的對(duì)齊概率:
式中, ei,j是對(duì)齊模型,通過(guò)前饋神經(jīng)網(wǎng)絡(luò),計(jì)算出i 時(shí)刻生成的藏文詞與第j 個(gè)漢文詞的匹配程度。圖1 為基于注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)翻譯模型,其中, yj表示模型在第j 步所預(yù)測(cè)詞語(yǔ)的概率分布,極大似然估計(jì)(MLE)表示計(jì)算損失的方法[16]。
本文為了提高模型的穩(wěn)定性和翻譯的準(zhǔn)確率,訓(xùn)練時(shí)使用了一種帶字?jǐn)?shù)閾值的的藏文字節(jié)對(duì)編碼算法,優(yōu)化了翻譯模型。首先簡(jiǎn)單描述一下原始字節(jié)對(duì)編碼算法。
1.2.1 字節(jié)對(duì)編碼
字節(jié)對(duì)編碼(byte pair encoding, BPE)指通過(guò)自動(dòng)發(fā)現(xiàn)稀疏詞,建立基于稀疏詞的神經(jīng)網(wǎng)絡(luò)翻譯模型[17],即通過(guò)構(gòu)造高頻的字符片段,將稀疏詞拆分為合適的子詞,使得這些子詞在語(yǔ)料中的出現(xiàn)次數(shù)足夠高,從而進(jìn)行訓(xùn)練,得到最優(yōu)的翻譯模型,BPE 算法流程圖如圖2 所示。
圖1 基于注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)翻譯模型
圖2 原始BPE 算法流程圖
1.2.2 改進(jìn)的藏文字節(jié)對(duì)編碼算法
BPE 算法不需要對(duì)語(yǔ)料中的詞匯進(jìn)行任何處理,由于藏文的詞與詞之間沒(méi)有空格,所以形式上不存在單詞邊界的問(wèn)題,所以改進(jìn)的BPE 算法中不需要詞頭詞尾標(biāo)記符號(hào)“</w>”。另外,通過(guò)分析藏文和漢文使用原始BPE 算法之后生成的子詞長(zhǎng)度分布情況,發(fā)現(xiàn)藏文和漢文對(duì)應(yīng)最大子詞長(zhǎng)度分別為39 和21,在長(zhǎng)度峰值上,藏文子詞明顯大于漢文子詞?;诖耍诜衷~粒度較大的藏文部分,本文提出了一種改進(jìn)的BPE 算法,使用長(zhǎng)度閾值控制藏文子詞,合并出現(xiàn)頻率略低但長(zhǎng)度更適合的子詞。其算法流程如圖3 所示。
圖3 改進(jìn)的BPE 算法流程圖
通過(guò)對(duì)比圖2 和圖3 的流程,相對(duì)于原始的BPE 算法,改進(jìn)的藏文BPE 算法設(shè)置子詞字?jǐn)?shù)閾值,不提取字?jǐn)?shù)超過(guò)該閾值的子詞。實(shí)驗(yàn)表明,當(dāng)設(shè)置的字?jǐn)?shù)閾值為23 時(shí),效果提升最為明顯。
本文使用西藏大學(xué)和青海師范大學(xué)建設(shè)的107 萬(wàn)漢藏句對(duì),經(jīng)糾正錯(cuò)峰句對(duì)、檢查拼寫(xiě)錯(cuò)誤、校對(duì)斷句錯(cuò)字和過(guò)濾重復(fù)句子,最終將100 萬(wàn)句對(duì)作為訓(xùn)練語(yǔ)料,其中80 萬(wàn)句對(duì)為新聞和法律題材,20 萬(wàn)句對(duì)為其他領(lǐng)域語(yǔ)料;測(cè)試集和驗(yàn)證集各1 000 句對(duì)。此外,為了提高翻譯效果,建立了15 萬(wàn)詞條的漢藏地名詞典和5 萬(wàn)條的漢藏人名詞典作為輔助工具。
模型訓(xùn)練中,通過(guò)反復(fù)調(diào)整參數(shù),最終獲得最優(yōu)的模型參數(shù),具體描述如下。
所有的模型參數(shù)都使用隨機(jī)梯度下降算法進(jìn)行優(yōu)化[18],學(xué)習(xí)率使用Adadelta 算法[19]進(jìn)行自動(dòng)調(diào)節(jié);訓(xùn)練語(yǔ)料漢文端和藏文端保留的最大句長(zhǎng)為50 詞;漢文和藏文詞向量維度為512;編碼器和解碼器中循環(huán)神經(jīng)單元的隱狀態(tài)和輸出狀態(tài)均設(shè)為512;模型最終輸出層采用dropout 策略,dropout設(shè)置為0.5。
測(cè)試時(shí)本文使用束搜索算法進(jìn)行解碼[20],搜索過(guò)程中束大小設(shè)置為10。漢文端和目藏文端的詞表大小設(shè)置為15 萬(wàn),覆蓋率100%。語(yǔ)料訓(xùn)練的輪數(shù)最大為50 輪。模型的超參數(shù)需要根據(jù)訓(xùn)練數(shù)據(jù)量來(lái)設(shè)置,通常數(shù)據(jù)量越大,模型的超參數(shù)如enc_hid_size、dec_hid_size 可以適當(dāng)放大。
本文實(shí)現(xiàn)了基于PyTorch 框架的注意力機(jī)制漢藏神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯系統(tǒng),循環(huán)單元采用門(mén)控循環(huán)單元,評(píng)測(cè)指標(biāo)使用了BLEU4,采用基于字的評(píng)測(cè)方法。
漢藏雙語(yǔ)語(yǔ)料庫(kù)進(jìn)行分詞時(shí),漢文分詞使用了感知機(jī)、Hanlp 和BPE。藏文分詞使用了西藏大學(xué)開(kāi)發(fā)的基于Perceptron+CRF 模型的藏文分詞系統(tǒng)[21]和改進(jìn)的藏文BPE 算法。
本文在測(cè)試集、驗(yàn)證集一致的前提下,做了6 組實(shí)驗(yàn)。訓(xùn)練模型時(shí),除實(shí)驗(yàn)1 未使用BPE 算法外,其他實(shí)驗(yàn)的譯文和原文都使用了BPE 算法和改進(jìn)的藏文BPE 算法。6 組實(shí)驗(yàn)的驗(yàn)證集和測(cè)試集情況如下表1 所示。
表1 實(shí)驗(yàn)數(shù)據(jù)集
為了體現(xiàn)命名實(shí)體的翻譯效果,驗(yàn)證集和測(cè)試集的每個(gè)句子中至少包含了一個(gè)地名或人名,因此通過(guò)該測(cè)試集得到的結(jié)果應(yīng)當(dāng)具有一定的通用性且能夠說(shuō)明模型具有的泛化能力。
實(shí)驗(yàn)數(shù)據(jù)、方法、結(jié)果如表2 所示。
表2 實(shí)驗(yàn)數(shù)據(jù)、方法、結(jié)果
在實(shí)驗(yàn)中,第一組實(shí)驗(yàn)使用了基于平均感知機(jī)的漢文分詞方法[22],目標(biāo)端沒(méi)有使用BPE 操作,BLEU 值最低,只有30.46。由于該漢文分詞器的分詞粒度較大,而藏文分詞器的分詞粒度較小,分詞粒度的差異導(dǎo)致翻譯效果不夠好,另外由于漢文分詞器的算法問(wèn)題,導(dǎo)致前端的查詢(xún)速度很慢。
第二組實(shí)驗(yàn)的漢文分詞方法和第一組實(shí)驗(yàn)方法一樣,但是對(duì)藏文端使用了BPE 算法。雖然分詞粒度的差異導(dǎo)致翻譯效果不夠好,但是解決了一些稀疏詞和低頻詞翻譯問(wèn)題,BLEU 值提高了1.10。
為了解決漢藏分詞粒度的耦合性,第三組實(shí)驗(yàn)使用了Hanlp 漢文分詞器[23],因?yàn)槠浞衷~粒度較小,也提供了更友好的Python 訪(fǎng)問(wèn)接口;同時(shí)還提供了詞性標(biāo)注等更高級(jí)的功能,為后續(xù)對(duì)模型的優(yōu)化提供了更好的擴(kuò)展性,另外查詢(xún)速度也得到提升。使用BPE 操作,提供了更細(xì)的分詞粒度,致使?jié)h文分詞和藏文分詞粒度契合,BLEU 值達(dá)到了31.84。
為了進(jìn)一步提高翻譯效果,第四組實(shí)驗(yàn)的漢文分詞使用了BPE 算法,并增加了20 萬(wàn)條的人名地名詞典作為訓(xùn)練輔助工具,解決了命名實(shí)體翻譯問(wèn)題,BLEU 值提高了2.03,達(dá)到了33.87。
第五組實(shí)驗(yàn)在第四組實(shí)驗(yàn)的基礎(chǔ)上,增加了20 萬(wàn)條的人物傳記、小說(shuō)和口語(yǔ)等雙語(yǔ)語(yǔ)料,由于語(yǔ)料題材的多樣性,BLEU 值僅提高了0.22,達(dá)到34.09。
上述五組實(shí)驗(yàn)結(jié)果得知,如果僅僅使用原始BPE 算法,BLEU 值提高1.06,如果增加命名實(shí)體詞典,BLEU 值也僅僅提高2.03。為了體現(xiàn)改進(jìn)的藏文BPE 算法的性能,第六組實(shí)驗(yàn)在第五組實(shí)驗(yàn)的基礎(chǔ)上,在藏文端使用了本文提出的BPE 改進(jìn)算法,這時(shí)BLEU 值提高了2.75,達(dá)到了36.84。
本文根據(jù)模型在驗(yàn)證集上的BLEU 值分?jǐn)?shù),當(dāng)BLEU 值出現(xiàn)震蕩或者模型過(guò)擬合,BLEU 值開(kāi)始出現(xiàn)明顯下降時(shí),停止訓(xùn)練。
在已有的漢藏神經(jīng)機(jī)器翻譯研究[13-15]中,每個(gè)模型采用的訓(xùn)練語(yǔ)料和測(cè)試集不同,且目前漢藏機(jī)器翻譯領(lǐng)域尚未存在公開(kāi)的數(shù)據(jù)集,因此各模型的BLEU 值無(wú)法進(jìn)行對(duì)比。
本系統(tǒng)在翻譯任務(wù)上的效果較好,BLEU 值達(dá)到了36.84。原因如下:一方面,對(duì)訓(xùn)練語(yǔ)料進(jìn)行了較為全面的校對(duì),語(yǔ)料質(zhì)量較高;另一方面,神經(jīng)機(jī)器翻譯中命名實(shí)體翻譯一直是一個(gè)難題[24-25],通過(guò)改進(jìn)BPE 算法和人名地名雙語(yǔ)詞典提升了命名實(shí)體翻譯現(xiàn)象,如由于詞典覆蓋率不夠,導(dǎo)致譯文中出現(xiàn)了unk,而本文方法能夠把原文的所有詞語(yǔ)完整地翻譯出來(lái),不會(huì)出現(xiàn)unk。目前,國(guó)內(nèi)一些高校和研究機(jī)構(gòu)研發(fā)了在線(xiàn)漢藏機(jī)器翻譯系統(tǒng),其中,廈門(mén)大學(xué)開(kāi)發(fā)的“云譯”[26]和中國(guó)民族語(yǔ)文翻譯局開(kāi)發(fā)的在線(xiàn)智能翻譯系統(tǒng)[27]等的影響較大。現(xiàn)將本文翻譯系統(tǒng)與騰訊民漢翻譯、小牛翻譯[28]等已商用化的漢藏機(jī)器翻譯系統(tǒng)進(jìn)行對(duì)比,其翻譯實(shí)例及結(jié)果如表3 所示。
表3 本系統(tǒng)與已商用化的漢藏翻譯系統(tǒng)翻譯實(shí)例結(jié)果對(duì)比
翻譯實(shí)例1 和2 中包含了地名和人名,雖然1個(gè)漢文地名或人名的翻譯結(jié)果有5 個(gè)對(duì)應(yīng)的藏文地名和人名,但是漢藏地名人名翻譯沒(méi)有統(tǒng)一的標(biāo)準(zhǔn)可依,均可音譯,所以5 個(gè)譯文都沒(méi)有錯(cuò)誤,結(jié)果相當(dāng)。
翻譯實(shí)例3 中包含了藏區(qū)地名,漢文中的藏區(qū)地名翻譯結(jié)果是統(tǒng)一的,所以本文翻譯系統(tǒng)的譯文完整地翻譯了實(shí)例中的地名“夏河”和“合作”,其他譯文的翻譯都有錯(cuò)。
從以上翻譯結(jié)果對(duì)比可以看出,各種漢藏神經(jīng)機(jī)器翻譯雖然翻譯效果不錯(cuò),但各自也都存在一些不足。就本文翻譯系統(tǒng)而言,新聞和法律領(lǐng)域的翻譯結(jié)果較為流暢,但是其他領(lǐng)域的翻譯有待改進(jìn),如同樣的句子加上和去掉標(biāo)點(diǎn)符號(hào)得到的結(jié)果不同等現(xiàn)象。
漢藏神經(jīng)機(jī)器翻譯模型由數(shù)據(jù)處理模塊、模型選取模塊、模型訓(xùn)練模塊、翻譯評(píng)測(cè)模塊和系統(tǒng)化模塊5 個(gè)部分組成,如圖4 所示。
本文漢藏機(jī)器翻譯系統(tǒng)V2 架構(gòu)由電子科技大學(xué)數(shù)字信息系統(tǒng)實(shí)驗(yàn)室與西藏大學(xué)藏文信息技術(shù)人工智能自治區(qū)重點(diǎn)實(shí)驗(yàn)室搭建。系統(tǒng)架構(gòu)主要由算法、后端和前端組成,算法就是模型的實(shí)驗(yàn),后端設(shè)計(jì)主要由Flask 框架實(shí)現(xiàn),首先將分詞器和神經(jīng)翻譯模型的初始化工作放在Flask 后端初始化之前,并將其保存在內(nèi)存中。每次請(qǐng)求到來(lái)時(shí),只需調(diào)用已初始化完成的模型即可,這樣減少了大量響應(yīng)時(shí)間。經(jīng)簡(jiǎn)單測(cè)試,加載神經(jīng)翻譯模型和分詞器只需要50 ms。通過(guò)后端設(shè)計(jì),還實(shí)現(xiàn)了Android前端和網(wǎng)頁(yè)前端。漢藏神經(jīng)機(jī)器翻譯系統(tǒng)化總體架構(gòu)如圖5 所示。
圖4 漢藏神經(jīng)機(jī)器翻譯模型總體流程
圖5 漢藏神經(jīng)機(jī)器翻譯系統(tǒng)總體架構(gòu)
本文利用100 萬(wàn)漢藏句對(duì)和20 萬(wàn)漢藏人名地名詞條,進(jìn)行了基于注意力機(jī)制的神經(jīng)機(jī)器翻譯實(shí)驗(yàn),并提出了一種改進(jìn)的BPE 算法,用以協(xié)調(diào)原始BPE 得到的藏文粒度大于漢文粒度的情況,將BLEU 提升了2.75%,減少了過(guò)度翻譯、翻譯不充分的問(wèn)題,提升了命名實(shí)體翻譯效果。設(shè)計(jì)實(shí)現(xiàn)了基于注意力機(jī)制和改進(jìn)字節(jié)對(duì)編碼的漢藏神經(jīng)機(jī)器翻譯模型,部署在陽(yáng)光漢藏機(jī)器翻譯網(wǎng)站,實(shí)現(xiàn)了該漢藏神經(jīng)機(jī)器翻譯系統(tǒng)的應(yīng)用推廣。本文漢藏機(jī)器翻譯系統(tǒng)的模型具有語(yǔ)言無(wú)關(guān)性,完全可以應(yīng)用到藏漢神經(jīng)機(jī)器翻譯研究中。
由于漢藏神經(jīng)機(jī)器翻譯目前缺乏大規(guī)模雙語(yǔ)數(shù)據(jù),而藏語(yǔ)單語(yǔ)語(yǔ)料比較充足,所以下一步將利用格到序列、半監(jiān)督和無(wú)監(jiān)督方法提升翻譯效果。
共享和開(kāi)放是計(jì)算語(yǔ)言學(xué)(自然語(yǔ)言處理)研究的發(fā)展趨勢(shì),該工作在漢英機(jī)器翻譯技術(shù)領(lǐng)域獲得了很好的進(jìn)展,免費(fèi)開(kāi)放了一些漢英英漢雙語(yǔ)平行語(yǔ)料,使得漢英機(jī)器翻譯技術(shù)具有可比性和競(jìng)爭(zhēng)性。漢藏機(jī)器翻譯研究語(yǔ)言資源較少,沒(méi)有公開(kāi)的語(yǔ)料,而且資源問(wèn)題一直是困擾神經(jīng)機(jī)器翻譯研究和產(chǎn)業(yè)化的首要問(wèn)題[29]。為此,我們開(kāi)放了部分實(shí)驗(yàn)數(shù)據(jù)和藏文地名詞典(獲取地址:https://github.com/toudancairang/Tibetan-Computationallinguistics/tree/master),希望吸引更多的人參與其中,建立藏文資源開(kāi)放平臺(tái),推動(dòng)藏語(yǔ)計(jì)算語(yǔ)言學(xué)(藏語(yǔ)自然語(yǔ)言處理)研究,促進(jìn)中文信息處理技術(shù)的整體發(fā)展。
致謝:該模型的構(gòu)建得到了中科院計(jì)算所自然語(yǔ)言處理實(shí)驗(yàn)室同仁的大力支持。