郝亞男,喬鋼柱,譚 瑛
(太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,太原 030024)
自然語言O(shè)CR識(shí)別后文本錯(cuò)誤自動(dòng)校對(duì),已經(jīng)引起越來越多的關(guān)注.近年來,我國法治建設(shè)的快速發(fā)展,類型多樣的法律案件數(shù)量增多.由于實(shí)際情況所限制,我國司法機(jī)關(guān)處理的案件卷宗以紙質(zhì)卷宗為主,想要在較短的時(shí)間內(nèi)獲取有效的信息,較為困難.隨著信息技術(shù)的廣泛普及,我國已逐漸將電子卷宗應(yīng)用輔助辦案系統(tǒng)中.為加快紙質(zhì)卷宗電子化,電子化過程中采取OCR識(shí)別技術(shù).但是由于紙質(zhì)卷宗的打印質(zhì)量低或掃描不當(dāng)?shù)仍?導(dǎo)致紙質(zhì)卷宗OCR識(shí)別效果不好.因此,在電子卷宗應(yīng)用于后續(xù)任務(wù)前,需要有效的校對(duì)器來幫助紙質(zhì)卷宗OCR識(shí)別后的文本自動(dòng)校對(duì).
由于中文文本與英文文本特點(diǎn)不同,中文文本校對(duì)是在錯(cuò)誤文本的字詞、語法或語義等來進(jìn)行校對(duì)的.目前,針對(duì)字詞級(jí)的OCR識(shí)別后的中文文本校對(duì)研究相對(duì)比較充分,但在OCR識(shí)別后的中文文本還存在許多其他類型錯(cuò)誤,這些錯(cuò)誤從字詞級(jí)的角度來看,可能不存在問題,但是不符合當(dāng)前文本中的上下文語義搭配,例如:“透過中間人向另一方表示無欠債關(guān)系.”.其中,“透過”就是不符合文本語義搭配,此處應(yīng)表示為“通過”.因此,本文主要是研究如何結(jié)合語義校對(duì)中文文本中的錯(cuò)誤.
在20世紀(jì)60年代起,國外就開始對(duì)英文文本拼寫自動(dòng)校對(duì)進(jìn)行研究.在研究初期主要是建立語言模型與字典來進(jìn)行字詞級(jí)[1-4]的校對(duì).近年來,字詞級(jí)校對(duì)的研究已經(jīng)較充分,但在真詞錯(cuò)誤校對(duì)時(shí),若不限制給定語境,那文本校對(duì)的可靠性就難以保證.因此,學(xué)者們?cè)诨谡Z義對(duì)文本校對(duì)展開進(jìn)一步研究.
Hirst[5]等在文本校對(duì)的計(jì)算中加入語義信息,采用WordNet來計(jì)算詞與詞間的語義距離,若詞間語義距離較遠(yuǎn),則判斷這個(gè)詞是錯(cuò)誤的,反之,若發(fā)現(xiàn)與上下文距離語義較近的詞就可能被作為正確的詞.Kissos等[6]是基于OCR識(shí)別后的阿拉伯語校對(duì),其采取的方式是通過與混淆矩陣相結(jié)合的語料庫形成候選數(shù)據(jù)集;然后對(duì)每個(gè)單詞所提取的特征對(duì)單詞分類,將候選集中排名最高的單詞作為校對(duì)建議.Sikl[7]等將校對(duì)問題看作翻譯問題來解決,把錯(cuò)誤文本作為被原語言,糾正文本作為目標(biāo)語言進(jìn)行文本拼寫糾錯(cuò).張仰森等[8]提出了一種基于語義搭配知識(shí)庫和證據(jù)理論的語義錯(cuò)誤偵測模型,構(gòu)建三層語義搭配知識(shí)庫以及介紹了基于該知識(shí)庫和證據(jù)理論的語義偵測算法,有效地進(jìn)行語義級(jí)錯(cuò)誤偵測.Konstantin等人[9]提出基于邊際分布和貝葉斯網(wǎng)絡(luò)計(jì)算的方法,在一定程度上提高了低質(zhì)量圖像的文檔字段OCR識(shí)別后校對(duì)準(zhǔn)確率.陶永才等[10]基于構(gòu)建詞語搭配知識(shí)庫,綜合使用互信息和聚合度評(píng)價(jià)詞語關(guān)聯(lián)強(qiáng)度,進(jìn)行詞語搭配關(guān)系校對(duì).Liu等人[11]提出基于注意機(jī)制的神經(jīng)語法檢錯(cuò)模型,將解碼端視為二進(jìn)制分類器進(jìn)行語法檢錯(cuò).劉亮亮等人[12]面向非多字詞錯(cuò)誤提出基于模糊分詞的自動(dòng)校對(duì)方法.姜贏等人[13]提出基于描述邏輯本體推理的語義級(jí)中文校對(duì)方法,通過描述邏輯推理機(jī)來判斷提取的語義內(nèi)容的邏輯一致性,并將檢測出的邏輯一致性錯(cuò)誤映射為中文語義錯(cuò)誤.Xie等人[14]通過具有注意機(jī)制的編碼器和解碼器的遞歸神經(jīng)網(wǎng)絡(luò)來進(jìn)行字級(jí)別的英文文本校對(duì).Yu等人[15]通過語言模型、拼音及字形完成校對(duì)工作.
分析以上文獻(xiàn)發(fā)現(xiàn),在以往中文文本自動(dòng)校對(duì)的方法中均進(jìn)行了大量知識(shí)的準(zhǔn)備工作,知識(shí)庫的完善程度對(duì)校對(duì)結(jié)果有很大影響.為了減少知識(shí)庫等相關(guān)知識(shí)對(duì)校對(duì)效果的影響,采用深度學(xué)習(xí)模型的思路完成文本自動(dòng)校對(duì)任務(wù).通過模型的自學(xué)習(xí)獲取詞間相關(guān)性,來完成文本校對(duì)任務(wù),在一定程度上減少了人為干預(yù).模型采用端到端序列模型,在解碼端與編碼端構(gòu)成成分的選擇上,主要是從時(shí)間方面考慮選取了門控循環(huán)網(wǎng)絡(luò)與注意力機(jī)制層結(jié)合構(gòu)成,最后通過Dense層和Softmax層完成文本自動(dòng)校對(duì)任務(wù).
長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)在自然語言處理任務(wù)中有著廣發(fā)的應(yīng)用,但LSTM在訓(xùn)練耗時(shí)長、參數(shù)多等問題.研究人員在2014年對(duì)LSTM進(jìn)行優(yōu)化調(diào)整,提出了門控循環(huán)神經(jīng)網(wǎng)絡(luò)(Gated Recurrent Unity,GRU).
GRU保持LSTM優(yōu)點(diǎn)的同時(shí)又使得內(nèi)部結(jié)構(gòu)更加簡單.GRU由更新門和重置門兩個(gè)門組成,更新門用于控制前一時(shí)刻的隱層輸出對(duì)當(dāng)前時(shí)刻的影響程度,更新門的值越大說明前一時(shí)刻的隱藏狀態(tài)對(duì)當(dāng)前時(shí)刻隱層的影響越大;重置門用于控制前一時(shí)刻隱層狀態(tài)被忽略的程度,重置門值越小說明被忽略的越多.
GRU的結(jié)構(gòu)如圖1所示.

