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