原文鏈接:NLP基礎(chǔ)(分詞):wordpiece 算法
導(dǎo)讀:在之前的文章中,我們介紹了BPE(Byte Pair Encoding)算法如何通過(guò)合并高頻字符對(duì)解決未登錄詞問(wèn)題(NLP基礎(chǔ)(分詞):BPE 算法)。今天,我們將深入探討其升級(jí)版算法——WordPiece。作為BERT、GPT等主流模型的分詞核心,WordPiece在BPE的基礎(chǔ)上引入了更智能的合并策略。它究竟有何獨(dú)特之處?為何能成為預(yù)訓(xùn)練模型的標(biāo)配?本文將通過(guò)原理剖析、代碼實(shí)戰(zhàn)和實(shí)例對(duì)比,帶你徹底掌握WordPiece!
1、WordPiece vs BPE
BPE的核心是合并高頻字符對(duì)(例如將“u”和“g”合并為“ug”),而WordPiece的合并策略更進(jìn)一步——每次選擇合并后能最大化語(yǔ)言模型概率的字符對(duì)。簡(jiǎn)而言之,BPE是“頻率驅(qū)動(dòng)”,而WordPiece是“概率驅(qū)動(dòng)”。
舉個(gè)栗子
假設(shè)詞匯表包含以下單詞:
low: 5次
lowest: 3次
newer: 6次
wider: 4次
BPE的選擇:合并頻率最高的字符對(duì)(如e和r,共出現(xiàn)10次)。
WordPiece的選擇:計(jì)算合并后句子的整體概率提升,優(yōu)先合并語(yǔ)義更連貫的字符對(duì)(如low和est)。
點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和代碼
2、算法原理
1. 核心公式:概率最大化
WordPiece通過(guò)以下公式選擇合并的字符對(duì):

其中,freq(A)和freq(B)是字符A和B的獨(dú)立頻率,freq(A,B)是它們連續(xù)出現(xiàn)的頻率。分?jǐn)?shù)越高,說(shuō)明A和B的共現(xiàn)越有意義。
2. 算法步驟
初始化:將所有單詞拆分為字符(如“chat”拆為c, h, a, t)。
統(tǒng)計(jì)字符對(duì)得分:根據(jù)公式計(jì)算每對(duì)相鄰字符的得分。
合并最高分字符對(duì):將得分最高的字符對(duì)合并為一個(gè)新符號(hào)。
重復(fù)迭代:直到詞表大小達(dá)到預(yù)設(shè)值或無(wú)法繼續(xù)合并。
3. 實(shí)例演示
假設(shè)有一個(gè)簡(jiǎn)單的訓(xùn)練語(yǔ)料庫(kù),包含以下單詞及其頻率:
{'hug': 10, 'pug': 5, 'pun': 12, 'bun': 4, 'hugs': 5}
通過(guò)WordPiece算法進(jìn)行3次合并,生成子詞。
第一次合并:

最高得分字符對(duì):(g, s)(得分0.05)。
合并結(jié)果:將?g s?合并為?gs,更新訓(xùn)練語(yǔ)料:{'h' 'u' 'g': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'h' 'u' 'gs': 5}
第二次合并:

最高得分字符對(duì):所有得分相同(0.0278),按順序選擇第一個(gè)?(h, u)。
合并結(jié)果:將?h u?合并為?hu,更新訓(xùn)練語(yǔ)料:{'hu' 'g': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'hu' 'gs': 5}
第三次合并:

最高得分字符對(duì):(hu, g)(得分0.0667)。
合并結(jié)果:將?hu g?合并為?hug,更新訓(xùn)練語(yǔ)料:{'hug': 10, 'p' 'u' 'g': 5, 'p' 'u' 'n': 12, 'b' 'u' 'n': 4, 'hugs': 5}
最終,保留了高頻詞'hug',原'hugs'被拆成'hug'和's'。
點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和代碼
3、python實(shí)現(xiàn)
下面通過(guò)python代碼實(shí)現(xiàn)上述示例:

得到結(jié)果如下:

4、優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
語(yǔ)義優(yōu)先:通過(guò)概率最大化合并,子詞更貼合語(yǔ)義(如優(yōu)先合并##ing而非i和n)。
適配預(yù)訓(xùn)練模型:BERT等模型依賴上下文,WordPiece能捕捉詞根、詞綴等語(yǔ)義單元。
歧義處理:對(duì)多義詞(如“bank”)可生成不同子詞組合,增強(qiáng)模型魯棒性。
缺點(diǎn)
計(jì)算復(fù)雜:每次合并需重新計(jì)算概率得分,訓(xùn)練效率低于BPE。
依賴初始分詞:需預(yù)拆分為字符,對(duì)中文等無(wú)空格語(yǔ)言需額外處理。
不可逆性:合并后的子詞無(wú)法拆分,可能導(dǎo)致錯(cuò)誤累積。
參考文獻(xiàn):
1. Wu, Y., et al. (2016). Google’s Neural Machine Translation System. arXiv:1609.08144.
2. Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
點(diǎn)擊原文(NLP基礎(chǔ)(分詞):wordpiece 算法),后臺(tái)回復(fù)“wordpiece”可免費(fèi)獲得上述論文和完整代碼