付葉薔,李軍輝
(蘇州大學計算機科學與技術學院,江蘇蘇州 215006)
抽象語義表示(Abstract Meaning Representation,AMR)[1]是一種新的語義表現形式,其將自然語言文本以句子為單位抽象成單根有向無環圖。隨著大規模標注語料的發布使用,AMR 技術受到廣泛關注[2],在自然語言處理領域機器翻譯[3]、問答系統[4]等多個任務中得到了成功應用。AMR 文本生成是指AMR 圖到文本的轉換。早期的AMR 文本生成研究多采用基于統計的方法。文獻[5]使用兩階段方法,設計一個基于對齊樹到字符串的規則,先將AMR 圖拆分成多個樹結構,再使用基于規則的方法將多個樹轉換器翻譯為文本序列。文獻[6]采用啟發式學習的方式,使用提取算法學習圖到字符串(graph-to-string)的轉換規則,提高了AMR 圖到文本任務的轉換性能。近期研究更多的是將AMR圖到文本的轉換視為一個機器翻譯任務,使用深度優先遍歷算法獲得AMR 圖的線性化形式。文獻[7]先將輸入的AMR 圖根據廣度優先遍歷將其線性化,再采用基于短語的機器翻譯系統生成AMR 文本。文獻[8]將Seq2Seq 框架應用在這項任務上,取得了較好的性能。為使生成的文本句法合理化,文獻[9]又使用了額外的語法信息,提高了基于序列到序列方法的AMR 文本解析性能。
為解決AMR 圖線性化后原圖結構化信息丟失的問題,相關研究采用了圖到序列(graph-to-sequence)的模型。例如,文獻[10]提出了基于Transformer 模型對AMR 圖結構的編碼方法。文獻[11]使用基于圖結構的自編碼方式,將編碼后的圖結構信息重新還原為序列形式的AMR 與三元組關系,以此減少AMR 圖線性化后圖結構信息的損失,從而提高AMR 文本生成的性能。文獻[12]采用圖注意力機制對輸入的圖信息進行編碼,并通過節點間的語義關系和距離實現對圖結構的重構。文獻[13]使用最短路徑算法,通過獲得更多圖結構的上下文信息提高了AMR 文本生成的性能。文獻[14]借助預訓練方法實現了跨語言的AMR 文本生成。文獻[15-16]利用圖神經網絡對AMR 圖進行編碼。文獻[17]從AMR 概念圖與其關系圖的角度進行圖結構編碼。
AMR 文本生成的性能在很大程度上受語料規模的影響,因此,可通過引入大規模自動標注語料來提高模型的性能。不同于簡單地使用大規模自動標注語料,本文對現有標注語料進行動態數據擴充,以增強模型的健壯性。同時對AMR 文本生成的目標端,即自然語言句子進行動態擴充,在加載目標端句子時對單詞做隨機噪聲化處理,增強目標端語言模型對句子的表達能力。在此基礎上,使用ΟpenNMT框架作為Transformer 的基準模型[18],在僅使用人工標注語料和同時使用大規模自動標注語料這兩個場景下,驗證本文方法的有效性。
抽象語義表示是一種新的語義表現形式,其將自然語言文本以句子為單位抽象成單根有向無環圖。以句子“The dog ate the bone that he found.”為例,其對應的AMR 圖如圖1 所示,其中,“eat-01”和“find-01”節點稱作概念節點(concept),對應自然語言句子中的實詞,兩節點之間的邊表示所連接的概念節點間的關系,例如“:ARG0”和“:ARG1”分別表示施事者和受事者。特別地,可以將AMR 文本生成視作一個序列到序列(Sequence-to-Sequence,Seq2Seq)的翻譯任務,其中源端是AMR 圖,目標端是文本。