圖1 GRU神經(jīng)元結(jié)構(gòu)圖
GRU的更新方式如式(1)至式(5)所示:


其中,rt和zt分布表示為t時(shí)刻的重置門和更新門,、分別表示t時(shí)刻的候選激活狀態(tài)、激活狀態(tài).ht-1為(t-1)時(shí)刻的隱層狀態(tài).
BiGRU能夠同時(shí)將當(dāng)前時(shí)刻的輸出同前一個(gè)時(shí)刻的狀態(tài)與后一時(shí)刻的狀態(tài)產(chǎn)生聯(lián)系.BiGRU是由單向、方向相反、當(dāng)前時(shí)刻的輸出由方向相反的兩個(gè)GRU輸出共同決定的神經(jīng)網(wǎng)絡(luò)模型.BiGRU的結(jié)構(gòu)模型如圖2所示.

圖2 BiGRU結(jié)構(gòu)模型圖
在t時(shí)刻BiGRU的隱層狀態(tài)計(jì)算公式如式(6)至式(8)所示:

其中,GRU()表示對(duì)輸入詞向量的非線性變換,將詞向量編碼為GRU隱層狀態(tài).wt為t時(shí)刻前向隱層狀態(tài)對(duì)應(yīng)的權(quán)重,vt為t時(shí)刻反向隱層狀態(tài)對(duì)應(yīng)的權(quán)重,bt為t時(shí)刻隱層狀態(tài)對(duì)應(yīng)的偏置.
注意力機(jī)制就是通過對(duì)關(guān)鍵部分加強(qiáng)關(guān)注、突然局部重要信息,簡單來說就是計(jì)算不同時(shí)刻數(shù)據(jù)的概率權(quán)重,突出重點(diǎn)詞語.多頭注意力機(jī)制[16]將序列分為key,values和query.多頭注意力機(jī)制通過尺度化的點(diǎn)積方式并行多次計(jì)算,每個(gè)注意力輸出是簡單拼接、線性轉(zhuǎn)換到指定的維度空間而生成的.多頭注意力機(jī)制結(jié)構(gòu)如圖3所示.

