0%

cs224n-9.子词模型

语言学背景-划分更小单位的词

语音学和音韵学

语音学中将语音看作连续不断变化的声音流,音韵学将语音划分为不同的单位-音位(phoneme),同一个词的读法中音位的不同,对于不同群体理解可能有不同的含义。但是由于发音对于文本的理解并无意义,将此思想借鉴到单词形态分析上,形成了这种(parts of word)的思想

形态学:部分词(part of word)

如何对词进行拆分以更好地理解当前的单词(有点中文里的看半边猜词的味道,英文里去掉前缀后缀看词根)

  • 传统方式是将单词划分为最小语义单位
  • 使用字符级n-grams对单词进行拆分

不同语言词语组成形式各不相同

为什么我们需要小于词语级别的模型

  • 部分语言的单词空间过大

  • 音译

  • 非正式拼写

Character-level Model 字符级别模型

当前字符级别模型主要有两个主要方向

  1. 与词语级别模型相同架构,只是将单位缩小为 “word pieces”
  2. 复合架构,主要采用词语模型,对于特殊情况(未知词)等使用字符级模型

纯字符级别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翻译中的问题以及英语中不同后缀含义不同,使用子词单元嵌入代替词语,利用BPE思想,每次选择词库中出现频率最高的词语对(不一定长度为2),作为新词典中的一个词,不断按照上述方式选择,直到达到词典目标大小。

Wordpiece/Sentencepiece model

google在BPE的基础上形成了两种类型的模型

  1. Wordpiece 单词为整体,以字母为单位,进行划分
  2. 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中所有子词的向量作为词语的向量表示进行嵌入训练

  • 训练完成后,简单求和作为词语的词嵌入形式