kaanilker's picture
Update README.md
f6eeb77 verified
---
license: gpl-2.0
datasets:
- uonlp/CulturaX
language:
- tr
pipeline_tag: token-classification
tags:
- token
- tokenization
- turkish
- nlp
- llm
- mini
---
# 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
```bash
pip install transformers
```
### Temel Kullanım
```python
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
```python
# Token'ları metne geri çevir
decoded = tokenizer.decode(tokens)
print(decoded)
# Output: "Merhaba, ben yapay zekayım!"
```
### Batch Processing
```python
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
```python
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
```python
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
```python
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
```python
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ı
```python
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
```python
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
```python
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
```python
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
```bash
# 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
```python
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
```python
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
```python
# 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
```python
# 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?
```bash
# 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
- [Byte Pair Encoding](https://en.wikipedia.org/wiki/Byte_pair_encoding)
- [HuggingFace Tokenizers](https://huggingface.co/docs/tokenizers/)
- [Transformers Documentation](https://huggingface.co/docs/transformers/)
### Benzer Projeler
- [Turkish BERT](https://github.com/dbmdz/bert-models)
- [Turkish GPT-2](https://huggingface.co/gpt2-turkish)
- [CulturaX Dataset](https://huggingface.co/datasets/uonlp/CulturaX)
---
## 🤝 Katkı ve İletişim
### Katkı Yapmak
```bash
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:
- Email: kaanilkernacar2010@gmail.com
---
## 📝 Sitasyon
Bu tokenizer'ı bilimsel çalışmalarda kullanıyorsan, lütfen şunu alıntı yap:
```bibtex
@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
- 📧 Email: kaanilkernacar2010@gmail.com
- 🔗 GitHub: https://github.com/kaanilker
- 🤗 HuggingFace: https://huggingface.co/kaanilker
---
**Made with ❤️ for Turkish NLP Community**
*Son güncelleme: Aralık 2025*