白雪麗,李建義,王洪俊,3,賈盼盼,王迦南
(1.北華航天工業學院計算機學院,河北廊坊 065000;2.中國電子信息產業集團有限公司第六研究所,北京 100083;3.拓爾思信息技術股份有限公司,北京 100101)
文本校對在日常工作中較為常見,隨著計算機和互聯網飛速發展,文本電子化成為了不可逆轉的大趨勢,人工校對工作量急劇增加。在此背景下,中文文本自動校對課題應時而生。20 世紀60 年代,國外就開展有關英文文本自動校對的相關研究[1],經過不斷發展和創新,已廣泛應用于實際工作當中。
目前,中文文本自動校對技術主要包含以下5 種方法:①基于字詞混淆集形成候選字符串方法;②基于概率統計分析上下文方法,例如N-gram 模型;③基于規則和詞語搭配關系方法,例如構建語法規則、詞語搭配知識庫等;④基于改進循環神經網絡(Recurrent Neural Network,RNN)方法,例如長短期記憶網絡(Long Short-Term Memory,LSTM)、Seq2Seq 等模型;⑤基于BERT(Bidirectional Encoder Representation from Transformers)方法,例如SpellGCN模型、Soft-Masked BERT 等。其中,前3 種為傳統中文文本校對方法,后兩種為基于深度學習的中文文本校對方法。
在中文文本校對領域,文本錯誤通常包括詞法、句法、語義等形式。其中,詞法錯誤是最常見的錯誤形式之一,主要包括錯別字、多字少字、易位等;句法錯誤是違背語法約束和使用習慣的錯誤;語義錯誤是在詞法、句法上不存在問題,但不符合上下文的語義邏輯。具體示例如表1所示。

Table 1 Text error example表1 文本錯誤示例
由于只能借助漢字編碼將中文字符輸入計算機中,無法產生如英文一樣因多或少字母而形成的非字錯誤。因此,中文文本錯誤大部分是在輸入時產生,而由于文本輸入的方式不同,可能會產生不同類型的錯別字。例如,拼音和語音識別常見的錯誤通常為音似錯誤;五筆輸入和文字識別常見的錯誤通常為形近錯誤。
考慮到文本錯誤形式各不相同,本文將中文文本校對分為中文拼寫糾錯(Chinese Spelling Correction,CSC)、中文語法糾錯(Chinese Grammatical Error Correction,CGEC)和中文語義糾錯(Chinese Semantic Error Correction,CSEC)。
表2 為用于測評中文文本校對模型性能的混淆矩陣。

Table 2 Confusion matrix表2 混淆矩陣
其中,真正例TP(True Positive)為有錯且糾正正確的樣本,假正例FP(False Positive)為有錯但糾正錯誤的樣本,真反例TN(True Negative)為無錯且未被糾正的樣本,假反例FN(False Negative)為無錯但已糾正的樣本。4 種類別樣本數量之和應等于樣本總數,并根據公式(1)-公式(4)計算模型的誤報率(False Positive Rate,FPR)、準確率(Accuracy,A)、精確率(Precision,P)、召回率(Recall,R)和加權調和平均值(F-Score)。


由于P指標僅針對預測結果,R指標僅針對真實樣本,在一般情況下這兩個指標會產生矛盾。因此,本文選擇P、R指標的F值作為評判指標,具體計算公式如公式(5)所示:

