周成彬 劉忠寶,2,3
1.中北大學(xué)軟件學(xué)院 太原 030051;
2.北京語(yǔ)言大學(xué)語(yǔ)言智能研究院 北京 100083;
3.泉州信息工程學(xué)院軟件學(xué)院 泉州 362000
中國(guó)古代歷史典籍不僅是中國(guó)獨(dú)特的文化遺產(chǎn),也是世界文明的瑰寶。然而,隨著語(yǔ)言在漫長(zhǎng)的歷史演變過(guò)程中,現(xiàn)代人要理解甚至創(chuàng)作古代作品變得相當(dāng)困難。首先,現(xiàn)代文追求通俗易懂與口語(yǔ)化,而古文追求行文簡(jiǎn)練且有許多特殊句式,兩者的語(yǔ)法順序大不相同。其次,古文單詞多為單音節(jié)詞,而現(xiàn)代文單詞多為雙音節(jié)。因此,翻譯在彌合這兩個(gè)時(shí)代方面發(fā)揮著關(guān)鍵作用。對(duì)于傳統(tǒng)的人工翻譯而言,中華古籍的翻譯是一項(xiàng)非常困難且耗時(shí)的工作,雖然能夠取得高質(zhì)量的譯文,但是對(duì)翻譯者的文化水平要求很高,且需要耗費(fèi)大量的人力和時(shí)間,成本太高。而隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,為了順應(yīng)時(shí)代的需要,利用計(jì)算機(jī)進(jìn)行自動(dòng)翻譯的機(jī)器翻譯(Machine Translation,MT)技術(shù)越來(lái)越成熟。近年來(lái),隨著大數(shù)據(jù)、云計(jì)算、人工智能等技術(shù)的快速發(fā)展,基于語(yǔ)料庫(kù)的機(jī)器翻譯逐漸占據(jù)主流,其中,又以基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯最為典型。通過(guò)使用基于深度學(xué)習(xí)的神經(jīng)機(jī)器翻譯技術(shù)對(duì)古籍文獻(xiàn)進(jìn)行自動(dòng)翻譯對(duì)我們了解歷史、學(xué)習(xí)優(yōu)秀傳統(tǒng)文化,繼承和發(fā)揚(yáng)中華民族精神具有重要意義。
機(jī)器翻譯是利用計(jì)算機(jī)自動(dòng)將一種自然語(yǔ)言(源語(yǔ)言)轉(zhuǎn)換為另一種自然語(yǔ)言(目標(biāo)語(yǔ)言)的過(guò)程[1]。機(jī)器翻譯是自然語(yǔ)言處理的一個(gè)研究分支,也是人工智能的終極目標(biāo)之一,具有重要的科學(xué)研究?jī)r(jià)值。機(jī)器翻譯于20世紀(jì)30年代初露端倪,如今已取得突破性進(jìn)展。從歷時(shí)視角來(lái)看,機(jī)器翻譯大致經(jīng)歷過(guò)兩種范式:語(yǔ)言學(xué)范式和語(yǔ)料庫(kù)學(xué)范式,前者為基于規(guī)則的機(jī)器翻譯,后者則為基于語(yǔ)料庫(kù)的機(jī)器翻譯。目前主流的機(jī)器翻譯為的神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯[2](Neural Machine Translation,NMT), 相 比于傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯[3](Statistical Machine Translation,SMT)而言,NMT能夠訓(xùn)練一張從一個(gè)序列映射到另一個(gè)序列的神經(jīng)網(wǎng)絡(luò),輸出的可以是一個(gè)變長(zhǎng)的序列,NMT其實(shí)是一個(gè)Encoder-Decoder[4]系統(tǒng),Encoder把源語(yǔ)言序列進(jìn)行編碼,并提取源語(yǔ)言中信息,通過(guò)Decoder再把這種信息轉(zhuǎn)換到另一種語(yǔ)言即目標(biāo)語(yǔ)言中來(lái),從而完成對(duì)語(yǔ)言的翻譯。隨著基于循環(huán)神經(jīng) 網(wǎng) 絡(luò)[5](Recurrent Neural Network,RNN)的序列到序列框架[6](Sequence to Sequence,seq2seq)、注 意 力機(jī) 制[7](Attention Mecha-nism)以及基于純注意力機(jī)制的Transformer模型[8]的提出,NMT的翻譯質(zhì)量得到了巨大的提升,徹底取代了SMT成為了主流的機(jī)器翻譯技術(shù)。
目前NMT在許多雙語(yǔ)翻譯研究上取得了巨大的成效,如中英、中俄,英德等不同語(yǔ)種間的互譯,然而在古文到現(xiàn)代文之間的語(yǔ)內(nèi)互譯的研究還比較少。本文根據(jù)古文與現(xiàn)代文屬于同一語(yǔ)言,共享大量詞匯的特點(diǎn),提出一種基于語(yǔ)義信息共享的Transformer機(jī)器翻譯模型。使用由NiuTrans Open Source(NOS)①https://github.com/NiuTrans/Classical-Modern開(kāi)源的古今平行語(yǔ)料數(shù)據(jù)集,并使用BLEU(Bilingual Evaluation Understudy)[9]值對(duì)模型進(jìn)行評(píng)估,取得31.4的BLEU值,譯文質(zhì)量良好,達(dá)到了機(jī)器翻譯的效果。
目前古文到現(xiàn)代文的翻譯還是以人工翻譯為主,人工翻譯需要專家準(zhǔn)確的理解古文,這就要求翻譯者有較高的文化水平,翻譯者的數(shù)量有限。人工翻譯需要耗費(fèi)大量的人力和時(shí)間,且難以實(shí)現(xiàn)即時(shí)翻譯。隨著計(jì)算機(jī)和互聯(lián)網(wǎng)的發(fā)展,利用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)即時(shí)自動(dòng)的翻譯成為了研究熱點(diǎn)。Liu[10]提出了利用知識(shí)圖譜理論從古文到現(xiàn)代文的翻譯思路,知識(shí)圖譜具有很強(qiáng)的句子表達(dá)能力,對(duì)人工翻譯有巨大幫助,但是難以實(shí)現(xiàn)自動(dòng)翻譯。王爽等[11]利用基于規(guī)則的機(jī)器翻譯技術(shù)實(shí)現(xiàn)了一個(gè)古文自動(dòng)翻譯系統(tǒng),能夠?qū)崿F(xiàn)部分古文獻(xiàn)的翻譯和標(biāo)注。韓芳等[12]利用句本位句法相關(guān)規(guī)則構(gòu)造知識(shí)庫(kù),使用詞義消岐算法,對(duì)古文進(jìn)行基于規(guī)則和統(tǒng)計(jì)相結(jié)合的機(jī)器翻譯研究。基于規(guī)則的機(jī)器翻譯需要構(gòu)建大量的規(guī)則,成本高,且翻譯的句子比較生硬,譯文質(zhì)量低。郭銳等[13]建立古文句子的全文索引,基于漢字的信息熵完成最相似古文句的高效檢索,為基于實(shí)例方法的古今漢語(yǔ)的機(jī)器翻譯奠定了基礎(chǔ)。王爽等[14]提出了基于實(shí)例的古文機(jī)器翻譯系統(tǒng),該系統(tǒng)需要構(gòu)建一個(gè)句對(duì)齊和字對(duì)齊的語(yǔ)料庫(kù),系統(tǒng)根據(jù)語(yǔ)言學(xué)知識(shí)對(duì)源語(yǔ)句進(jìn)行語(yǔ)法分析,然后在語(yǔ)料庫(kù)中進(jìn)行匹配分析,結(jié)合一定的語(yǔ)法規(guī)則輸出譯文?;趯?shí)例的機(jī)器翻譯方法有明顯的缺點(diǎn),系統(tǒng)復(fù)雜,效率低,翻譯質(zhì)量不高,對(duì)于語(yǔ)料庫(kù)中沒(méi)有的句子難以實(shí)現(xiàn)正確的翻譯。楊欽[15]基于對(duì)統(tǒng)計(jì)機(jī)器翻譯系統(tǒng)Moses進(jìn)行優(yōu)化實(shí)現(xiàn)古漢語(yǔ)到現(xiàn)代漢語(yǔ)的翻譯。統(tǒng)計(jì)機(jī)器翻譯有很強(qiáng)的詞匯和短語(yǔ)翻譯能力,但是對(duì)譯文語(yǔ)序的調(diào)序能力較差,難以實(shí)現(xiàn)對(duì)長(zhǎng)句子和復(fù)雜句子的順暢翻譯。Zhang等[16]提出具有復(fù)制機(jī)制和局部注意力機(jī)制的端到端的神經(jīng)網(wǎng)絡(luò)模型來(lái)實(shí)現(xiàn)古文到現(xiàn)代文的互譯。由于使用神經(jīng)網(wǎng)絡(luò)模型需要大量的基于句子對(duì)齊的平行語(yǔ)料數(shù)據(jù)進(jìn)行訓(xùn)練,他們提出一種無(wú)監(jiān)督算法,該算法利用古今對(duì)齊的句子對(duì)之間存在許多相同的漢字的特點(diǎn)來(lái)構(gòu)建古今句子對(duì)齊的語(yǔ)料庫(kù)。為了獲得更多的古今句對(duì)齊語(yǔ)料來(lái)提高翻譯質(zhì)量,Liu等[17]根據(jù)古現(xiàn)代漢語(yǔ)的特點(diǎn)提出了一種古今從句對(duì)齊方法,該方法將詞法信息與統(tǒng)計(jì)信息相結(jié)合,數(shù)據(jù)集的構(gòu)建包括平行語(yǔ)料庫(kù)的爬取和清洗、段落對(duì)齊、基于對(duì)齊段落的子句對(duì)齊以及通過(guò)合并對(duì)齊的相鄰子句來(lái)擴(kuò)充數(shù)據(jù)等四步,創(chuàng)建了一個(gè)包含1.24萬(wàn)對(duì)古今雙語(yǔ)句對(duì)齊的語(yǔ)料庫(kù)。在平行語(yǔ)料匱乏的情況下,Chang等[18]將翻譯任務(wù)構(gòu)建為多標(biāo)簽預(yù)測(cè)任務(wù),模型除了預(yù)測(cè)出翻譯外還預(yù)測(cè)出古文的年代信息,將年代信息作為輔助,再加上按時(shí)間順序的上下文作為輔助信息來(lái)提高模型的翻譯質(zhì)量。魏家澤[19]構(gòu)建了基于外部知識(shí)協(xié)同的古文到現(xiàn)代文的機(jī)器翻譯模型,通過(guò)句內(nèi)片段協(xié)同、注釋信息協(xié)同和語(yǔ)言知識(shí)協(xié)同的三維外部知識(shí)的聯(lián)合使用,有效提升了古文到現(xiàn)代文的機(jī)器翻譯性能。
對(duì)以上相關(guān)研究進(jìn)行梳理可以發(fā)現(xiàn),古文的機(jī)器翻譯研究還存在以下幾點(diǎn)問(wèn)題:一是平行語(yǔ)料匱乏,缺乏大規(guī)模高質(zhì)量的古今平行語(yǔ)料集,難以在深度學(xué)習(xí)[20](Deep Learning,DL)模型上獲得令人滿意的效果。本文使用的數(shù)據(jù)集是由NOS開(kāi)源的古今平行語(yǔ)料集,該語(yǔ)料集大小為151 MB共97.5萬(wàn)條古今平行句子對(duì),基本涵蓋了大部分經(jīng)典古籍著作,是目前已知的最大規(guī)模的古今平行語(yǔ)料集,可以滿足本模型的需求。二是未能有效的利用古文與現(xiàn)代文屬于同一語(yǔ)種的優(yōu)勢(shì)。基于此,本文提出了一種簡(jiǎn)單有效的方法,通過(guò)共享詞表和嵌入層參數(shù)實(shí)現(xiàn)古文與現(xiàn)代文中相同詞匯的語(yǔ)義信息共享,通過(guò)實(shí)驗(yàn)證明這有效的提升了機(jī)器翻譯性能。三是漢語(yǔ)時(shí)代差異的問(wèn)題,我國(guó)漢語(yǔ)歷史悠久,每個(gè)朝代的語(yǔ)言風(fēng)格不同,不同朝代的文字,即使相同,含義相差也很大。在已有研究中,大多是通過(guò)以年代信息或者引入外部知識(shí)作為輔助來(lái)提高翻譯的準(zhǔn)確性,但是在對(duì)未知年代信息和沒(méi)有外部知識(shí)的古文進(jìn)行翻譯時(shí),效果就會(huì)下降。本文旨在訓(xùn)練一個(gè)對(duì)古文進(jìn)行翻譯時(shí)無(wú)需引入任何外部知識(shí),可以直接對(duì)原始古文句子進(jìn)行高質(zhì)量翻譯的模型,故本文使用完全基于注意力機(jī)制的深度學(xué)習(xí)模型Transformer進(jìn)行訓(xùn)練,相比于傳統(tǒng)的基于RNN或CNN[21]的seq2seq模型,Transformer對(duì)句子有更強(qiáng)的全局信息感知能力,可以學(xué)習(xí)到句子的內(nèi)部依賴關(guān)系,只要各個(gè)朝代的平行語(yǔ)料足夠,模型就可以學(xué)到各個(gè)朝代的翻譯風(fēng)格,在對(duì)多義詞進(jìn)行翻譯時(shí),模型會(huì)結(jié)合上下文信息對(duì)該詞進(jìn)行最符合句子語(yǔ)境的翻譯。
Transformer是一個(gè)Encoder-Decoder架構(gòu),其整體結(jié)構(gòu)如圖1所示,它由編碼器和解碼器兩部分組成。輸入古文,通過(guò)編碼器輸出對(duì)應(yīng)的上下文向量,與RNN將源語(yǔ)句壓縮為一個(gè)上下文向量不同,Transformer的編碼器將會(huì)得到與輸入序列等長(zhǎng)的上下文向量,且可以對(duì)輸入的每個(gè)單詞進(jìn)行并行處理。解碼器將編碼器輸出的上下文向量作為輸入,最終輸出現(xiàn)代文。
圖1 Transformer整體結(jié)構(gòu)
Transformer的編碼器部分和解碼器部分都是由多個(gè)相同的層疊加組成的,其內(nèi)部結(jié)構(gòu)如圖2所示,左邊是編碼器部分,右邊是解碼器部分。每個(gè)編碼器層由兩個(gè)子層組成,第一個(gè)子層是多頭自注意力層,第二個(gè)子層是一個(gè)基于位置的全連接前饋網(wǎng)絡(luò)。為了更好的優(yōu)化深度網(wǎng)絡(luò)防止網(wǎng)絡(luò)退化和避免梯度爆炸或消失,每個(gè)子層都添加了殘差連接[22]和進(jìn)行了層歸一化[23]。每個(gè)解碼器層由三個(gè)子層組成,且每個(gè)子層也都使用了殘差連接和層歸一化。第一個(gè)子層為掩碼多頭自注意力層,其掩碼機(jī)制使得模型保留了自回歸屬性,確保預(yù)測(cè)僅依賴于已生成的輸出詞元[8]。第二個(gè)子層為多頭注意力層,用來(lái)接收編碼器的輸出。解碼器的輸出結(jié)果最后還需要通過(guò)一層線性層和softmax層,線性層輸出一個(gè)大小等于目標(biāo)語(yǔ)言詞匯表大小的向量。然后通過(guò)softmax層得到每個(gè)詞向量的概率,并選擇概率最高的詞向量作為當(dāng)前位置的輸出。
圖2 Transformer內(nèi)部結(jié)構(gòu)
古文與現(xiàn)代文之間存在大量語(yǔ)義相同或相近的詞元,為了使模型的編碼器和解碼器能共享這些語(yǔ)義信息,本文提出了兩個(gè)簡(jiǎn)單有效的方法。一是在構(gòu)建詞表時(shí),古文與現(xiàn)代文共用一個(gè)詞表,在對(duì)句子做嵌入時(shí),編碼器只激活古文的Embedding,解碼器只激活現(xiàn)代文的Embedding,雖然詞表變大了但是并不會(huì)影響模型的性能,且可以幫助編碼器和解碼器共享語(yǔ)義相同的詞。針對(duì)漢語(yǔ)中同一個(gè)文字在不同詞組中含義不同的問(wèn)題,本文在構(gòu)建詞表時(shí)以詞為粒度對(duì)句子進(jìn)行切分,模型對(duì)多義字進(jìn)行翻譯時(shí)會(huì)根據(jù)其所組成的詞組進(jìn)行對(duì)應(yīng)的翻譯。而針對(duì)同一個(gè)詞在不同朝代含義不同的問(wèn)題,則是通過(guò)模型對(duì)該朝代大量平行句子對(duì)進(jìn)行訓(xùn)練從而獲得該朝代的表述特征和特有語(yǔ)義,結(jié)合句子上下文信息對(duì)多義詞進(jìn)行翻譯。共享詞表還可以有效的減少低頻詞,增加模型的泛化能力,提升機(jī)器翻譯的效果。二是Transformer的編碼器和解碼器共享嵌入層參數(shù),嵌入層的作用是通過(guò)向量化對(duì)句子進(jìn)行表征,共享嵌入層可以有效利用古文與現(xiàn)代文屬于同一語(yǔ)種的優(yōu)勢(shì),對(duì)于語(yǔ)義信息相同的詞在翻譯過(guò)程中的一致性可以更好的建模。共享嵌入層參數(shù)還可以減少模型的參數(shù)數(shù)量,加快模型的收斂速度。
Transformer模型沒(méi)有使用任何循環(huán)神經(jīng)網(wǎng)絡(luò)或卷積神經(jīng)網(wǎng)絡(luò),而是完全依賴于注意力機(jī)制進(jìn)行計(jì)算。而注意力機(jī)制是對(duì)序列進(jìn)行并行計(jì)算,不是進(jìn)行順序計(jì)算,不能獲取到序列間的位置信息。為了使模型知道輸入序列的位置信息,所以在模型底部的嵌入層后加上了位置編碼層。位置編碼向量的維度與嵌入表示的詞向量維度相同,二者可以直接進(jìn)行相加。位置編碼可以是可學(xué)習(xí)也可以是固定的,本文使用的是基于正弦函數(shù)和余弦函數(shù)的固定位置編碼,位置編碼的計(jì)算如公式(1)、(2)所示。
其中PE指的是位置編碼矩陣,pos表示當(dāng)前詞在序列中的具體位置,i表示詞向量的第i個(gè)維度,dmodel表示詞向量的維度大小。假設(shè)輸入序列的長(zhǎng)度為60,向量維度為32,其位置編碼如圖3所示,橫坐標(biāo)表示序列中每個(gè)詞的位置,縱坐標(biāo)表示位置向量的值,每條曲線表示每個(gè)維度的位置向量。
圖3 長(zhǎng)度為60,維度為32的正余弦位置編碼示例圖
Transformer的核心就是注意力機(jī)制。注意力機(jī)制可以使神經(jīng)網(wǎng)絡(luò)有選擇性的關(guān)注重要信息,忽略無(wú)關(guān)信息。其核心內(nèi)容為根據(jù)query、key和value,通過(guò)注意力函數(shù)后輸出value的加權(quán)和,query、key和value都是向量。注意力函數(shù)的具體計(jì)算過(guò)程可以分為三步:第一步使用注意力評(píng)分函數(shù)sim計(jì)算出query、key二者的相似度得到注意力分?jǐn)?shù),第二步使用softmax函數(shù)將注意力分?jǐn)?shù)進(jìn)行歸一化得到一個(gè)概率分布作為注意力權(quán)重,注意力權(quán)重系數(shù)之和為1,第三步根據(jù)注意力權(quán)重對(duì)value做加權(quán)求和。在計(jì)算時(shí),一般將一組query、key、value分別組合成矩陣Q、K、V。注意力函數(shù)的計(jì)算公式如式(3)所示。
Transformer使用的是縮放點(diǎn)積注意力,其結(jié)構(gòu)如圖4所示,注意力評(píng)分函數(shù)使用的是點(diǎn)積函數(shù)。為了避免點(diǎn)積的值太大,在計(jì)算出Q和K的注意力分?jǐn)?shù)后要除以進(jìn)行縮放。dk是矩陣K的維度,如果dk太大,點(diǎn)積得到的值會(huì)較大,經(jīng)過(guò)softmax操作之后產(chǎn)生的梯度太小,不利于模型的訓(xùn)練。
圖4 縮放點(diǎn)積注意力
縮放點(diǎn)積注意力的公式如式(4)所示。
對(duì)于自注意力而言,Q、K、V都是由同一個(gè)輸入序列X(a,……,an)分別乘以三個(gè)權(quán)重矩陣Wq、Wk、Wv進(jìn)行線性變換得到的,如公式(5~7)所示。
由于Q、K、V都來(lái)自于同一個(gè)序列,在對(duì)句子進(jìn)行注意力編碼時(shí),當(dāng)前位置的詞會(huì)過(guò)度關(guān)注于自身,而忽略其他位置。為了解決這個(gè)問(wèn)題,模型使用了多頭自注意力機(jī)制,其結(jié)構(gòu)如圖5所示。多頭自注意力機(jī)制就是將Q、K、V映射到多組不同的子空間進(jìn)行自注意力計(jì)算,然后再將每個(gè)不同的自注意力結(jié)果進(jìn)行拼接,最后進(jìn)行一次線性變換輸出。多頭注意力機(jī)制可以使模型學(xué)習(xí)到不同子空間的信息,增強(qiáng)了模型的表達(dá)能力。
圖5 多頭自注意力
多頭自注意力機(jī)制的公式如式(8~9)所示。
位置前饋網(wǎng)絡(luò)(Feed Forward Neural Network,F(xiàn)FN)是由兩層線性變換組成的多層感知機(jī),兩層線性變換之間使用Relu激活函數(shù)進(jìn)行連接,且參數(shù)不共享。位置前饋網(wǎng)絡(luò)的公式如式(10)所示。
其中,x代表輸入,W1表示第一次線性變換的參數(shù)矩陣,b1表示第一次線性變換的偏置向量,W2表示第二次線性變換的參數(shù)矩陣,b2表示第二次線性變換的偏置向量。
本文使用的數(shù)據(jù)集是由東北大學(xué)NLP實(shí)驗(yàn)室和Niutrans Research維護(hù)的NOS開(kāi)源的中文古今平行語(yǔ)料集,該語(yǔ)料集共約97萬(wàn)句對(duì),基本涵蓋了大部分經(jīng)典古籍著作,部分樣本數(shù)據(jù)展示如表1所示。
表1 古今對(duì)齊語(yǔ)料展示
在使用數(shù)據(jù)集訓(xùn)練模型之前,需要對(duì)數(shù)據(jù)集進(jìn)行劃分。首先將所有數(shù)據(jù)進(jìn)行隨機(jī)打亂以增強(qiáng)模型的泛化能力,然后將模型劃分為三組:訓(xùn)練集、驗(yàn)證集和測(cè)試集,大致按照8:2:2的比例進(jìn)行劃分,三個(gè)數(shù)據(jù)集的統(tǒng)計(jì)信息如表2所示,訓(xùn)練集共955096條句對(duì),驗(yàn)證集和測(cè)試集都為10000條句對(duì)。
表2 數(shù)據(jù)集劃分
機(jī)器翻譯模型不能識(shí)別原始數(shù)據(jù),在進(jìn)行機(jī)器翻譯訓(xùn)練前需要對(duì)數(shù)據(jù)集進(jìn)行以下幾步處理:分詞、制作詞表、將文本序列轉(zhuǎn)化為數(shù)字序列、構(gòu)造小批量數(shù)據(jù)。
第一步分詞也叫做詞元化,就是將文本切分為一個(gè)個(gè)獨(dú)立的詞。本文對(duì)古文使用的Jiayan②https://github.com/jiaeyan/Jiayan分詞,Jiayan是一款專注于古漢語(yǔ)處理的NLP工具包,Jiayan分詞有兩種分詞算法,一是利用無(wú)監(jiān)督、無(wú)詞典的N元語(yǔ)法和隱馬爾可夫模型進(jìn)行古文自動(dòng)分詞,二是利用詞庫(kù)構(gòu)建功能產(chǎn)生的文言詞典,基于有向無(wú)環(huán)詞圖、句子最大概率路徑和動(dòng)態(tài)規(guī)劃算法進(jìn)行分詞,本文使用的是第一種分詞算法。本文對(duì)現(xiàn)代文使用的是Jieba③https://github.com/fxsjy/jieba分詞,Jieba分詞是一款優(yōu)秀的中文分詞工具,其分詞原理為首先基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無(wú)環(huán)圖(DAG),然后采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑,找出基于詞頻的最大切分組合,對(duì)于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法。古文使用Jiayan分詞后的效果如表3所示,現(xiàn)代文使用Jieba分詞的效果如表4所示。
表3 古文分詞
表4 現(xiàn)代文分詞
第二步制作詞表,就是根據(jù)分詞后的結(jié)果對(duì)源語(yǔ)言和目標(biāo)語(yǔ)言別分建立一個(gè)字典。由于古文與現(xiàn)代文使用的都是簡(jiǎn)體漢字,屬于語(yǔ)內(nèi)翻譯,所以本文中使用古文分詞后的結(jié)果和現(xiàn)代文分詞后的結(jié)果共同建立了一個(gè)詞表。在機(jī)器翻譯中,只需要使用訓(xùn)練集的數(shù)據(jù)進(jìn)行詞表的創(chuàng)建而不使用驗(yàn)證集和測(cè)試集的數(shù)據(jù)。還指除此之外,定了三個(gè)額外的特殊詞元,<unk>用以統(tǒng)一表示低頻詞和未知詞,<pad>用來(lái)進(jìn)行填充,<bos>作為開(kāi)始詞元,<eos>作為結(jié)束詞元。統(tǒng)計(jì)去除低頻詞后的訓(xùn)練集的詞表大小如表5所示。
表5 詞表統(tǒng)計(jì)
第三步將文本序列轉(zhuǎn)化為數(shù)字序列,就是將分詞后的文本序列通過(guò)查表轉(zhuǎn)化為數(shù)字序列。數(shù)字化的效果如表6所示。
表6 文本序列數(shù)字化
第四步是構(gòu)建小批量數(shù)據(jù)。由于計(jì)算機(jī)的內(nèi)存有限,模型進(jìn)行訓(xùn)練時(shí)不能一次性進(jìn)行全局訓(xùn)練,而是將數(shù)據(jù)打包成批量大小相同的小批量數(shù)據(jù)(batch)進(jìn)行訓(xùn)練。由于每條句子的長(zhǎng)度不相同,在構(gòu)造小批量數(shù)據(jù)時(shí),以每個(gè)batch中最長(zhǎng)的序列為標(biāo)準(zhǔn),使用<pad>進(jìn)行補(bǔ)齊,同時(shí)在序列的開(kāi)始添加<bos>,在結(jié)尾添加 <eos>。
實(shí)驗(yàn)環(huán)境如表7所示。
表7 實(shí)驗(yàn)環(huán)境與配置
模型的相關(guān)參數(shù)設(shè)置如表8所示。模型訓(xùn)練時(shí)使用帶掩碼的交叉熵?fù)p失函數(shù)(CrossEntropyLoss),在計(jì)算損失時(shí)會(huì)自動(dòng)忽略所有的<pad>。模型使用的優(yōu)化器為Adam。模型進(jìn)行預(yù)測(cè)時(shí)使用搜索策略為束搜索(beamsearch),束寬(beam_size)設(shè)置為5。
表8 模型參數(shù)設(shè)置
BLEU是機(jī)器翻譯中常用的評(píng)價(jià)指標(biāo),它可以對(duì)模型生成的句子和實(shí)際的目標(biāo)句子進(jìn)行相似度評(píng)估,BLEU的取值在0到1之間,0表示兩個(gè)句子完全不匹配,1表示兩個(gè)句子完美匹配。通常也可以將BLEU的值乘以100來(lái)作為指標(biāo)。BLEU的原理是通過(guò)對(duì)預(yù)測(cè)句子的N-grams的與實(shí)際句子的N-grams詞進(jìn)行匹配,計(jì)算出各階N-grams詞的精度,由于預(yù)測(cè)的句子越短,匹配的難度越容易,所以引入了簡(jiǎn)短懲罰因子(Brevity Penalty,bp)。BLEU的計(jì)算公式如式(11)所示。
其中,N最大值取4,即4-grams。BP為懲罰因子表達(dá)式如式(12)所示,Pn為N-grams精度表示式如式(13)所示。
其中c是機(jī)器翻譯句子的長(zhǎng)度,r是實(shí)際句子的長(zhǎng)度。
其中,分母為機(jī)器翻譯句子中n-gram詞組的總數(shù),分子為機(jī)器翻譯句子中的詞組能與實(shí)際句子匹配得上的個(gè)數(shù)。
本文使用的模型為基于語(yǔ)義信息共享的Transformer模型,為了驗(yàn)證本模型的有效性,使用相同的數(shù)據(jù)集在以下幾個(gè)經(jīng)典模型上進(jìn)行實(shí)驗(yàn),此外本文還對(duì)比了相關(guān)研究中所提文獻(xiàn)的實(shí)驗(yàn)結(jié)果。
(1)以單層GRU[24]構(gòu)成seq2seq模型。
(2)以兩層LSTM+Attention構(gòu)成的seq2seq模型。
(3)基準(zhǔn)的Transformer模型。
(4)seq2seq+Copy+Local Attention模型[16]。該模型是由Zhang等提出具有復(fù)制機(jī)制和局部注意力機(jī)制的端到端的神經(jīng)網(wǎng)絡(luò)模型。
(5)Transformer+Augment模型[17]。該模型是由Liu等提出的基于數(shù)據(jù)增強(qiáng)的Transformer模型。
(6)Time-Aware Ancient Chinese Text Translation模型[18]。該模型是由Chang等提出的具有時(shí)間感知的古文翻譯模型。
(7)Seg+sub+stage-M5模型[19]。該模型是由魏家澤提出的基于外部知識(shí)協(xié)同的古文翻譯模型,是通過(guò)注釋信息協(xié)同(Sub)、句內(nèi)片段協(xié)同(Seg)和語(yǔ)言知識(shí)協(xié)同(Stage)綜合起來(lái)的三維聯(lián)合協(xié)同的翻譯模型。
(8)語(yǔ)義信息共享的Transformer模型,即本文所提出的模型。
各模型的實(shí)驗(yàn)結(jié)果如表9所示。從實(shí)驗(yàn)的結(jié)果可以看出,兩層LSTM+Attention模型比單層的GRU模型的BLEU值高出了11.57,證明更深的網(wǎng)絡(luò)和Attention機(jī)制的引入能給模型帶來(lái)巨大的提升。基準(zhǔn)Transformer的機(jī)器翻譯模型比兩層LSTM+Attention模型的高了1.78的BLEU值,這是因?yàn)門(mén)ransformer對(duì)比LSTM有更強(qiáng)的序列建模能力和全局信息感知能力,Transformer能更好的提取句子的語(yǔ)義信息,在語(yǔ)義表達(dá)上也更強(qiáng)。語(yǔ)義信息共享的Transformer比基準(zhǔn)Transformer的BLEU值高了13.41,能取得如此大幅度提升的原因在于,共享詞表和嵌入層參數(shù)能有效利用古文與現(xiàn)代文是同一語(yǔ)種的優(yōu)勢(shì)。此外,本文所提出的模型效果也高于其他文獻(xiàn)中所提出的模型,證明了使深度學(xué)習(xí)模型自動(dòng)學(xué)習(xí)和利用古文與現(xiàn)代文之間語(yǔ)義相同的特征比通過(guò)對(duì)模型使用復(fù)制機(jī)制或引入外部知識(shí)更有效果。從人工翻譯的角度來(lái)看,不同語(yǔ)種之間的翻譯比同一語(yǔ)種內(nèi)的翻譯要困難得多,因?yàn)橥徽Z(yǔ)種不但使用同一種文字,還共享很多意思相同或相近的詞。共享詞表與嵌入層參數(shù)即對(duì)源語(yǔ)言和目標(biāo)語(yǔ)言使用了同一種表達(dá),更容易獲得兩者之間的聯(lián)系。
表9 實(shí)驗(yàn)結(jié)果
同一句古文使用不同的模型進(jìn)行翻譯,更能看出各模型的翻譯效果,由于缺少其他文獻(xiàn)的樣本數(shù)據(jù),本文只展示傳統(tǒng)模型及本文所提模型的翻譯樣本。樣本展示如表10所示。
表10 模型翻譯樣本展示
從表中可以看出基于語(yǔ)義信息共享的Transformer模型的翻譯效果最佳,特別是在對(duì)長(zhǎng)句子的翻譯上。雖然本文提出的模型在古文翻譯上要優(yōu)于其他模型,但是還是存在一些缺點(diǎn)。如在對(duì)句子“孝文三年坐不敬,國(guó)除?!钡姆g中,模型翻譯為“孝文帝三年前,他犯有不敬之罪,封國(guó)被廢除?!?,其中由于缺了上文,模型未能識(shí)別出主語(yǔ),而是將“孝文”作為了主語(yǔ)翻譯成了“孝文帝”,而實(shí)際上“孝文”在此處是和“三年”一起組成“孝文三年”指代時(shí)間。此外,模型在處理通假字時(shí)也會(huì)出現(xiàn)誤翻,如“身盡府種”,模型將其翻譯為“人的身體可以全部于官府播種”,實(shí)際上,“府種”為“浮腫”的意思,府,通“胕”。種,通“腫”。出現(xiàn)這些情況的原因是模型往往會(huì)將古漢語(yǔ)按照最常用的方式去進(jìn)行翻譯,除了古文中的這些特殊情況外,總體來(lái)說(shuō),本模型的翻譯效果良好,可以幫助人們更好的閱讀古文。
本文提出的基于語(yǔ)義信息共享的Transformer機(jī)器翻譯模型在對(duì)古文的翻譯中,優(yōu)于傳統(tǒng)seq2seq模型、基準(zhǔn)Transformer模型以及相關(guān)研究中所提文獻(xiàn)的模型。本文主要基于基準(zhǔn)Transformer做了兩點(diǎn)改變,一是在數(shù)據(jù)處理階段源語(yǔ)言和目標(biāo)語(yǔ)言共享同一個(gè)詞表,二是在模型訓(xùn)練階段編碼器和解碼器共享嵌入層參數(shù)。通過(guò)對(duì)實(shí)驗(yàn)結(jié)果的分析,本模型的翻譯效果良好,但在處理古文的通假字和缺乏上下文等特殊情況上還有待改進(jìn)。在后續(xù)研究中應(yīng)針對(duì)上述問(wèn)題進(jìn)行探討,以更進(jìn)一步提高譯文的質(zhì)量與準(zhǔn)確性。