2018 NLPCC Chinese Grammatical Error Correction 论文小结

阅读大概需要5分钟 跟随小博主,每天进步一丢丢

PS:文末每日一题与雅思单词!

导读

这一段时间,笔者一直在研究语音识别后的文本纠错,而就在八月26-30日,CCF的自然语言处理和中文计算会议召开了,笔者也从师兄那里拿到了新鲜出炉的会议论文集,其中重点看的自然是其shared task2:grammatical error correction的overview以及优胜团队的论文。本文总结了优胜团队的论文并给出了一些可能的改进方向。

本文涉及四篇文章:

  1. 官方的overview: Overview of the NLPCC 2018 Shared Task: Grammatical Error Correction
  2. 比赛第一名:有道团队的论文:Youdao’s Winning Solution to the NLPCC-2018 Task 2 Challenge: A Neural Machine Translation Approach to Chinese Grammatical Error Correction
  3. 比赛第二名:阿里团队的论文:Chinese Grammatical Error Correction Using Statistical and Neural Models
  4. 比赛第三名:北京语言大学团队的论文:A Sequence to Sequence Learning for Chinese Grammatical Error Correction

首先来看官方的overview

overview

官方的overview将整个shared task的目标、数据集、评价标准以及参赛情况进行大致总结。

数据集来自于学习中文的外国人作文,评价标准为F0.5。

训练语料中,每个句子后面跟着0~n(n不定)个纠正过后的句子,若句子后面没有纠正的句子,则说明该句子是正确的。后面的n个句子都是正确结果。

这里我们当然更关注参赛团队情况以及他们使用的方法,参赛总共23支队伍,6支提交了最终结果,最终分数如下:

在论文集中,F0.5 29以上的三支参赛队伍:有道、阿里、北京语言大学信息科学学院分别提交了他们的论文,下面也会分别进行小结。

以下是官方对那6支参赛团队使用方法的总结原文:

Most of the systems treat the GEC problem as a machine translation (MT) task. Rule-based models and language models are also explored. AliGM proposes two modules for this problem: the correction module and the combination module. In the former module, correction candidates are generated for each input sentence with two statistical models and one neural model. The statistical models include a rule-based model and a statistical machine translation (SMT) -based model. The neural model refers to a neural machine translation (NMT) -based model. In the latter module, they combine these models in a hierarchical manner. CU-Boulder uses a Bi-LSTM model with attention to make corrections. And they use the character-level minimum edit distance (MED) to select the correction version among multiple candidates. Joint voting of five models is implemented to advance the performance. YouDao also casts the problem as a machine translation task. It is worth noting that they use a staged approach and design specific modules targeting at particular errors, including spelling, grammatical, etc. BUPT uses a two-stage procedure method. In the first stage, they adopt neural models for error detection. In the second stage, they use a statistical method following Generating and scoring correction candidates in Chinese grammatical error diagnosis.. PKU uses a character-based MT model to deal with this problem. Besides, they propose a preprocessing module for the correction of spelling errors. First, the error detection is based on the binary features including cooccurrence probability, mutual information and chi-square test. Then confusion sets are introduced to generate candidates at the detected point. The final correction is the candidate with the highest language model probability. To improve the precision score, they set a high threshold. In addition, they check each correction with confidence levels in a post-processing stage. BLCU proposes a system mainly based on the convolutional sequence-to-sequence model.

可以看到,大多数参赛团队将纠错任务作为翻译任务(从错误句子到正确句子的翻译),以往基于统计以及规则的模型虽然还有使用但不再作为主力,基于双向LSTM的神经网络模型已经成为主流,其中以 Encoder-Decoder + attention 模型最为流行,但他们并没有纯用神经网络进行纠错,而是掺杂了从编辑距离到n-gram等各种方法。此外还有划分阶段,对不同阶段使用不同模型,最终整合各个阶段的输出的策略。下面我们来依次看比赛前三名的论文。

1. Youdao’s Winning Solution to the NLPCC-2018 Task 2 Challenge: A Neural Machine Translation Approach to Chinese Grammatical Error Correction

总结:他们将纠错任务视作翻译任务,错误分为表面错误语法错误,使用相似字音表+5-gram解决低级错误,使用字级、词级 Transformer 模型解决高级错误,将低级模型和高级模型进行组合,最终再用5-gram语言模型对纠正后句子进行困惑度分析,选择困惑度最低的句子。

输入处理

他们的预处理阶段较为简单,语料方面使用的是全语料策略:每个句子和其正确答案句子各构成一个样本对,即{(错误句子,正确句子0),(错误句子,正确句子1),(错误句子,正确句子2)。。。},若句子本身是正确,则答案句子用其本身,即{(待训练句子,待训练句子)}

值得一提的是,他们得到了样本对还额外经过了一步筛选:使用自己在大语料中训练出来的5-gram字级语言模型检测错误句子和正确句子的困惑度,若是前者的困惑度低于后者,则把这个样本对删去。

模型分层

有道将错误大题分成两类,一类是拼写类的表面错误,第二类是较为困难的语法错误

