Tokenization (Tokenizasyon (Parçalara Ayırma))

Metni yapay zekanın işleyebileceği sayısal birimlere (token) bölen, LLM'lerin temel giriş adımı.

Tokenizasyon, metin verisini büyük dil modelleri (LLM) ve doğal dil işleme (NLP) sistemlerinin işleyebileceği temel birimlere —"token"lara— dönüştürme sürecidir. Yapay zeka modelleri metni insan gibi harf harf değil, token kimlik numaraları (ID) cinsinden işler; tokenizasyon bu dönüşümün ilk ve belirleyici adımıdır. Bir token; tam kelime, kelime kökü, hece veya bayt grubu olabilir. Modern LLM'lerin büyük çoğunluğu Byte Pair Encoding (BPE) ya da SentencePiece gibi alt-kelime (subword) algoritmalarını tercih eder. Bu yöntemler yaygın kelimeleri tek token'a sıkıştırırken nadir kelimeleri birden fazla parçaya böler; böylece sözlük boyutu sınırlı tutulurken bilinmeyen kelime (OOV) sorunu ortadan kalkar. WordPiece (BERT), Tiktoken (GPT-4) ve SentencePiece (LLaMA, T5) gibi tokenizer'lar aynı metni farklı parça sayısına bölebilir. Tokenizasyon hem modelin tahmin kalitesini hem de kullanıcının API maliyetini doğrudan etkiler. OpenAI, Anthropic ve Google gibi sağlayıcılar ücretlendirmeyi kelime değil token başına yapar; bu nedenle token sayısını önceden tahmin etmek maliyet yönetiminin temelidir. Tiktoken kütüphanesi veya Hugging Face tokenizers ile prompt'lar göndermeden önce sayılabilir. Türkçe'nin eklemeli (agglutinative) yapısı tokenizasyon açısından ciddi bir dezavantaj yaratır: aynı içeriğin Türkçe versiyonu İngilizce'ye kıyasla genellikle 1,5–2 kat daha fazla token tüketir. Bu durum hem API maliyetini artırır hem de bağlam penceresi (context window) kapasitesini daha hızlı doldurur. Gemma, Qwen ve DeepSeek gibi çok dilli modeller Türkçe içerli eğitim verileriyle bu açığı kısmen kapatmıştır. Son olarak, tokenizasyon modelin bazı basit sorulardaki başarısızlığını da açıklar. Bir LLM'e "Strawberry kelimesinde kaç R var?" diye sorulduğunda alınan yanlış yanıt, modelin harfleri değil token ID'lerini gördüğünden kaynaklanır. Bu temel kısıt, LLM ile çalışan geliştiricilerin anlaması gereken en kritik altyapı konseptlerinden biridir.

content_cut Token Nedir ve Nasıl Bölünür?

Bir token; tam bir kelime, bir kelimenin yarısı veya tek bir harf olabilir. Örneğin İngilizcede 'apple' genellikle tek bir token iken, 'unbelievable' kelimesi 'un', 'believ', 'able' şeklinde alt-kelime (sub-word) tokenlerine bölünebilir. Tokenizasyon algoritmaları (örn: BPE - Byte Pair Encoding), dilde en çok tekrar eden karakter dizilerini tek bir token yapmaya çalışarak modelin hafıza verimliliğini maksimize eder.

Tokenizasyonun Etkileri

attach_money Maliyet ve Fiyatlandırma

OpenAI, Anthropic gibi tüm yapay zeka şirketleri API kullanımlarını kelime başına değil, token başına ücretlendirir (örn: 1 Milyon token = $10).

translate Dil Eşitsizliği (Türkçe vs İngilizce)

Tokenizasyon algoritmaları İngilizce ağırlıklı verilerle eğitildiği için Türkçe gibi sondan eklemeli dillerde kelimeler çok fazla parçaya bölünür. İngilizce bir cümle 10 token tutarken, aynı cümlenin Türkçe çevirisi 25 token tutabilir. Bu da Türkçeyi LLM'lerde hem daha pahalı hem de daha yavaş yapar.

spellcheck Kelime Oyunlarındaki Başarısızlık

ChatGPT'nin 'Strawberry kelimesinde kaç tane R var?' sorusuna yanlış cevap vermesinin sebebi aptal olması değil, tokenizasyondur. Modeller metni harf harf değil, token kimlikleri (ID: 3456) olarak gördüğü için harfleri sayamazlar.

