Mini Turkish Tokenizer 🔤

Türkçe dil modelleri için optimize edilmiş, kompakt BPE tokenizer


📌 Özet

Mini Turkish Tokenizer, Türkçe NLP görevleri için özel olarak tasarlanmış bir BPE (Byte Pair Encoding) tokenizer'dır. CulturaX Turkish dataset'inin 735,991 dokümanından eğitilerek, Türkçe metinleri verimli bir şekilde tokenlere dönüştürür.

Temel Özellikler

  • Vocab Size: 5,610 tokens (kompakt ve verimli)
  • Dil: Türkçe (🇹🇷)
  • Algoritma: BPE (Byte Pair Encoding)
  • Eğitim Verisi: CulturaX Turkish (735,991 dokümandan)
  • Format: HuggingFace PreTrainedTokenizerFast
  • Lisans: GNU General Public License v2.0 (açık kaynak)

🚀 Hızlı Başlangıç

Kurulum

pip install transformers

Temel Kullanım

from transformers import AutoTokenizer

# Tokenizer'ı yükle
tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

# Metni tokenize et
text = "Merhaba, ben yapay zekayım!"
tokens = tokenizer.encode(text)

print(tokens)
# Output: [59, 83, 96, 86, 79, 80, ...]

Decode Etme

# Token'ları metne geri çevir
decoded = tokenizer.decode(tokens)
print(decoded)
# Output: "Merhaba, ben yapay zekayım!"

Batch Processing

texts = [
    "Merhaba dünya",
    "Türkçe NLP",
    "Yapay zeka harika"
]

# Batch tokenize
encoded = tokenizer(
    texts,
    padding=True,
    truncation=True,
    max_length=100,
    return_tensors="pt"
)

print(encoded['input_ids'].shape)
# Output: torch.Size([3, 100])

📊 Teknik Detaylar

Special Tokens

Token ID Açıklama
<pad> 0 Padding (doldurma)
<unk> 1 Unknown (bilinmeyen)
<bos> 2 Beginning of Sequence (başlangıç)
<eos> 3 End of Sequence (bitiş)

Eğitim Konfigürasyonu

vocab_size = 5610
min_frequency = 2
algorithm = "BPE"
pre_tokenizer = "Whitespace + Punctuation"
training_data = "CulturaX Turkish (735,991 documents)"
train_test_split = "90/10"

Tokenizasyon Özellikleri

  • Ortalama Token Sayısı: 8-12 token per sentence
  • Coverage (CulturaX): ~98.5%
  • Encoding Hızı: ~10,000 token/sec
  • Bellek Footprint: 5-10 MB

💻 İleri Kullanım

Attention Mask İle

from transformers import AutoTokenizer
import torch

tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

text = "Kısa"
encoded = tokenizer(
    text,
    padding="max_length",
    max_length=10,
    return_tensors="pt"
)

print(encoded['input_ids'])
# [1234, 0, 0, 0, 0, 0, 0, 0, 0, 0]

print(encoded['attention_mask'])
# [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Model Eğitmede Kullanım

from transformers import TrainingArguments, Trainer
from transformers import LlamaForCausalLM, AutoTokenizer

model = LlamaForCausalLM.from_pretrained("your-model")
tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=32,
    learning_rate=5e-4,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_data,
    tokenizer=tokenizer,
)

trainer.train()

Fine-tuning İçin

from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

model = AutoModelForSequenceClassification.from_pretrained(
    "dbmdz/bert-base-turkish-cased"
)

# Türkçe metinleri tokenize et
inputs = tokenizer(
    ["Bu çok güzel!", "Berbat!"],
    truncation=True,
    max_length=512,
    return_tensors="pt"
)

outputs = model(**inputs)

🎯 Kullanım Senaryoları

1. Türkçe Metin Sınıflandırması

from transformers import pipeline

classifier = pipeline(
    "text-classification",
    model="dbmdz/bert-base-turkish-cased",
    tokenizer=tokenizer
)

result = classifier("Bu ürün harika!")
print(result)

2. Türkçe Metin Üretimi

from transformers import pipeline

generator = pipeline(
    "text-generation",
    model="your-turkish-llm",
    tokenizer=tokenizer
)

generated = generator("Türkiye'nin başkenti", max_length=50)
print(generated)

3. Türkçe Soru-Cevap

from transformers import pipeline

qa = pipeline(
    "question-answering",
    model="your-qa-model",
    tokenizer=tokenizer
)

result = qa(
    question="Türkiye'nin başkenti neresidir?",
    context="Türkiye'nin başkenti Ankara'dır."
)
print(result)

4. Türkçe Sentiment Analizi

tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

texts = [
    "Çok güzel bir ürün!",
    "Berbat kalite",
    "Fena değil"
]

for text in texts:
    tokens = tokenizer.encode(text)
    print(f"{text}{len(tokens)} tokens")

📋 Teknik Özellikler

Vocab Dağılımı

Toplam Tokens: 5,610

