語法糾錯的研究現狀

哈工大SCIR發表於2020-04-13

引言

語法糾錯(Grammatical Error Correction, GEC)是自然語言處理領域中的一個重要任務,GEC任務要求檢測一句話中是否有語法錯誤,並自動將檢測出的語法錯誤進行糾正,GEC在文字校對、外文學習輔助中都有重要的應用。下面是一個語法糾錯任務的示例,在這句話中,加粗的形容詞absolute應該修改為副詞absolutely。

語法糾錯的研究現狀

目前語法糾錯任務主要是採用類似於機器翻譯任務的Seq2Seq框架來實現的。具體來說,輸入的錯誤句子為源語句,輸出正確的句子為目標語句。例如下圖中,“A B C D”為輸入的錯誤句子,“X Y Z”為輸出的修正句子。顯然我們可以透過大規模的(錯誤句子,正確句子)平行語料來訓練一個生成模型,然後透過生成模型實現語法錯誤的自動糾正。

語法糾錯的研究現狀

通常生成模型需要大規模的平行語料來進行訓練,例如機器翻譯語料動輒數千萬至數億句不等。而語法糾錯相關語料則比較匱乏,通常只有幾十萬句規模,因此如何解決資料匱乏問題是語法糾錯研究的一個重點。此外,語法糾錯任務中源語句和目標語句之間差別通常很小,使用Seq2Seq從頭開始生成目標語句似乎有些“大材小用”。部分研究者根據此特點,提出了專門針對於語法糾錯的模型結構,並取得了不錯的效果。本文將主要針對語法糾錯模型改進和語法糾錯語料自動擴充兩個方面進行重點介紹。

文字糾錯技術介紹

1. 語料自動擴充方法

針對語法糾錯訓練資料不足的問題,部分研究者提出透過構造偽資料的方法來增加訓練資料。猿輔導研究院的Wei Zhao等人提出採用隨機制造錯誤資料的方法來構建偽資料,具體流程如下:按照10%的機率隨機刪除一個詞;按照10%的比例隨機增加一個詞;按照10%的比例隨機替換一個詞;對所有的詞語序號增加一個正態分佈,然後對增加正態分佈後的詞語序號進行重新排序後得到的句子作為錯誤語句。該方法構造的訓練資料在CoNLL2014等語法糾錯資料集上獲得了不錯的表現。

微軟亞洲研究院的Tao Ge等人借鑑NMT領域的back translation思想提出瞭如下圖所示的三種語料擴充方法。圖中seq2seq error correction即我們最終要訓練的語法糾錯模型,seq2seq error generation是將訓練資料的輸入輸出對調,將正確語句作為輸入,錯誤語句作為輸出訓練得到的錯誤語句生成模型

語法糾錯的研究現狀

方法(a) back-boost透過將正確句子輸入到seq2seq error generation中生成錯誤句子,那麼得到的這個句對即可以作為error correction的訓練資料。方法(b) self-boost將error correction生成模型本身生成的低質量糾正資料和正確語句組合在一起作為擴充的訓練資料。方法(c) dual-boost則提出使用對偶學習的方法,將self-boost和back-boost進行結合,透過error generation和error correction不斷擴充訓練語料並互相促進學習。下表中的實驗結果中可以看到dual-boost結果好於self-boost和back-boost。

語法糾錯的研究現狀

隨著深度學習技術的發展,機器翻譯技術已經比較成熟,可以生成質量比較好的翻譯。但是機器翻譯系統仍然會產生一些難以避免的語法錯誤,Google研究院的Jared Lichtarge等人提出利用機器翻譯系統來生成偽資料。具體方法是使用翻譯系統將英語翻譯成為一種中間語言(日語、法語等),然後再將中間語言翻譯回英語。生成的英語語義和原始英語語句基本保持不變,但是往往會產生一些語法錯誤。Jared Lichtarge等人利用機器翻譯的這種特性生成了大規模性的語法糾錯偽資料,並在語法糾錯任務上取得了很好的效果。

除了上述構造偽資料的方法外,Jared Lichtarge等人還提出採用維基百科的編輯記錄來自動生成真實的語法糾錯資料。維基百科會記錄每一個版本的變化,裡面包含大量的人工修正資訊,因此可以採用兩個相鄰版本之間的變化來自動生成語法糾錯資料。下圖是實際生成的一些示例,我們可以從圖中看到,維基百科資料生成的資料噪音比較大,會產生一些資訊變動。

語法糾錯的研究現狀

2. 模型改進方法

語法糾錯任務中輸入語句和輸出語句之間的差異比較小,從下表可以看到輸入語句和輸出語句中80%以上的詞語是相同的。猿輔導研究院的Wei Zhao等人基於此提出採用Copy機制來進行文字糾錯,使模型的Attention等結構可以更多地學習如何糾正錯誤。

語法糾錯的研究現狀

