[**🇨🇳中文**](https://github.com/shibing624/pycorrector/blob/master/README.md) | [**🌐English**](https://github.com/shibing624/pycorrector/blob/master/README_EN.md) | [**📖文档/Docs**](https://github.com/shibing624/pycorrector/wiki) | [**🤖模型/Models**](https://huggingface.co/shibing624)
<div align="center">
<a href="https://github.com/shibing624/pycorrector">
<img src="https://github.com/shibing624/pycorrector/blob/master/docs/pycorrector.png" alt="Logo" height="156">
</a>
</div>
-----------------
# pycorrector: useful python text correction toolkit
[![PyPI version](https://badge.fury.io/py/pycorrector.svg)](https://badge.fury.io/py/pycorrector)
[![Downloads](https://static.pepy.tech/badge/pycorrector)](https://pepy.tech/project/pycorrector)
[![GitHub contributors](https://img.shields.io/github/contributors/shibing624/pycorrector.svg)](https://github.com/shibing624/pycorrector/graphs/contributors)
[![License Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
[![python_vesion](https://img.shields.io/badge/Python-3.6%2B-green.svg)](requirements.txt)
[![GitHub issues](https://img.shields.io/github/issues/shibing624/pycorrector.svg)](https://github.com/shibing624/pycorrector/issues)
[![Wechat Group](http://vlog.sfyc.ltd/wechat_everyday/wxgroup_logo.png?imageView2/0/w/60/h/20)](#wechat-group)
**pycorrector**: 中文文本纠错工具。支持中文音似、形似、语法错误纠正,python3开发。
**pycorrector**实现了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型的文本纠错,并在SigHAN数据集评估各模型的效果。
**Guide**
- [Question](#Question)
- [Solution](#Solution)
- [Evaluation](#Evaluation)
- [Install](#install)
- [Usage](#usage)
- [Deep Model Usage](#deep-model-usage)
- [Dataset](#Dataset)
- [Contact](#Contact)
- [Reference](#reference)
# Question
中文文本纠错任务,常见错误类型:
<img src="docs/git_image/error_type.png" width="600" />
当然,针对不同业务场景,这些问题并不一定全部存在,比如拼音输入法、语音识别校对关注音似错误;五笔输入法、OCR校对关注形似错误,
搜索引擎query纠错关注所有错误类型。
本项目重点解决其中的"音似、形字、语法、专名错误"等类型。
# Solution
### 规则的解决思路
依据语言模型检测错别字位置,通过拼音音似特征、笔画五笔编辑距离特征及语言模型困惑度特征纠正错别字。
1. 中文纠错分为两步走,第一步是错误检测,第二步是错误纠正;
2. 错误检测部分先通过结巴中文分词器切词,由于句子中含有错别字,所以切词结果往往会有切分错误的情况,这样从字粒度和词粒度两方面检测错误, 整合这两种粒度的疑似错误结果,形成疑似错误位置候选集;
3. 错误纠正部分,是遍历所有的疑似错误位置,并使用音似、形似词典替换错误位置的词,然后通过语言模型计算句子困惑度,对所有候选集结果比较并排序,得到最优纠正词。
### 深度模型的解决思路
1. 端到端的深度模型可以避免人工提取特征,减少人工工作量,RNN序列模型对文本任务拟合能力强,RNN Attn在英文文本纠错比赛中取得第一名成绩,证明应用效果不错;
2. CRF会计算全局最优输出节点的条件概率,对句子中特定错误类型的检测,会根据整句话判定该错误,阿里参赛2016中文语法纠错任务并取得第一名,证明应用效果不错;
3. Seq2Seq模型是使用Encoder-Decoder结构解决序列转换问题,目前在序列转换任务中(如机器翻译、对话生成、文本摘要、图像描述)使用最广泛、效果最好的模型之一;
4. BERT/ELECTRA/ERNIE/MacBERT等预训练模型强大的语言表征能力,对NLP届带来翻天覆地的改变,海量的训练数据拟合的语言模型效果无与伦比,基于其MASK掩码的特征,可以简单改造预训练模型用于纠错,加上fine-tune,效果轻松达到最优。
PS:
- [作者纠错分享](https://github.com/shibing624/pycorrector/wiki/pycorrector%E6%BA%90%E7%A0%81%E8%A7%A3%E8%AF%BB-%E7%9B%B4%E6%92%AD%E5%88%86%E4%BA%AB)
- [网友源码解读](https://zhuanlan.zhihu.com/p/138981644)
# Feature
* [Kenlm模型](pycorrector/corrector.py):本项目基于Kenlm统计语言模型工具训练了中文NGram语言模型,结合规则方法、混淆集可以纠正中文拼写错误,方法速度快,扩展性强,效果一般
* [MacBERT模型](pycorrector/macbert)【推荐】:本项目基于PyTorch实现了用于中文文本纠错的MacBERT4CSC模型,模型加入了错误检测和纠正网络,适配中文拼写纠错任务,效果好
* [Seq2Seq模型](pycorrector/seq2seq):本项目基于PyTorch实现了用于中文文本纠错的Seq2Seq模型、ConvSeq2Seq模型,其中ConvSeq2Seq在NLPCC-2018的中文语法纠错比赛中,使用单模型并取得第三名,可以并行训练,模型收敛快,效果一般
* [T5模型](pycorrector/t5):本项目基于PyTorch实现了用于中文文本纠错的T5模型,使用Langboat/mengzi-t5-base的预训练模型fine-tune中文纠错数据集,模型改造的潜力较大,效果好
* [BERT模型](pycorrector/bert):本项目基于PyTorch实现了基于原生BERT的fill-mask能力进行纠正错字的方法,效果差
* [ELECTRA模型](pycorrector/electra):本项目基于PyTorch实现了基于原生ELECTRA的fill-mask能力进行纠正错字的方法,效果差
* [ERNIE_CSC模型](pycorrector/ernie_csc):本项目基于PaddlePaddle实现了用于中文文本纠错的ERNIE_CSC模型,模型在ERNIE-1.0上fine-tune,模型结构适配了中文拼写纠错任务,效果好
* [DeepContext模型](pycorrector/deepcontext):本项目基于PyTorch实现了用于文本纠错的DeepContext模型,该模型结构参考Stanford University的NLC模型,2014英文纠错比赛得第一名,效果一般
* [Transformer模型](pycorrector/transformer):本项目基于PyTorch的fairseq库调研了Transformer模型用于中文文本纠错,效果一般
#### 思考
1. 规则的方法,在词粒度的错误召回还不错,但错误纠正的准确率还有待提高,更多优质的纠错集及纠错词库会有提升,我更希望算法模型上有更大的突破。
2. 现在的文本错误不再局限于字词粒度上的拼写错误,需要提高中文语法错误检测(CGED, Chinese Grammar Error Diagnosis)及纠正能力,列在TODO中,后续调研。
# Demo
Official Demo: https://www.mulanai.com/product/corrector/
HuggingFace Demo: https://huggingface.co/spaces/shibing624/pycorrector
![](docs/hf.png)
run example: [examples/gradio_demo.py](examples/gradio_demo.py) to see the demo:
```shell
python examples/gradio_demo.py
```
# Evaluation
提供评估脚本[examples/evaluate_models.py](./examples/evaluate_models.py):
- 使用sighan15评估集:SIGHAN2015的测试集[pycorrector/data/cn/sighan_2015/test.tsv](pycorrector/data/cn/sighan_2015/test.tsv)
,已经转为简体中文。
- 评估标准:纠错准召率,采用严格句子粒度(Sentence Level)计算方式,把模型纠正之后的与正确句子完成相同的视为正确,否则为错。
### 评估结果
评估数据集:SIGHAN2015测试集
GPU:Tesla V100,显存 32 GB
| Model Name | Model Hub Link | Backbone | GPU | Precision | Recall | F1 | QPS |
|:--------|:--------------------------------------------------------------------------------------------------------------------|:-----------------------------|:----|:----------| :--| :--- |:--------|
| Rule | - | kenlm
没有合适的资源?快使用搜索试试~ 我知道了~
Kenlm、ConvSeq2Seq等多种模型的文本纠错,并在SigHAN数据集评估各模型的效果,开箱即用
共226个文件
py:134个
txt:30个
md:16个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 175 浏览量
2023-09-15
14:29:19
上传
评论
收藏 13.26MB ZIP 举报
温馨提示
实现了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型的文本纠错,并在SigHAN数据集评估各模型的效果,开箱即用
资源推荐
资源详情
资源评论
收起资源包目录
Kenlm、ConvSeq2Seq等多种模型的文本纠错,并在SigHAN数据集评估各模型的效果,开箱即用 (226个子文件)
CITATION.cff 321B
Dockerfile 747B
.gitignore 1KB
en.json.gz 575KB
framework_context.jpeg 513KB
we_image.jpeg 216KB
wechat.jpeg 40KB
macbert_result.jpg 770KB
macbert_network.jpg 114KB
macbert_mask_strategies.jpg 94KB
eval_corpus.json 210KB
LICENSE 11KB
README.md 39KB
README.md 10KB
README.md 8KB
README_EN.md 7KB
README.md 7KB
README.md 6KB
README.md 2KB
README.md 2KB
README.md 2KB
README.md 1KB
README.md 801B
CONTRIBUTING.md 521B
eng_correction.md 353B
feature-request.md 341B
bug-report.md 301B
usage-question.md 204B
基于深度学习的中文文本自动校对研究与实现.pdf 1.77MB
error_type.png 687KB
RTD.png 507KB
long_text.png 455KB
bert_result.png 425KB
wechat_zhifu.png 286KB
peoplecorpus.png 212KB
short_result.png 163KB
macbert_network_old.png 156KB
arch1.png 136KB
convseq2seq_ret.png 124KB
hf.png 109KB
ernie_result.png 105KB
erweima.png 93KB
docker.png 70KB
pycorrector.png 5KB
zh_wiki.py 140KB
seq2seq_model.py 49KB
modeling_ernie.py 30KB
detector.py 17KB
train.py 16KB
eval.py 13KB
get_file.py 12KB
corrector.py 12KB
convseq2seq.py 12KB
train.py 11KB
train.py 11KB
tokenizing_ernie.py 9KB
evaluate_util.py 9KB
proper_corrector.py 8KB
infer.py 8KB
langconv.py 8KB
macbert_corrector.py 8KB
fix_bug.py 8KB
seq2seq.py 8KB
optimization.py 7KB
preprocess.py 7KB
t5_corrector.py 7KB
base_model.py 7KB
model.py 7KB
model_args.py 7KB
lr_scheduler.py 6KB
softmaskedbert4csc.py 6KB
predict.py 6KB
model.py 6KB
ngram_util.py 6KB
tokenizer.py 6KB
ner_error_test.py 6KB
predict_sighan.py 6KB
ernie_corrector.py 6KB
en_spell.py 6KB
infer.py 5KB
data_reader.py 5KB
error_correct_test.py 5KB
train.py 5KB
evaluate_models.py 5KB
utils.py 5KB
detector_test.py 5KB
kenlm_test.py 5KB
train.py 5KB
infer.py 5KB
text_utils.py 5KB
sighan_evaluate.py 5KB
seq2seq_utils.py 5KB
electra_corrector.py 4KB
deepcontext_demo.py 4KB
data_reader.py 4KB
seq2seq_corrector.py 4KB
test_confusion.py 4KB
defaults.py 3KB
bert_corrector.py 3KB
macbert_corrector_probs_test.py 3KB
共 226 条
- 1
- 2
- 3
资源评论
云哲-吉吉2021
- 粉丝: 3321
- 资源: 1130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- matlab基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合
- 基于C语言+stm32f4的modbus tcp上下位机通信项目+上位机由LabVIEW编写+源码+开发文档+视频教程(高分项目
- 基于Python的Struts2漏洞扫描器设计源码
- HTML+CSS制作的个人博客网页.zip
- 基于htmlde 爱心代码,但HTML网页源码.zip
- 51单片机实现LED流水灯
- 基于Python的obEspoir分布式游戏框架设计源码
- 基于python的机械设计实用计算器,可计算电动机,传动装置,V带轮,齿轮,轴,轴承的几何或者力,运动学参数数值+源码+开发文档
- 基于HTML +JavaScript的元旦倒计时代码.docx
- 【Unity资源免费分享】孩子益智小游戏unity 5x系列Baby Doll House Cleaning
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功