当前位置:网站首页>中文文本纠错任务简介
中文文本纠错任务简介
2022-07-26 05:33:00 【致Great】
最近在梳理中文文本纠错任务,文本根据搜集到的文章整理成的任务简介,在此先感谢大佬们分享的高质量资料。
任务简介
中文文本纠错是针对中文文本拼写错误进行检测与纠正的一项工作,中文的文本纠错,应用场景很多,诸如输入法纠错、输入预测、ASR 后纠错等等,例如:
写作辅助:在内容写作平台上内嵌纠错模块,可在作者写作时自动检查并提示错别字情况。从而降低因疏忽导致的错误表述,有效提升作者的文章写作质量,同时给用户更好的阅读体验。

公文纠错:针对公文写作场景,提供字词、标点、专名、数值内容纠错,包含领导人姓名、领导人职位、数值一致性等内容的检查与纠错,辅助进行公文审阅校对。

搜索纠错:用户在搜索时经常输入错误,通过分析搜索query的形式和特征,可自动纠正搜索query并提示用户,进而给出更符合用户需求的搜索结果,有效屏蔽错别字对用户真实需求的影响。

语音识别对话纠错
将文本纠错嵌入对话系统中,可自动修正语音识别转文本过程中的错别字,向对话理解系统传递纠错后的正确query,能明显提高语音识别准确率,使产品整体体验更佳
图片来源—百度大脑AI开放平台-文本纠错:https://ai.baidu.com/tech/nlp_apply/text_corrector
中文拼写常见错误类型
| 错误类型 | 示例 |
|---|---|
| 同音字相似错误 | 强烈推荐-墙裂推荐、配副眼睛-配副眼镜 |
| 近音字相似错误 | 牛郎织女-流浪织女 |
| 字形相似错误 | 顽强拼搏-顽强拼博 |
| 词序混乱 | 两户人家-两家人户 |
| 缺字少字 | 浩瀚星海-浩瀚星 |
| 中文全拼拼写 | 天下-tianxia |
| 中文首字母缩写 | 北京-bj |
| 中文简拼 | 明星大侦探-明侦 |
| 语法错误 | 无法言说-言说无法 |
我们把中文常见错误总结分为三类:
1、用词错误,由于输入法等原因导致的选词错误,其主要表现为音近,形近等;
2、文法/句法错误,该类错误主要是由于对语言不熟悉导致的如多字、少字、乱序等错误,其错误片段相对较大;
3、知识类错误,该类错误可能由于对某些知识不熟悉导致的错误,要解决该类问题,通常得引入外部知识、常识等。
当然,针对确定场景,这些问题并不一定全部存在,比如输入法中需要处理1234,搜索引擎需要处理1234567,ASR 后文本纠错只需要处理12,其中5主要针对五笔或者笔画手写输入等。
主流技术
中文本纠错的 paper 很多,整体来看,可以统一在一个框架下,即三大步:
- 错误识别
该阶段主要目的在于,判断文本是否存在错误需要纠正,如果存在则传递到后面两层。这一阶段可以提高整体流程的效率。
错误识别/检测的目标是识别输入句子可能存在的问题,采用序列表示(Transformer/LSTM)+CRF的序列预测模型,这个模型的创新点主要包括:
1、词法/句法分析等语言先验知识的充分应用;
2、特征设计方面,除了DNN相关这种泛化能力比较强的特征,还结合了大量hard统计特征,既充分利用DNN模型的泛化能力,又对低频与OOV(Out of Vocabulary)有一定的区分;
3、最后,根据字粒度和词粒度各自的特点,在模型中对其进行融合,解决词对齐的问题
- 候选召回
候选召回指的是,识别出具体的错误点之后,需要进行错误纠正,为了达到更好的效果以及性能,需要结合历史错误行为,以及音形等特征召回纠错候选。主要可分为两部分工作:离线的候选挖掘,在线的候选预排序。离线候选挖掘利用大规模多来源的错误对齐语料,通过对其模型,得到不同粒度的错误混淆矩阵。在线候选预排序主要是针对当前的错误点,对离线召回的大量纠错候选,结合语言模型以及错误混淆矩阵的特征,控制进入纠错排序阶段的候选集数量与质量。
该阶段主要目的在于,利用一种或多种策略(规则或模型),生成针对原句的纠正候选。这一阶段是整体流程召回率的保证,同时也是一个模型的上限。
- 纠错排序
该阶段主要目的在于,在上一阶段基础上,利用某种评分函数或分类器,结合局部乃至全局的特征,针对纠正候选进行排序,最终排序最高(如没有错误识别阶段,则仍需比原句评分更高或评分比值高过阈值,否则认为不需纠错)的纠正候选作为最终纠错结果。

中文文本纠错评测
数据集
SIGHAN Bake-off 2013: [http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html](http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html)
SIGHAN Bake-off 2014 : [http://ir.itc.ntnu.edu.tw/lre/clp14csc.html](http://ir.itc.ntnu.edu.tw/lre/clp14csc.html)
SIGHAN Bake-off 2015 : [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 更难接受,本来对了改成错的这个更离谱,可构造下述评价指标:
1 F β = 2 P + 1 R \frac{1}{F_{\beta}}=\frac{2}{P}+\frac{1}{R} Fβ1=P2+R1,其中 P = T P T P + F P , R = T P T P + 2 F N P=\frac{TP}{TP+FP},R=\frac{TP}{TP+2FN} P=TP+FPTP,R=TP+2FNTP
相关方法
相关论文
整理来自: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进行结合,因此涌现出一些多模态方法;
最新技术
- 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
中文纠错的开源项目
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做分割
- 在分段完成后获取分段列表,检查其中是否存在保留短语,如果不存在,那么它是拼写错误的短语
参考资料
边栏推荐
猜你喜欢

Redis 官方可视化工具,高颜值,功能真心强大!

嵌入式开发小记,实用小知识分享

How to understand "array name is essentially an address" from the perspective of memory parsing?

MySQL optimization

QT writing IOT management platform 47 general database settings

The first positive number missing in question 41 of C language. Two methods, preprocessing, fast sorting and in situ hashing

代码审计之百家cms

YOLOV3预备工作

高效,可靠,安全的串口通讯开源方案

Hack the box -sql injection fundamentals module detailed Chinese tutorial
随机推荐
I also found excellent software and hardware projects, all open source
The refurbishment and counterfeiting of chips have made people feel numb
35. Search the insertion position
Recommended reading: how can testers get familiar with new businesses quickly?
How to conduct test case review
Usage and common problems of SIP softphone registered with SIP account
mysql如果计算本月变动/本月增幅/同比变动/同比增幅?
TZC 1283: simple sorting - function method
LAMP架构
LNMP architecture
提升命令行效率的 Bash 快捷键 [完整版]
数仓搭建-DIM层
YOLOV3预备工作
Embedded development notes, practical knowledge sharing
Redis official visualization tool, with high appearance value and powerful functions!
Development to testing: a six-year road to automation from scratch
TZC 1283: simple sort - select sort
Use flutter to adjust a color filter for the picture of my little sister
Unity scene jump script
开发项目事半功倍,一款开源的stm32驱动库大集合