cs224n学习笔记--Subword Models

Subword Models

基于词级的模型(word-level Model)

使用基于单词的模型时需要处理规模庞大的词汇表,例如Word2Vec,是利用word embedding的方法来得到每一个word的vec,这种方法需要去处理规模庞大的词汇表。这种方式虽然效果不错,但是对于单词而言,只要稍微做些改变就是另一个单词了。造成的后果:

  • OOV(out-of-vocabulary)出现单词不存在于词汇库中的情况。解决方法:最佳语料规模,使系统能够获得更多的词汇量;
  • 拼写错误。解决方法:矫正或加规则约束;
  • 对名字和地名的音译。

字符级语言模型(Character-Level Model)

基于 Character 作为基本单位的,这种方式能够很好的对字库中每一个 Char 进行向量表示。对比word embedding,character embedding有以下几个优点:

  • 解决基于词级模型的OOV 问题
  • 为不存在的词生成embedding,拼写相似的单词具有相似的 embedding

存在问题:

  1. 序列变长:相比于 词级(word-level ), 字符级(Character-level) 的输入句子变长,使得数据变得稀疏,而且对于远距离的依赖难以学到,训练速度降低;
    解决办法:Jason Lee等人提出(Fully Character-Level Neural Machine Translation without Explicit Segmentation 原文点此)利用多层 conv 和 pooling 和 highway layer 的方式来解决该问题在这里插入图片描述
    该论文思路如下:
    1.输入的字符首先需要经过 Character embedding 层,并被转化为 character embeddings 表示;
    2.采用 不同窗口大小的卷积核对输入字符的 character embeddings 表示进行卷积操作,论文中采用的窗口的大小分别为 3、4、5 ,也就是说学习 Character-level 的 3-gram、4-gram、5-gram;
    3.对不同卷积层的卷积结果进行 max-pooling 操作,即捕获其最显著特征生成 segment embedding;
    4.segment embedding 经过 Highway Network (有些类似于Residual network,方便深层网络中信息的流通,不过加入了一些控制信息流量的gate);
    5…输出结果 再经过 单层 BiGRU,得到最终 的 encoder output;
    6.之后,decoder再利用Attention机制以及character level GRU进行decode。
    通过这种方式不仅能够解决 Word-level 所存在的 OOV 问题,而且能够捕获 句子的 3-gram、4-gram、5-gram 信息,这个也是 后期 FastText 的想法雏形;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值