NLP学习-Task 3: 子词模型Subword Models

本文介绍了NLP中从单词级、字符级到子词模型的演进,重点探讨了子词模型的两种方法:Byte Pair Encoding(BPE)和SentencePiece模型。BPE通过合并常见子串构建词汇表,而SentencePiece直接处理句子,无需预先分词。这些方法有效解决了未登录词(OOV)问题,提高了模型表现。
摘要由CSDN通过智能技术生成
NLP学习

更新流程↓
Task 1: 简介和词向量Word Vectors
Task 2: 词向量和词义Word Senses
Task 3: 子词模型Subword Models
Task 4: Contextual Word Embeddings
Task 5: 大作业
日本人综艺感从昭和时代开始就这么强了吗?
今日份的舒适
常见餐桌礼仪


子词模型Subword Models




0. 有关语言学(linguistics)的启发

  • 语音学(Phonetics)是一种非常基本的理论,只要是正常人,有着相同的人体器官和相同的发声结构,就会遵循着相同的发声规则和原理。
  • 语音体系(Phonology)是有语义的声音的合集,各国各文明的人都会制定自己的语音体系。
  • 音素(Phoneme)是语音中划分出来的最小的语音单位,分为元音和辅音。

  国际音标(由音素构成)按理来说可以表示所有的语音,但是会发现好多语音是没有语义的,这时我们采取的办法就是看音素的下一级(part of words)。

在这里插入图片描述

unfortunate代表没有语义,需要找下一级

  同样的思想我们可以用在深度学习上,如果我们在做翻译任务(Neural Machine Translation,NMT)时发现一些没有含义的单词(也就是不在词汇库中的单词),我们可以通过找比单词更基本的成分来解决问题。
现实生活中做翻译任务时我们确实需要处理很大的,很开放的词汇(所以上述讨论是有意义的):

  • 非常丰富的词形
  • 音译的单词(例如人名)
  • 非正式的拼写(Gooood=Good,u=you,r=are)

  在之前学习的word2vecGloVe是以单词作为最小基本单位的,这样虽然能够用词向量表示词库中的单词,但是若出现OOV(out-of-vocabulary)词库中没有的单词,而且对于单词的一些词法上的修饰(morphology)处理的也不是很好。
  所以利用比word更小的基本单位来建立模型能更好的解决这些问题。本节思考采用n-gram思想训练Word Vector模型,也就是FastText




1. Word-Level Models(单词级模型)

  以单词最小基本单位的模型,例如word2vecGloVe

  • 优点:能够较为完美地用词向量表示词库中的单词
  • 缺点:会出现OOV(out-of-vocabulary)词库中没有的单词,例如“Gooooood”。且对于一些单词词法上的修饰(morphology)处理不是很好。



2. Character-Level Models(字符级模型)

  以字符Character最小基本单位的模型,通常针对字符级模型有两种处理思路:

  1. 是把原有的词向量分解处理。先生成character-embedding, 然后为OOV生成word-embedding, 即使用character-embedding来组成word-embedding。
  2. 把连接的语言分解成字符。只生成character-embedding,不考虑word级别。

这两种的方法共同的优缺点如下:

  优点

  1. 能够解决 Word-level 所存在的 OOV 问题。
  2. 拼写类似的单词 具有类似的 embedding。

  缺点:

  1. 由于从单词替换成字符导致处理的序列变长,速度变慢。
  2. 由于序列变长,数据变得稀疏,数据之间的联系的距离变大,不利于学习,训练速度降低。

  为了解决以上缺点问题,Jason Lee, Kyunghyun Cho, Thomas Hoffmann于2017年发表了论文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的想法雏形。


3. Subword Models(子词模型)

  这是介于Word-Level和Character-Level之间的Subword models,主要有两种趋势,一种是仍采用和Word-Level相同的结构,只不过采用更小的单元——Word pieces,名为Byte Pair Encoding(BPE);另外一种是采用混合结构,Word和Character都有,名为SentencePiece


 3.1. Byte Pair Encoding

  BPE是一种压缩算法,是一种自下而上的算法。将单词作为单词片段处理(Word pieces),以便于处理未出现单词。在NMT任务中,先将训练集单词划分成片段(利用BPE),然后将片段随机赋值后放到RNNs或CNNs中训练出片段的embedding,再将片段组合得出Word-embedding后,进行NMT工作。这样如果在训练集或者其他情况中,遇到生僻词或者未登录词时,直接利用片段进行组合来进行NMT任务。

  1.首先将统计text中单词,做成词汇表(频率-单词),然后按照unigram进行分解。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值