在這個教學中,我們將學習如何使用 tiktoken 函式庫創建自定義的分詞器。
這個過程包括載入一個預訓練的分詞器模型,定義基本和特殊的標記,使用特定的正則表達式初始化分詞器以進行標記分割,並通過編碼和解碼一些範例文本來測試其功能。這個設置對於需要精確控制文本標記化的自然語言處理 (NLP) 任務是非常重要的。
載入必要的函式庫
import tiktoken
from tiktoken.load import load_tiktoken_bpe
import json
在這裡,我們導入了幾個對文本處理和機器學習非常重要的函式庫。使用 pathlib 的 Path 來方便管理檔案路徑,而 tiktoken 和 load_tiktoken_bpe 則幫助我們載入和使用字節對編碼 (Byte Pair Encoding) 的分詞器。
設置分詞器模型路徑
num_reserved_special_tokens = 256
mergeable_ranks = load_tiktoken_bpe(tokenizer_path)
num_base_tokens = len(mergeable_ranks)
special_tokens = [
“<|begin_of_text|>”,
“<|end_of_text|>”,
“<|reserved_special_token_0|>”,
“<|reserved_special_token_1|>”,
“<|finetune_right_pad_id|>”,
“<|step_id|>”,
“<|start_header_id|>”,
“<|end_header_id|>”,
“<|eom_id|>”,
“<|eot_id|>”,
“<|python_tag|>”,
]
在這裡,我們設置了分詞器模型的路徑,並指定了 256 個保留的特殊標記。接著載入可合併的排名,這些排名構成了基本詞彙,計算基本標記的數量,並定義了一個特殊標記的列表,用於標記文本邊界和其他保留用途。
創建保留標記
f”<|reserved_special_token_2 + i|>”
for i in range(num_reserved_special_tokens – len(special_tokens))
]
special_tokens = special_tokens + reserved_tokens
tokenizer = tiktoken.Encoding(
name=Path(tokenizer_path).name,
pat_str=r”(?i:’s|’t|’re|’ve|’m|’ll|’d)|[^rnpLpN]?pL+|pN1,3| ?[^spLpN]+[rn]*|s*[rn]+|s+(?!S)|s+”,
mergeable_ranks=mergeable_ranks,
special_tokens={token: len(mergeable_ranks) + i for i, token in enumerate(special_tokens)},
)
現在,我們動態創建額外的保留標記以達到 256,然後將它們附加到預定義的特殊標記列表中。接著使用 tiktoken 初始化分詞器,並使用指定的正則表達式來分割文本,載入的可合併排名作為基本詞彙,並將特殊標記映射到唯一的標記 ID。
測試分詞器
# 測試分詞器的範例文本
#————————————————————————-
sample_text = “Hello, this is a test of the updated tokenizer!”
encoded = tokenizer.encode(sample_text)
decoded = tokenizer.decode(encoded)
print(“範例文本:”, sample_text)
print(“編碼標記:”, encoded)
print(“解碼文本:”, decoded)
我們通過將範例文本編碼為標記 ID,然後將這些 ID 解碼回文本來測試分詞器。它會打印原始文本、編碼的標記和解碼的文本,以確認分詞器正常運作。
結論
總結來說,跟隨這個教學,你將學會如何使用 TikToken 函式庫設置自定義的 BPE 分詞器。你學會了如何載入預訓練的分詞器模型,定義基本和特殊標記,並使用特定的正則表達式初始化分詞器以進行標記分割。最後,你通過編碼和解碼範例文本來驗證分詞器的功能。這個設置是任何需要自定義文本處理和標記化的 NLP 項目的基本步驟。
這裡是上述項目的 Colab Notebook。別忘了在 Twitter 上關注我們,並加入我們的 Telegram 頻道和 LinkedIn 群組。還有,別忘了加入我們的 75k+ ML SubReddit。
🚨 推薦的開源 AI 平台:‘IntellAgent 是一個開源的多代理框架,用於評估複雜的對話 AI 系統’ (推廣)
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!