其中,α為正數,用來度量指標P和R的相對重要性。當α>1 時,代表R指標對F值影響更大;反之P指標對F值影響更大。
雖然中文文本自動校對領域有其特定評價指標,但由于文本校對具有很大的靈活性和領域針對性,通用的數據集較少,難以對不同模型進行評估、比較。目前,常用的標準數據集主要為《人民日報》標注數據集、2018 年NLPCC比賽中CGEC 任務提供的數據集及SIGHAN Bake-off 2013至2015年比賽提供的數據集。
《人民日報》數據集收集了官方網站上的文章,這些文章都已經過了嚴格的審查,用詞嚴謹、準確;SIGHAN 比賽的CSC 任務旨在為開發和實施自動中文拼寫檢查提供評估平臺,其中2013 年的數據集是以漢語為母語的人所寫的文章,2014-2015 年的數據集是漢語學習者所寫的文章;2018 年NLPCC 會議的CGEC 數據集來自于漢語學習者所寫的作文,數據集標注靈活。雖然這些通用數據集泛化能力較低,但對中文文本校對領域仍具有重大的意義。
Chang[2]提出基于近似字集替換的中文拼寫自動糾錯方法,該方法將句子中的字利用混淆字符集中對應的字進行替換,生成大量的句子假設,然后使用語言模型對句子假設進行評分,最后將得分最高的句子假設與原始句子進行比較,確定校正結果。實驗表明,該方法將中文拼寫檢查的準確率從2.5%提高到了51.72%,且可同步改正檢測到的拼寫錯誤,有效解決了當前校對系統所面臨的正確率低及糾錯能力差的問題。但由于混淆集整理難度較大,無法覆蓋所有錯誤,導致該方法的糾錯能力受到一定的限制。
傳統糾錯方法是先檢測利用中文分詞器切分錯誤的字詞,形成疑似錯誤位置候選集,然后遍歷所有疑似錯誤,若錯誤存在于混淆集中則直接替換,若不存在則使用音似、形似詞典替換錯誤位置的詞,最后通過語言模型計算句子困惑度,得到最優糾正詞。該方法減少了模型的計算量,給中文文本自動校對領域提供了參考。李建華等[3]認為漢語是由語言規則組合而成,因此抽象出字詞間的語言規則,并以此為思想設計了一個基于多特征的中文拼寫校對系統。實驗表明,該系統的錯誤召回率為87.20%,拼寫檢查準確率為75.00%,改正正確率為59.92%,但由于漢語結構復雜、應用靈活,人工總結的規則十分有限,且無法校對多字詞替換錯誤,因此系統仍存在一定的局限性。由于漢語理論的研究尚不成熟,吳巖等[4]將規則與統計方法相結合,設計了一個基于詞匹配和語法分析相結合的中文文本自動校對系統,該系統首先通過逆向最大匹配和局部語料統計分詞方法,將文本劃分為詞和散串,然后利用語法規則重定位錯誤散串,接下來基于模糊查找可能代替錯誤散串的候選串,最后以人機交互方式進行錯誤校正。實驗結果表明,該系統不受領域限制,可有效結合規則與統計方法,應用性廣泛,查錯正確率達到80.1%,糾錯率正確率達到了75.5%。張仰森等[5]將文本錯誤視為詞、短語等語言表層結構的破壞,利用字詞間接續關系和局部分析技術提出了一種基于二元接續關系查錯的方法,該方法首先檢查字級別的接續關系定位疑似錯誤,再通過檢查詞性接續和義類接續確定錯誤,雖然實驗結果表明該方法效果較好,但存在運算速度緩慢、無法發現成詞多字替換錯誤等問題。
為了解決上述問題,張仰森等[6]又提出了規則與統計相結合的中文文本自動查錯算法,該算法提出“真多字詞錯誤”和“非多字詞錯誤”的概念,并根據“文本分詞后單字詞出現的次數有限”這一規律,結合單字散串建立了字二元、三元統計模型和詞性二元、三元統計模型。實驗結果表明,該方法相較于文獻[5]的方法,查錯召回率由71.2%提高到86.85%,查準率由35.1%提高到69.43%。由于條件隨機場(Conditional Random Fields,CRF)和N-Gram 概率統計模型相結合可達到優勢互補,卓利艷[7]將它們相融合提出查錯模型,使用融合結果定位文本錯誤,并將定位錯誤分為缺失、冗余和誤代三種類型,采用不同糾正方法進行糾正。其中,缺失錯誤使用語言模型進行糾正;冗余錯誤采用直接刪除法;誤代錯誤采用同音詞典進行糾正。實驗結果表明,該模型可較為準確地識別錯誤文本,但由于缺乏語法和語義方面的校對,因此存在一定的局限性。
陶永才等[8]考慮到中文語句成分信息受詞義、詞性、詞語搭配、詞語間關聯程度等因素的影響,通過抽取中文語法規則構建了一個語法—詞語搭配的雙層知識庫,并結合N 元馬爾科夫鏈語言模型設計并實現了一個基于詞語搭配關系的中文文本校對系統。該系統首次提出對待校對文本進行成分分析,抽取文本的語法結構規則并與詞語搭配關系相結合。實驗結果表明,文本校對正確率為73.2%,但系統難以校對長距離的詞語搭配關系,并缺少對句子成分的有效分析。賈繼康[9]將句法層次化分析和二、三元語句的規則集相結合,設計了基于句法分析和規則聯合的中文文本校對方法。實驗結果表明,該方法的測評表現良好,但由于中文應用靈活、句法結構復雜、規則繁多等因素,導致容易發生誤檢。
為了更好利用語言學知識,駱衛華等[10-11]結合文本的字詞、句法和語義多層面提出了一種中文文本自動校對技術。該方法先使用分詞和詞性標注技術對句子進行成分分析,以檢查文本句法層面的錯誤,然后基于實例、統計和規則三種搭配關系檢查文本語義級別的錯誤。其中,語義級別的查錯包括語義相似度約束檢測和統計結合規則檢測。但由于當時缺乏標注語料,語義相似度約束檢測方法效果較差,隨后仿效詞級校對方法提出了基于統計的語義搭配關系檢查方法。實驗結果表明,在添加語義校對后,算法檢測的精確度由63%降至62.3%,但召回率由87.2%提升至91.1%。程顯毅等[12]結合文本查錯系統和概念層次網絡(Hierarchical Network of Concepts,HNC)構建了一個中文文本校對系統模型,該模型首先利用知識庫對文本錯誤進行初步檢測,然后利用詞語知識庫對文本語義塊進行切分組合,并做句類假設以檢測語法錯誤,最后利用句類知識庫檢驗句類的合理性,使用語義概念關聯知識和語義構成知識對句類語義知識進行分析以檢測語義錯誤。
針對文本中的搭配錯誤,張仰森等[13]提出了一種基于語義搭配知識庫的語義錯誤偵測方法,該方法通過語義搭配知識庫搜索文本中可能存在的錯誤,然后采用統計和推理的方法獲取語義搭配關聯度,以此判定文本是否存在語義錯誤。該方法構建的語義搭配知識庫相較于文獻[11]更完善,因此準確率存在明顯提升。
表3 為上述方法的測評結果,但由于每種方法所使用的測評集不一致,因此無法進行對比。此外,由于早期句法、語義錯誤的校對依賴于自身知識庫,知識庫的準確性和完備性可直接影響方法校對的準確性。

