الفصل 1: خوارزميات تقسيم الرموز
BPE (ترميز الزوج الثنائي)
يتم دمج أزواج الأحرف الأكثر تكرارًا بشكل تكراري:
from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
tokenizer = Tokenizer(BPE())
trainer = BpeTrainer(vocab_size=50000, special_tokens=["[PAD]", "[UNK]"])
tokenizer.train(files=["corpus.txt"], trainer=trainer)
WordPiece (يستخدم بواسطة BERT)
مشابه لـ BPE ولكنه يستخدم الاحتمالية بدلاً من التكرار:
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
tokens = tokenizer.tokenize("unbelievable")
# ['un', '##believe', '##able']
SentencePiece (يستخدم بواسطة LLaMA، T5)
غير معتمد على اللغة، يعامل النص كبيانات خام:
import sentencepiece as spm
spm.SentencePieceTrainer.train(
input='corpus.txt',
model_prefix='tokenizer',
vocab_size=32000
)
المقارنة
| الخوارزمية | مستخدمة بواسطة | الميزة الرئيسية |
|---|---|---|
| BPE | GPT-2، GPT-3 | الدمج بناءً على التكرار |
| WordPiece | BERT | بناءً على الاحتمالية |
| SentencePiece | LLaMA، T5 | على مستوى البايت، غير معتمد على اللغة |