Subword

来自智得网
跳转至: 导航、​ 搜索

简介

Subword-base和词表字符表对比

在自然语言处理(NLP)中词表是其中的基本要素,词表是分词的基础,而分词是自然语言处理最基础的组件之一。词表的精度影响自然语言的处理的准确性。

构造词表的传统方法是基于统计学的,先对训练集中的句子进行分词,然后再统计并选出频数最高的前N个词组成词表。

出于计算效率等因素的考量,通常情况词表不能涵盖训练集中所有的词汇。

基于词表的训练(word-level)存在以下的问题:

  • 在英语等表音文字中,同一个单词有多种形态,例如"look"衍生出来的词汇"looks","looking","looked"具有相近的意思,但是在词表中这些词会被当作不同的词处理,既增加了训练冗余,这些单词的语义也不能正确关联。即使在中文中,也存在这种词汇变形的问题。
  • 低频词/稀疏词在模型训练过程中无法得到充分训练,还有部分词汇在词表中缺失而引发OOV(Out Of Vocabulary)问题。

解决OOV问题的一种思路是用字符来表达词表(character-level),但单词被拆分成字符后,既丢失了词的语义信息,又使得模型输入变长,模型训练更加复杂难以收敛。

word-level模型会导致OOV,而character-level模型粒度又太细,就产生了subword-level的处理方式。

subword将单词分割为更小单元,这些单元通常可以在其他词汇中复用,未知词汇能以subword组合的形式表示出来,也能提升词典的表达能力。

实现

Subword的实现通常用BPE,WordPiece,Unigram Language Model等三种。

Byte Pair Encoding

Byte Pair Encoding简称BPE,属于压缩算法中一种,其主要思想就是将经常出现的byte pair用一个新的byte来代替,例如假设 ('A', ’B‘)经常顺序出现,则用一个新的标志'AB'来代替它们。

WordPiece

wordpiece思路基本与Byte Pair Encoding类似,唯一的不同就是在进行合并tokens对的时候不是使用max frequency,而是使用概率来确定合并哪两个tokens对,取score最大的tokens对进行合并,这么做也很直观,类似于词袋模型中的tfidf。

Unigram Language Model

这是一种基于语言模型的tokenization方式,不同于BPE或者WordPiece,该方法不是从基础字符开始然后通过一定的规则进行合并,这种方法通过一个很大的词典开始,然后渐进的缩减词典规模。