李 強,韓雅倩,肖 桐,2,朱靖波,2
(1. 東北大學 自然語言處理實驗室,遼寧 沈陽 110000; 2. 沈陽雅譯網絡技術有限公司,遼寧 沈陽 110000)
近年來,由于神經機器翻譯(neural machine translation, NMT)相關方法取得了極大突破,神經機器翻譯在很多語言對間的翻譯任務上都取得了極佳的翻譯效果[1-4]。給定源語言句子,神經機器翻譯可以直接對翻譯至目標語言句子的最大條件概率進行端到端建模[5]。目前,最常使用的神經機器翻譯模型是基于循環神經網絡(recurrent neural network, RNN)的編碼器—解碼器(encoder-decoder)架構的模型[1]。在這一架構中,通過基于循環神經網絡的編碼器將源語言句子壓縮到一個固定維度的向量中,繼而一個基于循環神經網絡的解碼器將這一固定維度的向量解碼至目標語言翻譯結果。通過對門閥(gating)[1-2,6]和注意力(attention)[3-4]機制的探索,神經機器翻譯模型在多種翻譯任務上的翻譯性能超過了傳統的統計機器翻譯(statistical machine translation, SMT)模型[4,7-9]。由于神經機器翻譯模型主要以標準的詞匯為基礎構建翻譯模型,對數據的使用沒有進行充分的挖掘,因此,在本文中,我們對神經機器翻譯中的數據處理方法進行更為深入的研究,包括對數據泛化方法以及短語生成方法的研究。
首先,我們將數據泛化方法引入神經機器翻譯中。由于神經機器翻譯中解碼器端需要在整個目標語言詞匯表上進行概率計算,因此當詞匯表較大時(>200KB),訓練幾乎無法正常完成。因此在訓練標準的神經機器翻譯模型時,需要對詞匯表的規模進行限制[1-2]。無法被建模的稀疏詞匯被稱之為未登錄詞(out of vocabulary, OOV),在模型訓練的過程中,所有的未登錄詞都被替換為特殊標簽UNK。針對未登錄詞問題,其中一種解決方案是,翻譯完成后根據注意力模型中的詞對齊為目標語言翻譯結果中的UNK找到對應的源語言詞匯,最終根據一個詞匯翻譯表將源語言詞匯翻譯至目標語詞匯并嵌入到翻譯結果中[10];另外一種方法是對源語言和目標語言數據中的詞匯通過子詞壓縮的方法,將所有的詞匯映射到有限規模的子詞上[11]。子詞方法目前得到了大范圍的推廣和應用,基本上所有的在線翻譯系統和相關的評測系統中均應用了這一壓縮技術。然而,這種子詞方法產生的副作用是造成錯譯問題。為了解決子詞方法中出現的這一問題,本文通過對數字、時間、日期、人名、地名、組織機構名等這些稀疏的詞語進行識別、泛化以及翻譯,有效地提高了子詞方法的性能。
繼而,我們將短語知識引入端到端的神經機器翻譯模型中。在基于統計的機器翻譯系統中,基于短語的機器翻譯模型[12-16]翻譯性能明顯優于基于詞的翻譯模型[17]的翻譯性能,這說明短語在翻譯建模的過程中起到了非常重要的作用。受到這一方法的啟發,本文在子詞和數據泛化方法的基礎上,同時研究將短語知識融合到神經機器翻譯模型中,最終對原始語料進行了更為充分地利用。本文提出的短語生成算法建立在子詞算法的基礎上,以達到生成可控規模的短語的目的,將生成的短語內嵌到神經機器翻譯模型后,進一步提高了神經機器翻譯模型的翻譯質量。
本文對神經機器翻譯中的數據泛化和短語生成方法進行研究。之所以同時對這兩種方法進行研究,主要原因為以下四點:
(1) 本文提出的兩種優化方法均是在神經機器翻譯模型的數據層面進行處理,即可以歸納為數據預處理中的一些方法研究。
(2) 這兩種方法在統計機器翻譯中得到廣泛應用,如何將這些方法引入到神經機器翻譯中還鮮有討論。
(3) 本文的兩種方法均針對子詞方法進行討論,數據泛化方法主要是為了緩解子詞方法中出現的錯譯問題,短語生成則是以子詞算法為基礎進行的。
(4) 這兩種方法同時對數據進行處理,在分別取得不錯效果的同時,同時使用這兩種方法可以進一步提高翻譯模型的翻譯質量。
本文提出的兩種數據處理方法以子詞方法為基礎,主要的貢獻點如下:
(1) 通過使用數據泛化方法,在解決子詞方法中出現的錯譯問題的基礎上進一步緩解了數據稀疏問題。
(2) 在子詞和泛化方法的基礎上,本文將短語引入到標準的神經機器翻譯模型中,進一步獲得了翻譯效果的提升。
(3) 在漢英和英漢翻譯任務上,本文提出方法的翻譯質量與基線翻譯系統相比分別提高了1.3至1.2個BLEU值。
首先,在神經機器翻譯模型中緩解未登錄詞問題,已經有了較多的相關工作。Luong等人[10]提出了一種簡單的根據注意力模型生成詞對齊進行未登錄詞替換的方法,該方法有效緩解了神經機器翻譯模型中出現未登錄詞問題。Jean等人[18]提出了一種基于重要性采樣的方法來解決目標語詞表受限的問題。其方法在訓練的過程中,在不明顯降低訓練速度的基礎上,可以使用非常大的目標語言詞表進行訓練。在解碼的過程中,為了加速解碼,其通過選取整個目標語詞表上的一個子集進行解碼。Arthur等人[19]通過在神經機器翻譯模型中引入外部詞匯來解決翻譯過程中的數據稀疏問題。Sennrich等人[11]通過使用子詞的方法,將非常大的目標語言詞表壓縮在一個有限的詞匯表上,取得了不錯的效果,該方法是目前神經機器翻譯中最常用的方法之一。
繼而,在將短語加入神經機器翻譯模型中進行建模的工作中,Stahlberg等人[20]提出了句法結構指導的神經機器翻譯,該方法通過簡單地對神經機器翻譯模型中定向搜索解碼算法進行修改,將層次短語規則引入神經機器翻譯模型中,取得了不錯的翻譯效果。Tang等人[21]通過在神經機器翻譯中引入短語記憶模塊(phrase memory)將外部的短語存儲到神經機器翻譯模型中,在翻譯過程中對候選的翻譯片段使用短語記憶模塊進行檢測,提高了翻譯模型的翻譯質量。Huang等人[8]通過使用Sleep-Wake(SWAN)網絡在神經機器翻譯模型的輸出序列中對短語進行建模并取得了不錯的效果。
與這些工作不同的是,本文提出的方法建立在原始的雙語平行數據的基礎上,在數據中進行泛化處理和短語生成,因此本文提出的方法是語料驅動的方法。此外,本文方法可以直接應用到任意的神經機器翻譯架構中。
本文的工作中,我們使用基于注意力機制的編碼器—解碼器結構的神經機器翻譯模型[1,4]。基于注意力機制的神經機器翻譯模型在翻譯推導的過程中,動態地生成詞對齊和目標語言的翻譯結果。圖1 是一個標準的基于注意力模型的神經機器翻譯框架。

