Pytorch学习记录-GEC语法纠错01
五月第一周要结束了,接下来的三个月主要是文献阅读,准备8、9月的开题报告,技术类的文献集中在GEC和Text maching的应用方面,读完之后找demo复现,然后应用。
理论方面的论文也都是英文的,国内这块做的真的不行啊……
学习计划
- GEC概念
- Alibaba at IJCNLP-2017 Task 1: Embedding Grammatical Features into LSTMs for Chinese Grammatical Error Diagnosis Task
相关介绍:http://www.sohu.com/a/206342111_473283
NLPTEA-2018 Task1 比赛第一名 - Chinese Grammatical Error Diagnosis using Statistical and Prior Knowledge driven Features with Probabilistic Ensemble Enhancement
相关介绍:http://www.10tiao.com/html/617/201807/2650793125/1.html
英文语法纠错(最近三年)
流利说的两篇文章,用分类方法做语法纠错,不需要平行语料(错误-正确对子对),只做五类错误:主谓一致,名词单复数,介词错误,冠词错误,动词形式错误
- Deep Context Model for Grammatical Error Correction
- A Simple but Effective Classification Model for Grammatical ErrorjiyuCorrection
- Connecting the Dots: Towards Human-Level Grammatical Error Correction
- A Multilayer Convolutional Encoder-Decoder Neural Network for Grammatical Error Correction
- Reaching Human-level Performance in Automatic Grammatical Error Correction: An Empiricale Study
https://blog.csdn.net/Y2c8YpZC15p/article/details/81125500?utm_source=blogxgwz1
混合SMT和NMT
- Near Human-Level Performance in Grammatical Error Correction with Hybrid Machine Translation
基于分类的方法和基于翻译的方法比较: - Grammatical Error Correction: Machine Translation and Classifiers
conll2014 英文语法纠错综述(有各个小组的论文集合): - The CoNLL-2014 Shared Task on Grammatical Error Correction
0. GEC概念
基于这篇文章https://www.zybuluo.com/xixibufu/note/1250559
0.1 GEC的三个阶段
GEC是(Grammatical Error Correction)的简写,整体包括三个阶段:
- 基于规则
没什么好说的,就是上规则,有些古老但是很有用。 - 数据驱动的传统机器学习
在数据驱动的方法成为GEC的主流后,人们利用机器学习技术(SVM、朴素贝叶斯),为不同错误类别设计单独的分类器。
这类方法对冠词、介词等错误的纠正效果十分明显,但也存在一些问题。
其仅利用了句子中局部的上下文信息、且只能独立地考虑不同的错误类别,对于一些交互式错误则无能为力。 - 基于机器翻译
到目前为止经历两个阶段,SMT(基于统计机器翻译)和NMT(神经机器翻译),原理很简单,使用类似机器翻译的方式,将有语法问题的“坏”句子翻译成“好”句子。- CoNLL2014剑桥大学基于统计机器翻译SMT
- 基于SMT增加ReRank,通过提取语言学特征对候选句子进行重排序
- NMT成为新的主流
0.2 结合NMT输出的GEC系统
- encoder-decoder模型
基于NMT自然还是要使用基于encoder-decoder模型的Seq2Seq。资料里面还是使用RNN作为核心网络。- 用一个神经网络(encoder)将输入句子F编码成一个固定长度的向量
- 用另一个神经网络(decoder)基于该向量进行解码,输出纠正后的句子
- attention机制
加入attention机制后,可以解决RNN对长距离依赖的不敏感和“输入的表示”(就是第5个模型中的压紧处理)
输入的表示问题相比于长距离依赖问题更加严重。想象有两个输入句子,第一个仅包含3个单词,第二个包含100个单词,而encoder居然无差别地将它们都编码成相同长度的向量(比如说50维)。这一做法显然存在问题,长度为100的句子中很多信息可能被忽略了。
0.3 重排序ReRank
就是在得到结果后进行一个重排序处理,beam search进行解码,保留得分最高的前K个候选句子,在解码得分的基础上引入若干特征,对这K个候选句子重新排序。