Home

Awesome

<p align="center" > <a href="https://github.com/xlxwalex/FCGEC"> <br> <img src="./figure/logo.png" width="275"/> <br> </a> </p> <p align="center"> <a href="https://github.com/xlxwalex/FCGEC/blob/main/LICENSE"> <img alt="GitHub" src="https://img.shields.io/github/license/xlxwalex/FCGEC.svg?color=blue&style=flat-square"> </a> </p>

FCGEC: Fine-Grained Corpus for Chinese Grammatical Error Correction

中文 | English

[程序更新 (最近2023/10/27)]    [语料更新 (最近2023/11/08)]

FCGEC介绍

中文语法检错纠错(Chinese Grammatical Detection & Correction, CGED & CGEC)是指给定一个句子,检纠错系统可以检查句子中是否存在语法错误。如果有语法错误,系统需要对错误的文本进行自动纠错并输出正确的句子。 该项技术已被用在教育、检索等多个领域。

近来在数据集以及模型上都有了不少的工作,但是之前的数据集工作主要有三个问题:(1)中文的数据集数量较少。 (2)中文纠错数据主要集中在汉语水平考试 (HSK) 等来源,因此语料库包含的主要是非中文母语使用(Chinese as a Foreign Language, CFL) 者的错误数据,而母语使用者的语法错误要更具挑战性。 (3) 纠错的方式单一,往往只有一种修改方式 (修改答案)。

基于以上这些问题,我们的FCGEC旨在提供一个大规模母语使用者的多参考文本纠检错语料,用于训练以及评估纠检错模型系统。除此之外,在这个工作中我们提出了一种基于编辑的(Switch-Tagger-Generator, STG)模型作为基准,希望能为CGEC社区做出贡献。

FCGEC语料

我们的数据来源主要是小初高中学生的病句试题以及新闻聚合网站,为了给句子更多的参考修改方式来达成多样化的标注目标,每一个句子会被随机分配给2-4个标注者进行标注。我们从两个数据来源中收集到了54,026个原始句子,经过去重和筛选掉问题句(如文本截断等)后FCGEC共包含41,340个句子。数据的统计信息如下表所示:

数据集数据来源句子总数错误句子数(%)平均长度平均参考数
FCGECNative4134022517 (54.47%)53.11.7

我们将这些数据分成了训练集,验证集和测试集,它们的数量分别为:36340, 2000以及3000,其他更多详细的数据请参见我们的论文。

FCGEC语料数据

FCGEC的训练、验证及测试数据都已放在data 目录下,数据的格式请见 data 下的README文件。注意:测试集我们只给出了句子没有给出对应的标签,您可以通过该Codalab评测页面 提交您的模型预测结果来计算性能。

语料更新信息

FCGEC任务

我们的语料共有三种标签对应于纠检错的三个任务,分别如下:

关于以上任务,更多详细的信息以及实例请参考我们的论文。

STG纠错模型

对于FCGEC的纠错任务,我们提出了STG (Switch-Tagger-Generator)模型,如下图所示。其由三个模块组成:

注意: 我们的STG模型各个模块之间可以自由的独立联合训练,但是在推断时是以Pipeline的形式进行的

<p align="center"> <br> <img src="./figure/stg.png" width="300"/> <br> </p> <p align="center"> <br> STG模型示意图 <br> </p> 在STG模型的基础上,我们发现由于错误类型与我们设计的几种操作关系有很大的相关性,因此检错任务可以通过将错误类型判断作为辅助任务来提升纠错的性能,也就是论文中的(+TTI)。更多关于模型的信息可以参考我们的论文。

实验环境搭建

我们采用Python=3.8.5作为基本环境,您可以通过以下代码来创建环境以及安装依赖:

conda create -n stg_env python=3.8.5
source activate stg_env
pip install -r requirements.txt

训练及测试

STG模型训练-测试bash文件共有三个:run_stg_indep.sh , run_stg_tti.sh 以及run_stg_joint.sh ,分别对应论文中的STG-IndepSTG-Indep+TTI以及STG-Joint。具体细节可参考 model/STG-correction/run_stg_indep.shmodel/STG-correction/run_stg_tti.shmodel/STG-correction/run_stg_joint.sh

