li-aolong.github.io
li-aolong.github.io copied to clipboard
7.25——中文文本纠错开源项目整理
pycorrector
- github地址:https://github.com/shibing624/pycorrector
- 采用的方案
- 基于规则
- 中文纠错分为两步走,第一步是错误检测,第二步是错误纠正;
- 错误检测部分先通过结巴中文分词器切词,由于句子中含有错别字,所以切词结果往往会有切分错误的情况,这样从字粒度和词粒度两方面检测错误, 整合这两种粒度的疑似错误结果,形成疑似错误位置候选集;
- 错误纠正部分,是遍历所有的疑似错误位置,并使用音似、形似词典替换错误位置的词,然后通过语言模型计算句子困惑度,对所有候选集结果比较并排序,得到最优纠正词
- 基于深度模型
- 端到端的深度模型可以避免人工提取特征,减少人工工作量,RNN序列模型对文本任务拟合能力强,rnn_attention在英文文本纠错比赛中取得第一名成绩,证明应用效果不错;
- CRF会计算全局最优输出节点的条件概率,对句子中特定错误类型的检测,会根据整句话判定该错误,阿里参赛2016中文语法纠错任务并取得第一名,证明应用效果不错;
- seq2seq模型是使用encoder-decoder结构解决序列转换问题,目前在序列转换任务中(如机器翻译、对话生成、文本摘要、图像描述)使用最广泛、效果最好的模型之一。
- 包括:kenlm,rnn_lm,rnn_attention,rnn_crf,seq2seq,seq2seq_attention,transformer,bert
- 基于规则
correction
- github地址:https://github.com/ccheng16/correction
- 大致思路:
- 使用语言模型计算句子或序列的合理性
- bigram, trigram, 4-gram 结合,并对每个字的分数求平均以平滑每个字的得分
- 根据Median Absolute Deviation算出outlier分数,并结合jieba分词结果确定需要修改的范围
- 根据形近字、音近字构成的混淆集合列出候选字,并对需要修改的范围逐字改正
- 句子中的错误会使分词结果更加细碎,结合替换字之后的分词结果确定需要改正的字
- 探测句末语气词,如有错误直接改正
Cn_Speck_Checker
- github地址:https://github.com/PengheLiu/Cn_Speck_Checker
- 程序原理:
- 使用了贝叶斯定理
- 初始化所有潜在中文词的先验概率,将文本集(50篇医学文章)分词后,统计各个中文词的出现频率即为其先验概率
- 当给定一待纠错单词时,需要找出可能的正确单词列表,这里根据字符距离来找出可能的正确单词列表
- 对构造出来的单词做了一次验证后再将其加入候选集合中,即判断了下该词是否为有效单词,根据其是否在单词模型中
chinese_correct_wsd
- github地址:https://github.com/taozhijiang/chinese_correct_wsd
- 方法:
- 用于用户输入语句的同音自动纠错
- 使用到了同义词词林
Autochecker4Chinese
- github地址:https://github.com/beyondacm/Autochecker4Chinese
- 方法:
- 构造一个词典来检测中文短语的拼写错误,key是中文短语,值是在语料库中的频率
- 对于该字典中未出现的任何短语,检测器会将其检测为拼写错误的短语
- 使用编辑距离为错误拼写的短语制作正确的候选列表
- 对于给定的句子,使用jieba做分割
- 在分段完成后获取分段列表,检查其中是否存在保留短语,如果不存在,那么它是拼写错误的短语
xmnlp
- GitHub地址:https://github.com/SeanLee97/xmnlp
- 功能概览:
- 中文分词 & 词性标注
- 支持繁體
- 支持自定义词典
- 中文拼写检查
- 文本摘要 & 关键词提取
- 情感分析
- 文本转拼音
- 获取汉字偏旁部首
- 中文分词 & 词性标注
有无深度学习的模型相关的。。。。
有无深度学习的模型相关的。。。。
https://github.com/ACL2020SpellGCN/SpellGCN