Table 3 Comparison of traditional syntactic and semantic proofreading methods表3 句法、語義級傳統校對方法測評對比 (%)
隨著深度學習等技術發展,為校對領域提供了新的研究思路,相較于傳統方法,深度學習的黑盒特性決定了其具有較差的可解釋性,但具備了長距離依賴、強約束性和泛化能力等優點。
任柏青[14]使用新華社新聞語料數據集訓練了一個基于深度學習的文本自動校對模型,通過多層非線性操作組合不斷提取文本特征,輸出文本的抽象表示,并抽象表示數據的一些高階語義信息。該模型是深度學習在中文文本自動校對領域的一次嘗試,為后續研究奠定了基礎。陶永才等[15]設計了一種基于集成算法和長短期記憶網絡(Long Short-Term Memory,LSTM)的文本校對模型,該模型先將文本通過訓練好的全連接神經網絡轉化為對應的義原序列,再通過LSTM 組成的集成模型獲取上下文語義信息并預測義原序列,接下來采用K 鄰近算法對預測義原進行模糊匹配,最后基于聚合度的評價排序截取靠前的義原序列所對應的詞語作為校對建議。實驗結果表明,該模型相較于傳統校對方法,精確率提升至85.1%,召回率提升至87.4%。通過上述實例證明,深度學習方法在校對領域存在較大的潛力,但模型在訓練過程中存在過擬合、訓練耗時長、參數過多等問題。郝亞男等[16]提出了一種基于雙向門控循環單元(Bidirectional Gated Recurrent Unit,BiGRU)與注意力(Attention)機制相結合的文本校對模型,該模型首先向量化待校對的文本,再通過BiGRU 提取文本特征,接下來使用Attention 機制突出文本的關鍵信息,最后采用集束搜索求解校對位置的最優結果。實驗在同一數據集上進行訓練和測試,并與BiGRU-GRU、BiGRU-A、BiLSTM-A-BiLSTM 和BiGRU-A-GRU 模型進行了比較分析,實驗結果表明,由于Attention 機制增強了模型對詞間語義關系的捕捉能力,使BiGRU-A-GRU 的檢測性能優于其它模型。Tencent Cloud AI 提出一個適用于CSC 任務的混淆集指針網絡模型[17]。通過在混淆集中加入指針網絡,提升了生成正確字符的概率,并減少搜索空間。實驗結果表明,加入混淆集引導的Seq2Seq 校對模型在精確率和召回率上提升較大。
傳統深度學習模型主要為卷積神經網絡(Convolutional Neural Network,CNN)和循環神經網絡(Recurrent Neural Network,RNN)。其中,LSTM、GRU、Seq2Seq 等都屬于RNN 的變體模型,都是通過聯系上文字符串預測當前的字或詞。因此,難以進一步學習復雜的上下文關系,存在一定局限性。直到2018 年谷歌研究人員發布BERT 模型[18],推進了NLP 和文本校對領域的發展,該模型與傳統深度學習語言模型的主要區別在于:①使用大規模的語料庫進行預訓練;②預訓練階段使用掩碼語言模型(Masked Language Model,MLM);③使用12 層雙向Transformer 模型特征抽取任務。其中,MLM 可同時利用前、后兩個方向的信息,解決了單向信息流問題;Transformer 模型的Attention機制綜合了CNN 和RNN 的優點,可更好地獲取上下文的語義信息。
愛奇藝提出基于去噪自動編碼器和解碼器的中文拼寫檢查器FASPell[19],該模型基于MLM 實現了去噪自動編碼,可為待校文本的每個字生成一組候選字集及在語境上的合適度,解碼器使用了自主設計的高精確、保召回的過濾裝置,可利用候選字的語境合適度和原始字的相似度,從候選字集中過濾正確字符。實驗結果表明,該模型具有快速、適應性強、簡單等特性。螞蟻金服在BERT 模型的基礎上以圖卷積(Graph Convolutional Network,GCN)形式聚合相似字符之間的信息修正文本,設計并實現了SpellGCN中文文本校對模型[20]。復旦大學的研究人員為了解決MLM 檢錯能力不足的問題,提出了一種適用于文本校對的Soft-Masked BERT 模型[21],該模型先將文本向量傳入BiGRU 構建的檢錯網絡中檢測每個位置出錯的概率,再傳入Soft Masking 網絡中計算輸入向量和Mask 向量的誤差概率,接下來將概率輸入到BERT 的糾正網絡中,選擇概率最大的字符映射到候選詞表中,即為該位置的正確字符。考慮到字的校對模型缺乏詞信息,而詞的校對模型過于復雜,阿里巴巴團隊提出了基于塊的全局優化策略以實現拼寫修正[22],該模型基于塊的解碼思想,先將待校對文本分為單字詞、多字詞、短語、成語等候選組塊,然后采用音似、形似和義似混淆集縮小搜索空間,其中音似混淆集是該塊拼音相似的集合,形似混淆集是該塊距離為1 的集合,語義混淆集是利用MLM 根據上下文信息檢索該塊語義合理的候選集,最后使用最小誤差率訓練(Minimum Classification Error Training,MERT)算法結合不同特征實現全局優化。Tencent AI Platform 提出一個帶有拼寫錯誤知識的預訓練模型PLOME[23],該模型與文獻[20]實驗采用的數據相同,但訓練策略不同,PLOME 利用GRU 網絡將字的拼音和筆畫進行建模。Tencent Cloud 提出了一種Realize 模型[24],通過不同的編碼器捕獲漢字的音似、形似和語義信息,然后基于門控方式選擇性進行模態融合。實驗結果表明,上述改進BERT 模型運用于文本校對中均取得了較好的效果。表4 為以上方法在SIGHAN2015 測試集上的測評結果。

