训练分词器

训练数据是两段内置文本的混合:为本页写的几页日常英语文章,以及它的中文译文。下面会展示完整原文。

50% English
100

显示训练文本

英文

中文

在GitHub上查看原始源码

比较一句话

工作原理

分词器一开始把每个UTF-8字节都当作独立词元:一共256种可能的词元,每个字节值对应一个。训练过程反复检查内置语料,找出最常相邻出现的两个词元,把它们合并成一个新词元。每次合并都会让语料稍微变短,词表则增加一个词元。这样重复几十次甚至几百次,常见的模式——比如英语里的“the”或“ing”——就会变成一个词元,而不再是好几个字节。

哪些模式会被合并,完全取决于训练文本。只用英语训练出来的分词器,学到的合并方式也是英语形状的,对中文句子几乎没有用,因为这两种语言几乎不共享字节模式——这正是语料混合滑块控制的内容:训练文本里英语和中文各占多少。

常见汉字在UTF-8里每个占3字节,而常见英语字母只占1字节。把语料混合调向中文,再加一些合并次数,中文句子就会像英语句子一样,词元数开始变少;反过来把它调向英语,中文就会一直停留在接近每字符3个词元,而英语则持续缩短。单独看不是合法UTF-8的词元——比如3字节汉字中的1个字节——会显示为十六进制字节,而不是一个破损的字符,因为浏览器没有“三分之一个字符”对应的字形。

这只是一个用几页文本训练出来的玩具分词器,不是真正的生产环境分词器——它只是为了展示这种效应的大致形状,并不追求和任何具体模型的数字一致。