李 強(qiáng),韓雅倩,肖 桐,2,朱靖波,2
(1. 東北大學(xué) 自然語(yǔ)言處理實(shí)驗(yàn)室,遼寧 沈陽(yáng) 110000; 2. 沈陽(yáng)雅譯網(wǎng)絡(luò)技術(shù)有限公司,遼寧 沈陽(yáng) 110000)
近年來(lái),由于神經(jīng)機(jī)器翻譯(neural machine translation, NMT)相關(guān)方法取得了極大突破,神經(jīng)機(jī)器翻譯在很多語(yǔ)言對(duì)間的翻譯任務(wù)上都取得了極佳的翻譯效果[1-4]。給定源語(yǔ)言句子,神經(jīng)機(jī)器翻譯可以直接對(duì)翻譯至目標(biāo)語(yǔ)言句子的最大條件概率進(jìn)行端到端建模[5]。目前,最常使用的神經(jīng)機(jī)器翻譯模型是基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)的編碼器—解碼器(encoder-decoder)架構(gòu)的模型[1]。在這一架構(gòu)中,通過(guò)基于循環(huán)神經(jīng)網(wǎng)絡(luò)的編碼器將源語(yǔ)言句子壓縮到一個(gè)固定維度的向量中,繼而一個(gè)基于循環(huán)神經(jīng)網(wǎng)絡(luò)的解碼器將這一固定維度的向量解碼至目標(biāo)語(yǔ)言翻譯結(jié)果。通過(guò)對(duì)門(mén)閥(gating)[1-2,6]和注意力(attention)[3-4]機(jī)制的探索,神經(jīng)機(jī)器翻譯模型在多種翻譯任務(wù)上的翻譯性能超過(guò)了傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯(statistical machine translation, SMT)模型[4,7-9]。由于神經(jīng)機(jī)器翻譯模型主要以標(biāo)準(zhǔn)的詞匯為基礎(chǔ)構(gòu)建翻譯模型,對(duì)數(shù)據(jù)的使用沒(méi)有進(jìn)行充分的挖掘,因此,在本文中,我們對(duì)神經(jīng)機(jī)器翻譯中的數(shù)據(jù)處理方法進(jìn)行更為深入的研究,包括對(duì)數(shù)據(jù)泛化方法以及短語(yǔ)生成方法的研究。
首先,我們將數(shù)據(jù)泛化方法引入神經(jīng)機(jī)器翻譯中。由于神經(jīng)機(jī)器翻譯中解碼器端需要在整個(gè)目標(biāo)語(yǔ)言詞匯表上進(jìn)行概率計(jì)算,因此當(dāng)詞匯表較大時(shí)(>200KB),訓(xùn)練幾乎無(wú)法正常完成。因此在訓(xùn)練標(biāo)準(zhǔn)的神經(jīng)機(jī)器翻譯模型時(shí),需要對(duì)詞匯表的規(guī)模進(jìn)行限制[1-2]。無(wú)法被建模的稀疏詞匯被稱(chēng)之為未登錄詞(out of vocabulary, OOV),在模型訓(xùn)練的過(guò)程中,所有的未登錄詞都被替換為特殊標(biāo)簽UNK。針對(duì)未登錄詞問(wèn)題,其中一種解決方案是,翻譯完成后根據(jù)注意力模型中的詞對(duì)齊為目標(biāo)語(yǔ)言翻譯結(jié)果中的UNK找到對(duì)應(yīng)的源語(yǔ)言詞匯,最終根據(jù)一個(gè)詞匯翻譯表將源語(yǔ)言詞匯翻譯至目標(biāo)語(yǔ)詞匯并嵌入到翻譯結(jié)果中[10];另外一種方法是對(duì)源語(yǔ)言和目標(biāo)語(yǔ)言數(shù)據(jù)中的詞匯通過(guò)子詞壓縮的方法,將所有的詞匯映射到有限規(guī)模的子詞上[11]。子詞方法目前得到了大范圍的推廣和應(yīng)用,基本上所有的在線(xiàn)翻譯系統(tǒng)和相關(guān)的評(píng)測(cè)系統(tǒng)中均應(yīng)用了這一壓縮技術(shù)。然而,這種子詞方法產(chǎn)生的副作用是造成錯(cuò)譯問(wèn)題。為了解決子詞方法中出現(xiàn)的這一問(wèn)題,本文通過(guò)對(duì)數(shù)字、時(shí)間、日期、人名、地名、組織機(jī)構(gòu)名等這些稀疏的詞語(yǔ)進(jìn)行識(shí)別、泛化以及翻譯,有效地提高了子詞方法的性能。
繼而,我們將短語(yǔ)知識(shí)引入端到端的神經(jīng)機(jī)器翻譯模型中。在基于統(tǒng)計(jì)的機(jī)器翻譯系統(tǒng)中,基于短語(yǔ)的機(jī)器翻譯模型[12-16]翻譯性能明顯優(yōu)于基于詞的翻譯模型[17]的翻譯性能,這說(shuō)明短語(yǔ)在翻譯建模的過(guò)程中起到了非常重要的作用。受到這一方法的啟發(fā),本文在子詞和數(shù)據(jù)泛化方法的基礎(chǔ)上,同時(shí)研究將短語(yǔ)知識(shí)融合到神經(jīng)機(jī)器翻譯模型中,最終對(duì)原始語(yǔ)料進(jìn)行了更為充分地利用。本文提出的短語(yǔ)生成算法建立在子詞算法的基礎(chǔ)上,以達(dá)到生成可控規(guī)模的短語(yǔ)的目的,將生成的短語(yǔ)內(nèi)嵌到神經(jīng)機(jī)器翻譯模型后,進(jìn)一步提高了神經(jīng)機(jī)器翻譯模型的翻譯質(zhì)量。
本文對(duì)神經(jīng)機(jī)器翻譯中的數(shù)據(jù)泛化和短語(yǔ)生成方法進(jìn)行研究。之所以同時(shí)對(duì)這兩種方法進(jìn)行研究,主要原因?yàn)橐韵滤狞c(diǎn):
(1) 本文提出的兩種優(yōu)化方法均是在神經(jīng)機(jī)器翻譯模型的數(shù)據(jù)層面進(jìn)行處理,即可以歸納為數(shù)據(jù)預(yù)處理中的一些方法研究。
(2) 這兩種方法在統(tǒng)計(jì)機(jī)器翻譯中得到廣泛應(yīng)用,如何將這些方法引入到神經(jīng)機(jī)器翻譯中還鮮有討論。
(3) 本文的兩種方法均針對(duì)子詞方法進(jìn)行討論,數(shù)據(jù)泛化方法主要是為了緩解子詞方法中出現(xiàn)的錯(cuò)譯問(wèn)題,短語(yǔ)生成則是以子詞算法為基礎(chǔ)進(jìn)行的。
(4) 這兩種方法同時(shí)對(duì)數(shù)據(jù)進(jìn)行處理,在分別取得不錯(cuò)效果的同時(shí),同時(shí)使用這兩種方法可以進(jìn)一步提高翻譯模型的翻譯質(zhì)量。
本文提出的兩種數(shù)據(jù)處理方法以子詞方法為基礎(chǔ),主要的貢獻(xiàn)點(diǎn)如下:
(1) 通過(guò)使用數(shù)據(jù)泛化方法,在解決子詞方法中出現(xiàn)的錯(cuò)譯問(wèn)題的基礎(chǔ)上進(jìn)一步緩解了數(shù)據(jù)稀疏問(wèn)題。
(2) 在子詞和泛化方法的基礎(chǔ)上,本文將短語(yǔ)引入到標(biāo)準(zhǔn)的神經(jīng)機(jī)器翻譯模型中,進(jìn)一步獲得了翻譯效果的提升。
(3) 在漢英和英漢翻譯任務(wù)上,本文提出方法的翻譯質(zhì)量與基線(xiàn)翻譯系統(tǒng)相比分別提高了1.3至1.2個(gè)BLEU值。
首先,在神經(jīng)機(jī)器翻譯模型中緩解未登錄詞問(wèn)題,已經(jīng)有了較多的相關(guān)工作。Luong等人[10]提出了一種簡(jiǎn)單的根據(jù)注意力模型生成詞對(duì)齊進(jìn)行未登錄詞替換的方法,該方法有效緩解了神經(jīng)機(jī)器翻譯模型中出現(xiàn)未登錄詞問(wèn)題。Jean等人[18]提出了一種基于重要性采樣的方法來(lái)解決目標(biāo)語(yǔ)詞表受限的問(wèn)題。其方法在訓(xùn)練的過(guò)程中,在不明顯降低訓(xùn)練速度的基礎(chǔ)上,可以使用非常大的目標(biāo)語(yǔ)言詞表進(jìn)行訓(xùn)練。在解碼的過(guò)程中,為了加速解碼,其通過(guò)選取整個(gè)目標(biāo)語(yǔ)詞表上的一個(gè)子集進(jìn)行解碼。Arthur等人[19]通過(guò)在神經(jīng)機(jī)器翻譯模型中引入外部詞匯來(lái)解決翻譯過(guò)程中的數(shù)據(jù)稀疏問(wèn)題。Sennrich等人[11]通過(guò)使用子詞的方法,將非常大的目標(biāo)語(yǔ)言詞表壓縮在一個(gè)有限的詞匯表上,取得了不錯(cuò)的效果,該方法是目前神經(jīng)機(jī)器翻譯中最常用的方法之一。
繼而,在將短語(yǔ)加入神經(jīng)機(jī)器翻譯模型中進(jìn)行建模的工作中,Stahlberg等人[20]提出了句法結(jié)構(gòu)指導(dǎo)的神經(jīng)機(jī)器翻譯,該方法通過(guò)簡(jiǎn)單地對(duì)神經(jīng)機(jī)器翻譯模型中定向搜索解碼算法進(jìn)行修改,將層次短語(yǔ)規(guī)則引入神經(jīng)機(jī)器翻譯模型中,取得了不錯(cuò)的翻譯效果。Tang等人[21]通過(guò)在神經(jīng)機(jī)器翻譯中引入短語(yǔ)記憶模塊(phrase memory)將外部的短語(yǔ)存儲(chǔ)到神經(jīng)機(jī)器翻譯模型中,在翻譯過(guò)程中對(duì)候選的翻譯片段使用短語(yǔ)記憶模塊進(jìn)行檢測(cè),提高了翻譯模型的翻譯質(zhì)量。Huang等人[8]通過(guò)使用Sleep-Wake(SWAN)網(wǎng)絡(luò)在神經(jīng)機(jī)器翻譯模型的輸出序列中對(duì)短語(yǔ)進(jìn)行建模并取得了不錯(cuò)的效果。
與這些工作不同的是,本文提出的方法建立在原始的雙語(yǔ)平行數(shù)據(jù)的基礎(chǔ)上,在數(shù)據(jù)中進(jìn)行泛化處理和短語(yǔ)生成,因此本文提出的方法是語(yǔ)料驅(qū)動(dòng)的方法。此外,本文方法可以直接應(yīng)用到任意的神經(jīng)機(jī)器翻譯架構(gòu)中。
本文的工作中,我們使用基于注意力機(jī)制的編碼器—解碼器結(jié)構(gòu)的神經(jīng)機(jī)器翻譯模型[1,4]?;谧⒁饬C(jī)制的神經(jīng)機(jī)器翻譯模型在翻譯推導(dǎo)的過(guò)程中,動(dòng)態(tài)地生成詞對(duì)齊和目標(biāo)語(yǔ)言的翻譯結(jié)果。圖1 是一個(gè)標(biāo)準(zhǔn)的基于注意力模型的神經(jīng)機(jī)器翻譯框架。
圖1 基于注意力機(jī)制的神經(jīng)機(jī)器翻譯架構(gòu)
給定源語(yǔ)言句子x=x1,...,xn和目標(biāo)語(yǔ)言句子y=y1,...,ym,基于注意力模型的神經(jīng)機(jī)器翻譯系統(tǒng)通過(guò)使用循環(huán)神經(jīng)網(wǎng)絡(luò)直接對(duì)條件概率py|x進(jìn)行建模,具體如式(1)所示。
在這里,sx為源語(yǔ)言句子x的固定維度的向量表示。n和m分別是源語(yǔ)言句子和目標(biāo)語(yǔ)言句子的長(zhǎng)度,t是時(shí)間戳。為了計(jì)算pyt|y 最終,訓(xùn)練目標(biāo)如式(4)所示。 在這里,D是平行訓(xùn)練數(shù)據(jù),最終的學(xué)習(xí)的目的是找到最優(yōu)的參數(shù)空間θ*。 子詞生成算法[11]是神經(jīng)機(jī)器翻譯中解決稀疏詞匯和未登錄詞匯的一種常用的方法,該方法將整個(gè)詞匯表壓縮在有限規(guī)模子詞之中。關(guān)于子詞方法的訓(xùn)練和使用算法,請(qǐng)參考文獻(xiàn)[11]。在神經(jīng)機(jī)器翻譯模型訓(xùn)練之前,先對(duì)平行訓(xùn)練數(shù)據(jù)進(jìn)行子詞切分操作,一般源語(yǔ)言和目標(biāo)語(yǔ)言的詞表大小壓縮至3~5萬(wàn)詞左右?;谧釉~的數(shù)據(jù)處理方法有效地將大規(guī)模詞表壓縮在有限規(guī)模的子詞詞表上,可以使神經(jīng)機(jī)器翻譯模型對(duì)所有詞匯進(jìn)行建模,因此表現(xiàn)出不錯(cuò)的翻譯效果。在漢語(yǔ)中使用基于子詞的方法,是將漢語(yǔ)中的字的概念與英文中的字母等同對(duì)體。然而,由于子詞方法將整個(gè)詞匯切分成片段,因此不可避免地發(fā)生錯(cuò)譯問(wèn)題。針對(duì)子詞方法中出現(xiàn)的錯(cuò)譯現(xiàn)象,本文提出了在子詞方法基礎(chǔ)上使用數(shù)據(jù)泛化方法來(lái)修復(fù)子詞方法中出現(xiàn)的錯(cuò)誤。 不可枚舉的、不是封閉集合的詞匯都是機(jī)器翻譯中常見(jiàn)的稀疏詞匯,比如數(shù)字、時(shí)間、日期、人名、地名、組織機(jī)構(gòu)名等。這些稀疏詞匯可以分為兩類(lèi),具體如下: (1) 數(shù)字、時(shí)間、日期: 可以通過(guò)正則表達(dá)式進(jìn)行雙語(yǔ)的詞匯識(shí)別,可以通過(guò)書(shū)寫(xiě)翻譯規(guī)則自動(dòng)生成對(duì)應(yīng)的目標(biāo)語(yǔ)言翻譯結(jié)果。 (2) 人名、地名、組織機(jī)構(gòu)名: 書(shū)寫(xiě)沒(méi)有任何規(guī)則,識(shí)別主要依賴(lài)詞典或者命名實(shí)體識(shí)別[23]的相關(guān)方法,提供翻譯需要依賴(lài)詞典。 在對(duì)含有這兩種類(lèi)型詞匯的語(yǔ)料進(jìn)行預(yù)處理后,可以將其按照表1中的規(guī)則進(jìn)行替換。即在語(yǔ)料中源語(yǔ)言端和目標(biāo)語(yǔ)言端識(shí)別出相應(yīng)的詞匯后,直接替換為其對(duì)應(yīng)的泛化類(lèi)型,具體如圖2所示,“北京”和“Beijing”被替換為“$location”,“習(xí)近平”和“Xi Jinping”被替換為“$person”,神經(jīng)機(jī)器翻譯直接使用泛化數(shù)據(jù)進(jìn)行模型訓(xùn)練。 表1 每種泛化類(lèi)型對(duì)應(yīng)的泛化標(biāo)簽 對(duì)于這些稀疏詞匯的識(shí)別,由于無(wú)法做到源語(yǔ)言和目標(biāo)語(yǔ)言中所有識(shí)別的結(jié)果都一致。為了在神經(jīng)機(jī)器翻譯中使用這些泛化標(biāo)簽,同時(shí)希望系統(tǒng)能夠自動(dòng)學(xué)習(xí)出來(lái)源語(yǔ)言和目標(biāo)語(yǔ)言這種標(biāo)簽的對(duì)應(yīng)翻譯關(guān)系,則需要進(jìn)行一致性檢測(cè)。一致性檢測(cè)的定義如下。 一致性檢測(cè): 在一個(gè)句對(duì)x,y中,源語(yǔ)言x中如果含有n個(gè)標(biāo)簽$type,那么目標(biāo)語(yǔ)言y中必須有n個(gè)標(biāo)簽$type,如果不滿(mǎn)足該條件,則不一致,需要將不一致的標(biāo)簽還原至原始詞匯,x,y中所有標(biāo)簽都必須滿(mǎn)足這一條件。 簡(jiǎn)單來(lái)說(shuō),進(jìn)行一致性檢測(cè)的主要目的如下: 模型訓(xùn)練后進(jìn)行翻譯的過(guò)程中,源語(yǔ)言x中存在n個(gè)標(biāo)簽$type,必須翻譯至y中的n個(gè)標(biāo)簽$type。一致性檢測(cè)僅僅應(yīng)用到訓(xùn)練數(shù)據(jù)和校驗(yàn)集中,在模型訓(xùn)練好后,進(jìn)行翻譯的過(guò)程中,則不受此限制。不一致的情況在訓(xùn)練數(shù)據(jù)中非常常見(jiàn),這是因?yàn)橐话愕囊?guī)則無(wú)法枚舉所有出現(xiàn)的語(yǔ)言現(xiàn)象,因此存在識(shí)別錯(cuò)誤。如果不進(jìn)行一致性檢測(cè),由于雙語(yǔ)訓(xùn)練數(shù)據(jù)中可能存在大量的不對(duì)稱(chēng)的類(lèi)型標(biāo)簽,因此訓(xùn)練好的翻譯模型并不能保證譯文中的類(lèi)型個(gè)數(shù)與輸入的類(lèi)型個(gè)數(shù)相同,就會(huì)造成明顯的翻譯錯(cuò)誤。本文方法在進(jìn)行類(lèi)型的識(shí)別和替換時(shí),無(wú)論多長(zhǎng)的詞匯,均會(huì)被替換成一個(gè)對(duì)應(yīng)的標(biāo)簽$type,如果雙語(yǔ)端均對(duì)類(lèi)型進(jìn)行了正確的識(shí)別,則不會(huì)被一致性檢測(cè)過(guò)濾掉。 在翻譯推導(dǎo)時(shí),輸入的源語(yǔ)言端句子存在泛化標(biāo)簽,與此同時(shí),在翻譯結(jié)果中同樣存在相應(yīng)的泛化標(biāo)簽,具體如圖2所示。 在圖2中,正常的源語(yǔ)言句子為“習(xí)近平 坐 飛機(jī) 離開(kāi) 北京”,在使用泛化規(guī)則后,實(shí)際輸入到神經(jīng)機(jī)器翻譯系統(tǒng)中的句子為“$person坐 飛機(jī) 離開(kāi) $location”,翻譯結(jié)果為“$personleft $locationby plane”。為了得到最終的翻譯結(jié)果,需要經(jīng)過(guò)如下兩步: (1) 源語(yǔ)言的句子中被識(shí)別的詞匯,如果是數(shù)字、時(shí)間、日期,需要通過(guò)規(guī)則自動(dòng)生成對(duì)應(yīng)的目標(biāo)語(yǔ)言的翻譯結(jié)果;如果是人名、地名、組織結(jié)構(gòu)名,需要查詢(xún)?cè)~典,找到對(duì)應(yīng)的翻譯結(jié)果。 (2) 在翻譯結(jié)果中的泛化類(lèi)型,需要根據(jù)注意力模型找到源語(yǔ)言中對(duì)應(yīng)的泛化標(biāo)簽,進(jìn)而根據(jù)源語(yǔ)言提供的泛化內(nèi)容的翻譯結(jié)果生成最終的翻譯結(jié)果。 圖2 類(lèi)型替換實(shí)例 (6) 本節(jié)提出的數(shù)據(jù)泛化的的方法與子詞方法相比,有如下的優(yōu)缺點(diǎn)。 (1)優(yōu)點(diǎn): 只要是泛化的詞匯,對(duì)應(yīng)的翻譯結(jié)果中的詞匯的翻譯是完全正確的,極大緩解了稀疏詞匯在子詞方法中錯(cuò)誤翻譯的問(wèn)題。 (2)缺點(diǎn): 與子詞方法相比,覆蓋度不足,像數(shù)字、時(shí)間、日期這類(lèi)泛化詞匯,識(shí)別準(zhǔn)確率較高。但是像人名、地名、組織機(jī)構(gòu)名這類(lèi)詞匯,識(shí)別內(nèi)容的多少依賴(lài)于詞典的精度和大小。 在本文中,我們?cè)谧釉~方法的基礎(chǔ)上進(jìn)行數(shù)據(jù)泛化,最終取得了不錯(cuò)的翻譯效果。Luong等人[10]提出的UNK替換方法本質(zhì)上是一種類(lèi)型替換方法,與其工作的主要不同是: 首先,本文提出的方法可以對(duì)數(shù)字、時(shí)間、日期、人名、地名、組織機(jī)構(gòu)名六類(lèi)詞匯進(jìn)行識(shí)別和泛化,與此同時(shí),本文提出的框架對(duì)于類(lèi)型識(shí)別的方法不做限制,任何可以進(jìn)行識(shí)別并且提供目標(biāo)語(yǔ)言譯文的方法都可以使用。而Luong等人的工作將所有類(lèi)型的低頻詞統(tǒng)一作為UNK進(jìn)行處理,并沒(méi)有對(duì)不同的類(lèi)型進(jìn)行區(qū)分,可能存在源語(yǔ)言中的UNK是一個(gè)數(shù)字,而目標(biāo)語(yǔ)言中的UNK是一個(gè)時(shí)間的情況;其次,本文對(duì)泛化的類(lèi)型進(jìn)行了一致性處理,同時(shí)解碼器進(jìn)行了有針對(duì)性的修改,保證翻譯后譯文中的泛化類(lèi)型個(gè)數(shù)與輸入的源語(yǔ)言個(gè)數(shù)相同;最后,本文方法的提出是為了解決子詞算法出現(xiàn)的錯(cuò)譯問(wèn)題,本文實(shí)驗(yàn)中的基線(xiàn)系統(tǒng)使用了子詞壓縮算法,已經(jīng)不存在UNK問(wèn)題。 目前,神經(jīng)機(jī)器翻譯模型在本質(zhì)上都是基于詞的,由于詞表受限,所以無(wú)法在訓(xùn)練的過(guò)程中直接引入大規(guī)模的短語(yǔ)集。然而,基于短語(yǔ)的統(tǒng)計(jì)機(jī)器翻譯模型[12]的翻譯質(zhì)量與基于詞的統(tǒng)計(jì)機(jī)器翻譯模型[17]相比,翻譯性能有大幅度提高。受到這一想法的啟發(fā),本文提出一種在神經(jīng)機(jī)器翻譯中引入源語(yǔ)言短語(yǔ)集的機(jī)制,最終表現(xiàn)出了不錯(cuò)的翻譯效果。本文通過(guò)使用壓縮算法生成短語(yǔ),可以合理控制加入到翻譯模型中短語(yǔ)的個(gè)數(shù),故不會(huì)導(dǎo)致詞表爆炸這一問(wèn)題。與此同時(shí),短語(yǔ)的元數(shù)由算法自行控制,不由人工指定,生成短語(yǔ)的形式更為靈活?;趬嚎s算法生成的短語(yǔ)都是高頻短語(yǔ),不會(huì)造成數(shù)據(jù)稀疏問(wèn)題,而神經(jīng)機(jī)器翻譯中低頻詞匯會(huì)明顯造成翻譯質(zhì)量的下降。本文提出了一種新的在神經(jīng)機(jī)器翻譯中引入短語(yǔ)知識(shí)的方法,即不需要對(duì)神經(jīng)機(jī)器翻譯模型本身進(jìn)行修改,而是通過(guò)外部生成規(guī)模可控的短語(yǔ)集,實(shí)現(xiàn)神經(jīng)機(jī)器翻譯對(duì)短語(yǔ)的建模。 我們使用子詞算法[11]進(jìn)行短語(yǔ)的生成,基于子詞算法的短語(yǔ)訓(xùn)練和使用算法如圖3和圖4所示。圖3中短語(yǔ)模型訓(xùn)練過(guò)程如下: 圖3 短語(yǔ)模型訓(xùn)練算法 (1) 算法第2行: 進(jìn)行分詞操作得到詞串x=x1,...,xn,進(jìn)而在標(biāo)點(diǎn)的前后分別加上特殊標(biāo)簽“”,即進(jìn)行訓(xùn)練時(shí),不可以跨越標(biāo)點(diǎn),只在子句中完成,生成的短語(yǔ)都是子句的部分內(nèi)容。如果在泛化數(shù)據(jù)的基礎(chǔ)上進(jìn)行短語(yǔ)生成,將泛化標(biāo)簽等同于標(biāo)點(diǎn)處理,即短語(yǔ)不可以跨越泛化標(biāo)簽。 (2) 算法第3行: 參數(shù)i清零,模型P清空。 (3) 算法第4~9行: 如果i (4) 算法第10行: 返回短語(yǔ)模型P。 圖4 短語(yǔ)模型使用算法 圖4中使用短語(yǔ)模型進(jìn)行短語(yǔ)生成的過(guò)程如下: (1) 算法第2行: 進(jìn)行分詞操作得到詞串x=x1,...,xn,進(jìn)而在標(biāo)點(diǎn)的前后分別加上特殊標(biāo)簽“”,即進(jìn)行短語(yǔ)生成時(shí),不可以跨越標(biāo)點(diǎn),只在子句中完成,生成的短語(yǔ)都是子句的部分內(nèi)容。如果在泛化數(shù)據(jù)的基礎(chǔ)上進(jìn)行短語(yǔ)生成,將泛化標(biāo)簽等同于標(biāo)點(diǎn)處理,即短語(yǔ)不可以跨越泛化標(biāo)簽。 (2) 算法第3~5行: 根據(jù)短語(yǔ)模型P中合并操作的優(yōu)先級(jí)將語(yǔ)料C中的xi,xi+1替換為xi_xi+1,即執(zhí)行合并操作,循環(huán)執(zhí)行所有存在于P中的合并操作。P中合并操作的優(yōu)先級(jí)是在訓(xùn)練過(guò)程中輸出的順序,先輸出的優(yōu)先級(jí)高。 (3) 算法第6行: 返回處理后的語(yǔ)料C。 在進(jìn)行短語(yǔ)生成時(shí),首先使用圖3中算法在大規(guī)模的數(shù)據(jù)上進(jìn)行短語(yǔ)模型的訓(xùn)練,繼而使用圖4中的算法在測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)上進(jìn)行短語(yǔ)的生成。至此,短語(yǔ)訓(xùn)練和使用算法介紹完畢,該算法的一個(gè)優(yōu)點(diǎn)是: 可以通過(guò)參數(shù)k控制生成短語(yǔ)的規(guī)模,同時(shí),生成的短語(yǔ)是n元的高頻短語(yǔ),不存在數(shù)據(jù)稀疏問(wèn)題和詞表爆炸問(wèn)題。短語(yǔ)的元數(shù)n是算法自動(dòng)控制的,不由人工指定,故較為靈活。 圖5是本文提出的算法生成的短語(yǔ)實(shí)例,在中文中,“綜合_報(bào)道”“中國(guó)_駐”“高度_重視”被識(shí)別為短語(yǔ),因?yàn)檫@三個(gè)短語(yǔ)均在本文訓(xùn)練的中文短語(yǔ)模型P中。在英文中,“our_attention”“nuclear_issue”“we_believe”“equal_rights”被識(shí)別為短語(yǔ),這三個(gè)短語(yǔ)均在本文訓(xùn)練的英文短語(yǔ)模型P中。 從這些短語(yǔ)可以看出,這些生成的短語(yǔ)基本符合人們對(duì)短語(yǔ)的認(rèn)知。將生成的源語(yǔ)言短語(yǔ)內(nèi)嵌到神經(jīng)機(jī)器翻譯模型中,原始的詞到詞的神經(jīng)機(jī)器翻譯模型轉(zhuǎn)換為短語(yǔ)與詞混合到詞的翻譯模型。由于我們使用“_”將連續(xù)的多個(gè)詞匯拼接為一個(gè)短語(yǔ),而這個(gè)語(yǔ)義上的短語(yǔ)在模型中可以看成是一個(gè)詞匯,因此,我們沒(méi)有對(duì)神經(jīng)機(jī)器翻譯框架進(jìn)行修改,模型的訓(xùn)練方法和解碼方法與標(biāo)準(zhǔn)的神經(jīng)機(jī)器翻譯模型相同。 在漢英和英漢翻譯的實(shí)驗(yàn)中,我們的訓(xùn)練數(shù)據(jù)為2.85MB平行句對(duì),該句對(duì)從NIST MT 2008評(píng)測(cè)數(shù)據(jù)中的NIST部分選取出來(lái)。在訓(xùn)練數(shù)據(jù)中隨機(jī)選取2 492個(gè)平行句對(duì)作為校驗(yàn)集,并從訓(xùn)練數(shù)據(jù)中將這些數(shù)據(jù)移除。關(guān)于數(shù)據(jù)更為詳細(xì)的信息如表2所示。在漢英翻譯中,我們使用NIST 2006,NIST 2008,NIST 2008 progress作為我們的測(cè)試數(shù)據(jù)。在英漢翻譯中,我們將CWMT2009和CWMT2011英漢測(cè)試集合并得到CWMT09-11,使用CWMT09-11和NIST 2008作為測(cè)試數(shù)據(jù)。所有測(cè)試數(shù)據(jù)均含有4個(gè)參考答案。 表2 漢英和英漢翻譯中,訓(xùn)練和校驗(yàn)數(shù)據(jù)的統(tǒng)計(jì)情況 本文的主要對(duì)比系統(tǒng)描述如下: 5.2.1 基線(xiàn)系統(tǒng) 本文使用的基線(xiàn)神經(jīng)機(jī)器翻譯系統(tǒng)為兩層的基于注意力機(jī)制的編碼器—解碼器結(jié)構(gòu)的神經(jīng)機(jī)器翻譯系統(tǒng)[1,4],在該系統(tǒng)中,使用局部注意力模型和反饋—輸入(feed-input)模型[4]。該基于長(zhǎng)短期記憶[22]的神經(jīng)機(jī)器翻譯系統(tǒng)通過(guò)使用基于時(shí)刻的反向傳播算法[24]以極大似然估計(jì)為目標(biāo)進(jìn)行模型的訓(xùn)練。對(duì)于編碼器和解碼器,隱藏狀態(tài)和節(jié)點(diǎn)狀態(tài)的向量大小均為1 024,同時(shí)源語(yǔ)言詞匯和目標(biāo)語(yǔ)言詞匯的詞向量大小為1 024。使用子詞算法對(duì)源語(yǔ)言和目標(biāo)語(yǔ)言詞表進(jìn)行壓縮,最終源語(yǔ)言詞表和目標(biāo)語(yǔ)言詞表大小為50KB。我們使用批量訓(xùn)練的方法,批量的大小設(shè)置為80,句子最大長(zhǎng)度設(shè)置為20個(gè)詞匯。我們將梯度裁剪為5.0。所有參數(shù)通過(guò)使用正態(tài)分?jǐn)?shù)初始化在[-0.08,0.08]這個(gè)區(qū)間中。使用隨機(jī)梯度下降算法在整個(gè)訓(xùn)練數(shù)據(jù)上訓(xùn)練10輪,初始的學(xué)習(xí)率為0.7,在5輪后每一輪減小一半。丟棄率設(shè)置為0.2[6]。與Sutskever等人的實(shí)驗(yàn)設(shè)置一樣,輸入到編碼器的源語(yǔ)言句子進(jìn)行反向處理。 5.2.2 基線(xiàn)+泛化系統(tǒng) 主要設(shè)置和基線(xiàn)系統(tǒng)相同。首先對(duì)數(shù)據(jù)進(jìn)行泛化處理,進(jìn)而進(jìn)行子詞模型的訓(xùn)練和進(jìn)行子詞切分操作,源語(yǔ)言和目標(biāo)語(yǔ)言詞表的大小設(shè)置為50KB。 5.2.3 基線(xiàn)+泛化+源語(yǔ)言短語(yǔ) 主要設(shè)置與基線(xiàn)+泛化系統(tǒng)相同。在源語(yǔ)言端使用本文提出的短語(yǔ)生成方法生成短語(yǔ),短語(yǔ)生成的合并操作k=10K,短語(yǔ)的頻次大于200次。漢英和英漢翻譯系統(tǒng)中實(shí)際加入的高頻源語(yǔ)言短語(yǔ)個(gè)數(shù)分別為2 567個(gè)和2 801個(gè)。這里我們僅將生成的短語(yǔ)加入到翻譯模型的源語(yǔ)言端,源語(yǔ)言詞表的增長(zhǎng)并不會(huì)影響翻譯系統(tǒng)的訓(xùn)練速度和解碼速度。 表3是漢英翻譯任務(wù)上,本文方法與基線(xiàn)系統(tǒng)的性能對(duì)比。首先,在三個(gè)測(cè)試數(shù)據(jù)上,使用泛化的系統(tǒng)的翻譯結(jié)果與基線(xiàn)系統(tǒng)相比,性能提高的幅度為0.3~2.2個(gè)BLEU點(diǎn)。泛化方法和子詞方法相比,雖然同是解決了數(shù)據(jù)稀疏問(wèn)題,但是側(cè)重點(diǎn)不同,子詞方法對(duì)所有詞匯同時(shí)適用,但是不能保證翻譯結(jié)果的正確性[11];而泛化方法雖然對(duì)稀疏詞匯的覆蓋度有限,但是可以保證翻譯結(jié)果的正確性。與基線(xiàn)系統(tǒng)相比,泛化方法在MT08 progress獲得了2.2個(gè)BLEU值的上升,主要是因?yàn)樵谠摐y(cè)試集上,泛化類(lèi)型的個(gè)數(shù)更多,因此起到了較為明顯的作用。 表3 漢英翻譯任務(wù)上,本文方法與基線(xiàn)系統(tǒng)的性能對(duì)比 *表示在p<0.05情況下,顯著好于基線(xiàn)系統(tǒng)的結(jié)果 不同測(cè)試集上泛化詞匯所占的比例統(tǒng)計(jì)如表4所示。在MT08 progress測(cè)試集中,泛化詞匯占整個(gè)語(yǔ)料詞匯數(shù)的3.1%,在26.6%的句子中都出現(xiàn)了可以泛化的數(shù)據(jù),使用泛化標(biāo)簽很好地糾正了子詞方法中產(chǎn)生的錯(cuò)誤,因此獲得更好的翻譯結(jié)果。 表4 漢英翻譯任務(wù)上,不同測(cè)試集上的泛化類(lèi)型統(tǒng)計(jì) 圖6是漢英翻譯任務(wù)上,基于子詞的方法與泛化的方法對(duì)比的兩個(gè)翻譯實(shí)例。在第一個(gè)例子中,源語(yǔ)言輸入句子中的詞匯“525億”由于是一個(gè)稀疏詞匯,因此基于子詞的方法將其切分為“5@@ 25億”,在最終的翻譯結(jié)果中,沒(méi)有被準(zhǔn)確地翻譯出來(lái),而是翻譯為“5 billion”,造成了錯(cuò)誤。在本文提出的使用泛化的方法中,源語(yǔ)言的“525億”被識(shí)別為“$number”,通過(guò)規(guī)則可以書(shū)寫(xiě)出其對(duì)應(yīng)的翻譯結(jié)果為“52.5 billion”,最終翻譯結(jié)果中出現(xiàn)的$number使用“52.5 billion”進(jìn)行替換,最終獲得了正確的翻譯結(jié)果。在第二個(gè)翻譯實(shí)例中,源語(yǔ)言中的日期“2005-6-23”通過(guò)子詞的方法被切分為“200@@ 5-@@ 6-@@ 23”,源語(yǔ)言中的時(shí)間“19:16”被切分為“19:@@ 16”,最終子詞方法錯(cuò)誤地將時(shí)間和日期翻譯為沒(méi)有意義的結(jié)果“300 - 23 - 23 - 23 - 23”。在本文提出的泛化方法中,首先日期“2005-6-23”被識(shí)別為“$date”,時(shí)間“19:16”被識(shí)別為“$time”,通過(guò)對(duì)其進(jìn)行判斷,發(fā)現(xiàn)其自身就是其對(duì)應(yīng)的翻譯結(jié)果,在翻譯結(jié)果生成時(shí),直接將翻譯結(jié)果中的$date使用“2005-6-23”進(jìn)行替換,“$time”使用“19:16”進(jìn)行替換即可。通過(guò)這兩個(gè)實(shí)例可以看出,子詞方法雖然將稀疏的詞匯切分成高頻的子詞,仍有很大可能發(fā)生翻譯錯(cuò)誤。而數(shù)據(jù)泛化的方法卻總能獲得準(zhǔn)確的翻譯結(jié)果。 圖6 漢英翻譯任務(wù)上子詞方法與泛化方法結(jié)果對(duì)比 在漢英翻譯任務(wù)上,在子詞和泛化方法的基礎(chǔ)上,加入本文提出的短語(yǔ)生成技術(shù),與基線(xiàn)系統(tǒng)相比,最終提高的翻譯性能為0.5~2.6個(gè)BLEU值。 圖7是漢英翻譯任務(wù)上,使用短語(yǔ)和沒(méi)有使用短語(yǔ)的翻譯結(jié)果的對(duì)比情況。 圖7 短語(yǔ)系統(tǒng)與無(wú)短語(yǔ)系統(tǒng)結(jié)果對(duì)比 從第一個(gè)翻譯實(shí)例可以看出,當(dāng)沒(méi)有使用短語(yǔ)時(shí),翻譯結(jié)果中沒(méi)有對(duì)源語(yǔ)言句子中的“大家”和“機(jī)遇”進(jìn)行正確的翻譯。而當(dāng)使用短語(yǔ)方法時(shí),“這_也_是”和“一_次”都被識(shí)別為短語(yǔ),輸入句子的長(zhǎng)度從19減小至14,從而間接地影響到整個(gè)句子的翻譯,翻譯模型將“大家”正確地翻譯為“members”,將“機(jī)遇”正確地翻譯為“opportunity”。在第二個(gè)翻譯實(shí)例中,無(wú)短語(yǔ)輸入的系統(tǒng)將源語(yǔ)言句子中的“不 是”錯(cuò)誤地翻譯為“can’t”,而在短語(yǔ)系統(tǒng)中識(shí)別為“不_是”,作為一個(gè)短語(yǔ),其被正確的翻譯為“have to”。從這兩個(gè)翻譯實(shí)例中可以看出短語(yǔ)在神經(jīng)機(jī)器翻譯模型中起到了正確的導(dǎo)向作用。在基線(xiàn)系統(tǒng)的基礎(chǔ)上使用泛化和源語(yǔ)言短語(yǔ)在所有測(cè)試數(shù)據(jù)上的平均BLEU值增長(zhǎng)如圖8(a)所示。與基線(xiàn)系統(tǒng)相比,加入泛化后BLEU值平均增長(zhǎng)1.0個(gè)點(diǎn),加入源語(yǔ)言短語(yǔ)后BLEU值平均增長(zhǎng)1.3個(gè)點(diǎn)。 圖8 漢英和英漢翻譯任務(wù)上,不同翻譯系統(tǒng)的平均BLEU值 表5是英漢翻譯任務(wù)上,本文方法與基線(xiàn)系統(tǒng)的性能對(duì)比,具體的性能表現(xiàn)與漢英翻譯任務(wù)上類(lèi)似。在英漢翻譯任務(wù)上,首先,在兩個(gè)數(shù)據(jù)集上,在子詞方法的基礎(chǔ)上,通過(guò)使用數(shù)據(jù)泛化的方法,與基線(xiàn)系統(tǒng)相比,性能提高的幅度為0.6~0.9個(gè)BLEU值。 表5 英漢翻譯任務(wù)上,本文方法與基線(xiàn)系統(tǒng)的性能對(duì)比。 *表示在p<0.05情況下,顯著好于基線(xiàn)系統(tǒng)的結(jié)果 表6中,CWMT09-11測(cè)試集上22.3%的句子出現(xiàn)了泛化標(biāo)簽,MT08中32.6%的句子出現(xiàn)了泛化標(biāo)簽,因此在這兩個(gè)數(shù)據(jù)集上都獲得了較為明顯的性能提升。 最后在子詞和泛化方法的基礎(chǔ)上,加入本文提出的短語(yǔ)生成技術(shù),與基線(xiàn)翻譯系統(tǒng)相比,在兩個(gè)數(shù)據(jù)集上性能的提高幅度均為1.2個(gè)BLEU值。最終, 表6 英漢翻譯任務(wù)上,不同測(cè)試集上的泛化類(lèi)型統(tǒng)計(jì) 在基線(xiàn)系統(tǒng)的基礎(chǔ)上使用泛化和源語(yǔ)言短語(yǔ)在所有測(cè)試數(shù)據(jù)上的平均BLEU值增長(zhǎng)如圖8(b)所示。與基線(xiàn)系統(tǒng)相比,加入泛化后BLEU值平均增長(zhǎng)0.8個(gè)點(diǎn),加入源語(yǔ)言短語(yǔ)后BLEU值平均增長(zhǎng)1.2個(gè)點(diǎn)。 在本文的數(shù)據(jù)集上,完全基于詞的神經(jīng)機(jī)器翻譯模型的翻譯性能如表7所示。 表7漢英翻譯任務(wù)上,基于詞的神經(jīng)機(jī)器翻譯模型與進(jìn)行UNK替換方法的性能對(duì)比情況 系統(tǒng)MT06MT08MT08-p基于詞的翻譯模型34.426.823.2 +UNK替換 34.627.023.6 與基于子詞切分的基線(xiàn)系統(tǒng)相比,BLEU值在三個(gè)測(cè)試集上分別低1.4、0.9和0.4個(gè)點(diǎn)。通過(guò)使用Luong等人[10]提出的UNK替換方法,在三個(gè)測(cè)試集上可以平均提高0.3個(gè)BLEU值左右。而在圖8(a)的漢英翻譯任務(wù)上,本文提出的泛化方法與基線(xiàn)系統(tǒng)相比平均提高了1.0個(gè)BLEU值。因此,Luong等人的方法在性能增長(zhǎng)幅度上與本文方法相比有一定差距,進(jìn)一步證明了本文提出的數(shù)據(jù)泛化方法的有效性。 表8是本文第三節(jié)提出的方法中,不同泛化類(lèi)型在神經(jīng)機(jī)器翻譯中的翻譯準(zhǔn)確率。在該統(tǒng)計(jì)中,針對(duì)不同的泛化類(lèi)型,我們各選取了3 000個(gè)含有不同泛化標(biāo)簽的句子進(jìn)行翻譯,繼而統(tǒng)計(jì)目標(biāo)語(yǔ)言翻譯結(jié)果中是否出現(xiàn)相同個(gè)數(shù)的標(biāo)簽,具體結(jié)果如表8所示。從表8中可以看出,本文提出的將泛化類(lèi)型引入到神經(jīng)機(jī)器翻譯模型的方法非常有效,泛化類(lèi)型翻譯準(zhǔn)確率非常高,除出現(xiàn)頻次最低的$organization類(lèi)型外,其他結(jié)果的翻譯正確率均在95%以上。 表8 漢英翻譯任務(wù)上,不同泛化類(lèi)型翻譯的準(zhǔn)確率 在本文中,我們對(duì)神經(jīng)機(jī)器翻譯中數(shù)據(jù)處理方法進(jìn)行了較為詳細(xì)的研究,主要包括數(shù)據(jù)泛化方法和短語(yǔ)生成方法。為了緩解子詞方法在未登錄詞和低頻詞翻譯時(shí)出現(xiàn)的錯(cuò)譯問(wèn)題,我們提出了泛化數(shù)據(jù)結(jié)合子詞方法的技術(shù)。在將泛化數(shù)據(jù)引入神經(jīng)機(jī)器翻譯中時(shí),我們提出了一致性檢測(cè)和解碼優(yōu)化的方法。在將短語(yǔ)引入到神經(jīng)機(jī)器翻譯模型中,我們提出了基于數(shù)據(jù)壓縮算法的短語(yǔ)生成方法。最終實(shí)驗(yàn)結(jié)果證實(shí),通過(guò)使用本文提出的方法,在漢英和英漢翻譯任務(wù)上比基線(xiàn)系統(tǒng)分別提高了1.3和1.2個(gè)BLEU值。 未來(lái),我們還將對(duì)神經(jīng)機(jī)器翻譯中同時(shí)引入源語(yǔ)言和目標(biāo)語(yǔ)言短語(yǔ)進(jìn)行研究。3 數(shù)據(jù)泛化方法
3.1 數(shù)據(jù)泛化類(lèi)型
3.2 一致性檢測(cè)
3.3 翻譯推導(dǎo)
4 短語(yǔ)生成方法
5 實(shí)驗(yàn)結(jié)果
5.1 數(shù)據(jù)
5.2 實(shí)驗(yàn)設(shè)置
5.3 翻譯性能
5.4 翻譯類(lèi)型準(zhǔn)確率
6 總結(jié)與展望