概要
在上篇文章中提到关于语法纠错的两大方法,分别为分类器与机器翻译。在这片文章中,我们将总结上诉两类方法的缺点,借此提出更为先进的两种方法–基于编辑和语言模型。
机器翻译 VS GEC
上文中提到,使用机器翻译的方法可以将错误的语句翻译成正确的语句,类似于看作不同语言的翻译问题,比如使用Seq2Seq进行中英文翻译。但是此处留下一个疑问,不妨先看下面的举例:
任务 | 举例 |
---|---|
GEC | I are happy ----->> I am happy |
翻译 | 我很开心 ---->> I am happy |
由于在机器翻译领域,生成字符的顺序是由左到右,即有 “I ”才生成“am”,对比两类任务,不难发现,相比翻译任务而言,GEC任务似乎不需要耗费太多的资源,也就是不需要一步一步生成。对于此问题,Stahlberg 和 Kumar (2020) 认为通过生成编辑操作而不是句子中的所有标记,编辑生成方法通常具有更快的推理速度。
基于编辑的方法
大多数 GEC 方法从输入句子生成正确的句子,但编辑生成方法会生成一系列编辑以应用于输入句子。 由于 GEC 从输入到输出具有高度的字符复制,Stahlberg 和 Kumar (2020) 认为生成完整序列是浪费的。 通过生成编辑操作而不是句子中的所有标记,编辑生成方法通常具有更快的推理速度,基于编辑的方法生成整个句子的 GEC 系统快五到十倍。 然而,这种方法的一个局限性是编辑操作往往是基于标记的,因此有时无法捕获更复杂的多标记流畅编辑。
序列标记任务
在序列标记方法中,对于输入句子的每个标记,系统预测要应用于该标记的编辑操作。 这种方法要求用户定义一组代表要由系统建模的编辑操作的标签,如下表所示:
Source | After | many | years | he | still | dream | to | become | a | super | hero |
---|---|---|---|---|---|---|---|---|---|---|---|
Target | After | many | years, | he | still | dreams | of | becoming | a | super | hero |
Edits | KEEP | KEEP | APP , | KEEP | KEEP | VB_VBZ | REP_of | VB_VBG | KEEP | KEEP | KEEP |
序列标记方法中编辑生成的任务制定示例。 APP x表示追加字符x的操作,REP x表示将当前字符替换为x。
某些编辑可以通用建模,例如动词形式的转换或名词从单数形式到复数形式的转换。 其他一些,例如单词插入和单词替换,是依赖于标记的(比如插入to为APP_to,插入of为ADD_of,不同的插入单词会有一个唯一的对应标签)。 依赖于标记的编辑需要为词汇表中的每个可能的单词使用不同的标签,导致标签的数量随着训练数据中唯一单词的数量线性增长。 因此,系统中要建模的令牌相关标签的数量成为覆盖范围和模型大小之间的权衡。
基于编辑序列到序列
针对序列标记任务中标签数量线性增长方法,序列到序列方法更加灵活,因为它不将输出限制为预定义的编辑操作标签。 它会生成一系列编辑,每个编辑都包含跨度位置、替换字符串和编辑类型的可选标记,具体如下:
Source | After many years he still dream to become a super hero . |
---|---|
Target | After many years , he still dreams of becoming a super hero . |
Edits | (SELF,3,SELF), (PUNCT,3,‘,’), (SELF,5,SELF), (SVA,6,‘dreams’), (PART,7,‘of’),(FORM,8,‘becoming’), (SELF,12,SELF) |
这些标签增加了流程的可解释性,本质上来说,通过特定的规定,减少了标签的复杂性和数量,并已被证明可以提高模型性能。 由于序列到序列方法中的生成具有从左到右的依赖性,因此推理过程比序列标记方法慢。 它仍然比整个句子生成方法快五倍,因为生成的编辑序列比句子中所有标记的序列短得多。
低资源和无监督 GEC 的语言模型
与之前的策略不同,基于语言模型的 GEC 不需要使用并行数据来训练系统。 相反,它使用各种使用 n-gram 或 Transformer 语言模型的技术。 在基于机器翻译的 GEC 流行之前,基于 LM 的 GEC 是一种常见的方法,但由于大型 Transformer 的有效性,最近经历了低资源 GEC 和无监督 GEC 的复兴。 现如今基于 Transformer 的语言模型能够更充分地捕获句法现象,使它们能够在数据很少或没有可用数据时支持 GEC 系统。 然而,当接触少量并行数据时,这些系统可以变得更加强大。
最近一种基于 LM 的 GEC 方法是使用语言模型作为零样本或少样本生成器,在给定提示和噪声输入句子的情况下生成校正。 例如,给定提示“更正以下文本中的语法错误:”(提示词工程),后跟输入句子,语言模型预计会在提示作为上下文的情况下生成输入句子的更正形式,提示词模板如下:
{ "instruction": "你是一个资深的语言专家,请根据input输入的句子,判别其是否具有语法错误,如果有,请将其改正后返回,格式为列表,如果没有,返回空列表", "input": " After many years , he still dreams of becoming a super hero ",}
这种方法之所以成为可能,很大程度上要归功于大型语言模型 (LLM) 的出现,例如 GPT-2 、GPT-3、OPT、PaLM ,现如今流行的Llama,qwen,Chat4等超大规模语言模型。它们已经接受了多达一万亿个单词的训练,并使用数百或数千亿个参数进行参数化。 此外,这些模型还被证明能够通过对各种其他 NLP 任务进行微调,泛化到新的未见过的任务或语言, 因此,第一次有可能构建一个能够执行多语言 GEC 的系统,而无需经过明确的培训。(大语言模型相当于一个博览群书的学者,我们需要通过特定的提示,让它去特定的领域,这也是提示词工程的含义)
无论语言模型的类型如何,基于语言模型的方法的主要优点是它们只需要未注释的单语言数据,因此比所有其他方法更容易扩展到其他语言。 虽然判别式 LM 的性能可能不如最先进的模型,并且生成式 LLM 模型尚未经过正式基准测试,但 LM 已证明自己有能力,并且理论上可以纠正所有类型的错误,包括复杂的流畅性错误。 然而,语言模型方法的主要缺点是很难充分约束模型,因此模型有时会用在给定上下文中更频繁出现的其他单词来替换语法单词。 基于 LLM 的生成式 GEC 的另一个挑战是即时工程很重要,并且输出可能会有所不同,具体取决于系统是否被要求“纠正”语法错误或“修复”语法错误。 最终,所有基于 LM 的方法都受到概率不是语法性的限制,因此罕见的单词可能会被误认为是错误。
总结
到现在,语法纠错的几种方法已经全部列举,下文将在此基础上谈论如何利用其它技术提升模型的性能。