賈承勛,賴 華,余正濤,文永華,于志強
(1. 昆明理工大學 信息工程與自動化學院,云南 昆明 650500;2. 昆明理工大學 云南省人工智能重點實驗室,云南 昆明 650500)
神經機器翻譯(NMT)[1-2]是近幾年提出的機器翻譯方法,在大量的平行句對中取得了很好的翻譯效果,并超越了統計機器翻譯(SMT)[3],但對于資源稀缺型語言的效果并不理想。
利用現有小規模數據生成偽平行數據是提升資源稀缺語言神經機器翻譯最有效的途徑之一[4],目前擴充偽平行數據的方法主要有四種: 第一種是抽取式方法[5-7],在大量的可比語料中抽取平行句對,將源語言句子和目標語言句子放到同一語言空間中,通過比較源語言句子和目標語言句子之間的相似性判斷句對是否平行;第二種是目前應用較為廣泛的回譯方法(Back Translation, BT)[8],使用目標語言單語數據通過目標到源語言的翻譯模型翻譯為源語言譯文,從而生成偽平行數據;第三種方法是利用樞軸語言的方法[9-10],通過訓練源語言到樞軸語言模型和樞軸語言到目標語言模型,利用源語言單語數據通過兩步翻譯生成偽平行數據進行源語言到目標語言的模型訓練;第四種方法是在現有雙語數據基礎上進行詞的替換[11],通過對現有數據進行分析,在一定的替換規則下進行詞或模塊間的替換,以生成更多的偽平行句對,達到數據增強的效果,但詞級替換易出現一詞多譯的問題,從而對生成的偽平行句對產生不良的影響。
漢語-越南語是典型的低資源語言對,訓練數據不足,利用現有訓練數據進行數據增強可以較好地緩解此類問題。目前詞級替換的數據增強中存在一詞多義的問題,考慮到短語產生歧義的可能性較小,并且可以包含更多的可利用信息,因此我們對基于短語替換的偽平行句對的生成方法進行了探索。實驗表明,相比基準系統本文方法生成的偽平行數據可以有效提高漢越神經機器翻譯的性能。
近年來,國內外學者針對低資源語言數據增強方法進行了廣泛研究。主要思想是在已有的訓練數據的基礎上,通過一定的策略生成更多的偽平行數據,與原始訓練數據混合后一起訓練最終翻譯模型。
目前,通過基于詞的替換生成偽平行句對的方法已經被證實能夠有效提升低資源神經機器翻譯模型的性能。Fadaee等人[11]提出用TDA(Translation Data Augmentation)數據增強方法生成偽平行句對,該方法首先利用語言模型定位句子中高頻詞的位置,將平行句對中的高頻詞同時替換為稀有詞,生成詞替換后的偽平行句對,通過對單詞的替換,增加了平行句對中低頻詞出現的次數,從而增強了神經機器翻譯對低頻詞的理解和翻譯能力,但是當單詞出現一對多的情況時效果不佳。Wei等人[12]提出了一種簡單數據增強(easy data augmentation, EDA)方法,通過對單詞進行同義詞替換、隨機插入、隨機交換和隨機刪除四種簡單的操作來進行數據增強,以此生成的偽平行數據可以防止過擬合,并提高模型的泛化能力,但生成的偽平行句對可能存在大量噪聲。Kobayashi等人[13]提出了利用具有范式關系的單詞替換的方法,利用帶標簽的數據,通過條件語言模型根據上下文預測進行替換單詞,通過替換后生成的句子實現對循環神經網絡(RNN)和卷積神經網絡(CNN)的數據增強,對模型性能有所提升,但效果并不太好,并且未輸出生成的偽平行數據。Cai等人[14]提出了一種基于最小翻譯單元(minimum translation unit, MTU)替換的偽平行句對生成方法,最小翻譯單元要高于詞和短語的模塊但低于句子,首先對句子進行分塊,然后找到句子中最相似的兩個模塊,對調模塊的位置實現偽平行句對的擴展,但是生成的偽平行句對易存在大量語法語義上的錯誤。
以上工作均能夠提升低資源神經機器翻譯的性能,但大都是詞級的替換,考慮到短語相比于單詞粒度更高且不易產生歧義,可以緩解一詞多譯帶來的不良影響,同時進行短語替換可以使生成的偽平行句對包含更完整的結構和信息,因此本文對短語進行識別并根據一定的替換規則實現短語替換。通過對原始小規模數據進行短語抽取構建出一對一翻譯的短語對齊表,由于僅利用原始數據抽取的短語不足以增加生成數據的多樣性,因此我們對短語對齊表補入了基于維基百科抽取出的漢越實體詞組,在對數據中的短語進行識別后,通過計算余弦相似度計算出與替換短語相似的短語,最后通過短語對齊表對替換位置的短語進行替換,將生成的偽平行句對與原始數據一起訓練最終的漢-越神經機器翻譯模型。
在基于短語替換生成偽平行句對的過程中,我們充分利用現有的小規模數據,通過算法對短語進行抽取,以此構建短語對齊表,并將基于維基百科的漢越實體詞組抽取出來作為短語對齊表的一部分。對于漢語和越南語的短語識別,我們利用現有短語句法解析工具根據標簽進行可替換短語識別,然后將漢語數據和越南語數據分別映射到向量空間中,并利用余弦相似度計算出可替換短語,最后通過短語對齊表實現短語對的一對一替換,整體結構流程如圖1所示。

