2018 NLPCC Chinese Grammatical Error Correction 论文小结

简介: 这一段时间,笔者一直在研究语音识别后的文本纠错,而就在八月26-30日,CCF的自然语言处理和中文计算会议召开了,笔者也从师兄那里拿到了新鲜出炉的会议论文集,其中重点看的自然是其shared task2:grammatical error correction的overview以及优胜团队的论文。
这一段时间,笔者一直在研究语音识别后的文本纠错,而就在八月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支提交了最终结果,最终分数如下:

8447e594883d83b5faf2772272e8f5fc542f9f21



在论文集中,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语言模型对纠正后句子进行困惑度分析,选择困惑度最低的句子。

70efdc65445c151157bcfd007a95c60fccd17f15



输入处理


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


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


模型分层


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


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


41907eabf0daa059e7a569b6197c64475cd56c09



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


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


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


c5960d185f33d79a6a763a6c128ac6ce517fb682



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

3c29450efa24ed0130ef1a50eb1affcbb3f95701




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


2. Chinese Grammatical Error Correction Using Statistical and Neural Models

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

0f968f3e92b41ebf114d48fb77616aa664318d53




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


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


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


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


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

e078bb6f316ae2338e8a600cfa0170ac5edb6f9d




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

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


  1. 为模型分配优先级,当冲突发生时选择优先级高的模型的结果

  2. 将冲突句子对原句所做的更改做并集,选择可以最小化编辑距离的修改方式

  3. 对修改集做交集

  4. 用语言模型对修改后的句子进行评分,选择分数高的

  5. 用语言模型评分,并把句子长度作为正则化参数 (分数 / 句子长度)


组合分类:

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

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


组合方式:

  • 低层组合:模型两两组合,并排列组合使用解决方案,使用验证集分数最高的方案

  • 高层组合:

    1. 将冲突解决方案扩展成对三个模型的

    2. 加入保护机制,当三种模型的冲突太多时则不对句子做修改

  1. 9657d41b2ba3d4800c5956ee622e9e0b98857e9d





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/


原文发布时间为:2018-09-11

原文作者:Zedom

本文来自云栖社区合作伙伴“ 深度学习自然语言处理”,了解相关信息可以关注“ 深度学习自然语言处理”。

相关文章
|
机器学习/深度学习 数据采集 人工智能
探索AI技术在文本生成中的应用与挑战
【9月更文挑战第26天】本文深入探讨了AI技术在文本生成领域的应用,并分析了其面临的挑战。通过介绍AI文本生成的基本原理、应用场景以及未来发展趋势,帮助读者全面了解该技术的潜力和局限性。同时,文章还提供了代码示例,展示了如何使用Python和相关库实现简单的文本生成模型。
916 9
|
安全 网络安全 网络虚拟化
网络工程师必须搞清楚MPLS与专线的区别
基干MPLS的VPN解决方案可以方便地实施流量控制,保证OoS,同时具有很强的扩展性和管理性,且能够提供与传统ATM或帧中继V.PN相类似的安全保证,在企业VPN组网中具有明显优势。
1236 2
|
物联网 Java Linux
一文读懂物联网 MQTT 协议之实战篇
一文读懂物联网 MQTT 协议之实战篇
909 1
|
6月前
|
人工智能 自然语言处理 机器人
2026年阿里云无影云电脑部署Openclaw (Clawdbot) +配置百炼Coding Plan教程
在智能办公场景不断深化的当下,OpenClaw(前身为Moltbot、Clawdbot)作为一款低门槛AI自动化代理工具,凭借自然语言指令执行、多工具协同、零编程基础适配等核心优势,成为个人与轻量团队提升办公效率的利器。其区别于普通AI助手的核心价值,在于能够直接落地实操任务,无论是文件处理、任务提醒、多平台协同,还是自动化工作流搭建,都能通过简单对话指令完成,无需用户掌握专业技术技能。
1461 10
|
10月前
|
人工智能 自然语言处理 前端开发
构建AI智能体:六、体验Trae指定Qwen-Turbo模型自动生成问答系统
本文介绍如何使用字节跳动的AI编程工具Trae与阿里通义千问Qwen-Turbo模型,快速生成一个智能问答系统。通过图文结合方式,演示从环境搭建、指令生成到界面优化的全过程,涵盖前后端代码自动生成、模型调用封装及交互优化技巧,展现AI辅助开发的高效与趣味,助力开发者提升生产力。
2098 12
|
存储 缓存 人工智能
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
Tair KVCache 是阿里云推出的面向大语言模型推理场景的缓存加速服务,基于分布式内存池化和分级缓存体系,解决显存墙与带宽瓶颈问题。为万亿参数模型的高效推理提供技术保障,推动 AI 算力进化与规模化应用。
|
安全 网络安全 网络架构
解释子网为零和全一子网:概念、原理与应用
解释子网为零和全一子网:概念、原理与应用
655 1
|
存储 SQL NoSQL
案例实践:某券商从 Neo4j 迁移至悦数图数据库
许多国内企业在早期使用 Neo4j 作为图相关业务场景的探索基础设施。然而,随着业务发展和环境变化,原有的图数据库已经逐渐无法满足不断发展的特定业务场景需求。如何将 Neo4j 迁移到一款兼具良好扩展性、性能、专业服务能力的图产品,已成为业界普遍关心的问题。本文将为您呈现华东某大型券商从 Neo4j 迁移至悦数图数据库的选型、迁移和提升能力的完整历程,供广大企业参考。
案例实践:某券商从 Neo4j 迁移至悦数图数据库
|
移动开发 小程序 iOS开发
uniapp组件库fullScreen 压窗屏的适用方法
uniapp组件库fullScreen 压窗屏的适用方法
1290 1