news 2026/6/10 16:44:54

四大子词分词算法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
四大子词分词算法详解

四大子词分词算法详解

1. BPE (Byte Pair Encoding)

原理

BPE是最基础的子词分词算法,通过迭代地合并最频繁出现的字符对来构建词表。

训练过程

输入语料

low: 5次 lower: 2次 newest: 6次 widest: 3次

步骤

  1. 初始化:将每个单词拆分为字符,并在末尾添加特殊符号表示词尾
l o w </w>: 5 l o w e r </w>: 2 n e w e s t </w>: 6 w i d e s t </w>: 3
  1. 统计字符对频率
  • “e” + “s”: 6+3=9次
  • “es” + “t”: 9次
  • “l” + “o”: 5+2=7次
  • “o” + “w”: 5+2=7次
  • 等等…
  1. 迭代合并

第1轮:合并最高频的"es" + “t” → “est”

l o w </w>: 5 l o w e r </w>: 2 n e w est </w>: 6 w i d est </w>: 3

第2轮:合并"est" + “” → “est”

l o w </w>: 5 l o w e r </w>: 2 n e w est</w>: 6 w i d est</w>: 3

第3轮:合并"l" + “o” → “lo”

lo w </w>: 5 lo w e r </w>: 2 n e w est</w>: 6 w i d est</w>: 3

持续迭代直到达到预设的词表大小或合并次数。

推理(分词)过程

输入"lowest"

步骤

  1. 初始化:l o w e s t </w>
  2. 应用学到的合并规则(按训练时的顺序):
    • l ololo w e s t </w>
    • e seslo w es t </w>
    • es testlo w est </w>
    • est </w>est</w>lo w est</w>

输出["lo", "w", "est</w>"]


2. BBPE (Byte-level BPE)

原理

BBPE是BPE的字节级变体,直接在字节序列上操作,而不是字符。这使得它可以处理任何Unicode字符。

训练过程

输入:中文文本"你好世界"

步骤

  1. 转换为字节
你 → [0xE4, 0xBD, 0xA0] 好 → [0xE5, 0xA5, 0xBD] 世 → [0xE4, 0xB8, 0x96] 界 → [0xE7, 0x95, 0x8C]
  1. 初始词表:256个字节值(0x00-0xFF)

  2. 统计字节对频率并合并
    假设在大规模语料中:

  • [0xE4, 0xBD] 经常一起出现 → 合并为新token 256
  • [256, 0xA0] 经常一起出现 → 合并为新token 257(代表"你")
  • 以此类推…

推理过程

输入"你好"

步骤

  1. 转字节:[0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD]
  2. 应用合并规则:[257, 258](假设257=“你”,258=“好”)

输出[257, 258]

优势:可以处理任何语言,包括emoji、罕见字符,词表大小固定且可控。


3. WordPiece

原理

WordPiece与BPE类似,但合并准则不同。它选择能最大化训练数据似然的字符对进行合并。

训练过程

输入语料(带频率):

unwanted: 100次 unwan: 50次 wanted: 200次

步骤

  1. 初始化
