最近在梳理中文文本糾錯任務,文本根據搜集到的文章整理成的任務簡介,在此先感謝大佬們分享的高質量資料。
1
任務簡介
中文文本糾錯是針對中文文本拼寫錯誤進行檢測與糾正的一項工作,中文的文本糾錯,應用場景很多,諸如輸入法糾錯、輸入預測、ASR 后糾錯等等,例如:
-
寫作輔助:在內容寫作平臺上內嵌糾錯模塊,可在作者寫作時自動檢查并提示錯別字情況。從而降低因疏忽導致的錯誤表述,有效提升作者的文章寫作質量,同時給用戶更好的閱讀體驗。
-
公文糾錯:針對公文寫作場景,提供字詞、標點、專名、數值內容糾錯,包含領導人姓名、領導人職位、數值一致性等內容的檢查與糾錯,輔助進行公文審閱校對。
-
搜索糾錯:用戶在搜索時經常輸入錯誤,通過分析搜索query的形式和特征,可自動糾正搜索query并提示用戶,進而給出更符合用戶需求的搜索結果,有效屏蔽錯別字對用戶真實需求的影響。
-
語音識別對話糾錯將文本糾錯嵌入對話系統中,可自動修正語音識別轉文本過程中的錯別字,向對話理解系統傳遞糾錯后的正確query,能明顯提高語音識別準確率,使產品整體體驗更佳
圖片來源---百度大腦AI開放平臺-文本糾錯:https://ai.baidu.com/tech/nlp_apply/text_corrector
2
中文拼寫常見錯誤類型
錯誤類型 | 示例 |
---|---|
同音字相似錯誤 | 強烈推薦-墻裂推薦、配副眼睛-配副眼鏡 |
近音字相似錯誤 | 牛郎織女-流浪織女 |
字形相似錯誤 | 頑強拼搏-頑強拼博 |
詞序混亂 | 兩戶人家-兩家人戶 |
缺字少字 | 浩瀚星海-浩瀚星 |
中文全拼拼寫 | 天下-tianxia |
中文首字母縮寫 | 北京-bj |
中文簡拼 | 明星大偵探-明偵 |
語法錯誤 | 無法言說-言說無法 |
我們把中文常見錯誤總結分為三類:1、用詞錯誤,由于輸入法等原因導致的選詞錯誤,其主要表現為音近,形近等;2、文法/句法錯誤,該類錯誤主要是由于對語言不熟悉導致的如多字、少字、亂序等錯誤,其錯誤片段相對較大;3、知識類錯誤,該類錯誤可能由于對某些知識不熟悉導致的錯誤,要解決該類問題,通常得引入外部知識、常識等。
當然,針對確定場景,這些問題并不一定全部存在,比如輸入法中需要處理1234,搜索引擎需要處理1234567,ASR 后文本糾錯只需要處理12,其中5主要針對五筆或者筆畫手寫輸入等。
3
主流技術
中文本糾錯的 paper 很多,整體來看,可以統一在一個框架下,即三大步:
- 錯誤識別
該階段主要目的在于,判斷文本是否存在錯誤需要糾正,如果存在則傳遞到后面兩層。這一階段可以提高整體流程的效率。
錯誤識別/檢測的目標是識別輸入句子可能存在的問題,采用序列表示(Transformer/LSTM)+CRF的序列預測模型,這個模型的創新點主要包括:1、詞法/句法分析等語言先驗知識的充分應用;2、特征設計方面,除了DNN相關這種泛化能力比較強的特征,還結合了大量hard統計特征,既充分利用DNN模型的泛化能力,又對低頻與OOV(Out of Vocabulary)有一定的區分;3、最后,根據字粒度和詞粒度各自的特點,在模型中對其進行融合,解決詞對齊的問題
- 候選召回
候選召回指的是,識別出具體的錯誤點之后,需要進行錯誤糾正,為了達到更好的效果以及性能,需要結合歷史錯誤行為,以及音形等特征召回糾錯候選。主要可分為兩部分工作:離線的候選挖掘,在線的候選預排序。離線候選挖掘利用大規模多來源的錯誤對齊語料,通過對其模型,得到不同粒度的錯誤混淆矩陣。在線候選預排序主要是針對當前的錯誤點,對離線召回的大量糾錯候選,結合語言模型以及錯誤混淆矩陣的特征,控制進入糾錯排序階段的候選集數量與質量。
該階段主要目的在于,利用一種或多種策略(規則或模型),生成針對原句的糾正候選。這一階段是整體流程召回率的保證,同時也是一個模型的上限。
- 糾錯排序
該階段主要目的在于,在上一階段基礎上,利用某種評分函數或分類器,結合局部乃至全局的特征,針對糾正候選進行排序,最終排序最高(如沒有錯誤識別階段,則仍需比原句評分更高或評分比值高過閾值,否則認為不需糾錯)的糾正候選作為最終糾錯結果。
4
中文文本糾錯評測
數據集
SIGHANBake-off2013:[http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html](http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html)
SIGHANBake-off2014:[http://ir.itc.ntnu.edu.tw/lre/clp14csc.html](http://ir.itc.ntnu.edu.tw/lre/clp14csc.html)
SIGHANBake-off2015:[http://ir.itc.ntnu.edu.tw/lre/sighan8csc.html](http://ir.itc.ntnu.edu.tw/lre/sighan8csc.html)
中文輸入糾錯的評測數據主要包括SIGHAN Bake-off 2013/2014/2015這三個數據集,均是針對繁體字進行的糾錯。其中,只有SIGHAN Bake-off 2013是針對母語使用者的,而另外兩個是針對非母語使用者。
評價指標
這里主要羅列一下常用的評測指標。在錯誤識別子任務中,常用的評測指標有:
-
FAR(錯誤識別率):沒有筆誤卻被識別為有筆誤的句子數/沒有筆誤的句子總數
-
DA(識別精準率):正確識別是否有筆誤的句子數(不管有沒有筆誤)/句子總數
-
DP(識別準確率):識別有筆誤的句子中正確的個數/識別有筆誤的句子總數
-
DR(識別找回率):識別有筆誤的句子中正確的個數/有筆誤的句子總數
-
DF1(識別F1值):2 * DP * DR/ (DP + DR)
-
ELA(錯誤位置精準率):位置識別正確的句子(不管有沒有筆誤)/句子總數
-
ELP(錯誤位置準確率):正確識別出筆誤所在位置的句子/識別有筆誤的句子總數
-
ELR(錯誤位置召回率):正確識別出筆誤所在位置的句子/有筆誤的句子總數
-
ELF1(錯誤位置準確率):2ELPELR / (ELP+ELR)在錯誤糾正任務中,常用的評測指標為:
-
LA位置精確率:識別出筆誤位置的句子/總的句子
-
CA修改精確率:修改正確的句子/句子總數
-
CP修改準確率:修改正確的句子/修改過的句子
雖然文本糾錯具體會分為錯誤識別和錯誤修正兩部分,并分別構造評價指標。但考慮到端到端任務,我們評價完整的糾錯過程:
- 應該糾錯的,即有錯文本記為 P,不該糾錯的,即無錯文本記為 N
- 對于該糾錯的,糾錯對了,記為 TP,糾錯了或未糾,記為 FP
- 對于不該糾錯的,未糾錯,記為 TN,糾錯了,記為 FN。通常場景下,差準比查全更重要,FN 更難接受,本來對了改成錯的這個更離譜,可構造下述評價指標:,其中
5
相關方法
相關論文
整理來自:https://blog.csdn.net/qq_36426650/article/details/122807019
- 【1】DCSpell:A Detector-Corrector Framework for Chinese Spelling Error Correction(SIGIR2021)
- 【2】Tail-to-Tail Non-Autoregressive Sequence Prediction for Chinese Grammatical Error Correction- (ACL2021)
- 【3】Correcting Chinese Spelling Errors with Phonetic Pre-training(ACL2021)
- 【4】PLOME:Pre-trained with Misspelled Knowledge for Chinese Spelling Correction(ACL2021)
- 【5】PHMOSpell:Phonological and Morphological Knowledge Guided Chinese Spelling Check(ACL2021)
- 【6】Exploration and Exploitation: Two Ways to Improve Chinese Spelling Correction Models(ACL2021)
- 【7】Dynamic Connected Networks for Chinese Spelling Check(2021ACL)
- 【8】Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)
- 【9】Read, Listen, and See: Leveraging Multimodal Information Helps Chinese Spell Checking(ACL2021)
- 【10】SpellBERT: A Lightweight Pretrained Model for Chinese Spelling Check(EMNLP2021)
- 【11】A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check(EMNLP2018)
- 【12】Adversarial Semantic Decoupling for Recognizing Open-Vocabulary Slots(EMNLP2020)
- 【13】Chunk-based Chinese Spelling Check with Global Optimization(EMNLP2020)
- 【14】Confusionset-guided Pointer Networks for Chinese Spelling Check(ACL2019)
- 【15】Context-Sensitive Malicious Spelling Error Correction(WWW2019)
- 【16】FASPell:A Fast, Adaptable, Simple, Powerful Chinese Spell Checker Based On DAE-Decoder Paradigm (2019ACL)
- 【17】SpellGCN:Incorporating Phonological and Visual Similarities into Language Models for Chinese Spelling Check (2020ACL)
- 【18】Spelling Error Correction with Soft-Masked BERT(ACL2020)
在OpenReview上提交至ARR2022的相關稿件有:
- 【1】Exploring and Adapting Chinese GPT to Pinyin Input Method 【PDF】
- 【2】The Past Mistake is the Future Wisdom: Error-driven Contrastive Probability Optimization for Chinese Spell Checking 【PDF】【Code】【Data】
- 【3】Sparsity Regularization for Chinese Spelling Check【PDF】
- 【4】Pre-Training with Syntactic Structure Prediction for Chinese Semantic Error Recognition【PDF】
- 【5】ECSpellUD: Zero-shot Domain Adaptive Chinese Spelling Check with User Dictionary【PDF】
- 【6】SpelLM: Augmenting Chinese Spell Check Using Input Salience【PDF】【Code】【Data】
- 【7】Pinyin-bert: A new solution to Chinese pinyin to character conversion task【PDF】
簡單總結一下目前CSC的方法:
-
基于BERT:以為CSC時是基于token(字符)級別的預測任務,輸入輸出序列長度一致,因此非常類似預訓練語言模型的Masked Language Modeling(MLM),因此現如今絕大多數的方法是基于MLM實現的。而在BERT問世前,CSC則以RNN+Decoder、CRF為主;
-
多模態融合:上文提到CSC涉及到字音字形,因此有一些方法則是考慮如何將Word Embedding、Glyphic Embedding和Phonetic Embedding進行結合,因此涌現出一些多模態方法;
6
- FASPell(愛奇藝)
技術方案 FASPell: A Fast, Adaptable, Simple, Powerful Chinese Spell Checker Based On DAE-Decoder Paradigm
code: https://github.com/iqiyi/FASPell
- SpellGCN (阿里)
技術方案 SpellGCN: Incorporating Phonological and Visual Similarities into Language Models for Chinese Spelling Check
code: https://github.com/ACL2020SpellGCN/SpellGCN
- Soft-Mask BERT (字節)
技術方案:Spelling Error Correction with Soft-Masked BERT
code: https://github.com/hiyoung123/SoftMaskedBert
- Spelling Correction as a Foreign Language (ebay)
技術方案 Spelling Correction as a Foreign Language
7
中文糾錯的開源項目
pycorrector
https://github.com/shibing624/pycorrector
中文文本糾錯工具。支持中文音似、形似、語法錯誤糾正,python3開發。pycorrector實現了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多種模型的文本糾錯,并在SigHAN數據集評估各模型的效果。
correction
https://github.com/ccheng16/correction
大致思路:
- 使用語言模型計算句子或序列的合理性
- bigram, trigram, 4-gram 結合,并對每個字的分數求平均以平滑每個字的得分
- 根據Median Absolute Deviation算出outlier分數,并結合jieba分詞結果確定需要修改的范圍
- 根據形近字、音近字構成的混淆集合列出候選字,并對需要修改的范圍逐字改正
- 句子中的錯誤會使分詞結果更加細碎,結合替換字之后的分詞結果確定需要改正的字
- 探測句末語氣詞,如有錯誤直接改正
Cn_Speck_Checker
https://github.com/PengheLiu/Cn_Speck_Checker
- 使用了貝葉斯定理
- 初始化所有潛在中文詞的先驗概率,將文本集(50篇醫學文章)分詞后,統計各個中文詞的出現頻率即為其先驗概率
- 當給定一待糾錯單詞時,需要找出可能的正確單詞列表,這里根據字符距離來找出可能的正確單詞列表
- 對構造出來的單詞做了一次驗證后再將其加入候選集合中,即判斷了下該詞是否為有效單詞,根據其是否在單詞模型中
- 程序原理:
chinese_correct_wsd
https://github.com/taozhijiang/chinese_correct_wsd
- 用于用戶輸入語句的同音自動糾錯
- 使用到了同義詞詞林
- 方法:
Autochecker4Chinese
https://github.com/beyondacm/Autochecker4Chinese
- 構造一個詞典來檢測中文短語的拼寫錯誤,key是中文短語,值是在語料庫中的頻率
- 對于該字典中未出現的任何短語,檢測器會將其檢測為拼寫錯誤的短語
- 使用編輯距離為錯誤拼寫的短語制作正確的候選列表
- 對于給定的句子,使用jieba做分割
- 在分段完成后獲取分段列表,檢查其中是否存在保留短語,如果不存在,那么它是拼寫錯誤的短語
- 方法:
8
- 中文糾錯(Chinese Spelling Correct)最新技術方案總結
- 中文文本糾錯算法--錯別字糾正的二三事
- 中文文本糾錯算法走到多遠了?
- 中文輸入糾錯任務整理
- nlp 中文文本糾錯_百度中文糾錯技術
- 中文拼寫檢測(Chinese Spelling Checking)相關方法、評測任務、榜單
- 中文(語音結果)的文本糾錯綜述 Chinese Spelling Check
- https://github.com/shibing624/pycorrector
審核編輯 :李倩
-
語音識別
+關注
關注
38文章
1724瀏覽量
112549 -
函數
+關注
關注
3文章
4307瀏覽量
62433 -
文本
+關注
關注
0文章
118瀏覽量
17068
原文標題:中文文本糾錯任務簡介
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論