在中文中,BPE 处理生僻词的原理与英语类似,但由于中文的语言特性(没有类似英文的字母表,基本单位是汉字),具体实现方式有所不同,核心仍是通过子词拆分基础单元复用来处理未登录词,具体机制如下:

1. 中文 BPE 的初始单元:汉字而非字母

英文 BPE 的初始单元是 26 个字母,而中文 BPE 的初始单元通常是单个汉字(或更基础的 Unicode 字符)。
例如,初始词汇表会包含训练数据中出现过的所有汉字(如 “的”“中”“国” 等),以及一些基础符号。
当遇到生僻词(如 “𪚥”“𫛳” 等)时,即使整个词未在训练数据中出现,其包含的单个汉字大概率已在初始词汇表中(除非是极端罕见的字符)。

2. 生僻词的拆分逻辑:从汉字到子词片段

中文生僻词通常由多个汉字组成(如 “瞐”“麤” 这类复杂单字较少见,多数生僻词是复合词,如 “犇羴鱻”),BPE 会按以下逻辑处理:

  • 若生僻词由已知汉字组成:直接拆分为单个汉字(或已合并的高频子词)。
    例如,生僻词 “玊尔”(“玊” 是生僻字,意为 “有瑕疵的玉”),若 “玊” 和 “尔” 在初始词汇表中,会被拆分为 “玊”+“尔” 两个子词。
  • 若包含极端罕见字符:对于训练数据中从未出现过的单个汉字(如 Unicode 中的极少用字符),BPE 会将其拆分为字节级单元(UTF-8 编码的字节)。
    例如,某个生僻字的 UTF-8 编码是 3 个字节,BPE 会将这 3 个字节作为基础单元,映射到词表中对应的字节 token,从而实现对该字符的表示。

3. 中文 BPE 的合并策略:适配汉字组合规律

与英文通过合并高频字母对生成子词不同,中文 BPE 的合并更关注汉字之间的高频搭配

  • 例如,“人民”“国家” 等高频双字词会被合并为一个子词,加入词汇表;
  • 而生僻词 “龘靐” 由于出现频率低,不会被合并为一个子词,仍保留 “龘”+“靐” 的拆分形式。

这种策略确保了:即使整个生僻词未被训练过,其包含的单个汉字或低频组合仍能被拆分为已知的基础单元(汉字或字节),从而被模型处理。

总结:中文生僻词转换的核心逻辑

中文 BPE 通过以汉字为基础单元,结合字节级兜底机制,实现了对生僻词的表示:

  • 大部分生僻词可拆分为已知汉字(基础单元);
  • 极端罕见字符通过 UTF-8 字节拆分,用字节级 token 覆盖;
  • 本质上与英文 BPE 一致:不依赖完整词的存在,而是通过更小的、可复用的子单元(汉字 / 字节)来表示任意文本,包括生僻词。

这也是为什么中文大模型能处理训练数据中未见过的生僻词 —— 它们被拆解为了模型 “认识” 的基础单元。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