像雪花一样的文稿在年底朝打工人飞来,接不住,实在接不住。手打太容易出现别字错字了,一不小心就要挨骂。怎么办?
搜索了一下,是有相关工具的,有些要付费,有些要会有。打工人怎么能带薪上班呢?带脑子上班已经是上限了。这不,马上就要放假了,趁着假期,给自己冲个电吧,学习一下。
转载出处:IT界的小小小学生-CSDN博客
自然语言处理-错字识别(基于Python)kenlm、pycorrector_python检查中文错别字-CSDN博客
- 谐音字词,如 配副眼睛-配副眼镜
- 混淆音字词,如 流浪织女-牛郎织女
- 字词顺序颠倒,如 伍迪艾伦-艾伦伍迪
- 字词补全,如爱有天意-假如爱有天意
- 形似字错误,如 高梁-高粱
- 中文拼音全拼,如 xingfu-幸福
- 中文拼音缩写,如 sz-深圳
- 语法错误,如想象难以-难以想象
简单总结了一下中文别字错误类型:
- 别字: 感帽,随然,传然,呕土
- 人名,地名错误:哈蜜(正:哈密)
- 拼音错误:咳数(ke shu)—> ke sou,
- 知识性错误:广州黄浦(埔)
- 用户发音、方言纠错:我系东北滴黑社会,俚蛾几现在在我手上。(我是东北的黑社会,你儿子现在在我手上。)
- 重复性错误:在 上 上面 上面 那 什么 啊
- 口语化问题:呃 。 呃 ,啊,那用户名称是叫什么呢?(正:那用户名称是叫什么呢?)
解决方案
规则的解决思路
- 中文纠错分为两步走,第一步是错误检测,第二步是错误纠正;
- 错误检测部分先通过结巴中文分词器切词,由于句子中含有错别字,所以切词结果往往会有切分错误的情况,这样从字粒度和词粒度两方面检测错误,整合这两种粒度的疑似错误结果,形成疑似错误位置候选集;
- 错误纠正部分,是遍历所有的疑似错误位置,并使用音似、形似词典替换错误位置的词,然后通过语言模型计算句子困惑度,对所有候选集结果比较并排序,得到最优纠正词。
深度模型的解决思路
- 端到端的深度模型可以避免人工提取特征,减少人工工作量,RNN序列模型对文本任务拟合能力强,rnn_attention在英文文本纠错比赛中取得第一名成绩,证明应用效果不错;
- CRF会计算全局最优输出节点的条件概率,对句子中特定错误类型的检测,会根据整句话判定该错误,阿里参赛2016中文语法纠错任务并取得第一名,证明应用效果不错;
- seq2seq模型是使用encoder-decoder结构解决序列转换问题,目前在序列转换任务中(如机器翻译、对话生成、文本摘要、图像描述)使用最广泛、效果最好的模型之一。
特征
- kenlm: kenlm统计语言模型工具
- rnn_lm: TensorFlow、PaddlePaddle均有实现栈式双向LSTM的语言模型
- rnn_attention模型: 参考Stanford
- University的nlc模型,该模型是参加2014英文文本纠错比赛并取得第一名的方法
- rnn_crf模型: 参考阿里巴巴2016参赛中文语法纠错比赛并取得第一名的方法
- seq2seq模型: 使用序列模型解决文本纠错任务,文本语法纠错任务中常用模型之一
- seq2seq_attention模型: 在seq2seq模型加上attention机制,对于长文本效果更好,模型更容易收敛,但容易过拟合
错误检测
- 字粒度:语言模型困惑度(ppl)检测某字的似然概率值低于句子文本平均值,则判定该字是疑似错别字的概率大。
- 词粒度:切词后不在词典中的词是疑似错词的概率大。
错误纠正
- 通过错误检测定位所有疑似错误后,取所有疑似错字的音似、形似候选词
- 使用候选词替换,基于语言模型得到类似翻译模型的候选排序结果,得到最优纠正词
安装包
大概搜索一下,有以下库,pycorrector pyenchant,具体怎么使用再慢慢学习。