Skip to content

Tokenizer Evaluation: Fertility, Compression Ratio, Downstream Impact, and Information-Theoretic Metrics

Deep anatomy of all metrics that measure tokenizer quality: fertility (tokens/word), compression ratio (bytes/token), OOV rate, bits-per-character (BPC), impact on perplexity, cross-lingual fertility, downstream task impact, vocab coverage, A/B testing protocols, Turkish-specific metrics, cost 'tax' analysis, capstone evaluation framework.

Şükrü Yusuf KAYA
75 min read
Advanced
Tokenizer Evaluation: Fertility, Compression Ratio, Downstream Impact ve Bilgi Teorik Ölçümler
📊 Ölçemediğin şeyi yönetemezsin — tokenizer'ın gizli ROI'si
Modern LLM mühendisliğinde tokenizer'ı ölçmek modelden bağımsız ama maliyeti şekillendiren ana faktör. Türkçe için iyi seçilmiş bir tokenizer hem inference maliyetini %30-40 düşürür hem de modelin reasoning kalitesini %5-10 artırır (paper'larla kanıtlı). Ama hangi tokenizer iyi? Cevap çok-boyutlu: fertility, compression, perplexity etkisi, downstream task accuracy, OOV rate, cross-lingual transfer. 75 dakika sonra: bu metriklerin matematiğini, ölçüm protokollerini, A/B testing best practice'lerini, Türkçe-özel pitfall'leri tam kavrayacak; kendi capstone tokenizer'ını (Modül 6.10) bilimsel olarak değerlendirebileceksin. Bu, akademik kalitede ölçüm disiplini.

Ders Haritası (14 Bölüm)#

  1. Niye ölç — tokenizer kalitesinin maliyet ve performans etkisi
  2. Fertility — token/word, derin matematik ve Türkçe pratik
  3. Compression ratio — bytes/token, information theory bağlantısı
  4. OOV rate — out-of-vocabulary metrikleri
  5. Bits-per-character (BPC) — bilgi teorik standart
  6. Vocab coverage — domain ve dil için kapsam analizi
  7. Perplexity'ye etki — tokenization → language model quality
  8. Downstream task impact — NER, QA, classification accuracy
  9. Cross-lingual fertility — adil karşılaştırma protokolleri
  10. Token efficiency rate — semantic information per token
  11. A/B testing — tokenizer karşılaştırma protokolü
  12. Tokenization tax — Türkçe maliyet kanıtı
  13. Çoklu metrik dashboard — capstone için evaluation framework
  14. Edge cases — outlier domains, code, math, emoji, multilingual

1. Niye Ölç — Tokenizer'ın Gizli ROI'si#

1.1 Ölçmemenin maliyeti#

Production LLM sistemde tokenizer seçimi:
  • Inference cost: her API call'da token sayısı = direkt $ maliyet
  • Latency: daha az token = daha az model forward pass = daha hızlı yanıt
  • Quality: kötü tokenization → semantic information loss → daha kötü reasoning
  • Context window: daha verimli tokenizer = aynı context'te daha çok bilgi

1.2 Türkçe-spesifik etki (production data)#

Gerçek production logs (2024-2026):
TokenizerAylık 1M call maliyeti (GPT-4o, $2.5/1M)
GPT-4o o200k (default)$1,250
Türkçe-tuned (Trendyol-LLM 32K, equivalent rate)$1,000 (-%20)
Türkçe-optimal hipotetik (28K curated)$850 (-%32)

1.3 Quality etkisi (BERT-base-Turkish vs mBERT)#

NER (Named Entity Recognition) Türkçe benchmark (WikiAnn):
  • mBERT (110K multilingual): F1 = 0.881
  • BERT-base-Turkish (32K TR-only): F1 = 0.912 (+3.5%)
Tokenizer farkı → +3.5% accuracy. Embedding katmanı aynı, sadece tokenization farklı.

1.4 Ölçüm disiplinin akademik temeli#

