文章是2019年AAAI录用的。
介绍
不规范文本在现实中是大量存在的,尤其是在社交媒体上产生了大量的非标准语言表达内容。不规范文本的类型大致分为:
1、误拼写。例如 defenitely-definitely
2、语音替换 例如 2morrow-tomorrwo
3、缩短 例如 convo-conversation
4、首字母缩略词 convo-conversation
5、 俚语 例如low key 字面意思是 低钥匙,但实际没人这么说,真正意思是 不起眼的、低调
6、 重点强调 对某些词,全部大写,或者元音伸长 例如 cooooool-cool
7、标点符号问题。比如 doesnt-doesn't
文本规范比拼写纠错要难。早期文本规范依赖基于统计模型的Pipeline方式,比如字符串相似度匹配、拼写检查、词典等。然而语言空间的高维特性(词可以构成任意文本序列)导致了这种方法效率低。
近年来的工作主要集中在候选词产生和排序上。但是当前工作大多忽略了序列中的上下文信息,
需要人工额外地定义什么是对的候选词。
受到神经机器翻译的启发,本文提出一种端到端的模型来解决以上问题。为了解决NLP领域常见的OOV问题,提出一种混合的端到端模型,考虑了上下文信息。
本文模型包括2个编码-解码模型。第一个是基于词的seq2seq模型,用于将词典里没有的词进行转化。然后利用第二个基于字符的seq2seq模型。
基于词的seq2seq主模型
给定一个未被规范化的序列,X=[],模型最终输出的是Y={}。
编码模型将序列X转化为隐藏状态,采用双向编码模型。最后的隐藏状态是两个方向的隐藏状态拼接而成。解码模型根据前一个状态、注意力向量、前一个词进行解码。损失函数为对数损失函数。
基于字符的二级编码-解码模型来处理不认识的词
在文本规范化任务中,一个词因为拼写错误、键盘多敲了几次,都会变成一个训练集中没有的词。有三种方法可以解决这个问题。1、复制原词;2、依赖完全基于字符信息训练的模型;3、设计基于词和字符的混合模型。
复制原词这种方法很容易想到,但是导致模型的覆盖范围会下降。另一个方式是提前学习子词的表达方式,BPE编码这时候排上用场。例如,showed可以被划分为show,ed。然而BPE依赖于共现程度和字符的顺序,在我们的场景中这是高噪音的。
基于字符的模型避免了词典不足的瓶颈,也不需要提前处理,但是计算代价高,同时也收到数据稀疏性的影响。CHUNG[2016]、BELINKOW[2017]证明很难处理打字过程产生的拼写小错误和噪音。
混合模型 由于有限的训练语料和非标准词的长尾性,只用来训练OOV的词,效率不高。因此,对于在词典里的词,我们用词级别的模型,对于OOV的词,我们用字符级别的编码-解码模型,这里用的训练语料为词对,而非长文本序列。
对抗训练增强噪音文本的鲁棒性
利用合成的样本进行数据增强。对于所有的<源,目标>推特评论对,保持词不变。在训练过程中,加入用6种常见错误方式形成的噪音数据。
实验
采用的是LexNorm数据集、包含4917推特评论。基线模型为基于词典的,注意力机制的词级别编码-解码模型等几个模型。优化器为Adam,取得F1值为83.94。