NLP中的subword算法及实现

记录一下找到的写的比较好的博客

1.word、subword和character
在神经机器翻译中,通常有一个固定的词表,并且模型的训练和预测都非常依赖这个词表。在神经网络的训练过程中,需要对词表中每个词做向量表,每个词对应不同的向量,即embedding的过程。每个不同的词对应不同的向量,即使两个词看起来十分相近,但在训练过程词向量没有任何关系。这就导致一个单词因为拥有不同的形态产生不同的词,从而产生大词汇量的问题。

机器翻译的词表是定长的,但是需要实际翻译的词汇是开放的(out of vocabulary)。以前的做法是新词汇添加到词典中,但是过大的词典会带来两个问题:

稀疏问题: 某些词汇出现的频率很低,得不到充分的训练
计算量问题: 词典过大,也就意味着embedding过程的计算量会变大
同时,这种word-level的处理方式并不能通过增大词表真正解决OOV的问题,因为再大的词典不能真正覆盖所有的词汇。

为了处理这个问题,一个思路是将字符当做基本单元,建立character-level模型。character-level模型试图使用26个字母加上一些符号去表示所有的词汇,相比于word-level模型,这种处理方式的粒度变小,其输入长度变长,使得数据更加稀疏并且难以学习长远程的依赖关系。类似的工作可参考Character-Level Neural Machine Translation,实验结论是基于字符的模型能更好处理OOV问题,并且能更好学习多语言之间通用的语素。

word-level模型导致严重的OOV,而character-level模型粒度又太小,那么subword-level的处理方式就应运而生。subword将单词划分为更小的单元,比如"older"划分为"old" 和 “er”,而这些单元往往能应用到别的词汇当中。举个例子:

训练集的词汇: old older oldest smart smarter smartest
word-level 词典: old older oldest smart smarter smartest 长度为6
subword-level 词典: old smart er est 长度为4

将词划分成字词的形式,能够大大降低词典的大小。同时,未知词汇能以subword组合的形式表示出来,也能提升词典的表达能力。

  1. 3种subword算法
    如何将词分解成subword,依据不同的策略,产生了几种主流的方法: Byte Pair Encoding (BPE)、wordpiece 和 Unigram Language Model。值得一提的是,这几种算法的处理流程跟语言学没有太大的关系,单纯是统计学的解决思路。

https://zhuanlan.zhihu.com/p/112444056

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自然语言处理,有许多常用的算法。以下是一些常见的算法: 1. 词袋模型(Bag-of-Words,简称BoW):将文本表示为一个词汇表每个词在文档的出现次数或频率向量。 2. TF-IDF:Term Frequency-Inverse Document Frequency 是一种用于衡量一个词在文档的重要性的指标,它结合了词频和逆文档频率。 3. N-gram 模型:N-gram 是一种用于预测下一个词或字符的模型,它考虑了前面的 N-1 个词或字符的上下文信息。 4. Word2Vec:Word2Vec 是一种基于神经网络的词嵌入模型,它将词语映射到一个低维向量空间,使得具有相似上下文信息的词在向量空间距离较近。 5. 递归神经网络(Recursive Neural Network,简称RNN):RNN 是一种具有循环连接的神经网络,可以处理序列数据,如文本。它可以捕捉上下文信息,并在处理长序列时具有记忆能力。 6. 长短期记忆网络(Long Short-Term Memory,简称LSTM):LSTM 是一种特殊类型的 RNN,通过引入记忆单元和门控机制来解决长期依赖问题。 7. 卷积神经网络(Convolutional Neural Network,简称CNN):CNN 在自然语言处理常用于文本分类和序列标注任务,通过卷积操作来提取句子或文本的局部特征。 8. 注意力机制(Attention Mechanism):注意力机制可以使模型在处理序列数据时关注到更重要的部分,提高模型的性能,如 Transformer 模型的自注意力机制。 这些算法只是自然语言处理领域的一部分,并且还有许多其他的算法和模型可供使用。具体选择哪种算法取决于任务的需求和数据的特点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值