圖1 基于注意力機制的神經機器翻譯架構
給定源語言句子x=x1,...,xn和目標語言句子y=y1,...,ym,基于注意力模型的神經機器翻譯系統通過使用循環神經網絡直接對條件概率py|x進行建模,具體如式(1)所示。
在這里,sx為源語言句子x的固定維度的向量表示。n和m分別是源語言句子和目標語言句子的長度,t是時間戳。為了計算pyt|y 最終,訓練目標如式(4)所示。 在這里,D是平行訓練數據,最終的學習的目的是找到最優的參數空間θ*。 子詞生成算法[11]是神經機器翻譯中解決稀疏詞匯和未登錄詞匯的一種常用的方法,該方法將整個詞匯表壓縮在有限規模子詞之中。關于子詞方法的訓練和使用算法,請參考文獻[11]。在神經機器翻譯模型訓練之前,先對平行訓練數據進行子詞切分操作,一般源語言和目標語言的詞表大小壓縮至3~5萬詞左右。基于子詞的數據處理方法有效地將大規模詞表壓縮在有限規模的子詞詞表上,可以使神經機器翻譯模型對所有詞匯進行建模,因此表現出不錯的翻譯效果。在漢語中使用基于子詞的方法,是將漢語中的字的概念與英文中的字母等同對體。然而,由于子詞方法將整個詞匯切分成片段,因此不可避免地發生錯譯問題。針對子詞方法中出現的錯譯現象,本文提出了在子詞方法基礎上使用數據泛化方法來修復子詞方法中出現的錯誤。 不可枚舉的、不是封閉集合的詞匯都是機器翻譯中常見的稀疏詞匯,比如數字、時間、日期、人名、地名、組織機構名等。這些稀疏詞匯可以分為兩類,具體如下: (1) 數字、時間、日期: 可以通過正則表達式進行雙語的詞匯識別,可以通過書寫翻譯規則自動生成對應的目標語言翻譯結果。 (2) 人名、地名、組織機構名: 書寫沒有任何規則,識別主要依賴詞典或者命名實體識別[23]的相關方法,提供翻譯需要依賴詞典。 在對含有這兩種類型詞匯的語料進行預處理后,可以將其按照表1中的規則進行替換。即在語料中源語言端和目標語言端識別出相應的詞匯后,直接替換為其對應的泛化類型,具體如圖2所示,“北京”和“Beijing”被替換為“$location”,“習近平”和“Xi Jinping”被替換為“$person”,神經機器翻譯直接使用泛化數據進行模型訓練。 表1 每種泛化類型對應的泛化標簽 對于這些稀疏詞匯的識別,由于無法做到源語言和目標語言中所有識別的結果都一致。為了在神經機器翻譯中使用這些泛化標簽,同時希望系統能夠自動學習出來源語言和目標語言這種標簽的對應翻譯關系,則需要進行一致性檢測。一致性檢測的定義如下。 一致性檢測: 在一個句對x,y中,源語言x中如果含有n個標簽$type,那么目標語言y中必須有n個標簽$type,如果不滿足該條件,則不一致,需要將不一致的標簽還原至原始詞匯,x,y中所有標簽都必須滿足這一條件。 簡單來說,進行一致性檢測的主要目的如下: 模型訓練后進行翻譯的過程中,源語言x中存在n個標簽$type,必須翻譯至y中的n個標簽$type。一致性檢測僅僅應用到訓練數據和校驗集中,在模型訓練好后,進行翻譯的過程中,則不受此限制。不一致的情況在訓練數據中非常常見,這是因為一般的規則無法枚舉所有出現的語言現象,因此存在識別錯誤。如果不進行一致性檢測,由于雙語訓練數據中可能存在大量的不對稱的類型標簽,因此訓練好的翻譯模型并不能保證譯文中的類型個數與輸入的類型個數相同,就會造成明顯的翻譯錯誤。本文方法在進行類型的識別和替換時,無論多長的詞匯,均會被替換成一個對應的標簽$type,如果雙語端均對類型進行了正確的識別,則不會被一致性檢測過濾掉。 在翻譯推導時,輸入的源語言端句子存在泛化標簽,與此同時,在翻譯結果中同樣存在相應的泛化標簽,具體如圖2所示。 在圖2中,正常的源語言句子為“習近平 坐 飛機 離開 北京”,在使用泛化規則后,實際輸入到神經機器翻譯系統中的句子為“$person坐 飛機 離開 $location”,翻譯結果為“$personleft $locationby plane”。為了得到最終的翻譯結果,需要經過如下兩步: (1) 源語言的句子中被識別的詞匯,如果是數字、時間、日期,需要通過規則自動生成對應的目標語言的翻譯結果;如果是人名、地名、組織結構名,需要查詢詞典,找到對應的翻譯結果。 (2) 在翻譯結果中的泛化類型,需要根據注意力模型找到源語言中對應的泛化標簽,進而根據源語言提供的泛化內容的翻譯結果生成最終的翻譯結果。 圖2 類型替換實例 (6) 本節提出的數據泛化的的方法與子詞方法相比,有如下的優缺點。 (1)優點: 只要是泛化的詞匯,對應的翻譯結果中的詞匯的翻譯是完全正確的,極大緩解了稀疏詞匯在子詞方法中錯誤翻譯的問題。 (2)缺點: 與子詞方法相比,覆蓋度不足,像數字、時間、日期這類泛化詞匯,識別準確率較高。但是像人名、地名、組織機構名這類詞匯,識別內容的多少依賴于詞典的精度和大小。 在本文中,我們在子詞方法的基礎上進行數據泛化,最終取得了不錯的翻譯效果。Luong等人[10]提出的UNK替換方法本質上是一種類型替換方法,與其工作的主要不同是: 首先,本文提出的方法可以對數字、時間、日期、人名、地名、組織機構名六類詞匯進行識別和泛化,與此同時,本文提出的框架對于類型識別的方法不做限制,任何可以進行識別并且提供目標語言譯文的方法都可以使用。而Luong等人的工作將所有類型的低頻詞統一作為UNK進行處理,并沒有對不同的類型進行區分,可能存在源語言中的UNK是一個數字,而目標語言中的UNK是一個時間的情況;其次,本文對泛化的類型進行了一致性處理,同時解碼器進行了有針對性的修改,保證翻譯后譯文中的泛化類型個數與輸入的源語言個數相同;最后,本文方法的提出是為了解決子詞算法出現的錯譯問題,本文實驗中的基線系統使用了子詞壓縮算法,已經不存在UNK問題。 目前,神經機器翻譯模型在本質上都是基于詞的,由于詞表受限,所以無法在訓練的過程中直接引入大規模的短語集。然而,基于短語的統計機器翻譯模型[12]的翻譯質量與基于詞的統計機器翻譯模型[17]相比,翻譯性能有大幅度提高。受到這一想法的啟發,本文提出一種在神經機器翻譯中引入源語言短語集的機制,最終表現出了不錯的翻譯效果。本文通過使用壓縮算法生成短語,可以合理控制加入到翻譯模型中短語的個數,故不會導致詞表爆炸這一問題。與此同時,短語的元數由算法自行控制,不由人工指定,生成短語的形式更為靈活。基于壓縮算法生成的短語都是高頻短語,不會造成數據稀疏問題,而神經機器翻譯中低頻詞匯會明顯造成翻譯質量的下降。本文提出了一種新的在神經機器翻譯中引入短語知識的方法,即不需要對神經機器翻譯模型本身進行修改,而是通過外部生成規模可控的短語集,實現神經機器翻譯對短語的建模。 我們使用子詞算法[11]進行短語的生成,基于子詞算法的短語訓練和使用算法如圖3和圖4所示。圖3中短語模型訓練過程如下: 圖3 短語模型訓練算法 (1) 算法第2行: 進行分詞操作得到詞串x=x1,...,xn,進而在標點的前后分別加上特殊標簽“”,即進行訓練時,不可以跨越標點,只在子句中完成,生成的短語都是子句的部分內容。如果在泛化數據的基礎上進行短語生成,將泛化標簽等同于標點處理,即短語不可以跨越泛化標簽。 (2) 算法第3行: 參數i清零,模型P清空。 (3) 算法第4~9行: 如果i (4) 算法第10行: 返回短語模型P。 圖4 短語模型使用算法 圖4中使用短語模型進行短語生成的過程如下: (1) 算法第2行: 進行分詞操作得到詞串x=x1,...,xn,進而在標點的前后分別加上特殊標簽“”,即進行短語生成時,不可以跨越標點,只在子句中完成,生成的短語都是子句的部分內容。如果在泛化數據的基礎上進行短語生成,將泛化標簽等同于標點處理,即短語不可以跨越泛化標簽。 (2) 算法第3~5行: 根據短語模型P中合并操作的優先級將語料C中的xi,xi+1替換為xi_xi+1,即執行合并操作,循環執行所有存在于P中的合并操作。P中合并操作的優先級是在訓練過程中輸出的順序,先輸出的優先級高。 (3) 算法第6行: 返回處理后的語料C。 在進行短語生成時,首先使用圖3中算法在大規模的數據上進行短語模型的訓練,繼而使用圖4中的算法在測試數據和訓練數據上進行短語的生成。至此,短語訓練和使用算法介紹完畢,該算法的一個優點是: 可以通過參數k控制生成短語的規模,同時,生成的短語是n元的高頻短語,不存在數據稀疏問題和詞表爆炸問題。短語的元數n是算法自動控制的,不由人工指定,故較為靈活。 圖5是本文提出的算法生成的短語實例,在中文中,“綜合_報道”“中國_駐”“高度_重視”被識別為短語,因為這三個短語均在本文訓練的中文短語模型P中。在英文中,“our_attention”“nuclear_issue”“we_believe”“equal_rights”被識別為短語,這三個短語均在本文訓練的英文短語模型P中。 從這些短語可以看出,這些生成的短語基本符合人們對短語的認知。將生成的源語言短語內嵌到神經機器翻譯模型中,原始的詞到詞的神經機器翻譯模型轉換為短語與詞混合到詞的翻譯模型。由于我們使用“_”將連續的多個詞匯拼接為一個短語,而這個語義上的短語在模型中可以看成是一個詞匯,因此,我們沒有對神經機器翻譯框架進行修改,模型的訓練方法和解碼方法與標準的神經機器翻譯模型相同。 在漢英和英漢翻譯的實驗中,我們的訓練數據為2.85MB平行句對,該句對從NIST MT 2008評測數據中的NIST部分選取出來。在訓練數據中隨機選取2 492個平行句對作為校驗集,并從訓練數據中將這些數據移除。關于數據更為詳細的信息如表2所示。在漢英翻譯中,我們使用NIST 2006,NIST 2008,NIST 2008 progress作為我們的測試數據。在英漢翻譯中,我們將CWMT2009和CWMT2011英漢測試集合并得到CWMT09-11,使用CWMT09-11和NIST 2008作為測試數據。所有測試數據均含有4個參考答案。 表2 漢英和英漢翻譯中,訓練和校驗數據的統計情況 本文的主要對比系統描述如下: 5.2.1 基線系統 本文使用的基線神經機器翻譯系統為兩層的基于注意力機制的編碼器—解碼器結構的神經機器翻譯系統[1,4],在該系統中,使用局部注意力模型和反饋—輸入(feed-input)模型[4]。該基于長短期記憶[22]的神經機器翻譯系統通過使用基于時刻的反向傳播算法[24]以極大似然估計為目標進行模型的訓練。對于編碼器和解碼器,隱藏狀態和節點狀態的向量大小均為1 024,同時源語言詞匯和目標語言詞匯的詞向量大小為1 024。使用子詞算法對源語言和目標語言詞表進行壓縮,最終源語言詞表和目標語言詞表大小為50KB。我們使用批量訓練的方法,批量的大小設置為80,句子最大長度設置為20個詞匯。我們將梯度裁剪為5.0。所有參數通過使用正態分數初始化在[-0.08,0.08]這個區間中。使用隨機梯度下降算法在整個訓練數據上訓練10輪,初始的學習率為0.7,在5輪后每一輪減小一半。丟棄率設置為0.2[6]。與Sutskever等人的實驗設置一樣,輸入到編碼器的源語言句子進行反向處理。 5.2.2 基線+泛化系統 主要設置和基線系統相同。首先對數據進行泛化處理,進而進行子詞模型的訓練和進行子詞切分操作,源語言和目標語言詞表的大小設置為50KB。 5.2.3 基線+泛化+源語言短語 主要設置與基線+泛化系統相同。在源語言端使用本文提出的短語生成方法生成短語,短語生成的合并操作k=10K,短語的頻次大于200次。漢英和英漢翻譯系統中實際加入的高頻源語言短語個數分別為2 567個和2 801個。這里我們僅將生成的短語加入到翻譯模型的源語言端,源語言詞表的增長并不會影響翻譯系統的訓練速度和解碼速度。 表3是漢英翻譯任務上,本文方法與基線系統的性能對比。首先,在三個測試數據上,使用泛化的系統的翻譯結果與基線系統相比,性能提高的幅度為0.3~2.2個BLEU點。泛化方法和子詞方法相比,雖然同是解決了數據稀疏問題,但是側重點不同,子詞方法對所有詞匯同時適用,但是不能保證翻譯結果的正確性[11];而泛化方法雖然對稀疏詞匯的覆蓋度有限,但是可以保證翻譯結果的正確性。與基線系統相比,泛化方法在MT08 progress獲得了2.2個BLEU值的上升,主要是因為在該測試集上,泛化類型的個數更多,因此起到了較為明顯的作用。 表3 漢英翻譯任務上,本文方法與基線系統的性能對比 *表示在p<0.05情況下,顯著好于基線系統的結果 不同測試集上泛化詞匯所占的比例統計如表4所示。在MT08 progress測試集中,泛化詞匯占整個語料詞匯數的3.1%,在26.6%的句子中都出現了可以泛化的數據,使用泛化標簽很好地糾正了子詞方法中產生的錯誤,因此獲得更好的翻譯結果。 表4 漢英翻譯任務上,不同測試集上的泛化類型統計 圖6是漢英翻譯任務上,基于子詞的方法與泛化的方法對比的兩個翻譯實例。在第一個例子中,源語言輸入句子中的詞匯“525億”由于是一個稀疏詞匯,因此基于子詞的方法將其切分為“5@@ 25億”,在最終的翻譯結果中,沒有被準確地翻譯出來,而是翻譯為“5 billion”,造成了錯誤。在本文提出的使用泛化的方法中,源語言的“525億”被識別為“$number”,通過規則可以書寫出其對應的翻譯結果為“52.5 billion”,最終翻譯結果中出現的$number使用“52.5 billion”進行替換,最終獲得了正確的翻譯結果。在第二個翻譯實例中,源語言中的日期“2005-6-23”通過子詞的方法被切分為“200@@ 5-@@ 6-@@ 23”,源語言中的時間“19:16”被切分為“19:@@ 16”,最終子詞方法錯誤地將時間和日期翻譯為沒有意義的結果“300 - 23 - 23 - 23 - 23”。在本文提出的泛化方法中,首先日期“2005-6-23”被識別為“$date”,時間“19:16”被識別為“$time”,通過對其進行判斷,發現其自身就是其對應的翻譯結果,在翻譯結果生成時,直接將翻譯結果中的$date使用“2005-6-23”進行替換,“$time”使用“19:16”進行替換即可。通過這兩個實例可以看出,子詞方法雖然將稀疏的詞匯切分成高頻的子詞,仍有很大可能發生翻譯錯誤。而數據泛化的方法卻總能獲得準確的翻譯結果。 圖6 漢英翻譯任務上子詞方法與泛化方法結果對比 在漢英翻譯任務上,在子詞和泛化方法的基礎上,加入本文提出的短語生成技術,與基線系統相比,最終提高的翻譯性能為0.5~2.6個BLEU值。 圖7是漢英翻譯任務上,使用短語和沒有使用短語的翻譯結果的對比情況。 圖7 短語系統與無短語系統結果對比 從第一個翻譯實例可以看出,當沒有使用短語時,翻譯結果中沒有對源語言句子中的“大家”和“機遇”進行正確的翻譯。而當使用短語方法時,“這_也_是”和“一_次”都被識別為短語,輸入句子的長度從19減小至14,從而間接地影響到整個句子的翻譯,翻譯模型將“大家”正確地翻譯為“members”,將“機遇”正確地翻譯為“opportunity”。在第二個翻譯實例中,無短語輸入的系統將源語言句子中的“不 是”錯誤地翻譯為“can’t”,而在短語系統中識別為“不_是”,作為一個短語,其被正確的翻譯為“have to”。從這兩個翻譯實例中可以看出短語在神經機器翻譯模型中起到了正確的導向作用。在基線系統的基礎上使用泛化和源語言短語在所有測試數據上的平均BLEU值增長如圖8(a)所示。與基線系統相比,加入泛化后BLEU值平均增長1.0個點,加入源語言短語后BLEU值平均增長1.3個點。 圖8 漢英和英漢翻譯任務上,不同翻譯系統的平均BLEU值 表5是英漢翻譯任務上,本文方法與基線系統的性能對比,具體的性能表現與漢英翻譯任務上類似。在英漢翻譯任務上,首先,在兩個數據集上,在子詞方法的基礎上,通過使用數據泛化的方法,與基線系統相比,性能提高的幅度為0.6~0.9個BLEU值。 表5 英漢翻譯任務上,本文方法與基線系統的性能對比。 *表示在p<0.05情況下,顯著好于基線系統的結果 表6中,CWMT09-11測試集上22.3%的句子出現了泛化標簽,MT08中32.6%的句子出現了泛化標簽,因此在這兩個數據集上都獲得了較為明顯的性能提升。 最后在子詞和泛化方法的基礎上,加入本文提出的短語生成技術,與基線翻譯系統相比,在兩個數據集上性能的提高幅度均為1.2個BLEU值。最終, 表6 英漢翻譯任務上,不同測試集上的泛化類型統計 在基線系統的基礎上使用泛化和源語言短語在所有測試數據上的平均BLEU值增長如圖8(b)所示。與基線系統相比,加入泛化后BLEU值平均增長0.8個點,加入源語言短語后BLEU值平均增長1.2個點。 在本文的數據集上,完全基于詞的神經機器翻譯模型的翻譯性能如表7所示。 表7漢英翻譯任務上,基于詞的神經機器翻譯模型與進行UNK替換方法的性能對比情況 系統MT06MT08MT08-p基于詞的翻譯模型34.426.823.2 +UNK替換 34.627.023.6 與基于子詞切分的基線系統相比,BLEU值在三個測試集上分別低1.4、0.9和0.4個點。通過使用Luong等人[10]提出的UNK替換方法,在三個測試集上可以平均提高0.3個BLEU值左右。而在圖8(a)的漢英翻譯任務上,本文提出的泛化方法與基線系統相比平均提高了1.0個BLEU值。因此,Luong等人的方法在性能增長幅度上與本文方法相比有一定差距,進一步證明了本文提出的數據泛化方法的有效性。 表8是本文第三節提出的方法中,不同泛化類型在神經機器翻譯中的翻譯準確率。在該統計中,針對不同的泛化類型,我們各選取了3 000個含有不同泛化標簽的句子進行翻譯,繼而統計目標語言翻譯結果中是否出現相同個數的標簽,具體結果如表8所示。從表8中可以看出,本文提出的將泛化類型引入到神經機器翻譯模型的方法非常有效,泛化類型翻譯準確率非常高,除出現頻次最低的$organization類型外,其他結果的翻譯正確率均在95%以上。 表8 漢英翻譯任務上,不同泛化類型翻譯的準確率 在本文中,我們對神經機器翻譯中數據處理方法進行了較為詳細的研究,主要包括數據泛化方法和短語生成方法。為了緩解子詞方法在未登錄詞和低頻詞翻譯時出現的錯譯問題,我們提出了泛化數據結合子詞方法的技術。在將泛化數據引入神經機器翻譯中時,我們提出了一致性檢測和解碼優化的方法。在將短語引入到神經機器翻譯模型中,我們提出了基于數據壓縮算法的短語生成方法。最終實驗結果證實,通過使用本文提出的方法,在漢英和英漢翻譯任務上比基線系統分別提高了1.3和1.2個BLEU值。 未來,我們還將對神經機器翻譯中同時引入源語言和目標語言短語進行研究。

3 數據泛化方法
3.1 數據泛化類型

3.2 一致性檢測
3.3 翻譯推導






4 短語生成方法


5 實驗結果
5.1 數據

5.2 實驗設置
5.3 翻譯性能








5.4 翻譯類型準確率

6 總結與展望