对于表面错误,有道使用大量文本训练出来的5-gram字级模型作为辅助模型,并且使用 SIGHAN 2013 CSC Datasets中提供字音、字形相似表。

在有了5-gram模型和字表之后,他们使用的方式颇为暴力:对句子中的每个字,将其在字表中的候选字替换进去并计算得分,所有句子中困惑度最低的即为最终选择。

在纠正完表面错误后,他们开始着手进行语法错误的纠正,这方面他们采用的是 基于 self-attention的 encoder-decoder框架Transformer ,因为在机器翻译领域 sub-word 效果更好,然而字级更能处理拼写和字级语法错误,因此他们分别构造了字级和词级的神经网络模型,试图将他们组合起来以此获取这两种颗粒度各自的优点,实现方面他们使用了基于tensorflow的框架 tensor2tensor,参数设置方面除了把hidden size设为800外,其余为默认设置。

分类处理完之后,自然要进行模型的组合了,首先是低级错误模型单独来,然后是低级错误+高级错误模型,先字后词、先词后字以及只用字、只用词四种高级模型,由此得到了总共5个纠正模型:

值得一提的是,他们并不是只使用一个模型组合,而是将五个模型组合都使用上,最终得到了5个组合的输出,再用5-gram模型对这5个句子进行评分,选择困惑度最低的句子。最终他们的结果如下:

可以看出,他们的思路是将错误分为简单和复杂两类错误,用简单模型(5-gram+暴力替换)解决简单错误,复杂模型(Transformer)解决复杂错误,而后将两个阶段的模型进行组合,把字级5-gram作为评分工具选出最后的句子。

2. Chinese Grammatical Error Correction Using Statistical and Neural Models

总结:多模型平行结构,使用基于规则、基于统计和神经网络三大类模型,先在类别内进行低级组合得到类别候选,再对类别候选进行高级组合。

输入处理方面,阿里生成了两类数据集,第一类是将待测句子和其纠正句子中编辑距离最小的句子构成样本对,称为NLPCC MinEd,第二类是将待测句子和所有纠正句子各构成样本对,称为NLPCC Expand。在神经网络翻译模型中使用不同的语料类训练模型并组合结果。

阿里使用的模型和有道的不大相同。有道的在单个模型组合里采用的是垂直结构:先纠简单再就复杂,然而阿里采用的是平行结构,不分简单复杂,模型自行把它们都搞定,而后再组合起来。

此外,他们引入了基于规则的模型,在基于统计的模型中使用语言模型+翻译模型并用信道噪声+beam search挑选候选解。

语言模型方面用中文语料进行训练,翻译模型方面用平行语料(错误句子和正确句子的对应)训练,以此得到错误句子和正确句子的条件概率。

神经网络方面也是 Encoder-Decoder (各2层LSTM) + attention 的模型,他们只使用字级模型,但在其它方面做了修改,如LSTM是单向还是双向、是否使用以及是在Encoder还是在Decoder使用预训练的embedding,数据集是只挑错误句子到候选正确句子编辑距离最低的句子对还是使用所有候选正确句子,以此产生了4个模型组合:

组合起来的模型得到了输出结果,若是几个模型的输出结果不同,则称发生了冲突,他们提出了5种冲突解决方案,不同与有道直接使用5-gram进行困惑度排序并挑选一整个句子作为最终结果,阿里的几个解决方案中把修改部分单独拿出来构成修改集,结合最小编辑距离和语言模型评分挑选最终修改结果:

冲突发生时的解决方案(两个模型产生的两个句子):

  1. 为模型分配优先级,当冲突发生时选择优先级高的模型的结果
  2. 将冲突句子对原句所做的更改做并集,选择可以最小化编辑距离的修改方式
  3. 对修改集做交集
  4. 用语言模型对修改后的句子进行评分,选择分数高的
  5. 用语言模型评分,并把句子长度作为正则化参数 (分数 / 句子长度)

组合分类:

  • 低层组合:组合同一类型模型的候选结果
  • 高层组合:组合不同类型模型的候选结果

组合方式:

  • 低层组合:模型两两组合,并排列组合使用解决方案,使用验证集分数最高的方案
  • 高层组合:
    1. 将冲突解决方案扩展成对三个模型的
    2. 加入保护机制,当三种模型的冲突太多时则不对句子做修改

3. A Sequence to Sequence Learning for Chinese Grammatical Error Correction

北京语言文化大学和前两者相比,模型较为简单,他们使用的是基于CNN的seq2seq模型,没有对错误划分类型也没有使用多个模型。因为语法错误更多和邻近词语有关,使用CNN能比LSTM更好捕捉邻近词的关系,而多层CNN也同样可以捕获较远距离的词语交互信息。

输入方面,对于不常见词语以及未登录词,他们同样使用BPE算法将词划分成Subword 单元。Embedding方面,他们使用了基于中文语法修正过后word2vec的wang2vec,并且将位置向量接在embedding以及生成的词语后面,以此给输入和输出层提供位置信息。

总结