圖1 整體框架流程圖
首先,對原始數據進行短語抽取構建短語對齊表,并用維基百科詞條中抽取的人名、地名、組織機構名和專有名詞等實體詞組對短語對齊表進行擴充,然后利用分詞后的數據通過短語句法解析工具進行可替換短語的識別;其次,我們在抽取命名實體的時候,會將其相應的摘要抽取出來,分漢語和越南語存儲為文本數據,將文本數據與原始的漢語和越南語數據分別映射到向量空間中,計算出向量空間中可替換短語的相似短語并進行替換。考慮到漢語和越南語在句法上存在差異性,我們分別進行以漢語短語為基礎的替換(Chinese phrase based substitute, PBS-C)和以越南語為基礎的替換(Vietnamese phrase based substitute, PBS-V)。以下將從短語對齊表的構建、可替換短語識別、短語替換的規則方法以及語言模型困惑度語料篩選幾個方面對基于短語替換實現數據擴充的方法進行詳細說明。
2.2.1 數據預處理
構建短語對齊表前對雙語數據進行分詞,然后進行詞對齊,為后續短語替換提供分詞且格式恰當的雙語數據。目前漢語分詞工具較多,同時準確度高,其中最具代表性的是結巴(jieba)分詞。利用結巴分詞工具對實驗數據中的漢語部分進行分詞,得到漢語分詞結果,利用VnCoreNLP工具[15]對雙語數據中的越南語部分進行分詞。
在分詞處理完成后,就可以對分詞數據進行詞語對齊。詞語對齊的目標是得到漢語和越南語的詞或短語的對齊信息,便于在進行短語抽取時尋找相應的短語。我們使用GIZA++工具獲取詞對齊信息,在表1中列舉了處理后的句子示例。

表1 處理后的句子示例
通過對分詞數據進行詞語對齊,我們可以得到對應的漢越雙語的單詞對及短語對,在此基礎上以進行短語抽取。
2.2.2 短語抽取
通過GIZA++進行詞語對齊,得到對應的漢語-越南語對齊關系,在此基礎上通過短語抽取算法對短語進行抽取。圖2展示了含有詞對齊信息的雙語平行句對,從中可以看出: 理想情況下,我們從對齊的平行句對中抽取出的短語,是與詞對齊保持一致的短語對。

圖2 平行句對雙向對齊矩陣


