Awesome
NaSGEC: Multi-Domain Chinese Grammatical Error Correction for Native Speaker Texts
简介
本文提出了首个多领域中文母语纠错数据集NaSGEC,包含3个领域的真实病句:社交媒体(Media),学术写作(Thesis)和语文考试(Exam),旨在推动中文语法纠错(CGEC)的跨领域(Cross-domain)研究。每个病句由双人独立标注+专家审查,从而提供多个高质量参考修改。
同时,我们基于中文BART训练了一系列高质量基准CGEC模型,主要包括:1) 基于高质量人工标注训练数据(Lang8+HSK);2) 基于超大规模(>1亿)母语文本自动构造的训练数据。
此外,我们也使用人工标注的NaSGEC数据集对上述模型进行领域内微调,从而构建针对特定领域的先进中文语法纠错模型。
NaSGEC数据集
NaSGEC数据集主要包含3个中文母语领域的12,500个句子及其对应的修改结果,这三个领域分别为:
- 社交媒体(NaSGEC-Media):从微信公众号文章中获取的4000句;
- 学术写作(NaSGEC-Thesis):从计算机专业本科生毕业论文中获取的1500句;
- 语文考试(NaSGEC-Exam):从语文考试试卷中获取的7000句;
主要的数据统计指标如下表所示:
更多详细数据介绍和跨领域分析,请参考我们的论文。
请注意:数据集将在完善后尽快发布。
Benchmark纠错模型
实验环境
本文所提出的模型基于SynGEC
代码库开发,实验环境安装如下所示:
git clone git@github.com:HillZhang1999/NaSGEC.git
git submodule init && git submodule update --recursive --remote --force
conda create -n nasgec python==3.8
conda activate nasgec
pip install -r requirements.txt
python -m spacy download en
cd ./SynGEC/src/src_syngec/fairseq-0.10.2
pip install --editable ./
模型使用
我们开源了如下5个中文纠错模型,分别适用于不同的领域:
模型 | 链接 | 描述 |
---|---|---|
real_learner_bart_CGEC | Google Drive | 伪母语数据预训练,真实二语者数据微调,适合二语者文本和病句题 |
pseudo_native_bart_CGEC | Google Drive | 使用伪母语数据训练的模型,适合通用母语写作场景 |
pseudo_native_bart_CGEC_media | Google Drive | 伪母语数据预训练,NaSGEC-Media微调,适合日常写作 |
pseudo_native_bart_CGEC_thesis | Google Drive | 伪母语数据预训练,NaSGEC-Thesis微调,适合学术写作 |
real_learner_bart_CGEC_exam | Google Drive | 真实二语者数据预训练,NaSGEC-Exam微调,适合纠正语病错误 |
模型下载后放入./models
目录,具体的推理方法可以参考./bash/generate.sh
。
同时,用户也可以继续对上述模型进行微调训练,方法可以参考./bash/finetune.sh
。
除了上述Fairseq版本,我们也支持HuggingFace transformers
一键调用我们的模型进行推理,使用方式如下所示:
from transformers import BertTokenizer, BartForConditionalGeneration, Text2TextGenerationPipeline
tokenizer = BertTokenizer.from_pretrained("HillZhang/real_learner_bart_CGEC")
model = BartForConditionalGeneration.from_pretrained("HillZhang/real_learner_bart_CGEC")
encoded_input = tokenizer(["北京是中国的都。", "他说:”我最爱的运动是打蓝球“", "我每天大约喝5次水左右。", "今天,我非常开开心。"], return_tensors="pt", padding=True, truncation=True)
if "token_type_ids" in encoded_input:
del encoded_input["token_type_ids"]
output = model.generate(**encoded_input)
print(tokenizer.batch_decode(output, skip_special_tokens=True))
Hugging Face模型链接为:
模型 | 链接 |
---|---|
HillZhang/real_learner_bart_CGEC | HuggingFace |
HillZhang/pseudo_native_bart_CGEC | HuggingFace |
HillZhang/pseudo_native_bart_CGEC_media | HuggingFace |
HillZhang/pseudo_native_bart_CGEC_thesis | HuggingFace |
HillZhang/real_learner_bart_CGEC_exam | HuggingFace |
Hugging Face版本是由Fairseq训练的权重通过脚本转换而来,所以性能可能存在一些差异。
效果评估
本文使用的Metric基于MuCGEC工作提出的ChERRANT工具,主要计算字级别的Precision/Recall/F_0.5指标,具体使用方法可以参考[Link]。后续我们会提供在线评测网站。
此外,我们的模型在NLPCC18/MuCGEC等前人数据集上也能取得SOTA的性能。
引用
如果您认为我们的工作对您的工作有帮助,请引用我们的论文: NaSGEC: a Multi-Domain Chinese Grammatical Error Correction Dataset from Native Speaker Texts (Accepted by ACL2023 Findings) PDF
@inproceedings{zhang-etal-2023-nasgec,
title = "{Na}{SGEC}: a Multi-Domain Chinese Grammatical Error Correction Dataset from Native Speaker Texts",
author = "Zhang, Yue and
Zhang, Bo and
Jiang, Haochen and
Li, Zhenghua and
Li, Chen and
Huang, Fei and
Zhang, Min"
booktitle = "Findings of ACL",
year = "2023"
}
联系
如果您在使用我们的数据集及代码的过程中遇到了任何问题,可联系 hillzhang1999@qq.com。