圖3 多頭注意力機(jī)制結(jié)構(gòu)圖
多頭注意力機(jī)制層可以視為一個(gè)序列編碼層,從初始隱層狀態(tài)到新隱層狀態(tài)z的計(jì)算公式如式(9)所示.

其中,權(quán)重系數(shù)aij的計(jì)算公式如式(10)所示.

其中,eij的計(jì)算公式如式(11)所示.

選擇了可擴(kuò)展的點(diǎn)積來實(shí)現(xiàn)兼容性功能,從而實(shí)現(xiàn)高效的計(jì)算.輸入的線性變換增加了足夠的表達(dá)能力.是參數(shù)矩陣,.
對(duì)于文本采用生成的方式進(jìn)行校對(duì),首先句子是由字、詞和標(biāo)點(diǎn)組成的有序的序列,若對(duì)句中某個(gè)字詞進(jìn)行糾正,則需要通過上下文信息進(jìn)行推斷和生成.在中文文本校對(duì)的研究中,僅使用神經(jīng)網(wǎng)絡(luò)抓取的上下文特征信息作為語義校對(duì)是不夠的.上下文信息對(duì)當(dāng)前字詞的校對(duì)影響力不同,不能作為同一標(biāo)準(zhǔn)對(duì)當(dāng)前字詞的校對(duì)產(chǎn)生作用.因此,本文構(gòu)建了一個(gè)基于注意力機(jī)制的序列到序列的中文文本校對(duì)模型.模型引入基于注意力的神經(jīng)網(wǎng)絡(luò),以增強(qiáng)獲取詞與詞間的依賴性的能力.
整體模型架構(gòu)如圖4所示.2.4.1 文本向量化
模型進(jìn)行文本校對(duì)時(shí),首先要將文本向量化.通過一個(gè)特定維度的向量代表詞,詞向量可以刻畫詞與詞在語義上的相關(guān)性,并將詞向量作為神經(jīng)網(wǎng)絡(luò)的輸入.