圖1 AMR 圖示例Fig.1 Example of AMR graph
數據擴充的目的是為了在有限的數據基礎上產生更多可使用的數據,以此增加訓練樣例的多樣性,提高模型的健壯性。目前,數據擴充技術在自然語言處理領域已得到廣泛應用。
數據擴充方法可概括為兩大類:一類是以句子為單位,從句子級別出發從而得到更多可靠的、高質量的訓練樣例,從而提高模型的泛化能力;另一類是以單詞為單位,從單詞角度出發,對句子中的單詞進行隨機交換、替換等,采用此方法可得到帶有噪聲的數據,從而提高模型的健壯性。
反向翻譯[19]是一種句子級別的數據擴充方法,其在無監督機器翻譯上得到廣泛應用,有效提高了無監督機器翻譯的性能。本文在實驗中使用的大規模自動標注AMR 語料即采用反向翻譯策略生成。具體地,先在已標注的AMR 平行語料上訓練出一個與AMR 文本生成任務相反的模型,再通過該模型輸入已處理的序列化英文文本句子得到AMR 圖序列化形式,最終得到一份自動標注的AMR 偽平行語料。
與句子級別的方式相比,單詞級別的擴充方式獲得了更多的研究與應用。文獻[20]設定窗口,并固定其長度,在窗口內將單詞隨機和相鄰的單詞進行替換。文獻[21]先在大規模單語語料上訓練得到語言模型,再通過該語言模型找到可以被低頻詞匯替換的高頻詞匯,有效地緩解了數據稀疏問題。文獻[22]提出一種融合多個單詞信息的方法,首先訓練一個語言模型,然后把語言模型預測出的下一個單詞概率分布作為每個候選單詞嵌入表示的權重,最后線性組合詞表中每個單詞的嵌入表示作為要替換的單詞。
借鑒BERT[23]設計思想,本文將AMR 文本生成模型解碼端看作為一個語言模型,使用單詞級別的擴充方法,通過動態地對目標端單詞進行隨機替換,得到帶噪聲的數據,從而增強模型的泛化能力,提高AMR 文本生成的性能。
本文使用Seq2Seq 的Transformer 模型作為AMR 圖到文本轉換的基準模型。Transformer 模型由編碼器和解碼器兩部分組成,解碼器和編碼器又分別由多個相同結構的層次堆疊而成。編碼器層由自注意力層和前饋神經網絡組成。同樣,解碼器中也有自注意力層和前饋層。除此之外,在上述兩個層之間還有一個注意力層,該層主要用來關注輸入句子的相關部分,同其他Seq2Seq 模型的注意力機制作用相似。
為使AMR文本生成任務更好地應用在Transformer模型,需要對AMR 圖進行線性化處理。同時,為了解決數據稀疏問題,本文通過子詞化處理,將低頻詞匯單元拆分成更小粒度的高頻子詞單元[24]。由于該任務的源端和目標端存在大量的共同詞匯,因此本文使源端和目標端共享詞匯表。
本文采用文獻[25]中實驗所使用的AMR 圖線性化處理方法。該方法先對AMR 圖作簡化處理,即刪除變量、wiki 鏈接、謂詞意義后綴等得到AMR樹。由于AMR 圖中的變量不攜帶語義信息且僅用于指示共同節點,因此移除變量、刪除wiki 鏈接等不會損失AMR 圖中原有的主要信息,故可采用此方法將AMR 圖轉化為AMR 樹。最后,使用空格替換AMR 樹中的換行符,從而得到序列化的AMR圖。圖2 給出了一個AMR 圖和線性化后AMR 序列的示例。

圖2 AMR 圖線性化示例Fig.2 Example of AMR graph linearization
為了解決低頻詞翻譯數據稀疏的問題,文獻[9]使用了匿名機制,但由于需要人工制定匿名化規則,因此極大地增加了成本。受機器翻譯領域解決低頻詞翻譯問題的啟示,本文采用有效可行的字節對編碼(Byte Pair Encoding,BPE)[24]方法。BPE 方法的基本思想是將原低頻詞匯單元拆分成更小粒度的高頻子詞單元。BPE方法在機器翻譯領域的使用,極大地提高了翻譯質量。同時,BPE 方法操作簡單,僅在翻譯前使用腳本對語料做BPE 處理,翻譯后去掉翻譯文件中的“@”標識符即可,不需要對模型做任何修改。
由于AMR 生成任務的源端和目標端存在相同的單詞,如圖2 所示,Academy、Sciences 等單詞在序列化的AMR 圖和文本句子中同時出現,因此本文對源端和目標端同步進行子詞化處理。同時,為了將源端和目標端之間建立聯系,本文采用源端和目標端共享詞表的策略。
目前,由于可使用的已標注AMR數據集規模較小,影響了AMR 文本生成性能的提升。本文提出一種簡單而有效的動態數據擴充方法,在不引入外部語料的情況下,有效提升AMR 文本生成的性能。該方法對原始平行數據的目標端進行動態擴充,即在每次加載目標端句子時按照一定策略對句子中單詞做隨機噪聲化處理,然后編碼器預測出被引入噪聲的單詞,從而提高編碼器對句子中單詞的預測能力,使得AMR 文本生成的性能獲得提升。
本文提出的動態數據擴充方法,是一種引入噪聲的方法。類似于降噪自編碼器[26],假設輸入的目標端序列為y=,對該序列加入噪聲生成y′=。參考預訓練模型BERT[23]的方法,本文采用的加噪聲方式,是對每個序列15%的單詞進行隨機覆蓋,并限制每個序列中隨機覆蓋單詞數不超過20 個。對于一個句子序列,本文采用以下3 種方式對其進行噪聲化處理:1)設定10%的概率使選中的單詞不發生任何改變;2)設定10%的概率使選中的單詞被詞表中的任意一個單詞替換;3)設定80%的概率使選中的單詞用[MASK]隨機替換。
假設給定目標端序列“they are displeased to find someone unexpected when they arrive,even though they are in need of assistance.”,在對該句子序列進行噪聲處理時,分別隨機選中第1 個單詞“they”、第3 個單詞“displeased”和第10 個單詞“arrive”,經過上述3 種不同的策略對其進行處理將得到噪聲序列:“they are need to find someone unexpected when they[MASK],even though they are in need of assistance.”,具體過程如表1所示。