2018-2024 arası 100+ paper tokenizer evaluation üzerine. Kritik referanslar:
  • Bostrom & Durrett 2020: 'Byte Pair Encoding is Suboptimal for Language Model Pretraining'
  • Rust et al. 2020: 'How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models'
  • Park & Park 2021: 'An Empirical Study of Tokenization Strategies for Various Korean NLP Tasks'
  • Petrov et al. 2023: 'Language Model Tokenizers Introduce Unfairness Between Languages'
Petrov 2023 özellikle önemli: tokenization-induced language unfairness. Türkçe gibi düşük-kaynak dillerin tokenization vergisi belgelendi.

1.5 Ölçüm felsefesi#

Tek metrik yetmez. Hangi metrik önemli, downstream task'a bağlı:
  • General LLM: fertility + perplexity + downstream avg
  • Classification: fertility + class-balanced accuracy
  • NER: fertility + entity boundary F1
  • Code: byte coverage + python/JS-specific fertility
  • Math: digit/number tokenization patterns

2. Fertility — Token/Word'ün Derin Matematiği#

2.1 Tanım#

Fertility = bir kelimenin ortalama kaç token'a bölündüğü.
fertility = total_tokens / total_words

2.2 Hesaplama (basit)#

from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B") text = "İstanbul Boğazı'nda balıkçı tekneleri sallanıyor." words = text.split() # whitespace-based tokens = tokenizer.tokenize(text) fertility = len(tokens) / len(words) print(f"Fertility: {fertility:.2f}")

2.3 Word tanımı — kritik karar#

Fertility hesabında 'word' nedir?
  • Whitespace split: `text.split()` — en basit, en yaygın
  • Linguistic word: morfolojik analiz (Türkçe için Zemberek/Morfessor)
  • Punctuation-aware: punctuation ayrı/değil
Production'da whitespace split standard — karşılaştırılabilir.

2.4 Türkçe morfolojik komplikasyon#

Türkçe agglutinative — bir 'word' aslında morfemler dizisi: `anlaşamadıklarımızdan` = anlaş + ama + dık + larımız + dan (5 morpheme).
Fertility = 4-5 token/word olabilir, ama her token bir morpheme = doğru bölünme. Bu fertility 'yüksek görünür' ama tokenization aslında iyi.
Karşılaştırma için fair comparison: morpheme-aware fertility.
morph_fertility = total_tokens / total_morphemes
Morph fertility 1.0'a yakınsa tokenizer morfolojik olarak optimal.

2.5 Fertility heterogeneity#

Fertility cümleden cümleye değişir:
  • Common words ('ev', 'kitap'): fertility ~1.0
  • Rare words ('elektromanyetik'): fertility 3-5
  • Numbers ('2026'): fertility 1-2
  • Proper nouns ('İstanbul'): fertility ~1.0 (frequent)
  • URLs, emails: fertility 5-10 (high)
Distribution-aware analiz: percentile fertility (50p, 95p, 99p).

2.6 Türkçe gerçek sayılar#

300-kelime tipik Türkçe metin:
TokenizerMean fertility95p99p
GPT-2 r50k2.404.57.0
GPT-4 cl100k1.703.05.0
GPT-4o o200k1.432.54.0
Llama-3 128K1.472.64.2
TurkBPE 32K (özel)1.202.03.5
BERT-base-Turkish1.552.84.5

2.7 Domain etkisi#