算法1: 短語抽取輸入: 包含詞對齊信息Ф的雙語句對(sJ1,tI1)輸出: 抽取出的短語集合Ψ11: for len=1 to I do2: for i1 = 1 to I do3: i2= i1 + len4: (j1,j2) = (J,0)5: for all (i,j) ∈Ф do 6: if (i1≤ i≤ i2) then7: j1 = min(j,j1)8: j2 = max(j,j2)9: end if10: end for11: add extract (j1,j2,i1,i2) to set Ψ112: end for13: end for
其中,第1行和第2行遍歷所有可能出現的短語,并設置當前越南語詞串起始位置,第3行設置詞串結束位置,第4行設置漢語詞串起始位置與結束位置,起始位置為源語句子長度最大值,結束位置為0,該設置可快速判斷是否可找到與詞對齊信息保持一致的短語,第5到10行確保越南語詞串中的所有短語在詞對齊信息中有對應的短語在漢語詞串范圍內,第11行使用算法2中的extract(j1,j2,i1,i2)函數對找到的短語對進行驗證和擴展,算法2的過程如下:

算法2: extract(j1, j2, i1, i2)輸入: j1, j2, i1, i2輸出: 抽取出的短語集合Ψ21: if (j2 = 0) then2: return ?3: end if4: for all (i,j) ∈Ψ2 do5: if (i
其中,extract函數是算法1中對找到的短語進行驗證和擴展的函數。在與詞對齊保持一致的短語對的擴展過程中,主要是短語對中源語端與目標語端邊緣對空詞匯的擴展。邊緣對空詞匯不會影響短語一致性的性質,同時,抽取更多邊緣對空擴展對空短語可獲得更多上下文信息,可適當緩解詞對齊不精確帶來的問題。
2.2.3 基于維基百科的實體及摘要抽取
維基百科(Wikipedia)是一個免費的在線百科,其資源包含很多詞條信息,適合用于實體抽取。漢語和越南語網頁的組成形式基本相同,包括詞條、摘要、信息欄等部分,其中詞條和摘要是抽取的主要目標信息,詞條基本都是一個人名、地名、組織機構名或專有名詞的實體詞組,通過對漢越對應的詞條進行抽取,可對短語對齊表進行外部補充。其次,將包含抽取出的命名實體的相關摘要語句抽取出來,作為文本與原始數據一起映射到向量空間中,用于計算命名實體與可替換短語間的距離。



根據錨鏈接獲取詞條并抽取相應頁面內的摘要信息,抽取維基百科的實體詞組及摘要抽取流程如圖3所示。

圖3 維基百科實體詞組及摘要抽取流程
通過錨鏈接可以實現不同語言間的轉換,vi為越南語,zh為漢語,通過更改鏈接中的語言代碼,即可切換到漢語或越南語。對于詞條抽取,首先找到以wiki開頭的a標簽的href屬性,輸出所有詞條對應的名稱和鏈接,抽取詞條中的實體詞組,得到的命名實體示例,如表2所示。可以看出,抽取出的詞條為漢越對應的人名、地名、組織機構名和專有名詞。

表2 抽取出的命名實體示例
將抽取出的詞條補充到短語對齊表中,增加了短語的多樣性,并且通過對短語對齊表進行擴充,也可以使偽平行句對包含更多的可利用信息,間接地提升偽平行句對的多樣性。
在對可替換短語進行識別的研究中,漢語短語識別已經進行了很多有效的研究,準確率很高,其中最具有代表性的是斯坦福的自然語言處理(NLP)團隊的漢語句法解析模型(ChinesePCFG)[16],我們通過此模型對雙語數據的漢語部分進行短語識別,通過得到漢語短語結構樹的方式識別出漢語短語,漢語短語結構樹如圖4所示。

圖4 漢語短語結構樹
對于越南語短語識別,采用李英等人[17]的越南語句法分析工具進行分析,得到越南語短語結構樹,如圖5所示。

圖5 越南語短語結構樹
通過漢越的句法解析樹可以看出,漢語和越南語存在明顯的句法差異。為了控制變量通過標簽對短語進行識別,其中NP為名詞短語,VP為動詞短語,名詞短語下又包含了時間名詞短語NP(NT)、固有名詞短語NP(NR)、常用名詞短語NP(NN)及代詞NP(PN)。標簽識別方式分為兩種,一種是從根節點ROOT開始遍歷到第一個短語標簽為替換的短語,這種方式識別的短語包含了更多的模塊內容;另一種為根據葉子節點的標簽識別替換短語,這種方式識別的短語僅為短語,不包含額外信息。
在得到漢語和越南語句法解析樹后,利用Word2Vec[18]將文本內容處理化為K維向量空間中的向量,向量空間上的相似度可以表示文本語義上的相似度,這樣詞與詞之間可以通過向量度量它們之間的關系挖掘詞之間的聯系,計算余弦相似度。余弦相似度計算如式(1)所示。
根據識別出的短語,Word2Vec可以通過計算向量間的余弦值來判斷與識別出的短語相似的TopN個短語,對相應的短語進行替換,生成新的漢越偽平行句對,但這樣生成的偽平行句對準確率不高,部分句對存在語法語義錯誤,表3對句子的可利用性進行了例舉。

表3 替換可行性對比
通過示例可以看出,一句話出現多個替換短語易導致語義錯誤,同時名詞短語替換為動詞短語時會改變句子的整體結構,因此為了控制替換生成偽平行句對的語法語義的準確性及有效性,對替換規則總結如下:
(1) 對一個句子只進行一次替換;
(2) 將N值設置為5,即只選擇利用相似性前5的短語進行替換;
(3) 只對相同詞性的短語進行替換,即名詞短語(NP)只利用名詞短語替換。
實驗重點在驗證短語替換方法的有效性,并且為了盡量確保句子語法語義的準確性,采用的替換規則為一個句子一次僅替換一個短語。以根據葉子節點標簽識別為例實現對短語的替換,短語替換的示例如圖6所示。

圖6 短語替換示例
通過對標簽進行識別后,可以將“NP(NR)南非”進行替換,進行余弦相似度計算后,計算出相似度TopN的短語,若這些短語存在于短語對齊表內,則根據標簽位置進行短語替換,并通過詞對齊信息對越南語部分進行替換,生成新的漢越偽平行句對。
考慮到漢語和越南語的短語相似度計算可能存在誤差,因此我們用漢語計算短語相似度進行替換(PBS-C)產生新的偽平行句對,首先計算出與漢語短語最相似的TopN個短語,在短語對齊表中找到相似的短語對,并用其替換原短語,然后根據詞對齊信息,找到越南語短語對應的位置進行替換;同時我們還通過越南語計算短語相似度進行替換(PBS-V)生成漢越偽平行句對,考慮到兩種生成方式的差異性會產生不同的偽平行句對,因此我們最后將兩種方式生成的偽平行句對取并集(PBS-U)進行實驗。
對于偽平行句對的篩選,由于語言模型計算句子的困惑度(perplexity)既實現方便又準確度高,同時語言模型的困惑度評價可以評判句子中單詞序列出現的合理性,可以對句子的流暢度進行評判,因此我們選擇此方式來過濾語法句法有誤的句對。困惑度的評判標準是: 困惑度越小,句對的合理性越高,句子的流暢度也越好。基于語言模型困惑度的漢越偽平行句對篩選流程如圖7所示。

圖7 偽平行句對篩選流程圖
利用語言模型篩選數據的特點在于首先對生成的偽平行句對進行排序標號,然后分別利用漢語語言模型和越南語語言模型對偽平行句對各自語言部分進行困惑度評判,過濾掉困惑度大于閾值的句子序號,然后根據最終保留下來的句對序號,將漢語和越南語部分的序號取交集,最后在原始的偽平行數據中遍歷掃描,得到最終可用的偽平行句對。
為驗證基于短語替換生成的漢越偽平行句對的有效性,我們分別完成基于漢語短語進行替換和基于越南語短語進行替換生成偽平行句對,并與原始數據結合訓練漢越和越漢神經機器翻譯模型。由于漢-越是典型的資源稀缺型語言對,能獲取的數據規模有限,所以只安排在低資源情況下(訓練數據15萬)進行實驗。同時為了驗證短語替換與詞級替換生成的偽平行句對的性能提升差異,對同義詞替換生成偽平行句對的方法(EDA)[12]進行了對比。其中漢-越語料通過網絡爬取收集并清洗后得到15.4萬平行句對,最終保留長度在50個詞以內的句對,從中分別隨機抽取2 000平行句對作為測試集和驗證集。實驗數據的準備情況如表4所示。

表4 實驗數據準備情況
實驗中Word2Vec有兩種訓練模型,由于是在低資源情況下進行實驗,因此我們選擇對低頻詞敏感的skip-gram模型[19]生成向量,向量維度為128。實驗所用的基準模型是谷歌(Google)開源的神經機器翻譯模型Transformer[20],詞表大小設置為3萬,所有實驗均使用15萬的漢越雙語平行句對作為訓練數據,并且實驗均在單卡GPU服務器上進行,為防止出現過擬合現象,在多次試驗調整后將dropout值設置為0.1,batch size為64,hidden units為512,train steps為20萬,使用BLEU4作為評測指標。
實驗主要研究了通過短語替換生成偽平行句對對漢越神經機器翻譯性能的影響,baseline為僅利用原始數據訓練得到的模型翻譯效果,對比了通過漢語進行短語替換生成偽平行句對、通過越南語生成偽平行句對以及對通過漢語和越南語生成的偽平行句對取并集的方式對系統性能提升的影響,在漢到越和越到漢兩個翻譯方向上進行驗證,經過語言模型篩選后,PBS-C(基于漢語短語替換)和PBS-V(基于越南語短語替換)最終分別留下了約45萬的偽平行句對,PBS-U(短語替換取結果并集)留下了約67萬的偽平行句對,為保證實驗結果的可靠性,每組實驗的BLEU值都是利用相同測試集進行實驗,結果如表5所示。

表5 添加偽平行句對后的實驗結果
通過以上實驗可以看出,通過短語替換生成的偽平行句對可以提升神經機器翻譯模型的翻譯性能,通過漢語短語進行替換(PBS-C)的方式生成的偽平行句對在漢-越方向上使系統性能相對于baseline提升了1.19,在越-漢方向上提升了1.51個BLEU值,同時通過越南語短語進行替換(PBS-V)的方式在漢-越方向上提升了1.42個BLEU值,在越-漢方向上提升了1.23,可以觀察到: 對基于目標語言端語言的短語替換生成偽平行句對,可以得到更好的性能提升。最后將PBS-C和PBS-V生成的偽平行句對合并,進一步增加偽平行句對的數量,在漢-越的翻譯中相較于baseline最高獲得了1.59個BLEU值的提升,盡管獲得了進一步的性能提升,但是相對于PBS-V僅提升了0.17個BLEU值,這是因為偽平行句對規模并不是越大越好,只能在一定程度上對翻譯性能起到提升作用,當偽平行句對比例過高時,會產生過擬合現象,從而影響翻譯性能的提升。
為了驗證基于短語替換生成的偽平行句對相較于基于詞級的替換可以更好地提升系統的翻譯性能,在此通過同義詞替換生成偽平行句對,在漢-越和越-漢兩個翻譯方向上進行實驗,為了更好地控制影響因素,統一通過漢語進行替換,并且將生成的偽平行句對量統一為45萬,實驗結果如表6所示。

表6 短語替換與詞替換效果對比
由實驗結果可以看出,同義詞替換生成的偽平行句對比通過短語替換生成的偽平行句對對系統性能的提升較低,這是因為基于短語替換生成的偽平行句對解決了一詞多譯問題帶來的負面影響,并且生成的偽平行句對包含更多的可用有效信息,相對于詞級替換方法,短語替換方法通過提升漢越偽平行句對的質量而進一步提升漢越神經機器翻譯模型的性能。
針對漢越神經機器翻譯的數據稀缺問題,考慮到短語不易存在歧義且包含更多可利用信息,該文提出了通過短語替換進行漢越偽平行句對生成的方法。利用在原始數據中抽取出的短語和維基百科中抽取的實體詞組構建短語對齊表,根據余弦相似度在短語對齊表中選擇與可替換短語相近的短語進行替換,以此生成新的漢越偽平行句對,提升漢越神經機器翻譯的性能。實驗結果表明,這種方法可以在漢越神經機器翻譯中更好地提升模型的翻譯性能。在未來工作中,我們會探索對可替換短語的擴充及短語識別的準確性對漢-越神經機器翻譯性能的影響。