语言学背景-划分更小单位的词
语音学和音韵学
语音学中将语音看作连续不断变化的声音流,音韵学将语音划分为不同的单位-音位(phoneme),同一个词的读法中音位的不同,对于不同群体理解可能有不同的含义。但是由于发音对于文本的理解并无意义,将此思想借鉴到单词形态分析上,形成了这种(parts of word)的思想
形态学:部分词(part of word)
如何对词进行拆分以更好地理解当前的单词(有点中文里的看半边猜词的味道,英文里去掉前缀后缀看词根)
- 传统方式是将单词划分为最小语义单位
- 使用字符级n-grams对单词进行拆分
不同语言词语组成形式各不相同
为什么我们需要小于词语级别的模型
部分语言的单词空间过大
音译
非正式拼写
Character-level Model 字符级别模型
当前字符级别模型主要有两个主要方向
- 与词语级别模型相同架构,只是将单位缩小为 “word pieces”
- 复合架构,主要采用词语模型,对于特殊情况(未知词)等使用字符级模型
纯字符级别NMT模型
English-Czech WMT 2015 Results
Fully Character-Level Neural Machine Translation without Explicit Segmentation
Stronger character results with depth in LSTM seq2seq model
模型较小使用word-level,较大使用character-level
Byte Pair Encoding
源于一种字符压缩算法,将共同出现频率较高的两个压缩成字典中不存在的新字符。
为了解决NMT翻译中的
Wordpiece/Sentencepiece model
google在BPE的基础上形成了两种类型的模型
- Wordpiece 单词为整体,以字母为单位,进行划分
- Sentencepiece 句子为整体,以单词为单位,进行划分(有点意群的味道)
bert使用了一种变种wordpiece模型
Character level to build Word level
对字符卷积获得词嵌入向量
Character level based LSTM to build word repesetation
不使用卷积,使用bi-LSTM输入字符,输出词语嵌入
Hybrid NMT
将两种划分方式区分开
- 主要使用词语层级的划分
- 使用字符划分作为补充
Fast-Test Embedding
基于character-level 和 word2vec,改善word2vec获得的词向量对于词典外词语(oov)以及词语的各种变形不适应的情况。
将单词拆成字符级别的n-gram表示
使用n-grams中所有子词的向量作为词语的向量表示进行嵌入训练
训练完成后,简单求和作为词语的词嵌入形式