Title: GrammarGPT: Exploring Open-Source LLMs for Native Chinese Grammatical Error Correction with Supervised Fine-Tuning
PDF: https://arxiv.org/pdf/2307.13923v1.pdf
Code: https://github.com/freedomintelligence/grammargpt
导读
ChatGPT在语法错误修正方面有着出色的能力,但它毕竟闭源,且模型推理成本过高。本文旨在构建一个关于中文语法错误修正方面的垂直领域大模型,从而提出了GrammarGPT。GrammarGPT的核心是利用ChatGPT通过提供某些线索来生成不符合语法的句子,对于没有线索的语法错误,作者从公开可用的网站收集不符合语法的句子,并进行手动修正。此外,作者还采用了一个错误不变的数据增强方法,用于增强模型纠正本地中文语法错误的能力。
最终,作者构建了约1K个平行数据,并利用该数据对开源的LLMs(入港中文发布的Phonenix)进行指令微调。 实验结果表明:GrammarGPT明显优于现有的SOTA模型。虽然模型参数比SOTA基准线大20倍,但指令微调所需的数据量小了1200倍,这展示了开源LLMs在本地中文语法错误修正方面的潜力。GrammarGPT在NLPCC2023 SharedTask1上排名第3。
引言
语法错误纠正(GEC)旨在自动纠正不符合语法的句子,同时不改变它们的意思。过去的研究主要关注外国中文学习者产生的明显和幼稚的语法错误,而最近的工作则转向由母语者产生的更为微妙和具有挑战性的语法错误。
如上表1列出了中文母语者常见的六种主要语法错误类型,可以分为有线索(w/)和无线索(w/o)两类。这些不正确的句子在表达上是流利的,并符合母语中文的使用习惯,但它们不符合中文语法,因此更难以纠正。
本文提出了GrammarGPT,并通过监督微调的方式来研究开源LLMs在纠正母语中文语法错误方面的潜力。在微调LLMs用于CGEC时,关键挑战是获得高质量的由母语者产生的并行数据,其中包括语法错误的样本。 由于手动注释这样的数据不仅耗时,而且成本极大,所以需要探索自动数据注释方法。近期的一些研究成功地利用ChatGPT和真实世界数据集中的精简数据来为特定领域的LLMs进行微调,从而有效降低成本并也取得了卓越性能。 关于特定任务的指令微调的工作根据数据来源可以分为三类:
- 由ChatGPT生成的数据
- 人工标注的数据
- ChatGPT和人工混合的数据集
在这项研究中,作者受到这一研究线索的启发,提出了一种混合数据集,包含不同类型的母语中文语法错误。首先,作者提出了一种启发式方法,用于处理带有线索的语法错误,通过为ChatGPT提供线索来生成不符合语法的句子。然后,对于没有线索的错误,作者从公共网站收集了不符合语法的句子,并进行了手动纠正。此外,作者还提出了一种错误不变的数据增强方法,通过将并行数据中的命名实体替换为相似的实体,增强了数据的多样性,从而提高了模型纠正母语中文语法错误的能力。最终,作者构建了1k个并行数据,并利用这些数据通过指令微调来微调LLMs。
实验结果表明,GrammarGPT在中文语法错误纠正方面明显优于现有的SOTA系统。尽管该模型参数的大小是SOTA基线的20倍,但用于微调的数据量却小了1200倍,这证明了开源LLMs在中文语法错误纠正上的潜力。
本文贡献如下:
- 本文是第一个探索开源LLMs结合指令微调用于母语中文语法错误纠正的研究。
- 本文构建了一个混合数据集,其中既包括由ChatGPT生成的数据,又包括手动注释的数据,有效地覆盖了母语中文语法错误,使得LLMs在语法检测方面表现更加出色。
- 本文还设计了一种错误不变的数据增强方法,通过用相似的命名实体替换并行数据中的命名实体,使模型在纠正语法错误方面更加准确。
- 实验结果表明,GrammarGPT在性能上明显优于最先进的系统,且用于指令微调的数据量仅为最SOTA系统的1/1200。
方法
上图1展示了GrammarGPT方法的框架,它涉及构建包含六种母语中文语法错误的并行数据,以便于对开源语言模型(LLMs)进行微调。虽然人工标注的数据提供了高质量的样本,但相关的高成本仍然是一个显著的问题。为了解决这个问题,本文采用了一种折中的方法。首先通过从互联网收集的线索来引导ChatGPT生成带有线索的不符合语法的句子,然后对从互联网收集的没有线索的不符合语法的句子进行标注。此外,本文还提出了一种错误不变的增强技术,用相似的命名实体替换并行数据中的命名实体,进一步增强模型纠正母语中文语法错误的能力。最后将并行数据转换为指令,然后利用这些指令对LLMs进行微调。
混合数据集构建
ChatGPT生成的数据
如上表1的前几行所示,带有线索的语法错误通过识别特定线索很容易被检测和纠正。例如,“more than”和“about”同时使用导致冗余成分,“The cause”和“caused by”同时使用导致结构混乱,“prompting”和“pace”同时使用导致不当搭配。相反,我们可以通过将这些线索插入到语法正确的句子中来构建不符合语法的句子。由于ChatGPT具有强大的能力,我们可以通过提供从公共网站收集的这些线索来指导ChatGPT生成符合我们要求的不符合语法的句子。上图2显示了ChatGPT生成相关训练数据的一个示例。
人工标注的数据
上表1的最后三行显示了一些类型的母语不符合语法错误很难被识别。我们可以发现这些不符合语法的句子在表达上是流利的,没有明显的语法错误线索可以帮助我们识别它们。对于这些类型的语法错误,作者主要从公开的网站上收集了不符合语法的句子,然后进行手动标注。
错误不变的数据增强
为了优先考虑模型对母语语法错误的关注,并提高其鲁棒性,作者设计了一种错误不变的增强方法,如上图3所示。母语中文的语法错误通常是微妙的,而且很少出现在命名实体的位置。为了解决这个问题,作者采取了一种策略,即用相似的命名实体替换并行数据中的命名实体。通过使用这种增强方法,模型可以专注于识别未改变的错误而不是具体的名词,从而提高其纠正微妙和不易察觉的语法错误的性能。
指令微调
指令微调已成为微调LLMs的主流方法,通过提供明确的指令来增强模型对于指令的理解能力。在本文中,作者也同样使用指令微调来微调LLMs。指令的详细内容如上表2所示,主要包含四个组成部分。
- 任务后缀:该组件引导LLMs扮演一个AI助手的角色。
- 任务描述:在这里,概述了LLMs需要完成的具体任务。
- 输入:这对应于在微调过程中用作输入的不符合语法的句子。
- 输出:这表示符合语法的句子,它们在微调过程中作为期望的输出。
通过这些指令,我们能够有效地引导LLMs学习和纠正母语中文的语法错误,从而提高模型在中文语法错误纠正任务上的性能。
实验结果
本文一共构建了1061个用于训练的并行数据样本,数据统计情况见上表3。其中约35%的数据是通过人工标注获得的,而其余65%是由ChatGPT生成的。为了评估模型性能,作者使用了NLPCC2023 SharedTask1网站上提供的验证集,其中包含500个并行数据样本。
如上表5所示,S2S BART在1k混合数据集上训练后,在单词级别和字符级别上分别达到了17.57和18.16的F0.5,这与使用120万外语学习者数据的基线模型性能相当。我们将这归因于外语学习者和母语中文学习者之间的语法错误差异巨大,使得仅依靠外语学习者的数据很难有效地提高母语中文语法错误纠正的性能。这些结果进一步突显了作者构建的混合数据集中包含母语中文语法错误的有效性。
此外,GrammarGPT仅使用约1k个数据样本进行微调,就取得了显著的改进,在单词级别和字符级别上分别达到了32.56和35.84的F0.5,性能几乎是基线模型的两倍。这展示了开源LLMs在母语中文语法错误纠正中的显著潜力。最终的官方测试集结果显示,GrammarGPT排名第3。
同时,作者还对混合数据集和错误不变的增强方法进行了消融实验,如上表6所示,相关实验结论如下:
-
无论是否应用数据增强,使用ChatGPT生成的数据进行训练的模型始终优于使用人工标注数据进行训练的模型。作者将这个观察结果归因于两个主要因素:首先,由于人工标注的成本较高,所以人工标注的数据量比ChatGPT生成的数据要小;其次,没有线索的语法错误确实更难以纠正。
-
混合数据集展示了提高母语中文语法错误纠正性能的潜力,这一发现证实了我们构建混合数据集的方法在包含母语中文语法错误方面的有效性。
-
通过采用错误不变的增强方法,可以观察到在混合数据集上训练的模型在召回率和F0.5指标上有显著的改进,但在精确率上只有轻微的改进。这表明该数据增强技术增强了模型检测语法错误的能力,通过迫使模型更加关注增强数据中的语法错误。
结论
在本文中,我们介绍了GrammarGPT,这是一个专门用于母语中文语法错误纠正的开源大语言模型(LLM)。文中表明,对于用LLMs构建垂直领域的应用中,高质量的训练数据,数据构建的技巧,和构建何种类型的数据显得如此重要。