Aynı tokenizer farklı domain'lerde farklı fertility:
  • Wikipedia: baseline
  • News: ~%10 daha düşük (well-structured)
  • Literature: ~%5 daha yüksek (rich vocab)
  • Twitter/sosyal medya: ~%15 daha yüksek (slang, typos)
  • Legal: ~%20 daha yüksek (formal terminology)
  • Code: aşırı domain-specific (Python/JS BPE'siz çok yüksek)

3. Compression Ratio — Bytes/Token, Information Theory#

3.1 Tanım#

Compression = bir token'ın ortalama kaç byte temsil ettiği.
compression_ratio = total_bytes / total_tokens
Byte = UTF-8 byte count.

3.2 Hesaplama#

text = "İstanbul Boğazı'nda balıkçı tekneleri sallanıyor." bytes_count = len(text.encode("utf-8")) tokens = tokenizer.tokenize(text) ratio = bytes_count / len(tokens) print(f"Bytes per token: {ratio:.2f}")

3.3 Yüksek mi düşük mü iyi?#

Yüksek compression iyi (daha çok byte tek token'a sığar). Ama:
  • Çok yüksek (>5 bytes/token) — vocab gereksiz büyük, sub-optimal merge
  • Çok düşük (<2 bytes/token) — vocab küçük, char-level'a yakın
  • Sweet spot: 3.5-5 bytes/token Türkçe için

3.4 Information theory bağlantısı#

Shannon entropy: ideal compression theoretical lower bound.
Türkçe için Shannon entropy ~1.5-2 bit/char (estimated, Charikar 2002). UTF-8 ile Türkçe ~1.2 byte/char. Eğer tokenizer 4 bytes/token compression sağlıyorsa, her token ortalama 3.3 char temsil ediyor.

3.5 Karşılaştırma (Türkçe 1 MB metin)#

TokenizerBytes/TokenTokens for 1 MB
Byte-level (no BPE)1.01,048,576
Char-level1.2~870K
GPT-2 r50k2.3~456K
GPT-4 cl100k3.0~350K
GPT-4o o200k3.5~300K
TurkBPE 32K4.2~250K
İdeal compression vocab budget'a göre değişir — 32K vocab için 4-5 bytes/token, 200K için 3-4.

3.6 Compression vs fertility ilişkisi#

İki metrik inversely correlated:
  • Yüksek compression → düşük fertility (genelde)
  • Aynı şeyi farklı boyutlardan ölçüyorlar
Fark:
  • Fertility: linguistic unit (word) bazlı
  • Compression: information unit (byte) bazlı
İngilizce-Türkçe karşılaştırması yaparken compression daha fair (kelime tanımı dile bağlı, byte değil).

4. OOV Rate — Out-of-Vocabulary Ölçümü#

4.1 Klasik OOV (vocab kelime-bazlı)#

Vocab'da olmayan whole words oranı.
Byte-level BPE'de aslında klassic OOV YOK (her byte zaten vocab'da). Ama:

4.2 Subword OOV#

Kelimenin kaç parçaya bölündüğü:
  • 1 parça: 'in-vocab'
  • 2+ parça: 'split'
  • Word-level OOV rate = % words split into 2+ tokens
def oov_rate(text, tokenizer): words = text.split() split_words = 0 for w in words: if len(tokenizer.tokenize(w)) > 1: split_words += 1 return split_words / len(words)

4.3 Türkçe OOV gerçek#

TokenizerTürkçe OOV rate (Wikipedia)
GPT-2 r50k%75 (very high)
GPT-4 cl100k%55
GPT-4o o200k%45
Llama-3 128K%48
TurkBPE 32K%25
BERT-base-Turkish 32K%30
Low OOV = vocab corpus'a iyi tunelenmiş.

4.4 Hard OOV vs soft OOV#

  • Hard OOV: `` token (tokenizer'da byte fallback yoksa). Modern modern model'lerde nadir.
  • Soft OOV: word birkaç subword'e bölünüyor. Yaygın, kabul edilebilir.
Byte-level BPE'de hard OOV = 0 (always). Soft OOV = fertility - 1.

4.5 OOV vs fertility ilişkisi#

fertility ≥ 1 + (OOV rate × avg_subwords_per_oov)
10K word corpus, OOV rate %30, OOV başına ortalama 2 subword:
fertility ≥ 1 + 0.30 × 2 = 1.6
Empirical fertility 1.6'ya çok yakın olacak.

4.6 Domain-specific OOV#

Legal corpus'ta general tokenizer kullanırsan OOV %60+. Custom legal tokenizer eğitmek %15-20'ye düşürür. Domain trade-off.

5. Bits-Per-Character (BPC) — Information-Theoretic Standard#

5.1 Tanım#

BPC = ortalama bir karakteri encode etmek için kaç bit gerekiyor.
Language model perspektifinden:
BPC = -log2(P(text)) / len(text_in_chars)
P(text) = language model'in text'e atadığı olasılık.

5.2 Tokenizer-aware BPC#

Language model token-level çalışıyor:
P(text) = ∏ over tokens t: P(t | history) -log2(P(text)) = Σ -log2(P(t | history)) BPC = total_token_logprob_loss / total_chars

5.3 Niye karakter bazlı normalize ediliyor#

Fertility'den bağımsız comparison için. İki tokenizer aynı text'i farklı token sayısına böler, ama char sayısı sabit. Yani:
  • Tokenizer A: 100 token, total loss 50
  • Tokenizer B: 50 token, total loss 30
  • Char sayısı: 200 her ikisi için
BPC_A = 50/200 = 0.25, BPC_B = 30/200 = 0.15. Tokenizer B daha iyi compression sağlıyor.

5.4 Production model BPC değerleri#

GPT-4 / Llama-3 İngilizce BPC ~0.65-0.75 (state of art). Türkçe BPC ~0.85-1.0 (multilingual model'lerde). Türkçe-tuned model BPC ~0.75 (TR-only fine-tune).
Düşük BPC = model dili daha iyi modeliyor.

5.5 Tokenizer'ın BPC'ye etkisi#

Fertility yüksek → her token daha az bilgi taşır → context'te daha fazla token'a ihtiyaç → loss yüksek → BPC yüksek.
Düşük fertility = düşük BPC (genelde, dolaylı correlation).

5.6 BPC'yi hesaplamak#

import torch import torch.nn.functional as F def compute_bpc(model, tokenizer, text): tokens = tokenizer.encode(text, return_tensors="pt") with torch.no_grad(): outputs = model(tokens, labels=tokens) nll = outputs.loss.item() * (tokens.size(1) - 1) # total NLL total_chars = len(text) bpc = nll / total_chars / math.log(2) # nats → bits return bpc

5.7 BPC vs Perplexity#

Iki ölçüm aynı bilgiyi farklı normalize eder:
  • Perplexity = exp(loss_per_token) — token-bazlı, fertility'ye duyarlı
  • BPC = loss_per_char / log(2) — char-bazlı, fertility-agnostic
Tokenizer karşılaştırması için BPC tercih edilir (fair across tokenizers).

6. Vocab Coverage — Kapsam Analizi#

6.1 Domain coverage#

Tokenizer corpus'unda olmayan domain'de fertility patlar. Test protokol:
test_corpora = { "wikipedia": load_wiki_tr(), "news": load_news_tr(), "legal": load_legal_tr(), # Yargıtay decisions "medical": load_medical_tr(), # ilaç prospektüsleri "code": load_code_comments_tr(), "social": load_twitter_tr(), } for domain, corpus in test_corpora.items(): print(f"{domain}: fertility={fertility(corpus, tokenizer):.2f}")

6.2 Sample analiz (gerçek)#

TurkBPE 32K (Wikipedia + News'da eğitilmiş):
  • Wikipedia: 1.20
  • News: 1.18
  • Legal: 2.10 (out of domain)
  • Medical: 2.35
  • Code: 2.80
  • Social: 1.65

6.3 Çözüm: domain-augmented training#

Legal/medical için custom tokenizer veya base + domain'i mix et corpus'a.

6.4 Character coverage#

def char_coverage(text, tokenizer): encoded = tokenizer.encode(text) decoded = tokenizer.decode(encoded) matches = sum(1 for a, b in zip(text, decoded) if a == b) return matches / len(text)
Byte-level BPE: %100. Char-level vocab eksikse <%100.

6.5 Multilingual coverage#

Aynı tokenizer farklı dillerde:
DilLlama-3 fertility
English1.05
Spanish1.20
German1.35
Turkish1.47
Russian1.55
Arabic1.70
Chinese1.10 (per character)
Japanese1.45
Korean1.80
İngilizce baseline, diğer diller 'token vergisi' öder.

7. Perplexity'ye Etki — Tokenizer ↔ LM Quality#

7.1 Aynı model, farklı tokenizer#

Teoride mümkün değil — model embedding katmanı tokenizer'a bağlı. Ama eşit budgetli model karşılaştırması mümkün:
  • Tokenizer A: 32K vocab → embedding 32K × 4096 = 131M params
  • Tokenizer B: 100K vocab → embedding 100K × 4096 = 409M params
Eşit total param budget'ında, vocab büyüklük transformer derinliğinden ödün verir.

7.2 Empirical findings (Llama-3 paper)#

Llama-3 32K vs 128K vocab eşit total params (8B):
  • 32K: PPL 6.8
  • 128K: PPL 6.2 (-9%)
Büyük vocab → daha az fertility → modelin daha az 'parçaları birleştirme' işi → daha iyi PPL.

7.3 Vocab vs depth trade-off#

  • Küçük vocab + derin model: morfolojik dilleri öğrenir, vocabüleri 'ararken' parametre harcar
  • Büyük vocab + sığ model: kelimeleri ezberler, reasoning sığ
Sweet spot: vocab proportional to log(corpus_size).

7.4 Türkçe için optimum (theoretical)#

100B token Türkçe corpus için ideal vocab ~50K-100K. 32K muhtemelen sub-optimal (Trendyol-LLM gibi).
Perplexity = 2^(BPC × chars_per_token) = 2^(BPC × compression_ratio)
Iki tokenizer karşılaştırması — tokenizer A daha düşük fertility → daha düşük PPL (vocab eşitse).

8. Downstream Task Impact — Gerçek Dünya#

8.1 NER (Named Entity Recognition) Türkçe#

WikiAnn TR test set:
TokenizerModelF1
mBERT (110K multilingual)BERT-base0.881
BERT-base-Turkish (32K WP)BERT-base0.912
XLM-R Large (250K)RoBERTa-large0.920
TurkBPE 32K + BERT-base re-trainBERT-base0.918
Tokenizer kalitesi NER'da %3-4 F1 farkı yaratıyor. Entity boundary fertility'ye duyarlı.

8.2 Sentiment classification#

Türkçe IMDB-style movie reviews:
TokenizerAccuracy
mBERT0.872
BERT-base-Turkish0.895
TurkBPE 32K0.901
Fark daha küçük çünkü classification context-level info kullanıyor, fine-grained tokenization etkisi azalıyor.

8.3 Question Answering (Türkçe SQuAD)#

TokenizerEMF1
mBERT0.610.78
BERT-base-Turkish0.650.81
TurkBPE 32K0.660.82

8.4 Math reasoning#

4-digit arithmetic GPT-style:
  • Per-digit tokenization (cl100k): %85 accuracy
  • Group-of-3 (yeni o200k): %91 accuracy
  • Per-char: %94 accuracy
Number tokenization kritik. Modül 6.6'da detay.

8.5 Code generation#

Python code, BPE-trained on Python corpus:
  • Python-specific tokenizer: %X higher HumanEval pass rate
  • General tokenizer: indent + bracket fertility yüksek → less efficient

8.6 Üzerinden geçen pattern#

Downstream task tokenizer-aware design avantajı vs disavantajı:
  • Avantaj: tuned tokenizer task'ı daha iyi yakalar
  • Dezavantaj: pre-trained model'ler genel-amaç tokenizer kullanır, swap olunmaz

9. Cross-Lingual Fertility — Adil Karşılaştırma#

9.1 Petrov 2023: 'Tokenizer Unfairness'#

Aynı içerikteki cümle farklı dillerde çok farklı token sayısı alır.
Örnek: 'The quick brown fox' İngilizce 4-5 token. Türkçe çevirisi 'Hızlı kahverengi tilki' ~8-10 token (2x).
Sonuç: aynı API call'da Türkçe kullanan kullanıcı 2x maliyet öder. Bu structural unfairness.

9.2 Adil karşılaştırma protokolü#

FLORES-200 dataset: 200 dilde paralel cümleler. Sample fertility comparison:
from datasets import load_dataset ds = load_dataset("facebook/flores", "tur_Latn") for sentence in ds["devtest"]: en_text = sentence["sentence_eng_Latn"] tr_text = sentence["sentence_tur_Latn"] en_tokens = tokenizer.tokenize(en_text) tr_tokens = tokenizer.tokenize(tr_text) ratio = len(tr_tokens) / len(en_tokens) print(f"TR/EN ratio: {ratio:.2f}")

9.3 GPT-4o tokenizer FLORES ratios#

Dil çifti (TR/X)Ratio
TR/EN1.80
TR/ES1.65
TR/DE1.45
TR/AR0.95
TR/ZH1.20
TR/RU1.50
TR/HI1.10
TR aynı bilgi için İngilizce'den 1.8x daha çok token. Türkçe LLM kullanıcısının ödediği vergi.

9.4 Niye var#

  • Pre-training corpus İngilizce-dominant (%60+)
  • Tokenizer training corpus İngilizce-dominant → İngilizce'ye iyi tune
  • Türkçe under-represented → fertility yüksek

9.5 Çözüm yolları#

  1. Balanced corpus: per-language quota
  2. Bigger vocab: o200k → o500k
  3. Per-language adapter: dile özel embedding
  4. TR-only tokenizer fine-tune: tamamen Türkçe-tuned (downstream re-train gerekir)

9.6 Adalet metriği#

Gini coefficient over languages' fertilities → tokenizer adalet ölçüsü. Llama-3 Gini ~0.25 (orta-fair). T5 Gini ~0.18 (daha fair, multilingual native).

10. Token Efficiency Rate — Semantik Bilgi/Token#

10.1 Tanım#

Her token'ın semantic content yoğunluğu.

10.2 Lossy proxy: information per token#

bits_per_token = -log2(P(token | history))
Per-token entropy = LM-uncertainty for that token.

10.3 Yüksek yoğunluk vs düşük yoğunluk tokenlar#

  • High entropy (rare/surprising): 'electromagnetic' tek token
  • Low entropy (predictable): 'the', ' the', '##in' (continuation)
İyi tokenizer bilgi yoğunluğu yüksek tokenları vocab'a alır.

10.4 Aynı bilgi farklı tokenizer'larda#

'İstanbul Türkiye'nin en büyük şehridir.':
  • 7 kelime, 12 token (GPT-4o)
  • Information content: ~25 bits (English LM proxy)
  • Bits/token: ~2.1
Türkçe-tuned tokenizer: 9 token, bits/token ~2.8 (daha yüksek yoğunluk).

10.5 Efficiency vs compression trade-off#

  • Çok büyük vocab → her token rare → yüksek entropy → ama parameter cost yüksek
  • Çok küçük vocab → her token frequent → düşük entropy → fertility yüksek
Optimum: information-theoretic sweet spot (Bostrom & Durrett 2020).

11. A/B Testing — Tokenizer Karşılaştırma Protokolü#

11.1 Fair comparison challenges#

İki tokenizer'ı aynı koşullarda test etmek zor:
  • Model embedding tokenizer-specific
  • Pre-training corpus farklı olabilir
  • Hyperparameter optimization tokenizer'a bağlı

11.2 Controlled study tasarımı#

  1. Same architecture: aynı transformer (GPT-2 small)
  2. Same total params: vocab × dim sabit
  3. Same training corpus: identical pre-training data
  4. Same training steps: aynı compute
  5. Same downstream eval: identical test sets
Değişen: sadece tokenizer.

11.3 Metric panel#

  • Pre-training: BPC, validation loss
  • Downstream: 5-10 task average
  • Efficiency: throughput, memory
  • Coverage: domain analysis

11.4 Statistical significance#

Multiple runs (n=5+) different seeds. Bootstrap confidence intervals. t-test or Mann-Whitney U.

11.5 Production A/B testing#

Live traffic split: %50 tokenizer A, %50 tokenizer B (eğer iki versiyon model varsa). Metrik:
  • Latency (p50, p99)
  • User satisfaction (thumbs up rate)
  • Conversation length distribution
  • Cost per conversation
2 hafta minimum, statistical power için.

11.6 Capstone evaluation framework#

Modül 6.10 capstone TurkTokenizer-tr için A/B testing setup:
  1. Baseline: Llama-3 default tokenizer
  2. Variant: TurkBPE 32K (Türkçe-tuned)
  3. Metrics: fertility, BPC, downstream NER+QA+sentiment
  4. Output: detaylı report

12. Tokenization Tax — Türkçe Maliyet Kanıtı#

12.1 Tax kavramı#

'Vergi' = İngilizce'ye göre extra ödediğin token. Cost-of-non-being-English.

12.2 Hesaplama#

tax_rate = (TR_tokens / EN_tokens) - 1
GPT-4o tax for Turkish: 0.80 (Türkçe %80 daha pahalı).

12.3 Yıllık tax (gerçek hesap)#

Türkçe LLM SaaS, aylık 10M API call, ort. 500 token/call:
  • TR cost: 10M × 500 × 2.5/1M=2.5/1M = 12,500/ay = $150K/yıl
  • EN equivalent: 10M × 280 × 2.5/1M=2.5/1M = 7,000/ay = $84K/yıl
  • Tax: $66K/yıl
Bu rakam direkt Türkçe'nin tokenization underrepresentation'ı yüzünden.

12.4 Tax azaltma stratejileri#

  1. Better tokenizer: o200k Türkçe %20 indirim (geçtiğimiz nesil cl100k'dan)
  2. TR-tuned model: Trendyol-LLM tax 0.20 civarında
  3. Self-host: kendi modelin Türkçe-tuned vocab → tax sıfır (ama infra cost var)
  4. Hybrid routing: simple queries TR-tuned local, complex queries OpenAI

12.5 Long-term outlook#

Multimodal modelin yayılması ile tax düşüyor:
  • o200k → o500k (önümüzdeki 2 yıl)
  • Per-language vocab quota tasarımları artıyor
  • Open-source TR modellerin yetkinliği artıyor
2026'da Türkçe tax 0.80'den 0.30'a düşmesi bekleniyor.

13. Çoklu Metrik Dashboard — Capstone Evaluation#

13.1 Standart evaluation script#

def evaluate_tokenizer(tokenizer, test_corpus, languages=None): metrics = {} # 1. Fertility words = sum(len(line.split()) for line in test_corpus) tokens = sum(len(tokenizer.tokenize(line)) for line in test_corpus) metrics["fertility"] = tokens / words # 2. Compression bytes_total = sum(len(line.encode("utf-8")) for line in test_corpus) metrics["bytes_per_token"] = bytes_total / tokens # 3. OOV rate split_count = sum( 1 for line in test_corpus for word in line.split() if len(tokenizer.tokenize(word)) > 1 ) metrics["oov_rate"] = split_count / words # 4. Vocab utilization used_tokens = set() for line in test_corpus: used_tokens.update(tokenizer.encode(line)) metrics["vocab_used"] = len(used_tokens) / tokenizer.vocab_size # 5. Avg token length metrics["avg_token_length_bytes"] = bytes_total / tokens return metrics

13.2 Comparison table#

def compare_tokenizers(tokenizers_dict, test_corpora_dict): results = {} for tname, tok in tokenizers_dict.items(): for dname, corpus in test_corpora_dict.items(): key = f"{tname}_{dname}" results[key] = evaluate_tokenizer(tok, corpus) return pd.DataFrame(results).T

13.3 Visualizing#

  • Heatmap: tokenizer × domain fertility
  • Bar chart: cross-lingual fertility distribution
  • Distribution: per-word fertility histogram (mean, percentiles)
  • Scatter: vocab size vs fertility curve

13.4 Reporting template#

Capstone Modül 6.10'da publish için:
  • Executive summary (3 satır)
  • Method (training corpus, hyperparams)
  • Metrics (fertility, BPC, OOV, downstream)
  • Comparison (baseline + 2-3 alternative)
  • Limitations (domain coverage, multilingual)
  • Conclusion

14. Edge Cases — Outlier Domains#

14.1 Code#

Python kod corpus'unda general TR tokenizer fertility 3-4x. Çözüm: code-augmented training veya code-specific tokenizer.

14.2 Math#

LaTeX equations: \frac{a}{b}, \sum_{i=1}^n — fertility çok yüksek. Math-aware tokenizer (MathBERT) özel.

14.3 Emoji + Unicode#

Flag emojis 8 byte, çoğu vocab'da yok → 8 byte token. Modern o200k çok yaygın emojiler için single token.

14.4 Mixed-language (code-switching)#

'Yarın Mehmet'le toplantımız var, please confirm.' → mixed TR/EN. Tokenizer her dilde alt-optimal. Workaround: training corpus'a code-switched örnekler ekle.

14.5 URLs / emails#

'https://sukruyusufkaya.com/learn' — fertility yüksek (8-12 token). Workaround: URL preprocessing — `` placeholder.

14.6 Numbers#

Large numbers (2026-05-12): GPT-2'de tutarsız tokenize. Modern modellerde \p{N}{1,3} regex.

14.7 Reserved tokens#

Bazı user input vocab special token'lara çakışabilir. Filter veya escape.

14.8 Whitespace pre-tokenization conflicts#

Mistral [INST] trailing space ihmal → token boundary kayar. Modül 6.7.

Egzersizler#

Egzersiz 1#

Türkçe Wikipedia 1 MB metin için: GPT-4o o200k vs Llama-3 fertility hesapla. Hangi metric daha düşük? Niye?

Egzersiz 2#

Fertility 1.2 ama OOV rate %50 — bu mümkün mü? Açıkla.

Egzersiz 3#

BPC 0.95 ve fertility 1.8 olan tokenizer A vs BPC 0.85 ve fertility 1.5 olan tokenizer B. Hangisi daha iyi? Hangi metric daha güvenilir?

Egzersiz 4#

Türkçe → İngilizce çeviri: aynı içerik 100 cümle. FLORES dataset ile fertility ratio hesapla. GPT-4o için ratio kaç?

Egzersiz 5#

Vocab size 32K → 64K çıkardın. Fertility değişimi nasıl? Marjinal fayda?

Egzersiz 6#

Legal domain corpus'unda general TR tokenizer fertility 2.1. Custom legal tokenizer ne kadar düşürür? Custom training trade-off'u?

Egzersiz 7#

A/B testing tokenizer için minimum sample size nasıl hesaplanır? Power analysis basit yaklaşım.

Egzersiz 8#

Tokenization tax kavramı: 1M call/ay Türkçe LLM SaaS yıllık extra cost ne? Optimize stratejilerini sırala.

Egzersiz 9#

Türkçe morfolojik fertility nasıl ölçülür? Zemberek/Morfessor entegrasyonu adımları.

Egzersiz 10#

ByteLevel BPE'de OOV rate hesabı için 'OOV' tanımı ne? Klasik tanım uygun mu?
✅ Ders 6.9 Özeti — Bilimsel Tokenizer Değerlendirmesi
Tokenizer kalitesi çok-boyutlu: fertility (token/word), compression (bytes/token), OOV rate, BPC, vocab coverage, downstream task accuracy, cross-lingual fairness. Türkçe tokenization tax İngilizce'ye göre %80 — gerçek ve önemli. Modern modellerde o200k → Llama-3 → custom TR-tuned ile bu vergi %30-40 düşer. A/B testing protokolü: same architecture + same corpus + 5+ seeds + statistical significance. Capstone evaluation framework çoklu metrik dashboard ile reproducible. Modül 6.10'da bunu kullanarak TurkTokenizer-tr capstone projesini bilimsel olarak ölçeceğiz.

Sıradaki Ders: Capstone TurkTokenizer-tr#

Modül 6.10'da: 32K vocab Türkçe BPE tokenizer'ı sıfırdan eğit, HuggingFace Hub'a yayınla. Corpus curation (Wikipedia + OSCAR + news + literature + code), cleaning pipeline, training, evaluation (6.9 framework), model card, license decision, production integration. Müfredatın eseri.

Frequently Asked Questions

For cross-lingual comparison, **compression (bytes/token)** is fairer — word definition is language-dependent, bytes aren't. For within-language, both OK, but compression shows slightly stronger correlation with LM downstream impact. Petrov 2023 paper uses compression-based tax calculations.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

Related Content