Tokenizasyon Yöntemleri

  • check_circle Kelime Düzeyi Tokenizasyon: Metin boşluk veya noktalamaya göre bölünür. Avantaj: sezgisel, kelime anlamı korunur. Dezavantaj: sözlük dışı (OOV) kelimeler — yeni veya nadir kelimeler 'unk'. Büyük sözlük gereksinimi: dil çok sayıda kelime formu içerdiğinde verimsiz.
  • check_circle Alt Kelime Tokenizasyon (Subword): BPE (Byte Pair Encoding): GPT serisi; sık çiftler birleştirilerek token üretilir. WordPiece: BERT; dil modeli olasılığını maksimize eden birleştirme. SentencePiece: T5, LLaMA; dil bağımsız, ham metin üzerinde çalışır. OOV sorunu çözülür: nadir kelime alt parçalara bölünür.
  • check_circle Karakter ve Bayt Düzeyi: Karakter düzeyi: her karakter bir token; sözlük küçük ama dizi uzun. Bayt düzeyi (BPE): ham UTF-8 baytlar — herhangi Unicode dizisi işlenebilir. GPT-2: Byte-Level BPE ile dil ve karakter bağımsız tokenizasyon. Avantaj: bilinmeyen karakter yok; Türkçe özel karakterler sorunsuz.

Türkçe Tokenizasyon ve Token Verimliliği

Türkçe eklemeli (agglutinative) bir dil: bir kök üzerine çok sayıda ek eklenir. 'gidebileceklerden' gibi bir kelime 10+ token'a bölünebilir — İngilizce'de tek token. Bu durum Türkçe AI kullanımını daha pahalı ve yavaş yapar: API maliyeti token başına hesaplanır; aynı metin Türkçe'de 1.5-2× daha fazla token. Çözüm yolları: Türkçe özel tokenizer (SentencePiece Türkçe corpus üzerinde) — Gemma, Qwen ve çok dilli modeller bu sorunu kısmen iyileştirdi. tiktoken (OpenAI): cl100k_base ve o200k_base tokenizer'ları Python kütüphanesiyle erişilebilir — metin boyutunu tahmin etmek için kullanılır. Token tahmini: LLM prompt'unu göndermeden önce token sayısını hesapla; bağlam penceresi sınırı ve maliyeti öngör.

Tokenizer Araçları ve Maliyet Tahmini

  • check_circle tiktoken (OpenAI): GPT-3.5, GPT-4 ve GPT-4o için cl100k_base ve o200k_base tokenizer'larını Python'da çalıştırır. Prompt göndermeden önce token sayısını ve dolayısıyla API maliyetini tahmin etmek için standart araçtır.
  • check_circle Hugging Face tokenizers: Rust tabanlı, model agnostik tokenizer kütüphanesi. BERT (WordPiece), LLaMA (SentencePiece) ve GPT (BPE) ailelerini destekler; AutoTokenizer ile model adından otomatik yüklenir.
  • check_circle OpenAI Tokenizer Playground: platform.openai.com/tokenizer adresinden metni yapıştırıp token ayrıştırmasını interaktif görebilirsiniz. Türkçe metnin İngilizce'ye kıyasla nasıl daha fazla token tükettiğini keşfetmek için yararlı referans noktasıdır.
  • check_circle Anthropic Token Sayacı: Claude API, usage.input_tokens ve usage.output_tokens değerlerini yanıtta döndürür. Kümülatif maliyet izleme ve bağlam penceresi yönetimi için bu değerleri uygulamanızda kayıt altına alın.

quiz Sık Sorulan Sorular

  • check_circle 1 Token kaç kelimeye eşittir?: Genel bir kural olarak İngilizcede 1 token, bir kelimenin 3/4'üne eşittir. Yani 100 token yaklaşık 75 kelimedir. Ancak kodlama veya farklı dillerde bu oran büyük ölçüde değişir.
  • check_circle BPE (Byte Pair Encoding) nedir?: En popüler tokenizasyon algoritmasıdır. Verideki yan yana gelen karakterleri tarar ve en sık birlikte bulunanları tek bir birim (token) haline getirerek sözlüğü optimize eder.
  • check_circle Kaç token 1000 kelimeye eşit?: İngilizce'de yaklaşık 750 kelime = 1000 token (1.33 token/kelime). Türkçe'de eklemeli yapı nedeniyle 1000 kelime = 1500-2000 token olabilir. tiktoken kütüphanesiyle tam sayım yapılabilir.
  • check_circle Token sayısını azaltmanın yolları nelerdir?: Gereksiz boşluk ve tekrar kaldır. Uzun prompt'ları özetle — RAG ile yalnızca ilgili bölümü gönder. Türkçe yerine İngilizce prompt dene: aynı bilgi daha az token. Yapılandırılmış çıktı (JSON): verbose açıklama yerine kısa field'lar.
  • check_circle Farklı modeller aynı metni farklı mı tokenize eder?: Evet, her model kendi tokenizer'ını kullanır. GPT-4 (cl100k_base) ve Claude (BPE tabanlı) aynı metni farklı sayıda token'a böler. Bu nedenle bağlam penceresi karşılaştırması dikkatli yapılmalı: 128K token GPT'de ve Claude'da farklı uzunlukta metne karşılık gelir.