表1 目標端序列引入噪聲示例Table 1 Examples of introducting noise into target-side sequence
本文提出的加噪動態數據擴充方法僅對目標端文本加入噪聲,因此也可以應用到其他文本生成模型中。如圖3所示,本文中所使用的模型僅在基準Transformer模型中添加了一個噪聲模塊。其中,假設模型輸入端的AMR 序列為“tolerate:arg0 we:arg1(country:name(name:op1 japan)):duration amr-unknown”,輸出端的句子序列為“how long are we going to tolerate japan?”,該句子序列經過噪聲模塊隨機噪聲化后可能變為“how long are we going to[MASK]japan?”,噪聲化后的句子序列經過模型的Decoder模塊時,結合Encoder 模塊輸出的信息可以將其恢復。

圖3 本文模型框架Fig.3 Framework of the proposed model
為了更充分地證明本文方法的有效性,進一步在大規模自動標注語料的基礎上,使用本文提出的動態數據擴充方法。本文參考文獻[27]使用自動標注語料提升AMR 文本生成性能的方法,先使用一定規模的外部語料得到自動標注語料,再利用該自動標注語料預訓練模型,最后使用人工已標注的語料對預訓練模型進行微調。
針對本文提出的AMR 文本生成的數據擴充方法,本文同時提出了一種加噪聲的預訓練方式。首先,使用自動標注的AMR 語料對模型進行預先訓練,在預訓練時,先對自動標注語料目標端的句子按照一定方式進行隨機噪聲化,再利用編碼器將引入了噪聲的句子恢復,以此得到預訓練模型。然后,使用人工標注的AMR 標準數據集對得到的預訓練模型參數進行微調優化。最后,獲取AMR 文本生成模型。該微調方法在使用時會對模型的共享參數進行調整,例如,使用較低的學習率可以保留預訓練時模型所捕獲的一些語言特征信息,在對預訓練模型參數進行微調時,仍采用本文提出的動態數據擴充方法對使用的AMR 標準數據集引入噪聲。
實驗將對訓練數據的源端和目標端分別使用本文提出的動態數據擴充方法引入噪聲。具體地,動態數據擴充是指對同樣一批數據每次加載都采用不同的加噪聲方式。為了更好地評估文本生成性能,本文分別使用BLEU[28]、Meteor[29]和chrF++[30]3 種評測指標。
實驗中使用的人工標注AMR 標準數據集如表2所示。該數據集分別為LDC2017T10 和LDC2020T02,即AMR2.0 和AMR3.0。在LDC2020T02 的訓練數據集、開發數據集和測試數據集中,分別包含了LDC2017T10的對應數據集合,并且在此基礎上又增加了新的數據。本文使用斯坦福分詞工具對數據集進行分詞,同時按照2.1 節和2.2 節提到的AMR 圖線性化和子詞化方法,分別對語料進行相應處理。針對本文使用大規模自動標注語料時先預訓練再微調的任務特點,用預訓練數據集的子詞詞表對線性化后的AMR 圖和進行分詞處理后的文本進行子詞化。

表2 AMR 數據集信息Table 2 Information of AMR datasets
本文使用的大規模自動標注AMR 數據集,文本端是WMT14 英語到德語翻譯的news-commentray-v11 數據集中的英語部分,包含3 994 035 句英語句子,將該英語句子文本分別在基于LDC2017T10 數據集和LDC2020T02 數據集訓練得到的序列化AMR 解析模型上進行解析,得到對應的自動AMR 序列圖。在進行子詞化步驟時,首先將AMR 人工標注數據與獲得的自動標注數據集混合,然后使用子詞化工具對合并后的數據集設置20 000 操作數獲取詞表,最后根據此詞表分別對自動標注的AMR 語料和已標注的人工AMR 語料進行子詞化處理。
本文使用ΟpenNMT 的開源框架Transformer 作為基準模型。該基準模型編碼器和解碼器的層數都使用默認層數6 層,多頭注意力(Multi-head attention)機制的頭數為8,隱藏層大小和詞向量維度為512 維。本文模型將交叉熵作為損失函數,使用Adam 優化器[31],其中,beta1 值的大小設置為0.9,beta2 值設置為0.98。根據news-commentray-v11 數據集的開發集選擇預訓練模型,并且預訓練和微調使用的模型參數保持一致。
上文提出的目標端的數據擴充方法同時也適合于對源端的數據擴充。因此,分別對AMR 標準數據集的源端(+src_noise)、目標端(+tgt_noise)、源端+目標端(+src_tgt_noise)進行動態數據擴充。動態數據擴充每次在加載同樣一批句子時均采用不同的方式對句中的單詞隨機進行噪聲化處理。不使用大規模自動標注語料場景時的AMR 文本生成性能如表3 所示,其中,Transformer 表示沒有添加噪聲模塊的基準模型,加粗表示最優值。