Copy機制的模型結構圖如下所示,其主要思想是在生成序列過程中,考慮兩個生成分佈:分別是輸入序列中的詞語機率分佈以及詞典中的詞語機率分佈,將兩者的機率分佈加權求和作為最終生成的機率分佈,進而預測每一個時刻生成的詞語。該方法可以有效地利用輸入語句和生成語句之間重疊詞語多的特性,將簡單的詞語複製任務交給了Copy機制,將模型結構中的Attention等結構更多地用來學習比較難的新詞生成。

語法糾錯的研究現狀

上述基於Copy機制的方法可以比較好地利用輸入語句和生成語句之間詞語重複的特性,但是該方法仍然使用Seq2Seq框架從頭開始生成目標語句,導致模型的預測速度較慢。

對於此問題,Google研究院的Eric Malmi等人在EMNLP2019中提出了一種基於文字編輯的文字生成模型LaserTagger。該模型的核心思想是:不直接生成文字,而是使用序列標註方法來預測編輯操作,再將預測的編輯操作結合輸入文字轉換為輸出文字。論文主要定義了四類編輯操作:Keep、Delete、Keep-AddX和Delete-AddX,即保持、刪除、保持當前詞語的情況下在前面加入X短語,在刪除當前詞語的情況下在前面加入X短語。短語X均來自固定大小的短語詞表,短語詞表由訓練集中源文字和目標文字沒有對齊的top-n個n-grams構成。該方法可以在保證語法糾錯精度損失較小的情況下提升語法糾錯的預測速度。

語法糾錯的研究現狀

同樣在EMNLP2019上,Awasthi等人提出一種並行迭代編輯(Parallel Iterative Edit, PIE)模型來解決區域性序列轉換問題(LST)。PIE模型的輸出不是詞彙表中的token,而是“複製、增加、刪除、替換”等操作。PIE模型結構如下圖所示,該模型是一個類似BERT的模型結構,只是每個token額外輸入了兩種表示,分別為[M,pi]和[M,語法糾錯的研究現狀]。其中M為[MASK]的表示,pi為位置表示,[M,pi]可以用來處理pi位置詞語替換的情況;語法糾錯的研究現狀為兩個詞語中間的位置表示,[M,語法糾錯的研究現狀]用來解決在pi和pi+1位置中間增加詞語的情況。PIE模型能夠並行解碼,預測速度快且在精度上可以與seq2seq模型相媲美。

語法糾錯的研究現狀

目前存在的問題及挑戰

目前的語法糾錯任務主要存在以下幾個問題:

1. 速度太慢,難以大規模應用:目前語法糾錯技術主要採用的是Seq2Seq生成式模型,語法檢測等任務則是採用的BERT模型,這些模型對應的規模比較大,在實際應用中往往需要使用GPU且速度較慢。這些問題極大地限制了語法糾錯技術的應用和普及,所以如何壓縮和減小語法糾錯的模型,加快預測速度是一個研究的重點。

2. 真實的訓練資料太少:雖然研究人員提出了各種各樣的方法來增加訓練資料,但是增加的訓練資料質量往往不盡如人意,如何增大真實訓練資料的規模仍然是一個研究重點。

3. 針對語法糾錯的模型:目前語法糾錯領域採用的模型更多使用的還是機器翻譯、文字摘要中的一些模型,很少有專門針對語法糾錯任務特點進行模型設計。如何根據語法糾錯中輸入語句和生成語句相近這一特性提出對應的模型也是一大挑戰。

總結

語法糾錯是NLP領域的一個重要研究課題,目前研究者們通常採用機器翻譯的Seq2Seq方法來進行自動糾錯。針對資料缺乏等問題,研究者提出了多種資料擴充方法,並在語法糾錯任務上取得了不錯的進展。同時部分研究者根據語法糾錯輸入語句和生成語句相近這一特點,提出了一些針對性的模型,也取得了很好的效果。目前語法糾錯任務仍然有速度慢、資料量不足等問題,相信隨著深度學習和NLP技術的快速發展,這些問題都將獲得較好的解決。

參考文獻

[1] Liang Wang, Wei Zhao, Ruoyu Jia, Sujian Li, Jingming Liu. Denoising based Sequence-to-Sequence Pre-training for Text Generation. EMNLP 2019.

[2] Jared Lichtarge, Chris Alberti, Shankar Kumar, Noam Shazeer, Niki Parmar, Simon Tong. Corpora Generation for Grammatical Error Correction. NAACL 2019.

[3] Tao Ge, Furu Wei, Ming Zhou. Fluency Boost Learning and Inference for Neural Grammatical Error Correction. ACL 2018.

[4] Wei Zhao, Liang Wang, Kewei Shen, Ruoyu Jia, Jingming Liu. Improving Grammatical Error Correction via Pre-Training a Copy-Augmented Architecture with Unlabeled Data. NAACL 2019.

[5] Eric Malmi, Sebastian Krause, Sascha Rothe, Daniil Mirylenka, Aliaksei Severyn. Encode, Tag, Realize: High-Precision Text Editing. EMNLP 2019.

[6] Abhijeet Awasthi, Sunita Sarawagi, Rasna Goyal, Sabyasachi Ghosh, Vihari Piratla. Parallel Iterative Edit Models for Local Sequence Transduction. EMNLP 2019.

相關文章