对于英文来说,文字的粒度从细到粗依次是character, subword, word,character和word都很好理解,分别是字母和单词。而subword相当于英文中的词根、前缀、后缀等,如unfortunately中的un、ly、fortun(e)等就是subword,它们都是有含义的。

之前介绍的模型都是基于词向量的, 那么能不能换一个角度来表示语言。说英文的时候, 每个单词都是由音节构成的, 而人们听到了连续的音节就可以理解其中的含义, 而音节显然比词粒度更细。

首先,来梳理下word-level存在的几个问题: 1. 需要系统需要极大的词汇量; 2. 如果遇到了不正式的拼写, 系统很难进行处理; 3. 做翻译问题时, 音译姓名比较难做到。

为了解决这些问题, 一开始想到的是采用character级别的模型,即对26个字母训练word2vec,每个词由其字母的embedding拼接或者求平均得到。但这种方法梯度消失(爆炸)的问题也会更严重。

后来,人们就想用subword模型作为character和word的折中模型。subword模型主要有两种,它们都能解决未登录词(OOV)的问题。第一种是模型结构和word模型完全一样,只不过把word换成了subword。第二种则是word和character模型的杂交模型。

内容中包含的图片若涉及版权问题,请及时与我们联系删除