表3 不使用大規模自動標注語料場景時的AMR 文本生成性能Table 3 AMR-to-text performance when not use large-scale automatic labeled dataset
由表3 可以看出,與只使用基準Transformer 模型的系統相比,對目標端進行動態數據擴充,使得AMR 文本生成性能在AMR2.0 和AMR3.0 標準數據集上BLEU 指 標分別提 升0.68 和0.64,Meteor 指標分別提升0.17 和0.24,chrF++指標分別提升0.32 和0.09。同樣,該數據擴充方法同時也適用于源端,BLEU 指標分別提升0.48 和0.30,Meteor 指標分別提升0.07 和0.03,chrF++指標分別提升0.07 和0.02。但是,當源端和目標端同時進行噪聲化時,噪聲化帶來的模型健壯性這一優勢丟失了,性能與不使用噪聲化(即Transformer)相當。這說明,如果對輸入過度噪聲化,會引起適得其反的效果。通過分析可知,該數據擴充方法隨機對語料引入噪聲時,在其中一端(源端或目標端)進行噪聲化操作,可提高模型的健壯性和穩定性,提高文本生成效果,但對兩端同時進行噪聲化操作時,該隨機性可能會降低模型的健壯性,使得模型性能不僅沒有明顯提升,甚至造成結果下降。
為了進一步驗證本文方法的有效性,使用3.9M大規模自動標注語料進行預訓練,并在預訓練時對語料進行動態數據擴充引入噪聲,實驗結果如表4所示,其中,加粗表示最優值。

表4 使用大規模自動標注語料場景時的AMR 文本生成性能Table 4 AMR-to-text performance when use large-scale automatic labeled dataset
由表4 可以看出,即使通過引入大規模自動標注語料大幅度提高了AMR 文本生成的性能,本文方法仍然進一步使BLEU 指標提高了0.60 和0.68,這說明本文方法的有效性并沒有隨著模型性能的提高而變少。其中,當顯著性測試p=0.01 時,本文方法在AMR 文本生成中具有顯著的性能提升效果。
目前,引入噪聲以提高模型魯棒性的方法在機器翻譯領域得到了廣泛應用,然而該方法在AMR 文本生成領域中應用較少。為了更進一步驗證本文提出的方法能夠顯著提高AMR 文本生成的性能,本文基于大規模自動標注語料的場景,將文獻[32]提出的引入噪聲以提高模型魯棒性的方法應用到本文使用的基準模型Transformer 中。該方法將給定句子中的每個單詞的詞向量加入高斯噪聲(Gaussian noise),如式(1)所示:

其中,E[xi]表示一個輸入句子x的第i個單詞對應的詞向量;ε服從方差為σ2的高斯分布,σ是一個超參數,設置為0.01。該方法對句子中的每個詞向量都引入了高斯噪聲。
在大規模自動標注語料的基礎上,比較使用本文方法與文獻[32]提出的高斯噪聲方法的AMR 文本生成性能,如表5 所示。其中,+Gaussian noise 表示使用3.9M 自動標注語料進行預訓練和使用人工標注的AMR 標準數據集進行微調時引入高斯噪聲,加粗表示最優值。

表5 本文方法與高斯噪聲法的性能比較Table 5 Performance comparison of the proposed method and Gaussian noise method
由表5 可以看出,使用高斯噪聲法在AMR2.0 數據集上BLEU 指標僅提高0.21,在AMR3.0 數據集上性能指標甚至有所下降,而本文方法可使AMR文本生成性能得到顯著提升。
目前,AMR 文本生成可使用的已標注數據規模較小,使其性能受限。針對這一問題,本文提出一種動態數據擴充方法。該方法每次在加載一批訓練集時均采用不同的操作隨機修改句子中的單詞,從而引入噪聲得到新的目標句子,該句子和源端語句構成新的平行數據,在訓練時,解碼器端將重構原始目標語句。實驗結果表明,本文提出的數據擴充方法可有效提升AMR文本生成性能,在使用大規模自動標注語料的情況下也同樣能獲得性能提升效果。后續將考慮在數據擴充時加入文本句子的句法信息,進一步提高AMR 文本生成的性能。