
中文語法糾錯任務旨在對文本中存在的拼寫、語法等錯誤進行自動檢測和糾正,是自然語言處理領域一項重要的任務。同時該任務在公文、新聞和教育等領域都有著落地的應用價值。但由于中文具有的文法和句法規(guī)則比較復雜,基于深度學習的中文文本糾錯在實際落地的場景中仍然具有推理速度慢、糾錯準確率低和假陽性高等缺點,因此中文文本糾錯任務還具有非常大的研究空間。
達觀數(shù)據(jù)在CCL2022漢語學習者文本糾錯評測比賽的賽道一中文拼寫檢查(Chinese Spelling Check)任務中取得了冠軍,賽道二中文語法糾錯(Chinese Grammatical Error Diagnosis)任務中獲得了亞軍。本文基于賽道二中文語法糾錯任務的內(nèi)容,對比賽過程中采用的一些方法進行分享,并介紹比賽采用的技術方案在達觀智能校對系統(tǒng)中的應用和落地。賽道一中文拼寫檢查的冠軍方案會在后續(xù)的文章分享。
本次中文語法糾錯任務是對給定的句子輸出可能包含的錯誤位置、錯誤類型和修正答案,而最終的評測指標是假陽性、偵測層、識別層、定位層和修正層這五個維度指標的綜合結果。而且本次評測任務使用的數(shù)據(jù)是漢語學習者的寫作內(nèi)容,與母語寫作者相比漢語學習者的數(shù)據(jù)本身就具有句子流暢度欠佳、錯誤復雜度較高等情況。因此,本次評測的難度在于對于漢語學習者的書寫內(nèi)容既要保證檢錯和糾錯的準確率和召回率,還要保證正確句子不能進行修改操作以降低模型的假陽性。本文主要從數(shù)據(jù)和模型兩方面來分享本次比賽中采用的模型和策略。
【資料圖】
本次評測中,官方提供了CGED的歷年比賽數(shù)據(jù)(41,239條)和Lang8數(shù)據(jù)(1212,457條)供模型訓練,同時提供了3767條評測數(shù)據(jù)用以驗證模型的效果和性能。為了解數(shù)據(jù)的錯誤分布以及數(shù)據(jù)的質(zhì)量,我們首先對評測數(shù)據(jù)進行了分析。CGED-21驗證集中的錯誤分布情況如圖1所示,由此可以看出數(shù)據(jù)集中占絕大多數(shù)的均為用詞錯誤,其次為缺失錯誤,而亂序錯誤的占比最少。 圖1 驗證集錯誤占比統(tǒng)計圖
同時在數(shù)據(jù)測驗的過程中還發(fā)現(xiàn)了CGED和Lang8數(shù)據(jù)集中存在的一些數(shù)據(jù)問題。
具體問題如下所示:
源句子與目標句子完全不相關;
目標句子是對源句子的批注;
源句子中存在錯誤編輯距離較大的情況;
數(shù)據(jù)集中末尾處存在多字的缺失錯誤
對此,我們也摘錄了數(shù)據(jù)集中存在的一些問題的樣例數(shù)據(jù);由樣例數(shù)據(jù)可知,不管采用哪種模型,數(shù)據(jù)中包含的這些錯誤均會導致模型產(chǎn)生一些錯誤的特征映射,從而影響模型的性能。因此在構建語法糾錯模型之前首先需要對數(shù)據(jù)進行清洗,去除質(zhì)量較差的句子。在本次比賽中,數(shù)據(jù)預處理是利用編輯距離、字數(shù)差異和糾正字數(shù)等多個維度的評估來實現(xiàn)的。 表1 數(shù)據(jù)中的錯誤樣例數(shù)據(jù)
本次評測任務中的語法錯誤可以分為拼寫錯誤、語法錯誤和符號錯誤。其中拼寫錯誤包括形似音近錯誤,而語法錯誤則主要包括用詞錯誤、缺失、亂序和冗余。這些錯誤類型具有差異性和多樣性,利用單個模型難以覆蓋所有的錯誤類型;因此,比賽中采用串行的多階段中文語法糾錯方法來解決中文文本中存在的各種錯誤。
對于拼寫糾錯任務,我們是從數(shù)據(jù)和模型兩個維度來進行解決的。數(shù)據(jù)方面,首先收集了不同來源的混淆集詞典并對其進行整合和擴充,然后基于混淆集和微信新聞語料生成了包含不同錯誤模式的大規(guī)模語料來對模型進行訓練。模型方面是利用MDCSpell來實現(xiàn)拼寫糾錯任務。進一步地,我們發(fā)現(xiàn)檢錯和糾錯模塊可以直接使用BERT輸出的語義特征信息,而不需要舍棄CLS和SEP。而且這樣還能保證兩個模塊的輸出維度相同更方便特征信息的融合。
圖2 拼寫糾錯模型結構圖
此外,拼寫糾錯模型的定位是解決數(shù)據(jù)中存在的形似音近問題,而且整個流程還后接了語法糾錯模型,所以拼寫糾錯模型只需要保證糾錯的準確率高而誤召回低。因此在推理階段,拼寫糾錯模型還利用閾值對模型的輸出進行判別以確定是否接受當前的糾錯結果。
拼寫糾錯模型只能解決數(shù)據(jù)中存在的形似音近錯誤,因此我們基于序列到編輯的Seq2Edit模型來完成剩余的錯誤類型的糾正。Seq2Edit是目前最優(yōu)的語法糾錯模型,它通過預訓練模型獲得輸入句子的語義特征編碼,然后通過全連接層預測句子中對應的每個句子的編輯標簽,該模型對應的解碼空間為插入、刪除、替換、保持和移動五種編輯操作。而且該模型還通過多任務的方式引入了檢錯模塊,以便利用檢錯的輸出信息增強模型的糾錯效果。該語法糾錯的模型結構和解碼流程如下圖所示:
圖3 語法糾錯流程圖
原始Seq2Edit模型是通過刪除和插入兩種操作來解決句子中的亂序錯誤,但是由于模型的訓練和推理階段存在暴露偏差,故對于連續(xù)字符的缺失錯誤,模型可能因缺少上下文特征信息即使通過多個輪次也無法進行糾正。例如下表中的亂序錯誤,當對一側進行刪除操作之后,而缺少了大量的上下文信息故模型無法對另一側的插入操作進行補齊。而且模型將亂序錯誤看作冗余和缺失兩種錯誤的集合也會導致模型對刪除操作的置信度偏高。但是通過引入移動編輯操作的方法能夠較好地解決亂序的問題。
表2 原始Seq2Edit模型對亂序錯誤的糾錯能力
在推理階段,為了在輸出的標簽空間中搜索出一條最優(yōu)的解碼路徑,我們利用局部路徑解碼方法對局部的移動編輯操作確定一條和為0的相對路徑,并通過自適應閾值的方法對不同編輯操作、不同的詞性和詞頻確定不同的修改接受閾值,由此提高模型的糾正準確率并解決模型的過度糾正等問題。
不同的模型學習到的語義特征信息存在一些差異,因此將多個差異較大而性能略差的模型正確的組合能夠極大地提升模型的性能。本次評測中,我們對不同預訓練模型訓練的糾錯模型進行加權集成以提升模型的準確率。此次參與模型集成的有Bert、MacBert和StructBert這3個預訓練模型訓練的6個Seq2Edit模型。
在實驗分析的過程中,我們發(fā)現(xiàn)模型對多字詞的缺失和句子不同位置的錯誤的糾錯能力不同,并且當前的數(shù)據(jù)集未能覆蓋絕大多數(shù)的錯誤,因此存在OOV的問題。所以我們利用數(shù)據(jù)生成的策略來解決因OOV導致的模型無法對錯誤進行糾正的問題。本次比賽中,拼寫糾錯和語法糾錯兩個任務都用到了數(shù)據(jù)增強技術,且均使用微信公眾號語料作為種子數(shù)據(jù)。對于數(shù)據(jù)增強,我們基于字和詞兩個維度進行數(shù)據(jù)擴充,并維護了生僻詞表、詞頻表、鍵盤布局相鄰表、形近混淆集和音近混淆集以保證生成的句子符合中文的語用頻率和分布規(guī)律。
數(shù)據(jù)增強的流程如下所述:
(1)數(shù)據(jù)預處理:對句子進行預處理并掩碼掉非中文字符、人名和地名等字符位置;
(2)采樣設錯位置:確定對句子進行設錯操作的字符位置;
(3)采樣設錯類型:確定當前字符位置的設錯類型;
(4)采樣設錯操作:針對步驟(3)中的設錯類型確定設錯的操作,一般來說不同的設錯類型對應的設錯操作也不盡相同,冗余操作的設錯操作包括重復當前字詞、隨機插入和按鍵盤布局相鄰表等方式插入;用詞錯誤的替換策略包括形似混淆集、音似混淆集和隨機替換
針對拼寫糾錯任務形似字錯誤:音似字錯誤:詞近似錯誤的比例為0.4:0.4:0.2;而語法糾錯的比例是亂序錯誤:缺失錯誤:冗余錯誤:用詞錯誤分別0.05:0.1:0.15:07
困惑度策略:困惑度可以用來評估句子的流暢程度,因此比賽中還通過困惑度對多個模型的輸出進行評估并選擇困惑度最低的糾錯句子作為最優(yōu)解。
成語糾錯:中文中的成語俗語是約定俗成的,因此我們維護了成語俗語規(guī)則表,利用規(guī)則匹配到疑似成語錯誤,并對修改前后的句子進行困惑度計算以確定是否接受對句子錯誤的修改。
在本次比賽的過程中,我們首先對比了基于Seq2Seq的模型和基于Seq2Edit模型的基準模型效果,然后選擇了Seq2Edit模型作為本次比賽的基本框架。由該賽道的評測指標可知,本次比賽不僅考察模型的糾錯能力,還考察模型正確區(qū)分句子對錯的能力;因此我們訓練了不同性能的多個模型并通過模型集成和困惑度來選擇最優(yōu)結果;不同模型的模型效果對比如下表所示。由表中數(shù)據(jù)可知,基于Seq2Seq的模型的檢錯能力較好,但同時模型引入了較高的誤召回,從而使得假陽性的指標偏高;而基于Seq2Edit的方法更能夠權衡精確率和召回率,使得模型在評測數(shù)據(jù)上取得更好的結果。同時通過對比可知,利用拼寫糾錯模型預先糾正用詞錯誤,然后再對其他錯誤進行糾錯,能夠提升模型的效果。
表3 不同模型的效果對比
達觀智能校對系統(tǒng)依托于自然語言處理和光學字符識別等技術,實現(xiàn)了不同格式的輸入文本的自動校對。該系統(tǒng)涵蓋了內(nèi)容糾錯、格式糾錯和行文規(guī)則糾錯等針對不同應用場景下的糾錯模塊,其中內(nèi)容糾錯模塊包括拼寫糾錯、語法糾錯、領導人糾錯、符號糾錯和敏感詞檢測等多種校對模塊。目前達觀智能校對系統(tǒng)已支持公文領域、金融領域和通用領域的文本校對任務,并且可針對不同領域的校對需求為客戶提供定制化的解決方案。
達觀智能校對系統(tǒng)的如圖4所示,其核心模塊主要是文檔解析和智能糾錯。其中智能糾錯模塊基于預訓練模型、序列標注、語言模型和知識蒸餾等技術不斷提升中文文本糾錯的精度和速度。同時達觀智能校對系統(tǒng)也在不斷探索新的技術以更好地實現(xiàn)領域遷移和無痛解鎖更多的應用場景。
圖4 達觀智能校對系統(tǒng)
對比本次比賽和實際糾錯工作中的技術落地點可知中文語法糾錯的相關研究距離工程落地還有一定的差距。
工程應用中的一些難點在于:
1、模型復雜度較高,推理速度慢
2、真實的糾錯數(shù)據(jù)較為稀缺,尤其是母語者的錯誤數(shù)據(jù)
3、糾錯模型容易出現(xiàn)過度糾正的情況,即模型的假陽性偏高
4、現(xiàn)有的模型往往無法覆蓋常識、知識型的錯誤