《GECToR -- Grammatical Error Correction: Tag, Not Rewrite》论文笔记

解决的问题

NMT-based GEC系统有如下几个问题妨碍了部署:

  1. 缓慢的推理速度
  2. 需要大量的训练数据
  3. 可解释性

在这篇论文中,通过将任务从序列生成转换成序列标注,简化了任务,处理了上述的问题。

这篇论文的思想

Token-level transformations

首先介绍一下概念,Token-level transformations包括以下两种:

  1. Basic transformations: 保持不变、删除、在目前的token后面添加一个token、将目前的token替换为另一个token
  2. g-transformations: 主要是一些具体的任务,比如:改变大小写、将当前的token与下一个token合并、把目前的token分解为两个、单数转复数等等

然后,这篇论文开始了他的预处理工作,把训练和评估数据从简单的原始文本与纠正文本对,转换成了每个token编辑方式的tag。

Tagging model architecture

此模型是由预训练的BERT-like的transformer组成的encoder。然后后面堆了两个线性层和一个softmax层。

Iterative sequence tagging approach

使用GEC sequence tagger标注修改过的序列,然后再次纠正,以这样的方式进行迭代,保证尽可能地完全纠正句子。由于模型问题,一次迭代只能执行一次编辑,但是很多错误并不能由一次编辑来纠正,所以多次迭代具有相应的科学性。

实验显示,大部分的纠正都在前两次迭代中完成。

实验

训练

有三个训练步骤:

  1. 在合成的错误句子上的预训练
  2. 在错误句子上进行微调
  3. 在错误句子和正确句子上进行微调

Encoders from pretrained transformers

这篇论文尝试了LSTM、ALBERT、BERT、GPT-2、RoBERTa、XLNet等作为encoder,最后发现BERT, RoBERTa和XLNet效果要好于其他,在进一步的实验中作者使用了这些。

Tweaking the inference

随后这篇论文在推断的时候又做了一些小改良:

  1. 设置一个不改变原来token的概率阈值,名为confidence bias
  2. 在错误检测层,设置一个句子级别的minimum error probability阈值

在这些小的改良下,模型的能力确实提升不少:
在这里插入图片描述

Speed comparisons

由于此模型不需要一个一个的从decoder中预测纠正的单词,所以推断是并行执行的,速度就快了很多。

结论

这篇论文使用了序列标注方法、预训练transformer、独特的token转换方式和3-stage的训练,实现了一个更快更强的GEC系统,达成了GEC方面的最好性能,并且推导速度是基于Transformer的seq2seq模型的10倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值