孫邱杰,梁景貴,李思
(北京郵電大學(xué)人工智能學(xué)院,北京 100876)
語法糾錯(Grammatical Error Correction,GEC)任務(wù)是近年發(fā)展起來的一項(xiàng)自然語言理解任務(wù),其目的是利用自然語言處理技術(shù),自動識別并糾正文本包含中的缺失詞、冗余詞、選詞錯誤、語序錯誤等語法錯誤。中文語法糾錯可支撐或應(yīng)用于搜索[1-2]、光學(xué)字符識別(Optical Character Recognition,OCR)[3-4]、文章評分[5]等。
表1 給出了一個語法糾錯的示例,其中M 代表句子有缺失詞,R 代表有冗余詞,S 代表選詞錯誤,W 代表語序錯誤。輸入序列是一個含有語法錯誤的句子;輸出序列是對應(yīng)的糾正語法錯誤后的正確句子。輸入序列與輸出序列不等長時,如缺失詞和冗余詞的情況,輸入序列和輸出序列為不對齊序列。相應(yīng)地,輸入序列與輸出序列等長時,如選詞錯誤和語序錯誤的情況,輸入序列和輸出序列為對齊序列。
表1 語法糾錯任務(wù)示例Tab.1 Examples for grammatical error correction
語法糾錯任務(wù)常被視為翻譯任務(wù)[6-8],并使用神經(jīng)機(jī)器翻譯模型,如序列到序列(Sequence to Sequence,Seq2Seq)的網(wǎng)絡(luò)結(jié)構(gòu)。輸入是含有語法錯誤的句子或者不含語法錯誤的正確句子,即源語句;對應(yīng)的輸出序列都是不含語法錯誤的正確句子,即目標(biāo)語句。在訓(xùn)練語料充足的情況下,使用Seq2Seq 網(wǎng)絡(luò)結(jié)構(gòu)通常能取得較好的結(jié)果;然而在中文語法糾錯任務(wù)中,錯誤數(shù)據(jù)的訂正標(biāo)注難度較大,需要有專業(yè)語言學(xué)知識的人員才能準(zhǔn)確標(biāo)注,這使得中文語法糾錯任務(wù)中難以獲得大量的標(biāo)注數(shù)據(jù)。因此,采用基于神經(jīng)機(jī)器翻譯方法的語法糾錯模型難以得到充分的訓(xùn)練,無法獲取高效的信息特征,使得模型糾錯性能不好?,F(xiàn)有研究工作主要從以下三方面緩解訓(xùn)練數(shù)據(jù)不足的問題:1)引入外部資源,將外部的拼音、形狀等信息作為額外特征的形式集成到模型中[9];2)使用預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型引入信息[10-11],通過使用分布式詞表征來初始化模型,如Word2Vec[12]、基 于BERT(Bidirectional Encoder Representations from Transformers)[13]的預(yù)訓(xùn)練模型[14-15];3)使用隨機(jī)遮蔽、糾錯模型回譯等數(shù)據(jù)增強(qiáng)的方法[16]。使用隨機(jī)遮蔽的數(shù)據(jù)增強(qiáng)方法是直接將文本中的一些字進(jìn)行隨機(jī)遮蔽;使用糾錯模型回譯的數(shù)據(jù)增強(qiáng)方法是將不含語法錯誤的正確句子作為模型的輸入,輸出含有語法錯誤的句子,再將得到的輸出與輸入構(gòu)建成新的錯誤-正確樣本對。使用隨機(jī)遮蔽的方法生成的偽數(shù)據(jù)可讀性較差;使用糾錯模型回譯的方法通常只能產(chǎn)生含有有限幾種錯誤類型的偽數(shù)據(jù)。即使這兩種方法可以產(chǎn)生大量含有語法錯誤的訓(xùn)練樣本,但生成的偽數(shù)據(jù)多樣性不足,與原始數(shù)據(jù)分布差別不大,直接用于訓(xùn)練容易導(dǎo)致模型過擬合;另外,這兩種方法會增加大量額外的訓(xùn)練數(shù)據(jù),在耗費(fèi)更多計算資源的情況下,模型的性能提升并不明顯。
BART(Bidirectional and Auto-Regressive Transformers)[17]是一種采用Seq2Seq 模型構(gòu)建的降噪自編碼器,可將含有噪聲的文本映射為原始文本,常作為預(yù)訓(xùn)練模型用于文本生成等任務(wù)。文本噪聲是指文本數(shù)據(jù)中含有的一些不規(guī)范數(shù)據(jù),如特殊符號,特殊操作引入或刪除的字符(插入、刪除、替換等),OCR 識別過程引入的錯誤字符等,這些噪聲通常會破壞文本原有的語義信息,降低原本的文本數(shù)據(jù)質(zhì)量。BART 噪聲器是BART 在預(yù)訓(xùn)練過程中用來破壞樣本的噪聲函數(shù)組合構(gòu)建而成的噪聲器,它可以通過多種噪聲函數(shù)組合對文本引入噪聲來得到更多較高質(zhì)量的偽訓(xùn)練數(shù)據(jù)。與其他數(shù)據(jù)增強(qiáng)的方法不同,BART 不是將得到的偽數(shù)據(jù)作為額外的訓(xùn)練數(shù)據(jù)與原始數(shù)據(jù)結(jié)合訓(xùn)練,而是直接使用這些引入噪聲后的偽數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),在一定程度上能夠起到正則化的作用,而且不會增加訓(xùn)練的數(shù)據(jù)量。另外,BART 噪聲器還能改變文本的長度,促使模型預(yù)測不等長的序列,因而也適用于輸入序列和輸出序列是不對齊序列的情況。
因此,本文提出了一種基于BART 噪聲器的中文語法糾錯模型(Chinese Grammatical Error Correction Model based on BART Noiser,BN-CGECM)。該模型使用基于BART 噪聲器的數(shù)據(jù)增強(qiáng)算法,在訓(xùn)練過程中,通過BART 噪聲器對輸入樣本引入文本噪聲,自動生成更多樣的含噪文本用于模型訓(xùn)練,以此來提高中文語法糾錯的性能。針對選詞錯誤,引入BART 噪聲器中字屏蔽和隨機(jī)字替換的噪聲方法,讓模型學(xué)習(xí)預(yù)測對齊序列;針對缺失詞和冗余詞錯誤,引入文本填充的噪聲方法,讓模型預(yù)測學(xué)習(xí)預(yù)測不對齊序列。實(shí)驗(yàn)結(jié)果表明該模型對于中文語法糾錯任務(wù)有很好的表現(xiàn)。
早期,解決語法糾錯任務(wù)的主流方法是先檢測錯誤再利用大型的字典對錯誤處的文本進(jìn)行匹配,得到更正文本[18-21]。文獻(xiàn)[20]中分類模型與一些特征并用,來解決限定詞和介詞的錯誤;文獻(xiàn)[21]中提出了一種混合模型來解決語法糾錯任務(wù),針對各類語法錯誤訓(xùn)練特定的分類器并整合。然而這類方法都只能修正文本中特定的幾種錯誤類型。
為了修正更多類型的錯誤,文獻(xiàn)[22]首先將語法糾錯任務(wù)看作翻譯任務(wù),并采用了一個基于統(tǒng)計機(jī)器翻譯的語法糾錯模型;文獻(xiàn)[23]引進(jìn)了特殊制定的統(tǒng)計機(jī)器翻譯架構(gòu);文獻(xiàn)[24]采用基于規(guī)則的方法與統(tǒng)計機(jī)器翻譯模型、語言模型相結(jié)合,進(jìn)一步提高了語法糾錯系統(tǒng)的性能。
最近,隨著深度學(xué)習(xí)的廣泛應(yīng)用,基于神經(jīng)機(jī)器翻譯的方法也被應(yīng)用到語法糾錯領(lǐng)域。文獻(xiàn)[25]中使用基于循環(huán)神經(jīng)網(wǎng)絡(luò)架構(gòu)的序列到序列模型,取得了不錯的結(jié)果;文獻(xiàn)[26]使用基于卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的序列生成模型,利用語言模型對最后生成的多個結(jié)果進(jìn)行重新排序,成為第一個性能超過統(tǒng)計機(jī)器翻譯方法的神經(jīng)糾錯模型;文獻(xiàn)[27]將Transformer 架構(gòu)引入了神經(jīng)語法糾錯方法中,使得語法糾錯系統(tǒng)性能得到較大提升。
為了解決標(biāo)注數(shù)據(jù)不足的問題,文獻(xiàn)[9]中將外部的拼音、形狀等信息作為額外特征引入糾錯模型;文獻(xiàn)[28]中通過使用基于BERT 的預(yù)訓(xùn)練語言模型引入額外信息;文獻(xiàn)[29]和文獻(xiàn)[30]為語法糾錯任務(wù)提出了合成平行語料的方法,這一過程也是錯誤生成的過程,它屬于數(shù)據(jù)增強(qiáng)方法的一種。實(shí)驗(yàn)結(jié)果表明,它們的方法合成的訓(xùn)練數(shù)據(jù)與額外附加的非合成數(shù)據(jù)有相同的效果。
直到NLPCC 2018(The 7th CCF International Conference on Natural Language Processing and Chinese Computing)中文語法糾錯共享任務(wù)[31]提出后,中文語法糾錯任務(wù)逐漸引來了更多的關(guān)注。文獻(xiàn)[32]中將中文語法糾錯任務(wù)劃分為3 個階段,每個階段訓(xùn)練各自的模型,這種方法取得了不錯的效果,但比較復(fù)雜;文獻(xiàn)[33]中使用的是基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的Seq2Seq 模型,利用基于中文語法修正Word2Vec 后的wang2vec 作為詞嵌入,并引入了位置信息。
語法糾錯任務(wù)可以作為一個序列到序列任務(wù),語法糾錯系統(tǒng)的目標(biāo)是將一個可能含有語法錯誤的句子X=(x1,x2,…,xn)作為輸入,其中n是句子長度,并將其轉(zhuǎn)化成對應(yīng)的正確句子Y=(y1,y2,…,ym)作為輸出,語法糾錯模型可以當(dāng)作一個映射函數(shù)f:X→Y。
BN-CGECM 框架如圖1 所示。模型主要包括兩個部分:基于BART 噪聲器的數(shù)據(jù)增強(qiáng)部分和神經(jīng)語法糾錯模型部分。本文首先構(gòu)建一個含有n個噪聲單元的BART 噪聲器,對源句子中的每一個字引入噪聲,得到有噪輸入,達(dá)到數(shù)據(jù)增強(qiáng)的效果;然后,構(gòu)建一個使用預(yù)訓(xùn)練模型初始化后的基于Transformer 架構(gòu)的神經(jīng)語法糾錯模型,將得到的有噪輸入樣本用于神經(jīng)語法糾錯模型的訓(xùn)練。下面將詳細(xì)介紹BART 噪聲器和神經(jīng)語法糾錯模型這兩部分。
圖1 BN-CGECM框架Fig.1 Architecture of BN-CGECM
對于神經(jīng)網(wǎng)絡(luò)生成模型,訓(xùn)練語料庫的大小通常是影響模型表現(xiàn)的重要因素之一。因此為了獲得更多的有效訓(xùn)練數(shù)據(jù),本文在BART 中用噪聲函數(shù)[17]給訓(xùn)練過程中輸入含錯語句引入噪聲,得到被破壞的源句子。通過這種方法能夠在不增加額外數(shù)據(jù)的情況下,在訓(xùn)練過程中生成更多樣的語法糾錯句子對實(shí)例,從而能提高糾錯模型的泛化能力。方法定義如下:如算法1 所示,對于給定的輸入源語句X=(x1,x2,…,xn),對應(yīng)的目標(biāo)語句Y=(y1,y2,…,ym),將X通過BART 噪聲器中的映射函數(shù)fs(x),對于第t輪訓(xùn)練批次的源句子X(t)中的每個字都有固定的概率通過噪聲器中的噪聲函數(shù)進(jìn)行映射,從而得到有噪輸入:
其中的第i個字由式(2)給出:
其中:p是在[0,1]內(nèi)均勻分布上產(chǎn)生的隨機(jī)數(shù),δ則是引入噪聲的固定概率;fs(xi)是BART 噪聲函數(shù),s∈{TM,RS,TI,Mixed}。將-X(t)與Y構(gòu)建成新的句子對S(t)并用于語法糾錯模型訓(xùn)練。
算法1 BART 噪聲方法。
輸入X(t)為第t輪的輸入源語句;Y(t)為源語句對應(yīng)的目標(biāo)語句;D為訓(xùn)練樣本對;f為BART 噪聲函數(shù)。
輸出 含有噪聲的樣本對S(t)。
不同的噪聲策略在模型表現(xiàn)上能夠產(chǎn)生不同的效果,本文使用字屏蔽(Token Mask,TM)、隨機(jī)字替換(Random Substitution,RS)、文本填充(Text Infilling,TI)以及混合方法(Mixed)4 種噪聲方法來對輸入的含錯語句引入噪聲。4 種方法具體如下:
1)字屏蔽。參照文獻(xiàn)[13]中方法,輸入的含錯句子中的每個字都有固定的概率δ被替換成“#”符號,這種方式能夠成倍地增加訓(xùn)練樣本的數(shù)目,且能增加樣本錯誤的多樣性,減少訓(xùn)練樣本錯誤的重復(fù)性。這種方式也能減少語法糾錯模型對一些特定單詞的依賴,更好地學(xué)習(xí)上下文信息,從而提高性能。另外,這種方法能促使模型作出字的替換,更有利于糾正選詞錯誤類型。對應(yīng)的噪聲函數(shù)fTM(xi)如式(3)所示:
2)隨機(jī)字替換。與字屏蔽方法類似,從字典中隨機(jī)采樣一個字Vr,輸入的含錯句子中的每個字有δ的概率被替換成字典中的任意一個字,而不是“#”,字典中被選中替換的字是等概率的。這種方式可以產(chǎn)生更接近真實(shí)錯誤的訓(xùn)練樣本。對應(yīng)的噪聲函數(shù)fRS(xi)如式(4)所示:
4)混合方法。在訓(xùn)練過程中,對于每一個訓(xùn)練批次隨機(jī)選取一個噪聲函數(shù)對輸入的句子引入噪聲。
不同噪聲方案引入的噪聲示例如圖2 所示。假定有輸入句子:明天我要早起。通過字遮蔽的方法,“天”和“要”兩個字被替換成了“#”符號。隨機(jī)字替換的方法則是將“天”和“要”分別替換成了字典中的隨機(jī)字“后”和“字”。與前面兩種方法不同的是,文本填充將文本段“天”和“早起?!碧鎿Q成了“#”符號。
圖2 不同噪聲方案的噪聲示例Fig.2 Examples of different noise schemes
語法糾錯任務(wù)一般可以作為一個序列到序列的任務(wù)進(jìn)行處理,序列到序列模型一般由編碼器和解碼器兩部分組成,并且序列到序列的模型在很多自然語言理解任務(wù)上已經(jīng)被驗(yàn)證了它的有效性,比如機(jī)器翻譯、文本摘要、對話系統(tǒng)等。為了能夠糾正潛在的語法錯誤,語法糾錯系統(tǒng)必須要理解句子的意思,然而在一個自然語言句子中可能存在長距離依賴關(guān)系的問題。循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)擅長對單詞序列建模和捕捉句子的上下文信息,因此以往的語法糾錯模型大多使用RNN,特別是長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)。又因?yàn)榇蠖鄶?shù)語法錯誤非常依賴于附近的錯誤,因此語法糾錯系統(tǒng)捕捉上下文信息的能力非常重要,CNN 則可以通過卷積操作有效地捕獲局部信息,所以也有很多神經(jīng)語法糾錯模型中采用CNN 結(jié)合注意力機(jī)制的做法。
以往的神經(jīng)語法糾錯模型大多使用RNN 或CNN 來作為編碼器和解碼器的結(jié)構(gòu),而Transformer 是一種新型的編解碼器框架。它是由谷歌提出的完全基于自注意力機(jī)制的一種編解碼器結(jié)構(gòu),且它已被證明對單詞序列具有很強(qiáng)的建模能力以及能在機(jī)器翻譯任務(wù)中取得很好的效果,因此本文采用Transformer 框架來作為神經(jīng)語法糾錯模型框架,把語法糾錯任務(wù)作為一個機(jī)器翻譯任務(wù),把可能含有語法錯誤的句子X作為源句子,對應(yīng)的正確句子作為目標(biāo)句子,D={(X,Y)}作為訓(xùn)練集。首先,Transformer 模型的編碼器將含有N個字符的源句子編碼成含有整個輸入句子語義信息的隱藏層表征,然后解碼器從中解碼得到目標(biāo)隱藏層表征,最后,目標(biāo)隱藏層表征可以得到各個字符的生成概率p(yi|y1:i-1),通過一個投影矩陣WH和softmax 層得到輸出序列y1:i-1。整個過程計算如式(7)~(9)所示:
將生成概率的負(fù)對數(shù)作為目標(biāo)函數(shù),其中θ是可訓(xùn)練的參數(shù)。
在訓(xùn)練開始前,使用基于BERT 的預(yù)訓(xùn)練模型權(quán)重Θ對Transformer 的編碼器層所有參數(shù)θs進(jìn)行初始化,Transformer的解碼器參數(shù)θt則是使用權(quán)重Wij對解碼器每層參數(shù)進(jìn)行初始化,Wij服從均勻分布,如式(11)所示:
為了驗(yàn)證本文方法的有效性,本文在NLPCC 2018 Shared Task 2[31]數(shù)據(jù)集上進(jìn)行了一系列實(shí)驗(yàn)。該數(shù)據(jù)語料來源于一個專門為學(xué)習(xí)外語寫作的人提供的交流平臺lang-8。數(shù)據(jù)集的統(tǒng)計結(jié)果如表2 所示,Src 代表源語句,也就是待校對語料,Tgt 代表目標(biāo)語句,也就是源語句所對應(yīng)的正確語料。由于數(shù)據(jù)集中的錯誤句子可能含有多個對應(yīng)的正確句子,本文首先將源語句和各個正確語句一一對應(yīng)的構(gòu)建成一個平行語料庫。通過這種方式總共得到了1 200 000 個句子對。參考文獻(xiàn)[21],從訓(xùn)練語料中隨機(jī)采樣了5 000 條句子對作為驗(yàn)證集。本文使用BART 噪聲器對訓(xùn)練數(shù)據(jù)引入文本噪聲,使用引入噪聲后的偽數(shù)據(jù)替換原有訓(xùn)練集用于模型訓(xùn)練。
表2 NLPCC 2018 Task 2 數(shù)據(jù)集Tab.2 NLPCC 2018 Task 2 dataset
本文使用MaxMatch(M2)scorer[34]來對語法糾錯模型進(jìn)行評估。在給定一個源語句和一個系統(tǒng)更正(hypotheses)的情況下,M2scorer 計算它們之間所有可能的短語級編輯序列,并找到與標(biāo)準(zhǔn)標(biāo)注集重疊程度最高的編輯序列,再利用該最優(yōu)序列計算精確率(Precision,P)、召回率(Recall,R)和F0.5值。具體的計算公式如式(12)~(15)所示:
后來有好長時間沒有看見老崔,馮一余問保安老崔到哪里去了。保安說,老崔受傷了,他回家停車,停在小區(qū)的池塘邊,打了滑,車子掉到池塘里,他差點(diǎn)淹死。幸好有巡夜的保安看到了,救了上來,腦子進(jìn)了水,有點(diǎn)呆。
其中:{g1,g2,…,gn}是標(biāo)準(zhǔn)的更正集合,{s1,s2,…,sn}是系統(tǒng)更正的集合。
本文實(shí)驗(yàn)具體超參數(shù)設(shè)置如下:序列到序列模型結(jié)構(gòu)使用的是Transformer 結(jié)構(gòu),編碼器由6 個相同的層組成,其中有兩個子層,分別是1 個多頭自注意層和1 個全連接的前饋網(wǎng)絡(luò),解碼器同樣是6 個相同的層。多頭自注意層的頭數(shù)設(shè)置為8,Transformer 的前饋網(wǎng)絡(luò)維度為4 096,源端和目標(biāo)端的字向量維度均為512。模型使用了位置編碼信息。模型訓(xùn)練時參數(shù)的dropout 的概率為0.1,使用Adam 優(yōu)化器并且初始學(xué)習(xí)率設(shè)置為2,β值為(0.9,0.998)。使用Noam 的學(xué)習(xí)率遞減策略,warmup_steps 為8 000,并加入了ε值為0.1 的標(biāo)簽平滑策略。Batch size 的大小為4 096 個字,模型推理時的beam size 為12。噪聲函數(shù)的δ設(shè)置為0.3,文本填充泊松分布λ為3。整個訓(xùn)練過程都采用了提前終止技術(shù),并且選擇驗(yàn)證集困惑度最低的模型作為最佳模型。本文的模型運(yùn)行5 次并取所有結(jié)果的中位數(shù)。
本文方法的基線模型是文獻(xiàn)[28]中的BERT-encoder 和BERT-encoder_ensemble以及NLPCC 2018 Task 2 中表現(xiàn)優(yōu)異的系統(tǒng):YouDao[32]、BLCU[33]、BLCU(ensemble)[33]。
BERT-encoder 用Chinese-RoBERTa-wwm-ext 學(xué)習(xí)到的參數(shù)初始化Transformer 的編碼器,Transformer 的解碼器隨機(jī)初始化。
BERT-encoder_ensemble 由4 個單個BERT-encoder 模型集成。
YouDao 是有道開發(fā)的中文語法糾錯系統(tǒng),將CGEC 任務(wù)劃分為3 個階段,每個階段訓(xùn)練各自的模型,他們將錯誤分為表面錯誤和語法錯誤,使用相似字音表+5-gram 模型來解決低級錯誤,使用字級、詞級Transformer 模型來解決高級錯誤,將低級模型和高級模型進(jìn)行組合,最終再用5-gram 語言模型對糾正后句子進(jìn)行困惑度分析,選擇困惑度最低的句子。
BLCU 和BLCU_ensemble 是北京語言大學(xué)開發(fā)的中文語法糾錯系統(tǒng),前者基于多層卷積Seq2Seq 模型,后者是4 個單個模型的集成。
表3 總結(jié)了在NLPCC 2018 中文語法糾錯共享任務(wù)數(shù)據(jù)集上,本文模型與基線模型的實(shí)驗(yàn)結(jié)果。BN-CGECM_ensemble 是由4 個利用混合方法噪聲策略訓(xùn)練得到的模型的集成。由表3 的實(shí)驗(yàn)結(jié)果可以看出,BN-CGECM 模型性能優(yōu)于所有單個的基線模型,BN-CGECM_ensemble 模型性能優(yōu)于所有的基線模型,達(dá)到了37.05%的F0.5值,相較于YouDao 提升了7.14 個百分點(diǎn),相較于BLCU_ensemble 提升了6.48 個百分點(diǎn),相較于BERT-encoder_ensemble 提升了1.54 個百分點(diǎn)。這些實(shí)驗(yàn)結(jié)果驗(yàn)證了本文數(shù)據(jù)增強(qiáng)的方法在語法糾錯任務(wù)上的有效性。
表3 幾種模型在NLPCC 2018數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果 單位:%Tab.3 Experimental results of several models on NLPCC 2018 dataset unit:%
此外,為了觀察不同的噪聲函數(shù)方法對神經(jīng)語法糾錯模型性能表現(xiàn)的影響,本文分析了BART 噪聲器使用不同的噪聲策略對實(shí)驗(yàn)結(jié)果的影響,如表4 所示??梢钥吹?,字屏蔽和文本填充方法能有效提高模型的精確率和召回率,它們都能一定程度促使模型對選詞錯誤、冗余詞和缺失詞錯誤進(jìn)行修正。隨機(jī)字替換的方法能有效提高模型召回率,但會明顯降低模型精確率,推測是因?yàn)殡S機(jī)字替換會生成大量的選詞錯誤類型,這會促使模型對輸入序列做出過多的修改預(yù)測,這樣雖然能改正較多的選詞錯誤,但是也會將很多不是選詞錯誤的詞改錯,因而會大幅降低模型精確率?;旌戏椒ǖ牟呗阅軌蛴行岣呔_率,且保持相對較高的召回率,原因可能是它隨機(jī)使用了字屏蔽、隨機(jī)字替換和文本填充方法,可以生成更為多樣的錯誤數(shù)據(jù),模型能學(xué)習(xí)做出更多的修改預(yù)測,但也不會像隨機(jī)字替換方法那樣過度預(yù)測,能在3 種方法間達(dá)到平衡。
表4 不同噪聲方法的實(shí)驗(yàn)結(jié)果 單位:%Tab.4 Experimental results of different noise methods unit:%
另外,圖3 分析了BN-CGECM 模型與原始模型Char-Transformer 收斂速度情況,ppl 指模型的困惑度(perplexity),是一個用來衡量模型好壞的指標(biāo)。由圖3 可以看出,BNCGECM 比Char-Transformer 更快收斂,但最終的訓(xùn)練困惑度略高于Char-Transformer,推測是因?yàn)锽N-CGECM 引入的文本噪聲雖然能起到一定的正則化作用,但仍然會增加訓(xùn)練過程中模型學(xué)習(xí)文本語義信息的難度。
圖3 模型收斂速度比較Fig.3 Comparison on convergence speed of models
同時本文也分析了使用不同的預(yù)訓(xùn)練模型來初始化編碼器對模型性能的影響,如表5 所示,“—”代表沒有使用預(yù)訓(xùn)練模型進(jìn)行初始化,Chinese-BERT-wwm 代表使用Chinese-BERT-wwm預(yù)訓(xùn)練模型進(jìn)行初始化,Chinese-BERT-wwm-ext和Chinese-RoBERTa-wwm-ext同理。實(shí)驗(yàn)結(jié)果表明,使用預(yù)訓(xùn)練模型能夠提升模型性能,且使用Chinese-RoBERTa-wwm-ext模型進(jìn)行參數(shù)初始化在各方面性能優(yōu)于其他兩個預(yù)訓(xùn)練模型。
表5 不同預(yù)訓(xùn)練模型的實(shí)驗(yàn)結(jié)果 單位:%Tab.5 Experimental results of different pre-trained models unit:%
本文提出了一種基于BART 噪聲器的中文語法糾錯模型,即BN-CGECM 模型,以此緩解中文語法糾錯任務(wù)缺乏大量標(biāo)注數(shù)據(jù)的影響。該模型通過BART 噪聲器對訓(xùn)練過程中的輸入樣本引入文本噪聲,自動生成更多樣的含噪文本用于模型訓(xùn)練,緩解了中文語法糾錯任務(wù)標(biāo)注數(shù)據(jù)有限對模型性能的影響。實(shí)驗(yàn)結(jié)果表明該模型在語法糾錯任務(wù)上的有效性。未來的工作在于探索更適合語法糾錯任務(wù)的方法來破壞訓(xùn)練樣本,從而獲得具有更多、更真實(shí)語法錯誤類型的訓(xùn)練樣本。