词表: [u, n, w, a, n, t, e, d, ##t, ##e, ##d] (##表示非词首的subword)
  1. 计算合并得分

对于候选合并"un":

得分 = log(P(un)) / (log(P(u)) + log(P(n)))

假设计算结果:

  • “un” 得分: 0.85
  • “wa” 得分: 0.72
  • “te” 得分: 0.91 ← 最高
  • “ed” 得分: 0.88
  1. 迭代合并

第1轮:选择"te"合并

词表添加: [te] unwanted → un wan te d wanted → wan te d

第2轮:选择"ed"合并

词表添加: [ed] unwanted → un wan te d wanted → wan ted

第3轮:选择"un"合并

词表添加: [un] unwanted → un wan ted unwan → un wan

推理过程

输入"unwanted"

步骤:贪心最大匹配

  1. 从左到右,尝试匹配最长的词表中的token
  2. "unwanted"→ 尝试整个词(不在)→ 尝试"unwante"(不在)→ … → 找到"un"
  3. 剩余"wanted" → 找到"wan" → 剩余"ted" → 找到"ted"

输出["un", "##wan", "##ted"]


4. Unigram Language Model

原理

Unigram采用自上而下的方法,从一个大词表开始,逐步删除对损失函数影响最小的token。

训练过程

输入语料

"hello": 10次 "world": 8次 "help": 5次

步骤

  1. 初始化大词表(包含所有可能的子串):
词表: {h:15, e:15, l:25, o:10, w:8, r:8, d:8, p:5, he:15, el:15, ll:15, lo:10, hel:15, ell:15, hello:10, help:5, wor:8,orld:8, world:8, ...}
  1. 计算每个token的概率
P(token) = count(token) / total_chars P(hello) = 10/总字符数
  1. 评估移除影响

对每个token,计算移除后的损失增加:

ΔLoss(token) = -Σ log P(语料能否用剩余词表表示)

假设计算结果:

  • 移除"hel": ΔLoss = 0.02(影响小)
  • 移除"hello": ΔLoss = 2.5(影响大)
  • 移除"p": ΔLoss = 0.8(中等)
  1. 迭代删除
    每轮删除影响最小的10-20%的token,直到达到目标词表大小。

第1轮删除:移除"hel", "ell"等低影响token

剩余词表: {h, e, l, o, w, r, d, p, he, ll, lo, hello, help, wor, world, ...}

推理过程

输入"hello"

步骤:使用Viterbi算法找最优分词

  1. 列举所有可能的分词

    • [hello]: P = P(hello) = 0.15
    • [he, llo]: P = P(he) × P(llo) = 0.08 × 0.05 = 0.004
    • [hel, lo]: P = P(hel) × P(lo) = 0.09 × 0.06 = 0.0054
    • [h, e, l, l, o]: P = 0.05^5 = 0.0000003125
  2. 选择概率最大的分词

max{0.15, 0.004, 0.0054, ...} = 0.15

输出["hello"]

复杂示例输入"helping"

可能的分词及其概率:

  • [help, ##ing]: P = 0.08 × 0.12 = 0.0096
  • [hel, ##p, ##ing]: P = 0.05 × 0.03 × 0.12 = 0.00018
  • [he, ##lp, ##ing]: P = 0.08 × 0.04 × 0.12 = 0.00384

输出["help", "##ing"](概率最高)


四种算法对比总结

算法方向合并准则优点代表模型
BPE自底向上频率最高简单高效GPT-2
BBPE自底向上频率最高(字节级)多语言友好GPT-3, LLaMA
WordPiece自底向上似然最大更优的概率模型BERT
Unigram自顶向下损失最小多种分词,可计算概率T5, XLNet

实际应用示例

输入句子"preprocessing"

  • BPE输出["pre", "process", "ing"]
  • WordPiece输出["pre", "##process", "##ing"]
  • Unigram输出["pre", "processing"]["prep", "ro", "cessing"](取决于概率)
  • BBPE输出:字节序列对应的token ID列表

希望这个详细的讲解能帮助你理解这四种分词算法!如果有任何疑问,欢迎继续提问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:22:18

华为坚决清仓,从3699元降至1954元,256GB+100W闪充+鸿蒙OS

鸿蒙harmonyos官网 手机行业中绝大多数大品牌的新机&#xff0c;阿维都会第一时间写文章分享出来&#xff0c;但是12月22号的华为nova15系列手机发布后&#xff0c;阿维并没有写文章&#xff0c;因为确实不太推荐粉丝们购买这一新机&#xff0c;不是说这一新机的体验很差&#…

作者头像 李华
网站建设 2026/6/10 11:38:19

基于PyTorch的腾讯HunyuanOCR界面推理部署步骤详解

基于PyTorch的腾讯HunyuanOCR界面推理部署步骤详解 在智能文档处理需求爆发式增长的今天&#xff0c;企业对OCR系统的期待早已超越“把图片变文字”的初级阶段。我们看到越来越多的应用场景——从银行票据自动录入、跨境电商多语言商品识别&#xff0c;到视频平台实时字幕提取—…

作者头像 李华
网站建设 2026/6/10 11:40:29

华为HCIP/HCSE、H3CSE通关经验浅谈

分享一波近期学员的战绩&#xff0c;共同探讨下高级认证备考策略。 华为HCIP-Datacom: 884分&#xff0c;路由交换基础扎实。 华为HCSE-Presales&#xff08;金融/传输/企业&#xff09;: 均分850左右&#xff0c;对行业解决方案理解深刻。 新华三GB0-392 (H3CSE): 840分&#…

作者头像 李华
网站建设 2026/6/10 13:32:35

奢侈品真假辨别系统:HunyuanOCR比对品牌LOGO与序列号信息

奢侈品真假辨别系统&#xff1a;HunyuanOCR比对品牌LOGO与序列号信息 在二手奢侈品市场交易额突破千亿元的今天&#xff0c;一个看似普通的LV手袋内标照片&#xff0c;可能隐藏着数万元的真伪博弈。买家上传一张模糊的标签图&#xff0c;平台需要在3秒内判断这是否是高仿A货——…

作者头像 李华
网站建设 2026/6/7 22:47:55

AI竞赛题目灵感来源:设计‘复杂文档识别’任务使用HunyuanOCR评分

设计“复杂文档识别”任务使用HunyuanOCR评分 在金融、政务和跨境电商的日常运营中&#xff0c;企业每天要处理成千上万张扫描发票、合同、身份证件等非结构化文档。这些文件格式多样、语言混杂、版式复杂&#xff0c;传统OCR系统往往力不从心——检测不准、识别错乱、字段抽取…

作者头像 李华
网站建设 2026/6/10 7:38:25

GPU算力变现新路径:部署HunyuanOCR提供按Token计费的OCR服务

GPU算力变现新路径&#xff1a;部署HunyuanOCR提供按Token计费的OCR服务 在AI基础设施日益普及的今天&#xff0c;拥有高性能GPU却苦于利用率不足的问题&#xff0c;正困扰着大量中小企业、独立开发者甚至高校实验室。一块NVIDIA RTX 4090D动辄上万元&#xff0c;若仅用于训练或…

作者头像 李华