注意:请在使用脚本前将data 目录下的三个json数据集放到程序目录中的dataset下。另外您需要在使用前先配置bash文件头部的参数:

CUDA_ID=   
SEED=                               # 随机数种子
EPOCH=     
BATCH_SIZE=  
MAX_GENERATE=                       # MAX T (最大生成字符数,一般设为6即可,若使用下方checkpoint[版本221021]请设为5)
SPECIAL_MAPPING=                    # 是否对标点/英文等做映射,更多信息请见ISSUE #10 (为了与论文中结果一致,默认不开启)
CHECKPOINT_DIR=checkpoints
PLM_PATH=                           # 预训练模型路径
OUTPUT_PATH=                        # 测试集预测输出.xlsx文件位置

程序更新信息

模型参数文件

我们提供在FCGEC语料上训练好的模型checkpoint文件,以方便大家使用测试:

模型名称预训练模型模型性能(EM/F0.5)下载链接版本
FCGEC-JointRoBERTa-Base-Chinese34.10 / 45.48FCGEC_checkpoints.pt221021

使用方式: 您可以将该checkpoint文件放到model/STG-correction/checkpoints 文件夹中,之后使用joint_evaluate.py 文件来得到测试集的预测结果,具体使用方式可以参考run_stg_joint.shSTEP 3部分 (注意:如果您使用该checkpoint,请将MAX_GENERATE设置为5进行使用,具体请见 ISSUE#3 ,感谢GMago123的反馈)。

下载常见问题: 如果点击checkpoint文件链接出现403提示,您可以刷新一下网页 或 复制链接并开启一个浏览器新空白页来访问链接,这两种方式一般都可以触发浏览器的下载操作。如果都不行的话您也可以复制checkpoint文件链接到下载器中进行下载。若以上方式都无法解决,欢迎在Issue中进行反馈。

模型性能评测

对于错误检测 以及错误类型检测 两个任务,我们采用Accuracy, Precision, Recall 以及 Macro F1 score 作为衡量模型性能的依据。

对于文本纠错任务,我们采用了Exact Match以及character-level edit metric (MuCGEC 中提出)作为评价指标。

更详细的内容请见 scorer 目录下的README文件。

在线评测页面

我们的测试集不直接提供三个任务的标签,因此您需要通过在线评测页面的形式提交您模型在测试集上的预测结果,我们会自动计算您模型的性能指标并在Leaderboard上展示(可选匿名)。我们将评测页面部署在了Codalab上并永久开放,您可以通过下方链接进行访问:

<p align="center"> <a href="https://codalab.lisn.upsaclay.fr/competitions/8020"> <img alt="Codalab" src="https://img.shields.io/badge/ FCGEC- CodaLab-plastic?style=for-the-badge&logoColor=white&link=https://codalab.lisn.upsaclay.fr/competitions/8020&logo=codalab"> </a> </p>

引用

如果您使用了我们的数据或者认为我们的工作对您有帮助,您可以引用我们的论文: FCGEC: Fine-Grained Corpus for Chinese Grammatical Error Correction

@inproceedings{xu2022fcgec,
    title = "{FCGEC}: Fine-Grained Corpus for {C}hinese Grammatical Error Correction",
    author = "Xu, Lvxiaowei  and
      Wu, Jianwang  and
      Peng, Jiawei  and
      Fu, Jiayu  and
      Cai, Ming",
    booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2022",
    year = "2022",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2022.findings-emnlp.137",
    pages = "1900--1918"
}
<p align="center"> <a href="https://arxiv.org/abs/2210.12364"> <img alt="Arxiv" src="https://img.shields.io/badge/ FCGEC- Paper-plastic?logo=arXiv&style=for-the-badge&logoColor=white&color=blue&link=https://arxiv.org/abs/2210.12364"> </a> </p>

相关数据集工作

数据使用条件

通过下载数据或以任何方式访问FCGEC数据,您同意仅将数据用于非商业学术研究目的。除此之外,这些数据不得用于任何非法歧视性的目的。

联系我们

  1. 如果您对数据/代码有任何问题,可以提交Issue或联系 xlxw@zju.edu.cn
  2. 如果您在使用评测页面有任何问题,可以联系pengjw@zju.edu.cn,推荐您在联系时顺便抄送一份给xlxw@zju.edu.cn