圖4 模型架構(gòu)
將訓(xùn)練語料、測試語料集以及開始標(biāo)志等所有字詞建立一個(gè)大小為N的詞字典矩陣,N表示字典的大小.建立一個(gè)詞到詞字典的映射關(guān)系查找表,將輸入的詞轉(zhuǎn)換為序號(hào),之后將序號(hào)轉(zhuǎn)換為詞嵌入向量.
2.4.2 序列到序列端
模型的編碼端由BiGRU層構(gòu)成,文本向量化后的詞向量作為BiGRU層的輸入.BiGRU層主要目的是對(duì)輸入的待校對(duì)文本進(jìn)行特征提取.正向GRU通過從左向右的方式讀取{輸入的待校對(duì)}句子X,從而得到正向的隱層狀態(tài)序列.反向GRU是從右往左的方式讀取輸{入的待校對(duì)句}子X,同樣可以得到反向隱層狀態(tài)序列.將正向和方向隱層狀態(tài)序列進(jìn)行連接得到編碼端的隱層狀態(tài)序列h,其中:

模型的解碼端是采用單向GRU,每一時(shí)刻的隱層狀態(tài)wi均由前一時(shí)刻的隱層狀態(tài)wi-1和上一時(shí)刻的輸出yi-1.

注意力機(jī) 制層通過計(jì) 算輸入序列x1,x2,x3,· · ·,xn每個(gè)字詞對(duì)于i時(shí)刻輸出值yi的影響權(quán)重加權(quán)求和所得.在生成校對(duì)結(jié)果時(shí),解碼信息融合了輸入序列對(duì)輸出序列每個(gè)時(shí)刻的概率分布.
2.4.3 基于集束搜索的校對(duì)算法
采用集束搜索(beam search)求解校對(duì)位置的最優(yōu)結(jié)果.基于集束搜索的校對(duì)算法如算法1所示.

算法1.基于集束搜索的校對(duì)算法#xi為待校對(duì)句子#proba用來記錄候選詞yi以及得分score,#beam的值設(shè)置為N# max_target_len為目標(biāo)句子的最大長度for i in rang(max_target_len)#predict 根據(jù)xi預(yù)測所有可能的字詞及其得分proba=predict(xi)#生成對(duì)所有候選集排序for j in len(x):for yi,score in proba:if score>new_score:new_top=yi new_score=score else:t=[yi, score]new_beam.append(t)#取new_beam中最好的beam個(gè)候選集c c=get_max(new_beam)
校對(duì)方法由兩個(gè)階段組成:訓(xùn)練和校對(duì).如圖5所示.

圖5 基本框架
實(shí)驗(yàn)采用在網(wǎng)站中抓取的公開法律文書文本整理后的句子作為訓(xùn)練集,樣本數(shù)據(jù)總量為10.7 MB,隨機(jī)抽取404句作為測試集.例如,“透過中間人向另一方表示無欠債關(guān)系.”應(yīng)為“通過中間人向另一方表示無欠債關(guān)系.”.
使用基于Keras的深度學(xué)習(xí)框架進(jìn)行模型實(shí)現(xiàn).基于雙向門控循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力模型的方法已在第2節(jié)中介紹.首先,將輸入句子向量化,作為模型的輸入;其次,添加BiGRU和GRU層,并在GRU層后添加注意力機(jī)制層;然后,添加雙層Dense層,在Dense層采用ReLU激活函數(shù).同Sigmoid激活函數(shù)相比,ReLU激活函數(shù)能實(shí)現(xiàn)單側(cè)抑制[17],能夠有效防止過擬合.因此,在實(shí)驗(yàn)中選取ReLU激活函數(shù);最后,構(gòu)建Softmax層對(duì)文本進(jìn)行校對(duì),作用是將輸出轉(zhuǎn)變成概率,通過輸出的概率向量結(jié)合詞典反向映射獲得當(dāng)前時(shí)刻的輸出詞.
在解碼時(shí),“GO”表示一個(gè)句子的開始標(biāo)志,“END”表示一個(gè)句子的結(jié)束標(biāo)志,“PAD”為補(bǔ)充長度的符號(hào).“GO”和“END”在解碼器端作為開始解碼和結(jié)束解碼的標(biāo)志,并一次生成一個(gè)字詞直到遇到結(jié)束標(biāo)志符號(hào).
訓(xùn)練模型使用Adam優(yōu)化[18],詞向量維度為128,每層神經(jīng)元個(gè)數(shù)設(shè)置為128,loss函數(shù)采用categorical_crossentropy.
本文采用準(zhǔn)確率(P),召回率(R)以及F0.5值作為實(shí)驗(yàn)的評(píng)價(jià)標(biāo)準(zhǔn).準(zhǔn)確率反應(yīng)校對(duì)結(jié)果的準(zhǔn)確程度,召回率表示校對(duì)結(jié)果的全面性,F0.5值為準(zhǔn)確率和召回率的綜合評(píng)價(jià)的指標(biāo).

