NLP小白学习路线(3)——Subword Models

上一篇我们基于窗口的共现矩阵的方法,引入GloVe,并介绍了内部和外部词向量评估机制。
这一篇将介绍Subword Models 模型

之前介绍的 word2vec 和 glove模型都是基于word单词作为基本单位的,这种方式虽然能够很好的对词库中每一个词进行向量表示,然而会出现冷启动的问题。也就是单词不存在于词汇库中的情况OOV(out-of-vocabulary)。并且对于单词的变换,比如副词,加-ed,-ing这种单词的变形(morphology)处理的也不好。

出于这个目的我们引入word vector 模型,采用 n-gram 思想训练 word vector 模型,也就是 FastText,一个比word单位更小的字母作为基本单位的模型。

Character-Level Model

Word embedding可以由character embedding构成,解决如下几个问题

  1. 为没有出现在语料库的未知单词生成向量
  2. 相似的单词拼写有相似的向量
  3. 解决OOV问题
  4. 连接型的词缀也能作为characters被处理

相较于单词,其输入的序列更长了,使得数据更稀疏更难学习,训练速度也会降低。

利用了多层的convolution, pooling与highway layer来解决这一问题,其中encoder的结构如下图所示:

在这里插入图片描述
大致思想如下:
1.输入的字符被映射到Character embedding

2.采用 不同窗口大小的卷积核对输入字符的 character embeddings 表示进行卷积操作,论文中采用的窗口的大小分别为 3、4、5 ,也就是说学习 Character-level 的 3-gram、4-gram、5-gram

3.对不同卷积层的卷积结果进行 max-pooling 操作,即捕获其最显著特征生成 segment embedding

4.segment embedding 经过 Highway Network输出结果 再经过 单层 BiGRU,得到最终 的 encoder output

5.decoder再利用Attention机制以及character level GRU进行decode

subword mode

流行的subword mode有两种形式,第一种和word-level 模型一样,最小单位使用单词
另外一种是住主模型用words,其他的用characters

Byte Pair Encoding(BPE)
BPE 其主要思想就是将经常出现的byte pair用一个新的byte来代替, 例如假设(‘l’, ’y‘)经常顺序出现,则用一个新的标志’ly’来代替它们。

首先,初始词汇库仅包含所有的单个的字符,然后不断的将出现频率最高的n-gram pair作为新的ngram加入到词汇库中,直到词汇库的大小达到我们所设定的目标为止。举个例子:
假设我们的文本出现的单词个数分别为
‘l o w’: 5,
‘l o w e r’: 2
‘n e w e s t’: 6
‘w i d e s t’: 3
词库为:{ ‘l’, ‘o’, ‘w’, ‘e’, ‘r’, ‘n’, ‘w’, ‘s’, ‘t’, ‘i’, ‘d’}, 我们可以看到出现频率最高的ngram pair是(‘e’,‘s’) 有9次,我们把他加入到词库中{ ‘l’, ‘o’, ‘w’, ‘e’, ‘r’, ‘n’, ‘w’, ‘s’, ‘t’, ‘i’, ‘d’,‘es’}
在这里插入图片描述
后面是出现频率最高的ngram pair是(‘es’,‘t’) 也有9次,词库变为{ ‘l’, ‘o’, ‘w’, ‘e’, ‘r’, ‘n’, ‘w’, ‘s’, ‘t’, ‘i’, ‘d’,‘es’,‘est’}
以此类推,直到词汇库大小达到我们所设定的目标。我们就可以通过BPE逐步建造一个较小的基于subword unit的词汇库

Wordpiece/Sentencepiece model
没看太仔细后面补坑,据说BERT 使用了 wordpiece 模型的一个变体

FastText

FastText利用subword将word2vec扩充,遇到OOV的情况采用character level模型,有效的构建embedding。用子单词信息丰富单词信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值