【论文阅读】Neural Language Correction with Character-Based Attention
作者
Ziang Xie, Anand Avati, Naveen Arivazhagan, Dan Jurafsky, Andrew Y. Ng
Computer Science Department, Stanford University
摘要
针对不同类型的自动纠错分类器已经可以取得比较高的准确度,但是不足以处理冗余与搭配不当这样的错误。鉴于基于短语的翻译模型不是针对拼写错误与否来进行的,所以文章尝试采用神经网络的方式,对语言的自动纠错进行建模。
在英语学习论坛上进行了纠错功能的举例展示;结合语言模型,采用的是n-gram的开源工具kenLM, 在CoNLL 2014 Shared Task 上达到了当前 state-of-the-art F0.5-score的效果;在合成的数据上训练可以显著提升性能。
Attention 用在本文所处理的任务中,看似很合理,输入和输出大部分都是相似的,可以避免预测走偏。
示例
这结果可以啊。
模型架构图
Encode是多层双向的GRU,上层的GRU步长是下层的一半,这样是为了优化计算与减小长度依赖,Decode是多层单向的GRU,encode最上层每一步所产生的向量将作为Attention加到最后一层decode的输出中,如此实现了Attention机制。
Encode Network
每一层的GRU、双向的表示
下一层与上一层的输入
Decode Network
Attention
注:dt与at 拼接后经非线性变换后传入softmax
Loss
Inference解码
与语言模型进行了结合,在第t步时,根据以下的打分进行 beam search(当然只有当t步后面为空格与句尾时才会计算语言模型的打分),这个很直观,但既然是采用深度学习的架构,为什么不直接采用RNN语言模型,而使用n-gram呢?
|y| 正则化表示
理解beam search:在每一步选择字符的时候都扩展选择一定数量的子节点,确保候选的字符串的数量为K个。(之前看维基对beam search的解释是宽度扩展K个,那么最后数量也很大——K^n,不知道哪个是对的)
控制准确率
训练一个分类器判断某一个更正是否是正确的
参考文献
相关文献:(关于文本纠错相关的文献)
[1][Rozovskaya and Roth2010] Alla Rozovskaya and Dan Roth. 2010. Generating confusion sets for contextsensitive error correction. In Proceedings of the 2010 Conference on Empirical Methods in Natural Language (EMNLP).
[2][Han et al.2006] Na-Rae Han, Martin Chodorow, and Claudia Leakcock. 2006. Detecting errors in english article usage by non-native speakers. Natural Language Engineering.
[3][Ng et al.2014] Hwee Tou Ng, Siew Mei Wu, Ted Briscoe, Christian Hadiwinoto, Raymond Hendy
Susanto, and Christopher Bryant. 2014. The CoNLL-2014 shared task on grammatical error correction.
这个文献还很值得一读
[4][Luong et al.2014] Minh-Thang Luong, Ilya Sutskever, Quoc V Le, Oriol Vinyals, and Wojciech Zaremba. 2014. Addressing the rare word problem in neural machine translation. arXiv preprint
arXiv:1410.8206.
这篇文章和[5]的模型架构比较相似,可以阅读一下
[5][Chan et al.2015] William Chan, Navdeep Jaitly, Quoc V Le, and Oriol Vinyals. 2015. Listen, attend
and spell. arXiv preprint arXiv:1508.01211.