tokenizer的切分粒度

在给模型输入文本之前,首先对文本进行tokenize,然后转化为ID,再输入到模型之中。
分词的目的是将输入文本分成一个个词元,保证各个词元拥有相对完整和独立的语义,便于学习embedding表达和后续模型的使用。分词的难点在于如何获得理想的切分,使文本中所有的token都具有正确的表义,并且不会存在遗漏。
tokenizer目前有三种切分粒度:word/character/subword。

1. word

最常见的基于词级的分词是英文根据空格分词。
优点:词的边界和含义得到保留。
缺点:①词表过大,包含很多稀有词,存储和训练成本高,稀有词难以学好;②词表不能覆盖所有的词,容易出现OOV现象;③无法处理单词的形态关系和词缀关系:同一个词的不同形态,语义相近,完全当做不同的单词不仅增加了训练成本,而且无法很好的捕捉这些单词之间的关系;同时,也无法学习词缀在不同单词之间的泛化。(单词的相似性问题)

2. character

基于字符的分词是将文本拆分成字符。
例如,“I am a lucky boy”,会拆分成“I a m a l u c k y b o y”。
优点:词表小
缺点:①分词粒度细,每个字符无法承载丰富的语义信息;② 序列长度长,计算成本高。

3. subword

基于字词的分词是指常用词应该保持原状,稀有词拆分成有意义的子词以共享token压缩空间。
优点:较好的平衡词表大小与语义独立性。
缺点:需要学习拆分的规则。

Reference

  • https://youtu.be/nhJxYji1aho
  • https://youtu.be/ssLq_EK2jLE
  • https://youtu.be/zHvTiHr506c

你可能感兴趣的:(语言模型,中文分词,自然语言处理)