1. token
2. embedding
1.token
token:词元/令牌/词 tokenization:分词 tokenizer:分词器
token是最小语义单元,通常可以是,一个字母、一个词、一个数字、一个汉字或任何其他有意义的字符组合,取决于文本处理的需求和方法。
tokenization将输入文本分成一个个词元,保证各个token拥有相对完整和独立的语义
tokenization算法经历了从word/char到subword的进化 word,char,subword
目前主流subword分词算法:
(1)BPE(Byte Pair Encoding)(2)WordPiece(3)Unigram Language Model/ULM(4)SentencePiece
例:
(1)word:“apple”:[‘a’, ‘p’, ‘p’, ‘le’],4个token
(2)char:“The quick brown fox ”:[‘The’, ‘quick’, ‘brown’, ‘fox’],4个token
(3)subword:“unbelievable”:[‘un’, ‘##believ’, ‘##able’],3个token子词分割方便未知词汇学习
(4)“人工智能正在改变世界”:[‘人工’, ‘智能’, ‘正在’, ‘改变’, ‘世界’],5个token
(5)“山明水秀,景色宜人” :[‘山明水秀’, ‘,’, ‘景色’, ‘宜人’],4个token,包含标点符号
word,char,subword比较:
word:
优点:词边界和含义得到保留
缺点:
1) 词表大,稀有词学不好:
词粒度词表的长尾效应,包含较多稀有词,存储和训练成本很高,且稀有词往往难学
2) OOV问题
词表之外无能为力 out of vocabulary
3) 无法处理单词的形态关系和词缀关系:
如英语过去时,复数之间当做完全不同词,无法捕捉单词之间关系和词缀
char:
优点:词表极小
缺点:
1)无法承载丰富的语义
2)序列长度增长,计算成本增加
subword:
优点:1)可以较好的平衡词表大小和语义表达能力
粒度介于word和char之间:长用词保持原状,生僻词拆分成子词以共享token压缩空间,可以较好的平衡词表大小和语义表达能力
LLM的tokenizer和对应的词汇表大小:
2.embedding
embedding:稀疏编码向量转换为稠密embedding编码向量,可单独训练,也可直接embedding层和语言模型层共同训练。
句子的embedding的嵌入,即进行浅层语义特征的提取,具有相似语义的单词在向量空间中的距离较近。在大规模文本语料库上进行训练得到,其中包括了丰富的语义和语法信息。
常用方法:word2vec
embedding矩阵的本质就是一个查找表。由于输入向量是one-hot的,embedding矩阵中有且仅有一行被激活。行间互不干扰。
tokenization和embedding步骤:
1.分词
2.扩展词汇表
3.识别并处理特殊token
4.编码成数字序列,如one-hot编码
5.embedding