陳 哲,曹 陽
(東南大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 211102)
隨著中國經(jīng)濟(jì)的發(fā)展和國際地位的不斷提高,漢語在全世界得到了極大程度的普及,越來越多的人們開始學(xué)習(xí)漢語,并通過使用漢字進(jìn)行書面交流。漢語是一門復(fù)雜的表意語言,在使用的過程中難免會出現(xiàn)拼寫錯誤,影響使用者的正常表達(dá)。與英文這類拼音文字相比,拼音文字的拼寫錯誤更多集中于個別字母的增減或錯用;而漢字這類象形文字除了由語音相似引起的拼寫錯誤之外,還會因為外形的形狀相似而造成使用者的拼寫錯誤。根據(jù)Liu 等[1]人的研究,約83%的漢語拼寫錯誤與語音相似性有關(guān),48%的錯誤與視覺相似性有關(guān)。這些漢語中語音或視覺上很相似的漢字,語義卻大不相同,使用者的拼寫錯誤將極大改變原本想要表達(dá)的句子含義。另外,除了人類書寫會造成拼寫錯誤,現(xiàn)如今應(yīng)用越來越普遍的自動語音識別、光學(xué)字符識別也會造成漢字的拼寫錯誤。因此,對漢語的拼寫進(jìn)行檢查是有意義的。
漢語拼寫檢查(Chinese spelling check,CSC)是自然語言處理(natural language processing,NLP)中一項檢測和糾正漢語拼寫錯誤的任務(wù),旨在通過使用統(tǒng)計或者深度學(xué)習(xí)的方法來解決漢語書寫錯誤的問題。盡管最近研究人員在漢語拼寫檢查領(lǐng)域取得了一些進(jìn)展,但漢語拼寫檢查依舊是一項具有挑戰(zhàn)性的任務(wù)。另外,相比英文的拼寫糾錯,漢語拼寫檢查更加注重利用上下文信息之間的關(guān)系來進(jìn)行錯字的識別與修改。
以往的漢語拼寫檢查方法傾向于使用混淆集來查找和過濾候選詞?;煜刹徽_的統(tǒng)計數(shù)據(jù)構(gòu)成,它在視覺相似對和語音相似對之間有一個映射。Yu 等[2]建議通過檢索混淆集,然后利用語言模型對其進(jìn)行過濾,從而產(chǎn)生多個候選;Wang 等[3]使用指針網(wǎng)絡(luò)從混淆集中復(fù)制類似字符。然而,這些模型只從混淆集中學(xué)習(xí)一個淺映射,其性能在很大程度上取決于混淆集的質(zhì)量。而如今隨著漢語在各個領(lǐng)域內(nèi)的使用,很難找到一個最新的混淆集。另外,以往的研究傾向于使用單種模型來進(jìn)行拼寫檢查任務(wù),而實際上使用模型組合的方式分別完成檢測和糾正能得到更好的效果。
為解決上述問題,本文提出了一個漢語拼寫檢查模型。該模型由檢測網(wǎng)絡(luò)和糾正網(wǎng)絡(luò)構(gòu)成。其中,由雙向長短期記憶網(wǎng)絡(luò)(bidirectional long shortterm memory,BiLSTM)結(jié)合條件隨機(jī)場(conditional random field,CRF)構(gòu)成的檢測網(wǎng)絡(luò)用于檢測視覺錯誤詞與語音錯誤詞。LSTM 是一種循環(huán)神經(jīng)網(wǎng)絡(luò)模型,相比普通的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)模型,LSTM 獨(dú)特的門機(jī)制可以更有效地保存有用信息。利用雙向LSTM 則可以同時從前文和后文獲取信息。CRF 是一種用來捕獲序列潛在特征的機(jī)器學(xué)習(xí)方法,在序列標(biāo)注問題中有較多應(yīng)用。將檢測出的拼寫錯誤詞進(jìn)行掩蓋,輸入到基于BERT(bidirectional encoder representations from transformer)模型構(gòu)成的糾正網(wǎng)絡(luò)中,糾正網(wǎng)絡(luò)將結(jié)合上下文對掩蓋的詞進(jìn)行預(yù)測,達(dá)到糾正拼寫錯誤詞的目的。其中BERT 模型是近些年來最為火熱的NLP預(yù)訓(xùn)練模型,它及各種演變模型在許多NLP 任務(wù)中都大放異彩。在測試集上的實驗表明,本文提出的模型得到了先進(jìn)的結(jié)果。
本文的主要貢獻(xiàn)如下:
1)提出一個漢語拼寫檢查模型,該模型能夠不依賴于混淆集,并且利用模型組合的優(yōu)勢,對句子中的視覺錯誤詞及語音錯誤詞通過檢測模型進(jìn)行檢測,然后利用糾正模型進(jìn)行糾正;
2)本文所提出的模型在SIGHAN-2015 測試數(shù)據(jù)集上的評價指標(biāo)結(jié)果比現(xiàn)有的漢語拼寫檢查方法表現(xiàn)更好。
論文結(jié)構(gòu)安排如下:第1 節(jié)介紹漢語拼寫檢查的相關(guān)工作;第2 節(jié)介紹本文所提出的漢語拼寫檢查模型結(jié)構(gòu);第3 節(jié)介紹實驗相關(guān)設(shè)置;第4 節(jié)介紹實驗的結(jié)果和分析;第5 部分對全文工作進(jìn)行總結(jié)。
許多研究者對漢語拼寫檢查任務(wù)已進(jìn)行了大量研究。早些年研究者利用N 元語言模型來做漢語拼寫檢查任務(wù)。Xie 等[4]提出一種基于二元和三元語言模型,以及漢語分詞的方法;Jin 等[5]使用了一種混合方法來進(jìn)行漢語拼寫糾正。他們集成了3 種模型,包括N 元語言模型、基于拼音的語言模型和基于聲調(diào)的語言模型,用來提高漢語拼寫錯誤檢查系統(tǒng)的性能。
還有的方法將漢語拼寫檢查視為序列生成問題或序列標(biāo)記問題。Wang 等[3]引入復(fù)制機(jī)制以生成糾正序列;Bao 等[6]通過基于塊的生成模型統(tǒng)一了單字符和多字符糾正。
隨著預(yù)訓(xùn)練模型(pre-trained models,PTM)在機(jī)器翻譯領(lǐng)域大放異彩,研究者們開始將預(yù)訓(xùn)練模型引入到CSC 任務(wù)中。具體做法為引入掩蔽語言模型(masked language model,MLM)作 為預(yù)訓(xùn) 練任務(wù),根據(jù)上下文條件預(yù)測拼寫錯誤的詞并對其進(jìn)行糾正?;贛LM 可以將混淆集應(yīng)用于狹窄的搜索空間,以預(yù)測正確的字。Cheng 等[7]通過混淆集構(gòu)建了一個圖表,以幫助最終預(yù)測;Nguyen 等[8]提出了一個適應(yīng)性混淆集,但其訓(xùn)練過程不是端到端的;Li等[9]采用一種混淆集引導(dǎo)的掩蔽策略來對掩蔽語言模型進(jìn)行訓(xùn)練。
最近,一些拼寫檢查方法還利用了語音特征和視覺特征。Liu 等[10]使用門控循環(huán)單位(gated recurrent unit,GRU)[11]將拼音序列和漢字筆畫序列編碼為額外特征;Xu 等[12]對字符的圖片進(jìn)行編碼以獲得視覺特征;Li 等[13]利用圖卷積神經(jīng)網(wǎng)絡(luò)引入拼音和部首信息作為語音和視覺特征;Yin 等[14]采用K 近鄰模型結(jié)合語音、圖形、上下文信息進(jìn)行拼寫糾錯。
不同于以往研究者只使用序列標(biāo)注模型或者預(yù)訓(xùn)練模型,本文在總結(jié)前人工作經(jīng)驗的基礎(chǔ)上,同時使用了這兩種模型,并結(jié)合模型特點(diǎn)分配檢測和糾正任務(wù),從而發(fā)揮出不同模型各自的優(yōu)勢,以得到更好的效果。具體來說,本文使用BiLSTM +CRF 的結(jié)構(gòu)構(gòu)成檢測模型,來檢測句子中的拼寫錯誤,并對錯誤詞做特殊處理;使用預(yù)訓(xùn)練模型BERT作為糾正模型,來糾正檢測出的錯誤詞。
另外,本文還在模型中結(jié)合了漢字的語音和視覺特征來提升效果。下文將在第2 節(jié)介紹提出的模型。
本文將在這一部分介紹提出的漢語拼寫檢測模型。模型由檢測網(wǎng)絡(luò)和糾正網(wǎng)絡(luò)組成,并融入了漢字的視覺特征和語音特征。
整體的拼寫檢查模型結(jié)構(gòu)如圖1 所示。不同于只利用序列標(biāo)注模型或者預(yù)訓(xùn)練模型的現(xiàn)有方法,本文提出的方法同時使用了兩種模型:1)利用序列標(biāo)注模型進(jìn)行錯詞檢測;2)使用BERT[15]模型進(jìn)行錯詞糾正。這種方式可以更大程度發(fā)揮模型優(yōu)勢,以達(dá)到更好的效果。
圖1 本文提出的拼寫檢查模型結(jié)構(gòu)示意圖Fig.1 Structure of spell checking model
模型工作流程如下:
1)將待檢查句子輸入模型進(jìn)行輸入嵌入(input embedding);
2)輸入嵌入通過檢測網(wǎng)絡(luò)進(jìn)行檢測,若未檢測出錯誤詞,則直接輸出結(jié)果,否則對錯誤詞進(jìn)行掩蓋嵌入處理;
3)將經(jīng)過掩蓋處理的嵌入輸入到糾正網(wǎng)絡(luò)中進(jìn)行修改,將得到的輸出與輸入嵌入進(jìn)行殘差連接作為模型的輸出。使用殘差連接可以緩解深度模型由于層數(shù)過多而導(dǎo)致的梯度消失問題。
在將漢字的表示輸進(jìn)模型之前需要對輸入的漢字做嵌入。本文采用類似BERT 模型的嵌入方式對輸入的漢字進(jìn)行嵌入,如圖2 所示。具體來說,字符嵌入包含了每個漢字的信息;段嵌入用以記錄段落信息;位置嵌入記錄不同漢字的位置。除此之外,本文在嵌入中增加了筆畫嵌入及語音嵌入。筆畫嵌入包含了每個漢字的筆畫信息,用以記錄視覺特征;而語音嵌入包含了每個漢字的拼音信息,用以記錄語音特征。
檢測網(wǎng)絡(luò)旨在檢測出句子中拼寫錯誤的字。本文提出使用BiLSTM[16]結(jié)合CRF 的方式構(gòu)成檢測網(wǎng)絡(luò)。條件隨機(jī)場CRF 是一種無向圖模型,它結(jié)合了最大熵模型和隱馬爾科夫模型的特點(diǎn),常用于標(biāo)注或分析序列資料。由于CRF 可以彌補(bǔ)循環(huán)神經(jīng)網(wǎng)絡(luò)無法捕獲序列潛在轉(zhuǎn)移關(guān)系的不足,使得BiLSTM +CRF 的結(jié)構(gòu)在命名實體識別、語法檢錯等領(lǐng)域中有較多應(yīng)用。鑒于任務(wù)的相似性,本文使用類似語法檢錯的方式對拼寫錯誤的字進(jìn)行檢測。分別給句子中的正常字、語音錯誤字、視覺錯誤字賦予不同的標(biāo)簽,如圖3 所示。通過檢測網(wǎng)絡(luò)可以給不同的字打上不同的標(biāo)簽:圖中達(dá)(撻)為視覺錯誤字,標(biāo)簽為R;高(糕)為語音錯誤字,標(biāo)簽為V;其他正確字標(biāo)簽為O。
圖3 漢字標(biāo)簽示例Fig.3 Chinese character label example
訓(xùn)練檢測網(wǎng)絡(luò)模型能夠找到句子中不同類別的拼寫錯誤。檢測網(wǎng)絡(luò)模型如圖4 所示。具體來說,將經(jīng)過嵌入后的字符Ei(i=1,2,…,n)輸入到BiLSTM 網(wǎng)絡(luò)中,將前向輸出與后向輸出拼接后得到的結(jié)果Ti(i=1,2,…,n)輸入到CRF 層中,CRF 層將根據(jù)Ti的特征及不同Ti之間的轉(zhuǎn)移關(guān)系計算出最佳的組合標(biāo)簽序列,以此作為檢測模型的輸出。
圖4 檢測網(wǎng)絡(luò)Fig.4 Detection network
在送入糾正網(wǎng)絡(luò)之前,需要對找出的錯誤字進(jìn)行掩蓋(mask)處理。由于錯字在視覺上或者語音上與正確字相似,因此,它與正確字之間存在一定的聯(lián)系。為此本文對找出的錯字進(jìn)行軟掩蓋(soft mask)[17]處理
其中:θ 為軟掩蓋參數(shù);Ei表示錯誤字的嵌入表示,i=1,2,…,n;EM表示掩蓋標(biāo)志的嵌入表示。本文中θ取0.5。對于正確的字,不對其做掩蓋處理。
糾正網(wǎng)絡(luò)旨在結(jié)合全局上下文對掩蓋后的字進(jìn)行預(yù)測,以達(dá)到糾錯的目的。糾正網(wǎng)絡(luò)主體為BERT 模型,模型架構(gòu)如圖5 所示,圖中Ei(i=1,2,…,N)表示嵌入表示,Trm 表 示transformeer 模型。BERT 由雙向transformer[18]的編碼器構(gòu)成,基于注意力機(jī)制的架構(gòu)使得BERT 擺脫傳統(tǒng)語言模型的束縛,可以同時利用上下文的信息進(jìn)行預(yù)測。另外,糾正網(wǎng)絡(luò)利用上下文預(yù)測掩蓋詞的任務(wù)與BERT 的MLM(mask language model)預(yù)訓(xùn)練任務(wù)是契合的,因此選用BERT 模型作為糾正網(wǎng)絡(luò)是合理的。糾正網(wǎng)絡(luò)接收經(jīng)過掩蓋處理后的嵌入,輸出經(jīng)模型修改后的結(jié)果。
圖5 BERT 模型架構(gòu)圖Fig.5 BERT model architecture
為了使模型能夠達(dá)到拼寫檢查的目的,本文設(shè)計了錯誤詞檢測-修改預(yù)訓(xùn)練任務(wù)。錯誤詞檢測-修改任務(wù)旨在預(yù)測句子中錯誤詞的位置,并將該詞進(jìn)行糾正,以此來訓(xùn)練模型的檢查效果。對訓(xùn)練集中的錯詞按照視覺錯誤與語音錯誤進(jìn)行分類。本文將正確的句子表示為
包含錯誤漢字的句子表示為
其中:rj表示視覺錯誤詞;vi表示語音錯誤詞。記錄錯誤詞位置信息為p=[j,i],sc對應(yīng)的標(biāo)簽信息為
其中,R,V 分別表示視覺錯誤標(biāo)簽與語音錯誤標(biāo)簽。檢測-修改任務(wù)通過訓(xùn)練模型,得到錯句sc的正確標(biāo)簽序列pos,并利用pos 糾正rj,vi為tj,ti。
最后,分別計算檢測網(wǎng)絡(luò)和糾正網(wǎng)絡(luò)的損失,如式(2)與式(3)所示。
檢測網(wǎng)絡(luò)的損失函數(shù)為
其中:xi表示CRF 中第i 條路徑狀態(tài)分?jǐn)?shù)與轉(zhuǎn)移分?jǐn)?shù)之和,共有mn條路徑;n 為序列長度;m 為標(biāo)簽種類數(shù)。檢測網(wǎng)絡(luò)損失函數(shù)Lossd表示為真實路徑分?jǐn)?shù)占總路徑分?jǐn)?shù)的比重的負(fù)數(shù),即真實路徑分?jǐn)?shù)占比越高,損失函數(shù)越小。
糾正網(wǎng)絡(luò)的損失函數(shù)為
其中:S 表示正確句子樣本;Sc表示錯誤句子樣本表示被掩蓋的詞經(jīng)過糾正網(wǎng)絡(luò)糾正后得到的結(jié)果;Θ 表示模型參數(shù)。修改網(wǎng)絡(luò)損失函數(shù)為句子中所有字的交叉熵?fù)p失和。計算得到最終的損失函數(shù)
其中,0 <λ <1。
本節(jié)將介紹實驗使用的訓(xùn)練數(shù)據(jù)集與測試數(shù)據(jù)集,以及漢語拼寫檢查的評價標(biāo)準(zhǔn)。同時對所使用模型的超參數(shù)進(jìn)行介紹。
采用CLP-2014 數(shù) 據(jù)集[19],SIGHAN-2013 數(shù) 據(jù)集[20]和SIGHAN-2015 訓(xùn)練數(shù)據(jù)集[21]作為本文的訓(xùn)練數(shù)據(jù)。訓(xùn)練數(shù)據(jù)中一共有8 538 個句子,其中有897 個句子沒有錯誤,7 641 個句子有一處或多處錯誤。
采用SIGHAN-2015CSC 測試數(shù)據(jù)集作為測試數(shù)據(jù)。測試數(shù)據(jù)中一共有1 100 個句子,其中有550個句子沒有錯誤,550 個句子有一處或多處錯誤。CLP 和SIGHAN 等數(shù)據(jù)集是漢語拼寫檢查任務(wù)常用的數(shù)據(jù)集,在許多研究中都得到了使用[7-10,12-14,22]。
選取Han 等[23]的模型作為本文的基線模型(baseline model)。Han 等人基于雙向LSTM 構(gòu)造拼寫檢查模型,同時將漢字的視覺特征和語音特征與模型相結(jié)合。他們的模型是漢字拼寫檢查任務(wù)中具有代表性的結(jié)構(gòu),并在SIGHAN-2015 測試集上取得了較好的效果。我們采用文獻(xiàn)[23]所給的參數(shù)重建了他們的模型,并采用了本文所用的訓(xùn)練集數(shù)據(jù),獲得了在個別指標(biāo)上超過原文實驗數(shù)據(jù)的結(jié)果。
為了證明提出模型結(jié)構(gòu)的有效性,本文選用BERT 做為消融實驗的模型。BERT 作為近些年最火熱的預(yù)訓(xùn)練模型,在許多自然語言處理任務(wù)中都取得了突出的結(jié)果。其使用的MLM 語言模型非常適用于漢字拼寫檢查任務(wù)。我們同樣在BERT 中加入了漢字的視覺特征和語音特征。
本文將用于判斷拼寫檢查正確性的標(biāo)準(zhǔn)分為兩個部分:一個檢測正確度;另一個糾正正確度。對于檢測正確度,給定句子中所有錯誤字符的位置都應(yīng)與標(biāo)準(zhǔn)完全相同;對于糾正正確度,錯誤字符更改后的結(jié)果應(yīng)與正確句子中的字符完全相同。兩個正確度都將從假陽性率(false positive rate,F(xiàn)PR)、準(zhǔn)確率(accurate rate)、精確率(precision rate)、召回率(recall rate)和F1 分?jǐn)?shù)(F1-score)的角度進(jìn)行評判。5 種標(biāo)準(zhǔn)計算方式如下:
其中,TP、FP、FN、TN 分別表示真正例、假正例、假負(fù)例和真負(fù)例。本文從句子級維度進(jìn)行正負(fù)例的定義,即正例表示不含錯誤漢字的句子,負(fù)例表示包含錯誤漢字的句子。假陽性率表示所有判定為負(fù)例樣本中假正例的比例;準(zhǔn)確率表示所有判定正確的樣本占總樣本的比例;精確率表示真正例的樣本占判定為正例的樣本的比例;召回率表示真正例占實際正例樣本的比例;F1 分?jǐn)?shù)則同時兼顧了精確率和召回率。這些評價指標(biāo)將從不同的角度對模型的檢測和糾正性能進(jìn)行評估,從而得到一個全面的評價結(jié)果。
在檢測模型中,輸入嵌入的維度為512 維,并使用隱藏層為256 維的兩層雙向LSTM 模型;在糾正模型中,使用隱藏層維度為512,層數(shù)為12 的BERT 模型。另外,用作消融實驗的BERT 模型使用了同樣的超參數(shù)。本文使用Adam 算法[24]作為優(yōu)化算法來訓(xùn)練模型,學(xué)習(xí)率為0.000 1,批次大小設(shè)置為32。
實驗結(jié)果如表1 和表2 所示。其中表1 表示檢測正確度的結(jié)果,表2 表示糾正正確度的結(jié)果。表中基線模型(baseline model)表示Han 等人提出的模型;model 表示不添加額外特征的本文提出的拼寫檢查模型;model+strokes 表示模型只添加視覺特征;model+voice 表示模型只添加語音特征;model+strokes+voice 表示模型同時添加視覺特征和語音特征。實驗結(jié)果表明:在模型不額外添加特征及只添加視覺特征的情況下,本文提出的模型在測試集上的表現(xiàn)相比基線并無明顯優(yōu)勢;在模型只添加語音特征的情況下,檢測正確度與糾正正確度上的表現(xiàn)均優(yōu)于基線;在模型同時添加了語音和形狀特征的情況下,檢測與糾正正確度上的各項評價均優(yōu)于基線;且相比模型只添加語音特征的情況,同時添加語音和視覺特征可以小幅提高模型在測試集上檢測與糾正正確度的表現(xiàn)。在本實驗中,視覺特征對模型檢測和糾正能力的提升效果有限,我們認(rèn)為這與視覺特征的表示方式有關(guān),將筆畫順序作為嵌入的方式并不能很好地反映漢字的視覺特征。另外,本文在訓(xùn)練過程中采用較小規(guī)模的訓(xùn)練集,相比基線模型獲得了一定程度的性能提升。在提升訓(xùn)練集規(guī)模的前提下,本文提出的模型憑借結(jié)構(gòu)優(yōu)勢及大參數(shù)量能夠展現(xiàn)出更大的潛力和更好的效果。
表1 檢測正確度的實驗結(jié)果Tab.1 Experimental results for detecting correctness
表2 糾正正確度的實驗結(jié)果Tab.2 Experimental results for correcting correctness
實驗還通過與BERT 模型的對比展現(xiàn)本文方法的有效性。與同樣添加了語音特征和視覺特征的BERT 模型相比,本文的方法在檢測正確度和糾正正確度上的表現(xiàn)都更為出色,證明了本文模型在結(jié)構(gòu)上的優(yōu)越性。
表3 給出了一些實驗中模型預(yù)測的結(jié)果示例。這些具體的例子也說明了本文方法的有效性和實用性。
表3 模型預(yù)測結(jié)果示例Tab.3 Examples of model predictions
本文提出了一種漢語拼寫檢查模型。文中提出的模型結(jié)合了漢字的視覺特征和語音特征,并利用BiLSTM+CRF 模型構(gòu)成檢測網(wǎng)絡(luò)進(jìn)行錯誤詞檢測,利用BERT 模型構(gòu)成糾正網(wǎng)絡(luò)對檢測到的錯誤字進(jìn)行修改。在SIGHAN-2015 CSC 測試集上,本文提出的方法相比現(xiàn)有的方法和BERT 模型在評價指標(biāo)上得到了更好的結(jié)果。另外,相比視覺特征,語音特征對拼寫檢查效果的提升在本文實驗中更為有效。
對于未來的工作可在以下兩方面進(jìn)行深入的研究:1)視覺特征的提升效果有限或許與視覺特征的表示方式有關(guān),改進(jìn)表示方式可以進(jìn)一步提升拼寫檢查任務(wù)的效果。2)遷移學(xué)習(xí)在漢語拼寫檢查中使用。通過使用遷移學(xué)習(xí)可以提高原始語料庫和人工語料庫的接近度,從而提高模型的可用性。