分词是什么?Tokenization 怎样把文本映射为模型输入
解释分词器的切分与编号过程,区分子词分词和中文词语理解,用模型切换例子说明词表匹配、特殊标记及计数检查。
先理解这个概念
分词Tokenization把文本转换成模型使用的词元序列,再映射为编号等输入表示。常见方法可以按子词或字节处理,并不等于按人类理解的完整中文词语切开。分词器与模型训练时的词表和规则相关,换模型时不能随意沿用另一套编号;切分能成功,也不代表模型理解了事实内容。
子词切分用于兼顾词表与未知文本
如果为每个完整词都准备一个编号,词表可能很大,遇到新词也难以覆盖。子词方法把不常见的词拆成更小片段,利用已有单位组合。具体怎样切分取决于算法和训练词表,同一个英文词在两套分词器中未必相同。
Hugging Face资料介绍BPE与Unigram等方法,字节级处理又有不同覆盖特点。读者无需先实现这些算法才能调用模型,但应知道分词结果不是天然的语义单位。中文没有空格,也不能因此直接断言每个汉字永远对应一个词元。
更换模型时检查分词器和特殊标记
同一编号在不同词表里可能指向不同内容,因此模型与分词器需要配套。聊天模型还可能依赖角色边界和结束标记。如果只替换权重而保留旧模板,即使程序没有立刻报错,也可能生成重复文本或无法正常结束。
使用官方加载方式获取对应配置,再用短输入核查编码和解码。若处理文件时先做了额外清洗,应记录是否更改空格或符号,避免来源文本被悄悄改写。本文提供检查方法,没有声称测试过某套模型的全部兼容性。
计数与截断要使用实际输入形式
一段文字的原始字符数不能精确决定模型长度。应用拼入角色和资料以后,应按完整格式重新计数。需要截断时,不能随意删去影响事实的限定句;长表格还要防止只剩金额却丢了表头,导致回答张冠李戴。
不同语言和代码格式会改变词元效率,但效率更高不等于任务能力更强。比较模型时,应同时检查相同内容的计数和实际任务结果。分词用于表示输入,事实正确性仍需原始依据,不能从切分整齐就推断回答可靠。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。