Table 4 Comparison of lexical level proofreading methods based on deep learning表4 詞法級基于深度學習校對方法測評比較 (%)
中文文本自動校對技術發展至今,大部分都是針對字詞級,句法級校對較少。英文語法糾錯方法經歷了由規則到分類器再到機器翻譯的演變[25],早期主要是應用規則和機器學習方法進行語法糾錯,雖然對特定類別的錯誤十分有效,但由于語言的復雜性,該方法無法作為GEC 領域的通用方法。直至2006 年Chris 等[26]提出將語法翻譯看作“壞”句子翻譯成“好”句子的思想,于是基于機器翻譯方法逐漸成為了GEC 的主流方法,而CGEC 的研究則起源于2018 年召開的中文語法錯誤診斷大賽,該比賽的數據集來自漢語水平考試中的寫作部分,參賽團隊需要利用AI 算法對文章中的語法語義錯誤進行識別修正,比賽將多樣性的錯誤歸并為字符串冗余、字符串缺失、字符串錯誤及語序錯誤4 類,并利用偵測層、識別層、定位層及修正層4 個級別對提交的系統進行性能評估[27]。其中,偵測層判斷識別文本中是否包含錯誤;識別層識別錯誤文本的類型;定位層判斷錯誤文本的位置和覆蓋范圍;修正層輸出字符串缺失和字符串錯誤兩種錯誤類型的糾正結果。
NLP-TEA2018 會議Correction 任務的優勝團隊以BiLSTM+CRF 為模型本體,通過引入大量語言知識特征,制定數百條規則用于檢測錯誤,并結合點互信息和Attention 機制的Seq2Seq 模型對檢錯結果進行修改。雖然無法達到商用級別準確度,但為后續研究提供了思路[28]。
2018 年NLPCC 比賽第一次組織了CGEC 任務,旨在檢測并修正非漢語母語學者寫的文章中的語法錯誤。根據參賽隊伍提供的作品可知,大部分參賽隊伍將GEC 問題視為翻譯問題,并集成多種模型進行語法糾錯。其中,評分最高的有道團隊先使用5-gram 模型和音形混淆集對文本進行拼寫糾正,然后應用Seq2Seq 模型將語法糾錯轉化為機器翻譯任務,最后選擇困惑度最低的句子作為正確輸出[29]。成績第二的阿里團隊結合基于規則、統計和神經網絡模型的方法,先在類別內進行低級組合得到類別候選,再對類別間候選進行高級組合得到最終的正確輸出[30]。兩個團隊方案的效果相差不大,思路相近卻不盡相同,為之后的模型構造方面提供了多種思路。王辰成等[31]同樣將CGEC 問題視為翻譯問題,采用基于多頭Attention 機制的Transformer 模型作為糾錯模型,提出了一種動態殘差結構,通過動態結合不同神經模塊的輸出以增強模型捕獲語義信息的能力,提高模型性能。
在NLP-TEA2020 會議的Correction 任務中可知,BERT的使用非常廣泛[32]。其中,外研在線團隊使用了基于BERT 的序列標注模型奪冠。第二名的哈工大訊飛聯合實驗室通過在BERT 模型的基礎上融入殘差網絡,根據Res-BERT 模型的輸出的結果,分別進行用詞不當錯誤和內容缺失錯誤糾正[33]。
通過以上分析可知,雖然BERT 模型的應用給CGEC提供了解決思路,但該模型的測評指標仍然較低,遠達不到商用標準。表5為上述方法的測評結果。
語義級校對從最初使用規則和統計模型獲取語義搭配知識庫,轉變為使用依存句法樹對文本語義進行分析,最后使用Attention 機制捕獲詞間語義關系。在引入深度學習方法后,由于模型能自主學習待校文本中的深層語義信息,無需單獨考慮語義信息,因此導致目前針對語義校對的研究較少。