Kategori Dağılımı:
├── Türkçe Kelimeler: ~3,366 (60%)
├── Subword Pieces: ~2,200 (39%)
├── Special Tokens: 4 (1%)
└── Diğer: ~40 (1%)

Eğitim Verileri

  • Dataset: CulturaX Turkish
  • Toplam Dokümandan: 735,991
  • Toplam Token: 500M
  • Train/Val Split: 90/10
  • Min Frequency: 2 (en az 2 kez görülmüş kelimeler)

🔧 Kurulum & Bağımlılıklar

Gerekli Paketler

# Temel
pip install transformers>=4.30.0
pip install datasets>=2.0.0

# İsteğe bağlı (örnek kodlar için)
pip install torch>=1.9.0
pip install pytorch-lightning>=1.5.0

Versiyonlar

Python: 3.8+
Transformers: 4.30+
Datasets: 2.0+
Torch: 1.9+

📚 Örnekler

Örnek 1: Temel Tokenizasyon

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer"
)

# Basit cümle
text = "Günaydın, nasılsın?"
tokens = tokenizer.encode(text)
print(f"Tokens: {tokens}")
print(f"Token Sayısı: {len(tokens)}")

# Decode
decoded = tokenizer.decode(tokens)
print(f"Decoded: {decoded}")

Output:

Tokens: [59, 83, 96, ...]
Token Sayısı: 5
Decoded: Günaydın, nasılsın?

Örnek 2: Batch Tokenizasyon

texts = [
    "Merhaba dünya",
    "Türkçe NLP harika",
    "Açık kaynak yazılım"
]

batch = tokenizer(
    texts,
    padding=True,
    truncation=True,
    max_length=20,
    return_tensors="pt"
)

print(batch['input_ids'].shape)
# torch.Size([3, 20])

Örnek 3: Dilbilimsel Analiz

# Kelime parçalanması
text = "Üniversitelerimizde"
tokens = tokenizer.tokenize(text)
print(f"Parçalar: {tokens}")
# Parçalar: ['Üniversite', 'leri', 'mizde']

# Token ID'leri
ids = tokenizer.convert_tokens_to_ids(tokens)
print(f"IDs: {ids}")

⚠️ Sınırlamalar

Bilinçli Kısıtlamalar

  1. Vocab Size: 5,610 (küçük ama verimli)

    • ✅ Hızlı tokenizasyon
    • ❌ Nadir kelimeleri parçalayabilir
  2. Türkçeye Özel: Sadece Türkçe için optimize

    • ✅ Türkçe için en iyi
    • ❌ İngilizce vb. dillerle sorun olabilir
  3. CulturaX Bias: Belirli alanlara biased olabilir

    • ✅ Haber, sosyal medya vb. iyi
    • ❌ Teknik jargon eksik olabilir

Çözümler

# Eğer UNK token çok görürsen:
# 1. Vocab'i büyüt
# 2. Farklı dataset kullan
# 3. Subword parçalamayı artır

🔄 Güncelleme

Güncelleme Nasıl Yapılır?

# En son sürümü kur
pip install --upgrade transformers

# Tokenizer'ı güncelle
tokenizer = AutoTokenizer.from_pretrained(
    "kaanilker/mini-turkish-tokenizer",
    revision="main"
)

📖 Kaynaklar

Teorik Kaynaklar

Benzer Projeler


🤝 Katkı ve İletişim

Katkı Yapmak

git clone https://huggingface.co/kaanilker/mini-turkish-tokenizer
cd mini-turkish-tokenizer

# Değişiklik yap
git add .
git commit -m "Improvement: [açıklama]"
git push

Sorun Bildirmek

Email'e posta at:


📝 Sitasyon

Bu tokenizer'ı bilimsel çalışmalarda kullanıyorsan, lütfen şunu alıntı yap:

@software{mini_turkish_tokenizer,
  title = {Mini Turkish Tokenizer},
  author = {[Kaan İlker Nacar]},
  year = {2025},
  url = {https://huggingface.co/your-username/mini-turkish-tokenizer},
  license = {GPL-2.0}
}

APA Format

[Kaan İlker Nacar]. (2025). Mini Turkish Tokenizer. HuggingFace Hub. Retrieved from https://huggingface.co/kaanilker/mini-turkish-tokenizer


📜 Lisans

GNU General Public License v2.0

Bu tokenizer açık kaynak yazılımdır. Özgürce:

  • ✅ Kullanabilir
  • ✅ Değiştirebilir
  • ✅ Dağıtabilir
  • ❌ AMA: Türev eserler de GPL v2.0 olmalı


✨ Teşekkürler

  • CulturaX Dataset - Türkçe veri sağlayan uonlp
  • HuggingFace - Tokenizer kütüphanesi
  • Transformers - NLP framework
  • Açık Kaynak Topluluğu - Destekler ve geri bildirim

📞 İletişim


Made with ❤️ for Turkish NLP Community

Son güncelleme: Aralık 2025

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train kaanilker/Mini-Turkish-Tokenizer