tokenizers学习笔记

一、基于字母的分词方法

  • 将每个字符看作一个词。
  • 优点: 不用担心未知词汇,可以为每一个单词生成词嵌入向量表示。
  • 缺点: 由于字母缺乏内在含义,所以得到的词嵌入向量也缺乏含义。计算复杂度提升,字符(单个汉字)的数目大于token(词)的数目。输出序列的长度将变大,对于Bert、CNN等限制最大长度的模型将很容易达到最大值。

二、基于子词的分词方法(Subword Tokenization)

为了改进分词方法,在UNK数目和词向量含义丰富性之间达到平衡,提出了Subword Tokenization方法。这种方法的目的是通过一个有限的单词列表来解决所有单词的分词问题,同时将结果中token的数目降到最低。例如,可以用更小的词片段来组成更大的词:“unfortunately” = “un” + “for” + “tun” + “ate” + “ly”。
接下来介绍几种不同的Subword Tokenization方法。

(一)Byte Pair Encoding (BPE) 字节对编码

  • 实现流程

  • 根据语料库建立一个词典,词典中仅包含单个字符,如英文中就是a-z。
  • 统计语料库中出现次数最多的字符对(词典中两项的组合),然后将字符对加入到词典中。
  • 重复上一步骤直到到达规定的步骤数目或者词典尺寸缩小到了指定的值。

你可能感兴趣的:(机器学习,tokenization,tokenizers,分词,NLP)