BPE Algoritması Adım Adım
BPE başlangıçta her karakteri ayrı bir token olarak atar. Eğitim verisinde en sık yan yana gelen iki token çifti bulunur ve yeni bir birim olarak sözlüğe eklenir. Bu birleşim kuralı tüm veride uygulanır. İşlem, hedef sözlük boyutuna ulaşana kadar tekrar edilir. Örneğin 1000 birleşim kuralı, 256 karakter sözlüğüne eklenerek 1.256 tokenli bir sözlük oluşturur. Test verisinde bilinmeyen kelimeler bu kurallar uygulanarak parçalanır; her kelime en kötü durumda bireysel karakterlerine kadar indirgenebilir.
GPT ve tiktoken
OpenAI, GPT-2'den itibaren BPE'yi temel tokenizasyon yöntemi olarak benimsemiştir. Yüksek performanslı tiktoken kütüphanesi, GPT modellerinin tamamında kullanılmaktadır. cl100k_base kodlayıcısı yaklaşık 100.000 token içerir. Büyük rakamlar da alt birimlere bölünebilir: '2024' tek token olabilirken '202400' birden fazla parçaya ayrılır. Bu durum aritmetik görevlerde modelin zorlanmasına yol açan bilinen bir sınırlılıktır. Tokenizasyon seçimi bu nedenle model tasarımının kritik bir parçasıdır.
WordPiece ve Diğer Alternatifler
BERT, BPE yerine WordPiece algoritmasını kullanır. WordPiece de alt kelime birleştirme yapar; ancak birleşim kriteri en yüksek sıklığı değil maksimum likelihood artışını hedefler. SentencePiece kütüphanesi hem BPE hem Unigram LM'i destekler ve ön işleme gerektirmeden ham metni işleyebilir. Unigram LM, tüm potansiyel segmentasyonlar üzerinde olasılık hesaplayarak en iyi alt kelime bölümlemesini seçmektedir. LLaMA, Mistral ve Qwen gibi modern açık kaynaklı modeller SentencePiece tabanlı BPE'yi tercih eder.
Çok Dilli Tokenizasyon
BPE, dil belirtilmeksizin çoklu dil desteği için uygundur. Farklı alfabelerin karakterleri sözlüğe eklenir; ortak karakterler veya alt kelimeler birçok dil arasında paylaşılabilir. XLM-R ve mBERT gibi çok dilli modeller bu özelliği 100'den fazla dili tek sözlükle desteklemek için kullanır. Sözlük boyutu ile dil sayısı arasındaki denge dikkatli ayarlanmalıdır; fazla dil sözlüğü 'sulandırabilir' ve belirli dillerdeki performansı düşürebilir.
Türkçe'de BPE: Eklemeli Dil Zorluğu
Türkçe, sözcük biçimbilimi açısından zengin ve eklemeli bir dildir: 'geliyorlar', 'geliyorlardı', 'gelebilirlermiş' gibi tek bir köke onlarca ek getirilebilir. Bu yapı BPE tokenizasyonunu zorlaştırır. OpenAI'ın tiktoken (cl100k_base) kodlayıcısı Türkçe metinde İngilizce'ye kıyasla yaklaşık %40–60 daha fazla token üretmektedir. Tokenizasyon verimliliğini ölçmek için fertilite metriği kullanılır: kelime başına ortalama token sayısı. İngilizce'de ~1,2–1,5 olan bu değer Türkçe'de 2,5–4 aralığına çıkabilir. Yüksek fertilite hem API maliyetini artırır hem de bağlam penceresini daha hızlı doldurur. Bu nedenle Türkçe LLM çalışmalarında Türkçe külliyatıyla eğitilmiş özelleştirilmiş tokenizer'lar büyük avantaj sağlar.
Sıkça Sorulan Sorular
Neden karakter tokenizasyon yetmez? Karakter tokenizasyon çok uzun diziler üretir ve yaklaşık dil modelleri için verimsizdir; anlam birimleri arasındaki ilişkileri öğrenmek güçleşir.
Neden tam kelime tokenizasyon yetmez? Milyonlarca söz dizisi için büyük sözlük gerekir ve nadir kelimeler için 'bilinmeyen' (UNK) tokeni problemi oluşur.
BPE token sayısı maliyeti nasıl etkiler? API'lerde token başına ücretlendirme yapılır; Türkçe metinler İngilizce'den %40–60 daha pahalıya mal olabilir.
Kendi BPE tokenizer'ımı nasıl eğitirim? HuggingFace tokenizers kütüphanesi veya SentencePiece ile kendi veriniz üzerinde özelleştirilmiş bir tokenizer eğitebilirsiniz.