中文语法纠错论文解读(一)

NLPTEA-2017 CGED比赛第一名

1.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 CGED比赛第一名
2.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
 

1. 中文语法纠错的动机

学汉语的人越来越多,帮助学生学习,缓解老师压力。

2.  处理的任务

语病识别(识别句子是否有错误)、语病分类(识别具体的错误类型)、语病定位(识别错误的位置)、语病修正(提供修正的建议)。

其中,错误类型有四种,少词,多词,用词错误,词序错误,2018的语法纠错任务相比2017多了语病修正的模块,对于缺词和错词,需提供修正的建议。具体的错误样本数据见下图。

中文语法纠错论文解读(一)_第1张图片

3. 方法

第二篇论文在第一篇论文的基础上做了一些改进

(1)引入一些新的语言学特征(先验知识)

(2)概率集成方法(集成多个Bi-LSTM + CRF模型)

(3)模板匹配用于后处理

前三个任务,检测,识别,定位使用了Bi-LSTM + CRF 序列标注模型同时来做,这里的Bi-LSTM + CRF 是基于字的。模型的整体框架见下图,正确的句子为“锻炼能力”,使用的是BIO标注,B表示错误的开始,I 表示错误的内部,O表示错误的外部,S代表用词错误这一语法错误类别(上图):

中文语法纠错论文解读(一)_第2张图片

BiLSTM+CRF的前向的过程得到发射矩阵,即每个位置对应的的标签的概率。后向过程以及维特比解码过程,更新所有参数包括转移矩阵,bilstm的参数,以及随机初始化的输入特征对应的参数。 2017年阿里的论文中该模型用到的特征见下图:

中文语法纠错论文解读(一)_第3张图片

(1)字嵌入向量 ,随机初始化得到的

(2)二元字向量的组合

(3)词性标注向量 ,由需要标注的这个字所在的词的词性决定 ,同时会标注是这个词的开始B,还是内部I

(4)词性的得分,从大的预料中统计得到 。因为有的词既可以做名词又可以做动词,对于做动词或者名词,其中的你某个可能比较常见,得分就比较高。

(5)所在的词和上一个词,下一个词的PMI互信息得分

(6)依存特征

中文语法纠错论文解读(一)_第4张图片

2018的篇论文多加了三个特征

(7)分词信息,例如这里的加的特征是B-word(动力),表示当前输入的这个词是"动力"这个词的开始。

(8)高斯ePMI, 这个不是特别理解,只知道ePMI 不再是统计相邻单词的互信息,而是计算wi和wj距离为j-i的共现程度,放个论文截图

中文语法纠错论文解读(一)_第5张图片

(9)词语的词性的共现程度?不是很理解,放个论文截图

论文中用的一些集成方法:

2017的论文:因为在模型的训练过程中有权重参数的随机初始化,dropout的随机初始化,数据每个batch的训练顺序,模型训练好后存在差异。

(1)直接merg每个模型的结果。R值上升,P值下降很多。

(2)争对第一中方法做了一些优化,将每个Bi-LSTM+CRF模型得到的后20%的结果删除。提高了P值但是仍然没有超过的单个的模型。

(3)投票,论文中集成了三个模型,得到了最好的F1值。

2018的论文做了一些改进,提出了两种集成策略:

(4)基于概率的集成方法,进行序列标注是对于每个模型的输出,加权求平均。随机初始化一个权重参数。

(5)基于ranking的方法。通过实验发现使用Adam的优化方法的模型比使用SGD的优化方法在recall指标上表现比较好,但是直接merger adam 优化的模型,会使得p值较差。将每个Bi-LSTM+CRF模型得到的前40%结果保存下来。 去掉后20%结果的模型。

2018论文的模型整体架构图:

中文语法纠错论文解读(一)_第6张图片

语病修正(对缺词错误,以及使用不当错误进行纠正):参赛系统采取了端到端的神经网络模型与词汇点互信息相结合,将语病位置空出,根据上下文以及语病信息对于该位置正确的词汇进行推测。

(1)ePMI排序

(2)seq2seq + attention

比如说存在名词错误,把这个位置空出进行decoder(需要用到前面的位置识别的结果吗?),生成正确的?decoder 部分不会引入很多错误嘛? ePMI是产生候选词吗?还有些不太懂的地方。

你可能感兴趣的:(语法纠错)