采用未加注意力機(jī)制的序列到序列模型做為基線模型(baseline),實(shí)驗(yàn)將本文提出的模型(BiGRU-AGRU)與基線模型以及其他模型進(jìn)行對(duì)比,在同一數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試,得到的中文文本校對(duì)的實(shí)驗(yàn)結(jié)果如表1所示.

表1 基于不同校對(duì)方法的結(jié)果
從表1中可以得到,本文提出的模型在語義方面的中文文本校對(duì)的完成情況好于基線方法,其準(zhǔn)確率、召回率、F0.5值均有一定的提高.這些文本校對(duì)效果的提升主要由于BiGRU-A-GRU模型增強(qiáng)了對(duì)詞間語義關(guān)系的捕捉能力,同時(shí)該模型減少了因錯(cuò)誤偵測產(chǎn)生的影響.
測試集對(duì)應(yīng)最高準(zhǔn)確率時(shí)的迭代時(shí)間為模型的迭代時(shí)間,如表2所示.

表2 模型迭代時(shí)間對(duì)比
BiGRU-A-GRU模型與BiLSTM-A-LSTM模型相比較,均采用了Attention層,區(qū)別是一個(gè)采用了BiGRU層一個(gè)采用了BiLSTM層,表2可以看出在模型迭代時(shí),BiLSTM-A-LSTM模型迭代用時(shí)更長.
總之,通過表1,表2及圖6可以得知:在本數(shù)據(jù)集上,BiGRU-A-GRU模型優(yōu)于BiLSTM-A-LSTM模型,因?yàn)锽iGRU相比BiLSTM收斂速度快,參數(shù)更少,在一定程度上降低了模型的訓(xùn)練時(shí)間,Attention層在校對(duì)過程中能對(duì)句子中關(guān)鍵部分加強(qiáng)關(guān)注,突出相關(guān)聯(lián)的詞語完成校對(duì)任務(wù).

圖6 模型訓(xùn)練損失率變化曲線
本文提出一種基于神經(jīng)網(wǎng)絡(luò)與注意力機(jī)制的中文文本校對(duì)方法.將注意力機(jī)制引入文本校對(duì)任務(wù)中,捕捉詞間語義邏輯關(guān)系,提升了文本校對(duì)的準(zhǔn)確性.實(shí)驗(yàn)證明,深度學(xué)習(xí)模型中引入注意力機(jī)制能夠提高中文文本自動(dòng)校對(duì)的準(zhǔn)確性.
中文文本詞語含義的多樣性,對(duì)語義錯(cuò)誤的文本校對(duì)的發(fā)展有一定的阻礙性.在未來工作中,將尋找能夠提高模型學(xué)習(xí)詞間語義關(guān)系的途徑,進(jìn)而更好地完成文本自動(dòng)校對(duì)任務(wù),并且采用對(duì)系統(tǒng)的計(jì)算和開銷等影響較小的方法.