Table 5 CGEC assessment result based on deep learning表5 基于深度學習的CGEC測評結果 (%)
湯柳君[34]利用實體抽取技術與知識圖譜相結合的方法對中文文本進行句法語義校對,該方法集成了拼寫錯誤、成分缺失、定義矛盾、內容遺漏等校對功能,在限定的文本校對領域中具有較高的查全率,但缺乏對于語義關系校對的研究。
目前,中文文本校對系統大多基于語言模型結合規則、語料庫等語言特征進行檢測糾正。其中,傳統模型發展較為完善,雖然具備易訓練、可解釋性強等特點,但存在缺乏長距離依賴、數據稀疏、容易出現未知詞、泛化能力差等問題,尤其是在語法和語義層面存在較大的局限性。而基于深度學習的語言模型可自主學習文本中的深層語義信息,具有長距離依賴等特性。
根據對中文文本自動校對領域的應用進行分析、總結可知,文獻[1]分別評述了中、英文校對的技術難點和解決方法,但當時的校對技術還不夠成熟,而目前結合語言規則和特征的傳統語言模型已經發展的較為完善,且引入深度學習技術使得該領域迎來里程碑式的發展。本文旨在分析、對比前人的研究方法和當前的研究水平,總結目前中文文本校對方法存在的不足之處。
通過過現有方法的研究發現,今后可按照以下6 個方向對模型進行改進:①嘗試加入知識圖譜等技術,在模型中融入文本中的實體及實體關系,增加模型對復雜關系推理的能力,進一步理解上下文關系;②解決跨領域的遷移學習問題;③擴充中文文本校對標注訓練集資源,已有研究人員嘗試在文本中增加噪音以增強相關數據,例如Tencent AI Lab 提出的基于數據驅動方式自動生成拼寫錯誤的CSC 語料庫構造方法[35]、Zhao 等[36]提出的通過動態掩碼改善語法糾錯方法等;④提出新的解決句法語義錯誤方法;⑤進行更精確的數據預處理,對語料進行更加精確的標注[37]等數據預處理環節也十分重要,通常會直接影響模型校對的正確率;⑥模型壓縮,目前文本校對領域常用的模型較為復雜、參數量較多,導致預測速度較慢,且對硬件要求較高[38-39]。