## 介紹 Byte Pair Encoding (BPE) 在自然語言處理(Natural Language Processing, NLP)中,詞彙分割(tokenization)是將文本轉換為模型能理解的基本步驟,傳統上,許多系統將單詞當作最小單位,但這會導致詞彙表過大,並對未見詞(Out-of-Vocabulary, OOV)無法處理,為了解決這些問題,Byte Pair Encoding(BPE) 被引入成為一種高效的子詞分詞方法。 Byte Pair Encoding(BPE)是一種常見且高效的子詞單位分詞方法,它兼顧了詞彙表的大小控制與未知詞處理的彈性,在多數現代大型語言模型(如GPT、BERT、RoBERTa)中皆被廣泛採用。 ## BPE 算法流程 BPE的核心思想是透過迭代地合併文本中最常見的相鄰字元或子詞對,逐步形成新的子詞單位,最終建立一個包含這些子詞的詞彙表,這種方法能夠有效地處理複合詞和未知詞,並在一定程度上減少詞彙表的大小。 Step1. 初始化語料庫:將所有單字拆分成最基本的單位。 Step2. 計算頻率:統計所有字元對(bigram)的出現頻率。 Step3. 合併最頻繁的字元對:找出頻率最高的字元對,並將該對合併為新符號。 Step4. 更新語料與詞彙表:用合併後的單位更新語料,並將新單位加入詞彙表。 Step5. 重複步驟 2~4,直到達到指定合併次數或詞彙表大小。  ## BPE 的優缺點 優點 1. 解決 OOV 問題:即使新單詞沒看過,也能拆分成已知子詞(subwords)處理。 2. 可壓縮詞彙表大小:例如 GPT-2 的詞彙表約 50,257 個 token,BPE 能控制在合理範圍。 3. 語言無關性強:BPE 可以處理多語種語料,只要有足夠的統計資料即可。 缺點 1. 忽略語義結構:合併規則只基於字元頻率,未考慮上下文或語義。 2. 初始設定需調整:詞彙表大小和合併次數的設定會影響分詞品質。 3. 拆分不直觀:有時子詞單位可能與語法無關,影響可讀性。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up