以上三篇论文所使用的,基本都是对已有的成熟模型进行的一些小修改,前两支队伍使用多个模型,或横向划分模型类型或纵向划分错误类型,而后将模型组合起来,观察他们的实验结果可以发现,混合模型的分数要比单个模型高出不少(有道的实验结果),组合策略的选择也同样对分数有较大影响(阿里的策略),若是在算力上有所欠缺无法在能接受的时间内训练多个模型并组合,北京语言文化大学的CNN seq2seq+attention模型未尝不是一个好选择。

下面对以上三篇论文以及笔者最近的一些浏览结果进行一些总结,给出可能改进和组合的方向

输入处理

  1. 颗粒度选择:字级或词级(词级可用BPE划分subword解决OOV或rare word问题)
  2. 训练语料对划分:

最小编辑距离语料:错误句子只和与其编辑距离最小的正确句子构成训练语料对

全语料:错误句子和其每个正确句子分别构成训练语料对

embedding

  1. word2vec中文语法修正版 wang2vec
  2. 使用自训练embedding 或 预训练的embedding+训练更新
  3. 使用embedding mask
  4. ELMO

模型

  1. 基于规则的模型
  2. 基于统计的模型: n-gram 或 rnn 语言模型 + 相似字音表暴力替换 (n-gram + 翻译模型)得到概率 + (信道噪声 + beam search)挑选候选解
  3. encoder-decoder( lstm(单向或双向) 或 CNN ) + attention(一般attention或google的self-attention

划分方式

  1. 纵向划分:用基于统计、基于规则的简单模型解决简单错误,再把经过简单错误处理后的句子输入处理复杂错误的seq2seq模型
  2. 横向划分:不同类型的模型内部自行排列组合并选出每个类别的输出代表(低层组合),再对类别的输出进行组合得到最终输出(高层组合)

组合方式

  • 整句采用型: 对模型分配优先级,选择优先级高的模型的输出结果 用语言模型对句子进行评分,选取困惑度最低的句子 语言模型评分+句子长度作为正则化
  • 构造编辑集: 抽取出在原句上修改的部分,几个模型的修改部分分别构造成几个编辑集 对编辑集求并集,选取编辑距离最小的修改方式 对编辑集求交集 冲突避免:几个模型给出的修改意见不同处太多,意见不统一则放弃修改

原文地址:

https://zedom1.top/2018/09/05/nlpcc_cgec/

PS:文章不容易,点个文末广告卡片表示支持!

每日一题

当在卷积神经网络中加入池化层(pooling layer)时,变换的不变性会被保留,是吗? A、不知道 B、看情况 C、是 D、否

正确答案是:C

解析:

池化算法比如取最大值/取平均值等, 都是输入数据旋转后结果不变, 所以多层叠加后也有这种不变性。

IELTS a bit

namely adv. 也就是

cease [sis]

vi. 停止;终了

vt. 停止;结束

n. 停止

原文发布于微信公众号 - 深度学习自然语言处理(zenRRan)

原文发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习与数据挖掘实战

【今日热门】优秀资源

11020
来自专栏AI科技评论

大会 | CVPR 2018论文解读:真实监控场景中的异常事件检测

AI 科技评论按:本文为上海交通大学林天威为 AI 科技评论撰写的独家稿件,未经许可不得转载。 安防作为近年最热门的计算机视觉研究落地方向,与视频分析研究有着很...

94560
来自专栏AI科技大本营的专栏

一文教会你三维网格物体识别

本文由「图普科技」(微信公众号 tuputech)编译,原作者 Vladimir Tsyshnatiy,链接:https://medium.com/@vtsys...

18930
来自专栏LET

谈谈我对投影的理解

22560
来自专栏大数据挖掘DT机器学习

数据挖掘工程师笔试及答案

2013百度校园招聘数据挖掘工程师 一、简答题(30分) 1、简述数据库操作的步骤(10分) 步骤:建立数据库连接、打开数据库连接、建立数据库命令、运行数据库命...

45880
来自专栏用户2442861的专栏

循环神经网络教程第二部分-用python,numpy,theano实现一个RNN

作者:徐志强 链接:https://zhuanlan.zhihu.com/p/22289383 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,...

24320
来自专栏小鹏的专栏

机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?

首先 Error = Bias + Variance + Noise Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差...

34180
来自专栏机器学习算法与Python学习

长文 | LSTM和循环神经网络基础教程(PDF下载)

目录: 前言 前馈网络回顾 循环网络 时间反向传播BPTT 梯度消失与梯度爆炸 长短期记忆单元(LSTM) 多时间尺度和远距离依赖 门控循环单元GRU LSTM...

550100
来自专栏机器之心

学界 | ImageNet 2017目标定位冠军论文:双路径网络

选自arXiv 作者:Yunpeng Chen等 机器之心编译 参与:蒋思源、Smith 最后一届 ImageNet 挑战赛刚刚落下帷幕,而新加坡国立大学参与的...

29370
来自专栏用户2442861的专栏

卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。  技术交流QQ群:433250724,欢迎对算法、技术感兴趣的同...

24310

扫码关注云+社区

领取腾讯云代金券