2026/5/21 13:10:11
网站建设
项目流程
网站自动优化怎么样,wordpress 主题轮播,乔柘云智能建站,wordpress 上传fttp四大子词分词算法详解
1. BPE (Byte Pair Encoding)
原理
BPE是最基础的子词分词算法#xff0c;通过迭代地合并最频繁出现的字符对来构建词表。
训练过程
输入语料#xff1a;
low: 5次
lower: 2次
newest: 6次
widest: 3次步骤#xff1a;
初始化#xff1a;将每个单词拆…四大子词分词算法详解1. BPE (Byte Pair Encoding)原理BPE是最基础的子词分词算法通过迭代地合并最频繁出现的字符对来构建词表。训练过程输入语料low: 5次 lower: 2次 newest: 6次 widest: 3次步骤初始化将每个单词拆分为字符并在末尾添加特殊符号表示词尾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统计字符对频率“e” “s”: 639次“es” “t”: 9次“l” “o”: 527次“o” “w”: 527次等等…迭代合并第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步骤初始化l o w e s t /w应用学到的合并规则按训练时的顺序l o→lolo w e s t /we s→eslo w es t /wes t→estlo w est /west /w→est/wlo w est/w输出[lo, w, est/w]2. BBPE (Byte-level BPE)原理BBPE是BPE的字节级变体直接在字节序列上操作而不是字符。这使得它可以处理任何Unicode字符。训练过程输入中文文本你好世界步骤转换为字节你 → [0xE4, 0xBD, 0xA0] 好 → [0xE5, 0xA5, 0xBD] 世 → [0xE4, 0xB8, 0x96] 界 → [0xE7, 0x95, 0x8C]初始词表256个字节值0x00-0xFF统计字节对频率并合并假设在大规模语料中[0xE4, 0xBD] 经常一起出现 → 合并为新token 256[256, 0xA0] 经常一起出现 → 合并为新token 257代表你以此类推…推理过程输入你好步骤转字节[0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD]应用合并规则[257, 258]假设257“你”258“好”输出[257, 258]优势可以处理任何语言包括emoji、罕见字符词表大小固定且可控。3. WordPiece原理WordPiece与BPE类似但合并准则不同。它选择能最大化训练数据似然的字符对进行合并。训练过程输入语料带频率unwanted: 100次 unwan: 50次 wanted: 200次步骤初始化词表: [u, n, w, a, n, t, e, d, ##t, ##e, ##d] ##表示非词首的subword计算合并得分对于候选合并un得分 log(P(un)) / (log(P(u)) log(P(n)))假设计算结果“un” 得分: 0.85“wa” 得分: 0.72“te” 得分: 0.91 ← 最高“ed” 得分: 0.88迭代合并第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步骤贪心最大匹配从左到右尝试匹配最长的词表中的tokenunwanted→ 尝试整个词不在→ 尝试unwante不在→ … → 找到un剩余wanted → 找到wan → 剩余ted → 找到ted输出[un, ##wan, ##ted]4. Unigram Language Model原理Unigram采用自上而下的方法从一个大词表开始逐步删除对损失函数影响最小的token。训练过程输入语料hello: 10次 world: 8次 help: 5次步骤初始化大词表包含所有可能的子串词表: {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, ...}计算每个token的概率P(token) count(token) / total_chars P(hello) 10/总字符数评估移除影响对每个token计算移除后的损失增加ΔLoss(token) -Σ log P(语料能否用剩余词表表示)假设计算结果移除hel: ΔLoss 0.02影响小移除hello: ΔLoss 2.5影响大移除p: ΔLoss 0.8中等迭代删除每轮删除影响最小的10-20%的token直到达到目标词表大小。第1轮删除移除hel, ell等低影响token剩余词表: {h, e, l, o, w, r, d, p, he, ll, lo, hello, help, wor, world, ...}推理过程输入hello步骤使用Viterbi算法找最优分词列举所有可能的分词[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…选择概率最大的分词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-2BBPE自底向上频率最高(字节级)多语言友好GPT-3, LLaMAWordPiece自底向上似然最大更优的概率模型BERTUnigram自顶向下损失最小多种分词可计算概率T5, XLNet实际应用示例输入句子preprocessingBPE输出[pre, process, ing]WordPiece输出[pre, ##process, ##ing]Unigram输出[pre, processing]或[prep, ro, cessing]取决于概率BBPE输出字节序列对应的token ID列表希望这个详细的讲解能帮助你理解这四种分词算法如果有任何疑问欢迎继续提问。