代码修改版

Transformer 与分词 · 代码修改

实现一个真正的 BPE 分词器:统计相邻词对 → 合并最常见的一对 → 重复。改参数,看词表怎么长出来。

目标实验目标

把 BPE 的四步写成代码:拆到字符 → 数相邻词对 → 合并最常见的一对 → 重复到词表攒够。改黄色数字控制合并轮数。

重点把合并轮数从 2 改到 5,看「苹果」「水果」这些高频词是不是整个变成了一个 token。

代码可编辑源码

虚线处可直接点击修改。

bpe.js — 点击黄色数字可编辑

结果分词结果

运行后显示…

合并轮数 = -
词表大小 = -
token 总数 = -
最新合并 = -

日志执行日志

点击「运行代码」开始执行…

挑战实验课挑战

挑战 1 · 第三轮合并谁
把轮数设成 3 和 4 分别运行,看最新合并的词对,和你的预测一致吗?
挑战 2 · 加一句语料
在 corpus 里加一句「香蕉和苹果都好吃。」,第一轮会合并哪一对?
挑战 3 · 词表爆炸的反面
如果每轮都不合并(轮数=0),token 总数是多少?词表会变成什么规模?
挑战 4 · 为什么要 BPE
用代码里的逻辑,解释为什么 BPE 能做到「既不会遇到 [UNK],序列又不会太长」。