tokenizer
·
大模型本质上做的是数学运算,它并不能直接理解人类输入的文本、符号或代码,只能处理数字表示;分词器正是负责把这些输入转换成词元(token)及其编号的关键模块。
注:个人认为词元这个翻译比较好听
1. 概念简述
为了直观地理解,我们以中文为例,选择最基础的“按字分词”的策略,看看分词器如何工作。
面对一段中文文本(例如:我爱中国),分词器按照指定规则(此处为按字切分)将文本拆解成独立的元素,即词元(token),切分后的 tokens:["我", "爱", "中", "国"]。
仅仅分词是不够的,还需要将 token 转化为数字。分词器内部有一个预定义的词表,它记录了已知所有词元及其对应的唯一编号,(假设在词表中,“我”=105, “爱”=321, “中”=56, “国”=89),则转换后的编号(Token IDs)为 [105, 321, 56, 89]。
至此原文本变成了可计算的数字序列。
总结:分词器的目的就是将原文本按照某种给定规则划分成词元,得到词元编号序列。
2. 经典做法
上述例子只是开胃菜,要想自己训一个大模型(小的大模型),还是需要了解一些业界的分词器的,下面将从代码实现角度讲解。
2.1 BPE(Byte Pair Encoding)
paper:http://www.pennelynn.com/Documents/CUJ/HTML/94HTML/19940045.HTM