摘 要:中文拼寫糾錯是一項檢測和糾正文本中拼寫錯誤的任務。大多數中文拼寫錯誤是在語義、讀音或字形上相似的字符被誤用,因此常見的做法是對不同模態提取特征進行建模。但將不同特征直接融合或是利用固定權重進行求和,使得不同模態信息之間的重要性關系被忽略以及模型在識別錯誤時會出現偏差,阻止了模型以有效的方式學習。為此,提出了一種新的模型以改善這個問題,稱為基于文本序列錯誤概率和中文拼寫錯誤概率融合的漢語糾錯算法。該方法使用文本序列錯誤概率作為動態權重、中文常見拼寫錯誤概率作為固定權重,對語義、讀音和字形信息進行了高效融合。模型能夠合理控制不同模態信息流入混合模態表示,更加針對錯誤發生處進行學習。在SIGHAN基準上進行的實驗表明,所提模型的各項評估分數在不同數據集上均有提升,驗證了該算法的可行性。
關鍵詞:中文拼寫糾錯; 錯誤概率; 預訓練; 信息融合; 序列到序列模型
中圖分類號:TP391 文獻標志碼:A
文章編號:1001-3695(2023)08-008-2292-06
doi:10.19734/j.issn.1001-3695.2022.11.0816
Chinese spelling correction based on fusion of text sequence error probability and Chinese spelling error probability
Sun Zhe, Yu Ke, Wu Xiaofei
(School of Artificial Intelligence, Beijing University of Posts amp; Telecommunications, Beijing 100876, China)
Abstract:Chinese spelling error correction is a task to detect and correct spelling errors in text. Most Chinese spelling errors are the misuse of semantically, phonetically or morphologically similar characters, so it is common to extract features for mode-ling different modalities. However, the direct fusion of different features or summation using fixed weights prevent the model from learning in an efficient way by ignoring the importance relationship between the information of different modalities and the bias of the model in identifying errors. This paper proposed a new model to improve this problem, called the Chinese error correction algorithm based on the fusion of text sequence error probability and Chinese spelling error probability. The method used the text sequence error probability as the dynamic weight and the common Chinese spelling error probability as the fixed weight to efficiently fuse semantic, phonetic and morphologic information. The model was able to reasonably control the inflow of different modal information into the mixed modal representation and learnt more specifically where the errors occurred. Experiments conducted on the SIGHAN benchmark show that all evaluation scores of the proposed model are improved on different datasets, which validates the feasibility of the algorithm.
Key words:Chinese spelling correction; error probability; pre-training; information fusion; sequence to sequence model
0 引言
中文拼寫糾錯旨在檢測和糾正文本中的拼寫錯誤,這是自然語言處理中一個具有挑戰性且重要的任務。在搜索引擎、光學字符識別、自動語音識別和機器翻譯等各種自然語言處理應用中發揮著重要作用。在漢語中,許多漢字在讀音和視覺上相似,但在語義上卻有很大的不同,所以拼寫錯誤主要分為讀音錯誤和字形錯誤兩種,分別是由讀音相近的漢字和字形相近的漢字的誤用造成的。根據Liu等人[1]的研究,在中文常見錯別字中,約83%的錯誤與讀音相似有關,約48%的錯誤與字形相似有關。漢語是一種由許多象形文字組成的語言,沒有分詞符。當上下文發生變化時,每個字符的含義也會發生巨大的變化。因此想要糾正中文中的錯別字,結合上下文語義十分重要。在表1中舉例說明了中文拼寫因讀音相似和字形相似而產生錯誤的例子,拼寫錯誤的字符用下畫線標出。如表1所示,“器”和“氣”具有相同的讀音,“踩”和“菜”具有相似的讀音,這是兩組因為讀音相似而產生的拼寫錯誤;“人”和“入”具有相似的字形,這是一組因為字形相似而產生的錯誤。所以考慮到漢語的內在性質,利用漢字的讀音和字形知識以及文本語義來完成漢字糾錯任務是非常必要的。因此,當一句話中由讀音導致拼寫錯誤時,模型應當更關注讀音信息;由字形產生錯誤時,模型應當更關注字形信息。
目前的中文拼寫糾錯研究使用深度神經網絡來解決該問題。當前的模型對于融合不同模態信息時容易忽略它們之間的重要性關系或是不使用任何讀音信息和字形信息。Hong等人[2]使用預訓練的語言模型BERT生成候選詞,并訓練具有讀音特征的分類器來選擇最終更正,這為中文拼寫糾錯研究后續奠定了基礎。Zhang等人[3]通過修改BERT的掩碼機制提出了一種端到端CSC模型,但在融合過程中僅利用語義信息,忽略了其他模態的信息,在探索單詞相似度時產生了不利影響。Liu等人[4]直接將句子中所有的語義信息、讀音信息、字形信息相加作為融合信息輸入到模型中,將不同模態之間劃分為同等作用,這就忽略了漢字之間的差異以及信息之間的重要性,減少了模型對錯誤發生處的關注。所以當輸入句子存在錯誤時,如何能有效控制每個模態信息最終流入混合模態表示是研究的重點。
針對以上問題,本文提出了一種基于文本序列錯誤概率和中文拼寫錯誤概率融合的漢語糾錯算法(fusion of text sequence error probability and Chinese spelling error probability BERT,FEP-BERT)。模型采用了基于混淆集的掩碼策略,其中每個選擇的令牌根據混淆集隨機替換為類似的字符,而不是像BERT中那樣固定的令牌“[MASK]”。采用了一種自適應加權策略,用文本序列錯誤概率和中文常見拼寫錯誤概率融合文本嵌入、讀音嵌入、字型嵌入訓練錯誤檢測和糾正,讓模型產生清晰的檢測結果。具體地,在中文常見錯別字中大約83%的錯誤與讀音相似有關,約48%的錯誤與字形相似有關,讀音錯誤大概是字形錯誤的兩倍,且語義特征是最為重要的特征,為了在加權過程中對不同模態特征選擇的重要性有所區分,將語義特征的固定權重設為1,防止模型忽略上下文語義;拼音特征的固定權重設為0.83,字形特征的固定權重設為0.48,使得不同模態特征在融合過程中有差異,能夠合理控制不同模態信息流入混合模態表示。但不同輸入語句有不同的錯誤,針對不同的錯誤采用了文本序列錯誤概率作為動態權重進行錯誤區分,將錯誤概率對讀音特征和字形信息進行加權,可以讓錯誤位置更加凸顯,在融合時讓模型更注重錯誤位置進行學習;將正確概率對語義特征進行融合,可以讓錯誤發生處更少的信息流入融合特征,保留更多正確語義信息。聯合兩種不同權重進行融合,讓模型能夠更合理地融合不同模態信息,并針對錯誤發生處進行高效學習。此外,在預測時對每個位置上的漢字和讀音都進行預測,讓模型從兩個層面學習拼寫錯誤的知識。本文提出了基于混淆集的屏蔽策略,使模型能夠在預訓練過程中聯合學習語義和拼寫錯誤知識;結合了讀音信息和字形信息,可以對任意字符之間的相似度進行建模;提出了一種聯合自適應加權和固定加權的特征融合算法,針對易錯位置進行學習,讓模型產生清晰的檢測結果。
1 相關工作
中文拼寫糾錯是自然語言處理中一個具有挑戰性的任務,它在許多應用中扮演著重要的角色,如Gao等人[5]提出的搜索查詢更正,Dong等人[6]提出的論文自動評分和Afli等人[7]提出的光學字符識別。
隨著端到端網絡的發展,Wu等人[8]提出了將糾錯性能直接優化為具有條件隨機場(CRF);Zheng等人[9]和Yang等人[10]提出循環神經網絡(RNN)的序列標記任務;Wang等人[11]使用帶有復制機制的序列對序列框架,直接從準備好的錯誤單詞混淆集復制校正結果;Cheng等人[12]在Devlin等人[13]提出的BERT的基礎上構建了一個圖卷積網絡(GCN),圖是從一個混淆集構建的;Zhang等人[3]提出了一種Soft-Masked BERT模型,該模型首先預測每個單詞的拼寫錯誤概率,然后利用錯誤概率進行軟掩碼單詞嵌入以進行校正,但他們沒有使用其他信息;Liu等人[4]將語義、讀音、字形信息在嵌入層進行融合,同時預測了漢字和拼音輸出,在預測時融合兩者的輸出;Xu等人[14]采用了多模態的方式融合了語義、讀音和字形表示,以提升模型檢錯糾錯性能。
2 方法
本章將介紹FEP-BERT的具體實現。圖1說明了FEP-BERT的框架。與BERT[13]類似,本文模型也遵循預訓練與微調原則。
2.1 掩碼策略
在預訓練過程中,本文使用了Wu等人[15]提供的公開混淆集,其中包含了兩種類型的相似字符,即讀音相似和字形相似。由于讀音錯誤概率是字形錯誤概率的兩倍,所以這兩類的相似字符在掩碼過程中的選擇概率也是不同的。不同于BERT[13]使用固定的[MASK]替換的掩碼策略,FEP-BERT采用選取混淆集中的讀音或字形相似字符去替換的掩碼策略,這讓模型可以更有效地學習到錯誤知識。隨機選取語料庫中25%的漢字,使用混淆集中的相似字符進行替換。其中30%的概率替換為相同讀音字符,30%的概率替換為相似讀音字符,15%的概率替換為字形相似字符,10%的概率替換為一個隨機字符,15%的概率保持原字符不變。表2展示了不同的掩碼策略的例子。最后還使用了動態掩碼,讓模型逐漸適應不同的掩碼策略,學習不同表征。
2.2 模型嵌入
FEP-BERT每個字符的嵌入是由語義嵌入、讀音嵌入、字形嵌入三部分組成。其中語義嵌入通過查找嵌入表獲得。
在漢語中,每個字符的讀音由它的漢語拼音組成,即一個小寫的英文序列,所以本文采用了Unihan Database來獲得漢字到拼音的映射,得到關于讀音的字母序列,同時忽略字符的聲調。將每個字符的字母序列結果通過一層GRU編碼器,以生成讀音嵌入。產生的讀音嵌入維度與語義嵌入維度相同。
每個漢字的字形本文使用筆畫順序來表示,筆畫順序指本文書寫漢字的順序。本文通過Chaizi Database(https://github.com/kfcd/chaizi)來獲得這些筆畫順序。得到一個關于筆畫順序的編碼結果后,同樣將編碼結果通過一層GRU編碼器,以生成字形嵌入。產生的字形嵌入維度與語義嵌入和讀音嵌入維度相同。
2.3 FEP模塊
2.4 模型輸出
2.5 學習
2.6 微調過程
3 實驗
本章將介紹在實驗中使用到的所有數據集以及實驗結果,最后進行對比分析,以此證明FEP-BERT模型的有效性。
3.1 預訓練
1)數據集 預訓練時使用wiki2019zh(https://github.com/suzhoushr/nlp_chinese_corpus)作為訓練語料,由100萬中文維基百科7頁組成,是預訓練常用語料庫。在使用時,將連續的句子連接起來,按照最大句子長度510進行切分。最后從切分結果中隨機選取100萬條數據作為訓練樣本。
2)參數設置 將語義嵌入維度設置為768,讀音嵌入和字形嵌入維度均設置為32,在讀音和字形GRU網絡中的隱藏層維度設置為768,學習率設置為5E-5,批樣本大小設置為16。在訓練過程中,使用了一塊RTX 3090顯卡,同時使用哈工大訊飛聯合實驗室發布的中文BERT參數(https://huggingface.co/hfl/chinese-roberta-wwm-ext)來初始化Transformer,而不是從頭開始進行訓練。
3.2 微調
1)數據集 微調時使用SIGHAN13[15]、SIGHAN14[16]和SIGHAN15[17]的訓練集以及271K由Wang等人[18]自動生成的樣本作為訓練集。在測試時,則使用SIGHAN13、SIGHAN14、SIGHAN15和SIGHAN20的測試集,SIGHAN20測試集是Zhang等人[3]在2020年所提出的測試集。由于SIGHAN13測試集中注釋質量相對較差,在測試時會獲得較低分值,所以對SIGHAN13中所涉及的“的”“得”“地”字符進行了處理,即將模型輸出中檢測并糾正的“的”“得”“地”字符移除,然后計算分數。
2)評估指標 在評估時,模型在句子級別上使用了精度precision(P)、召回率recall(R)和F1值進行了性能評估。在檢測時,當且僅當輸入句子中所有錯誤被檢測到,才認為該檢測是正確的。在糾正時,當且僅當句子中所有錯誤被糾正時,才認為該糾正是正確的。
3)參數設置 將最大句子長度設置為180,批樣本大小設置為32,學習率設置為5E-5,其余模型設置與預訓練時保持一致。在訓練過程中,使用了一塊RTX3090顯卡,并加載預訓練后所保存的權重,深度學習框架使用PyTorch 1.10.0版本。在與其他基線模型作對比時,均保持在此環境下進行微調。
微調已使用的數據集統計信息如表3所示。
3.3 基線模型
3.4 實驗結果
3.5 消融實驗
為了進一步驗證分析幾個組成模塊的效果,本文設置并進行了消融實驗,探究每個模塊的貢獻:a)移除讀音嵌入,僅使用語義和字形嵌入;b)移除字形嵌入,僅使用語義和讀音嵌入;c)移除基于混淆集的掩碼策略,變更為BERT的掩碼策略;d)移除文本序列錯誤概率權重;e)移除中文拼寫錯誤概率權重。
3.6 錯誤分析
3.7 案例研究
在表7中展現了不同模型對輸入語句的修正結果,來證明FEP-BERT的性能。在第一個例子中,“旅”是輸入語句中的錯誤字符,FEP-BERT會根據“旅”和“游”的字形相似性進行糾正,因為它們包含相似的結構“方”;而在GCN模型中,這個錯誤字符不會被更正,這是因為在GCN中被人工制作的混淆集中并不包含“旅”和“游”的混淆字符,這也是GCN模型的缺陷。在第二個例子中,“坊”字是輸入語句中的錯誤字符,SMBERT不考慮字符之間的相似性,即不考慮讀音和字形信息,模型會用其他候選詞來更正錯誤字符,比如“木”;而FEP-BERT模型根據“坊”和“煩”的讀音相似性進行了糾正,因為它們有相似的讀音“fan”。第三個例子中,“根”是輸入語句中的錯誤字符,FEP-BERT從語義信息和讀音信息對其進行糾正,因為“根”和“趕”具有相似的讀音;PLOME則會從字形信息上對其進行糾正, “根”和“跟”具有相同的結構“艮”,因為兩者讀音相同,但是字形上類似,所以在融合過程中PLOME錯誤認為字形信息最為重要。
4 結束語
本文提出了一種基于文本序列錯誤概率和中文拼寫錯誤概率融合的漢語糾錯算法FEP-BERT,將文本序列錯誤概率以及中文拼寫錯誤概率作為權重融合語義信息、讀音信息和字形信息,并采用基于混淆集的掩碼策略進行預訓練。以往的研究中表明了上下文語義、讀音信息和字形信息的重要性,因此本文用GRU對不同模態特征進行建模,同時使用兩種不同概率進行加權讓模型可以更加注重錯誤發生位置以及區分模態信息之間的重要性。在公開數據集上進行的實驗結果表明,FEP-BERT的性能優于其他所對比模型,有著更好的檢錯和校正能力。日后對于如何更加有效地對不同模態信息進行融合是提升模型性能的關鍵,同時如何減少模型出現檢測錯誤和校正錯誤同樣也是研究重點。
參考文獻:
[1]Liu Chaolin, Lai Minhua, Chuang Y H, et al. Visually and phonologically similar characters in incorrect simplified Chinese words[C]//Proc of the 23rd International Conference on Computational Linguistics:Posters.Stroudsburg,PA:Association for Computational Linguistics,2010:739-747.
[2]Hong Yuzhong, Yu Xianguo, He Neng, et al. FASPell:a fast, adap-table, simple, powerful Chinese spell checker based on DAE-decoder paradigm[C]//Proc of the 5th Workshop on Noisy User-generated Text.Stroudsburg,PA:Association for Computational Linguistics,2019:160-169.
[3]Zhang Shaohua, Huang Haoran, Liu Jicong, et al. Spelling error correction with soft-masked BERT[C]//Proc of the 58th Annual Mee-ting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2020:882-890.
[4]Liu Shulin, Yang Tao, Yue Tianchi, et al. PLOME: pre-training with misspelled knowledge for Chinese spelling correction[C]//Proc of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1:Long Papers).Stroudsburg,PA:Associa-tion for Computational Linguistics,2021:2991-3000.
[5]Gao Jianfeng, Li Xiaolong, Micol D, et al. A large scale ranker-based system for search query spelling correction[C]//Proc of the 23rd International Confe-rence on Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2010:358-366.
[6]Dong Fei, Zhang Yue. Automatic features for essay scoring-an empirical study[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2016:1072-1077.
[7]Afli H, Qiu Zhengwei, Way A, et al. Using SMT for OCR error correction of historical texts[C]//Proc of the 10th International Confe-rence on Language Resources and Evaluation.[S.l.]:European Language Resources Association,2016:962-966.
[8]Wu S H, Wang Junwei, Chen Liangpu, et al. CYUT-Ⅲ team Chinese grammatical error diagnosis system report in NLPTEA-2018 CGED shared task[C]//Proc of the 5th Workshop on Natural Language Processing Techniques for Educational Applications. Stroudsburg,PA:Association for Computational Linguistics,2018:199-202.
[9]Zheng Bo, Che Wangxiang, Guo Jiang, et al. Chinese grammatical error diagnosis with long short-term memory networks[C]//Proc of the 3rd Workshop on Natural Language Processing Techniques for Edu-cational Applications.[S.l.]:Coling 2016 Organizing Committee,2016:49-56.
[10]Yang Yang, Xie Pengjun, Tao Jun, et al. Alibaba at IJCNLP-2017 task 1: embedding grammatical features into LSTMs for Chinese grammatical error diagnosis task[C]//Proc of the IJCNLP.[S.l.]:Asian Federation of Natural Language Processing,2017:41-46.
[11]Wang Dingmin, Tay Y, Zhong Li. Confusion set-guided pointer networks for Chinese spelling check[C]//Proc of the 57th Annual Mee-ting of the Association for Computational Linguistics. Stroudsburg, PA: Association for Computational Linguistics,2019:5780-5785.
[12]Cheng Xingyi, Xu Weidi, Chen Kunlong, et al. SpellGCN: phonological and visual similarities into language models for Chinese spe-lling check[C]//Proc of the 58th Annual Meeting of the Association for Computational Linguistics. Stroudsburg, PA: Association for Computational Linguistics,2020: 871-881.
[13]Devlin J, Chang Mingwei, Lee K, et al. BERT: pre-training of deep bidirectional transformers for language understanding[C]//Proc of Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers).Stroudsburg,PA:Association for Computational Linguistics,2019:4171-4186.
[14]Xu Hengda, Li Zhongli, Zhou Qingyu, et al. Read, listen, and see: leveraging multimodal information helps Chinese spell checking[C]//Findings of the Association for Computational Linguistics:ACL-IJCNLP 2021. Stroudsburg,PA:Association for Computational Linguistics,2021:716-728.
[15]Wu S H, Liu Chaolin, Lee L H. Chinese spelling check evaluation at SIGHAN bake-off 2013[C]//Proc of the 7th SIGHAN Workshop on Chinese Language Processing.[S.l.]:Asian Federation of Natural Language Processing,2013:35-42.
[16]Yu L C, Lee L H, Tseng Y H, et al. Overview of SIGHAN 2014 bake-off for Chinese spelling check[C]//Proc of the 3rd CIPS-SIGHAN Joint Conference on Chinese Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2014:126-132.
[17]Tseng Y H, Lee L H, Chang Liping, et al. Introduction to SIGHAN 2015 bake-off for Chinese spelling check[C]//Proc of the 8th SIGHAN Workshop on Chinese Language Processing. Stroudsburg,PA:Association for Computational Linguistics,2015:32-37.
[18]Wang Dingming, Song Yan, Li Jing, et al. A hybrid approach to automatic corpus generation for Chinese spelling check[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2018:2517-2527.
[19]Zhang Ruiqing, Pang Chao, Zhang Chuanqiang, et al. Correcting Chinese spelling errors with phonetic pre-training[C]//Findings of the Association for Computational Linguistics:ACL-IJCNLP.Stroudsburg,PA:Association for Computational Linguistics,2021:2250-2261.
[20]Huang Li, Li Junjie, Jiang Weiwei, et al. PHMOSpell: phonological and morphological knowledge guided Chinese spelling check[C]//Proc of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (Volume 1: Long Papers).Stroudsburg,PA:Association for Computational Linguistics,2021:5958-5967.
[21]王辰成,楊麟兒,王瑩瑩,等.基于Transformer增強架構的中文語法糾錯方法[J].中文信息學報,2020,34(6):106-114.(Wang Chencheng, Yang Lin’er, Wang Yingying, et al. Chinese spelling correction method based on transformer local[J].Journal of Chinese Information Processing,2020,34(6):106-114.)
[22]Li Yinghui, Zhou Qingyu, Li Yangning, et al. The past mistake is the future wisdom: error-driven contrastive probability optimization for Chinese spell checking[C]//Findings of the Association for Computational Linguistics. Stroudsburg,PA:Association for Computational Linguistics,2022:3202-3213.
[23]黃改娟,王匆匆,張仰森.基于動態文本窗口和權重動態分配的中文文本糾錯方法[J].鄭州大學學報:理學版,2020,52(3):9-14.(Huang Gaijuan, Wang Congcong, Zhang Yangsen. Chinese text error correction method based on dynamic text window and weighted dynamic allocation[J].Journal of Zhengzhou University:Natural Science Edition,2020,52(3):9-14.)
[24]仲美玉,吳培良,竇燕,等.基于中文語義—音韻信息的語音識別文本校對模型[J].通信學報,2022,43(11):65-79.(Zhong Meiyu, Wu Peiliang, Dou Yan, et al. Chinese semantic and phonological information-based text proofreading model for speech recognition[J].Journal on Communications,2022,43(11):65-79.)