kaanilker commited on
Commit
0656f08
·
verified ·
1 Parent(s): 4100aa0

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +509 -3
README.md CHANGED
@@ -1,3 +1,509 @@
1
- ---
2
- license: gpl-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mini Turkish Tokenizer 🔤
2
+
3
+ **Türkçe dil modelleri için optimize edilmiş, kompakt BPE tokenizer**
4
+
5
+ ---
6
+
7
+ ## 📌 Özet
8
+
9
+ 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.
10
+
11
+ ### Temel Özellikler
12
+
13
+ - **Vocab Size:** 5,610 tokens (kompakt ve verimli)
14
+ - **Dil:** Türkçe (🇹🇷)
15
+ - **Algoritma:** BPE (Byte Pair Encoding)
16
+ - **Eğitim Verisi:** CulturaX Turkish (735,991 dokümandan)
17
+ - **Format:** HuggingFace PreTrainedTokenizerFast
18
+ - **Lisans:** GNU General Public License v2.0 (açık kaynak)
19
+
20
+ ---
21
+
22
+ ## 🚀 Hızlı Başlangıç
23
+
24
+ ### Kurulum
25
+
26
+ ```bash
27
+ pip install transformers
28
+ ```
29
+
30
+ ### Temel Kullanım
31
+
32
+ ```python
33
+ from transformers import AutoTokenizer
34
+
35
+ # Tokenizer'ı yükle
36
+ tokenizer = AutoTokenizer.from_pretrained(
37
+ "kaanilker/mini-turkish-tokenizer"
38
+ )
39
+
40
+ # Metni tokenize et
41
+ text = "Merhaba, ben yapay zekayım!"
42
+ tokens = tokenizer.encode(text)
43
+
44
+ print(tokens)
45
+ # Output: [59, 83, 96, 86, 79, 80, ...]
46
+ ```
47
+
48
+ ### Decode Etme
49
+
50
+ ```python
51
+ # Token'ları metne geri çevir
52
+ decoded = tokenizer.decode(tokens)
53
+ print(decoded)
54
+ # Output: "Merhaba, ben yapay zekayım!"
55
+ ```
56
+
57
+ ### Batch Processing
58
+
59
+ ```python
60
+ texts = [
61
+ "Merhaba dünya",
62
+ "Türkçe NLP",
63
+ "Yapay zeka harika"
64
+ ]
65
+
66
+ # Batch tokenize
67
+ encoded = tokenizer(
68
+ texts,
69
+ padding=True,
70
+ truncation=True,
71
+ max_length=100,
72
+ return_tensors="pt"
73
+ )
74
+
75
+ print(encoded['input_ids'].shape)
76
+ # Output: torch.Size([3, 100])
77
+ ```
78
+
79
+ ---
80
+
81
+ ## 📊 Teknik Detaylar
82
+
83
+ ### Special Tokens
84
+
85
+ | Token | ID | Açıklama |
86
+ |---|---|---|
87
+ | `<pad>` | 0 | Padding (doldurma) |
88
+ | `<unk>` | 1 | Unknown (bilinmeyen) |
89
+ | `<bos>` | 2 | Beginning of Sequence (başlangıç) |
90
+ | `<eos>` | 3 | End of Sequence (bitiş) |
91
+
92
+ ### Eğitim Konfigürasyonu
93
+
94
+ ```python
95
+ vocab_size = 5610
96
+ min_frequency = 2
97
+ algorithm = "BPE"
98
+ pre_tokenizer = "Whitespace + Punctuation"
99
+ training_data = "CulturaX Turkish (735,991 documents)"
100
+ train_test_split = "90/10"
101
+ ```
102
+
103
+ ### Tokenizasyon Özellikleri
104
+
105
+ - **Ortalama Token Sayısı:** 8-12 token per sentence
106
+ - **Coverage (CulturaX):** ~98.5%
107
+ - **Encoding Hızı:** ~10,000 token/sec
108
+ - **Bellek Footprint:** 5-10 MB
109
+
110
+ ---
111
+
112
+ ## 💻 İleri Kullanım
113
+
114
+ ### Attention Mask İle
115
+
116
+ ```python
117
+ from transformers import AutoTokenizer
118
+ import torch
119
+
120
+ tokenizer = AutoTokenizer.from_pretrained(
121
+ "kaanilker/mini-turkish-tokenizer"
122
+ )
123
+
124
+ text = "Kısa"
125
+ encoded = tokenizer(
126
+ text,
127
+ padding="max_length",
128
+ max_length=10,
129
+ return_tensors="pt"
130
+ )
131
+
132
+ print(encoded['input_ids'])
133
+ # [1234, 0, 0, 0, 0, 0, 0, 0, 0, 0]
134
+
135
+ print(encoded['attention_mask'])
136
+ # [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
137
+ ```
138
+
139
+ ### Model Eğitmede Kullanım
140
+
141
+ ```python
142
+ from transformers import TrainingArguments, Trainer
143
+ from transformers import LlamaForCausalLM, AutoTokenizer
144
+
145
+ model = LlamaForCausalLM.from_pretrained("your-model")
146
+ tokenizer = AutoTokenizer.from_pretrained(
147
+ "kaanilker/mini-turkish-tokenizer"
148
+ )
149
+
150
+ training_args = TrainingArguments(
151
+ output_dir="./results",
152
+ num_train_epochs=3,
153
+ per_device_train_batch_size=32,
154
+ learning_rate=5e-4,
155
+ )
156
+
157
+ trainer = Trainer(
158
+ model=model,
159
+ args=training_args,
160
+ train_dataset=train_data,
161
+ tokenizer=tokenizer,
162
+ )
163
+
164
+ trainer.train()
165
+ ```
166
+
167
+ ### Fine-tuning İçin
168
+
169
+ ```python
170
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
171
+
172
+ tokenizer = AutoTokenizer.from_pretrained(
173
+ "kaanilker/mini-turkish-tokenizer"
174
+ )
175
+
176
+ model = AutoModelForSequenceClassification.from_pretrained(
177
+ "dbmdz/bert-base-turkish-cased"
178
+ )
179
+
180
+ # Türkçe metinleri tokenize et
181
+ inputs = tokenizer(
182
+ ["Bu çok güzel!", "Berbat!"],
183
+ truncation=True,
184
+ max_length=512,
185
+ return_tensors="pt"
186
+ )
187
+
188
+ outputs = model(**inputs)
189
+ ```
190
+
191
+ ---
192
+
193
+ ## 🎯 Kullanım Senaryoları
194
+
195
+ ### 1. Türkçe Metin Sınıflandırması
196
+ ```python
197
+ from transformers import pipeline
198
+
199
+ classifier = pipeline(
200
+ "text-classification",
201
+ model="dbmdz/bert-base-turkish-cased",
202
+ tokenizer=tokenizer
203
+ )
204
+
205
+ result = classifier("Bu ürün harika!")
206
+ print(result)
207
+ ```
208
+
209
+ ### 2. Türkçe Metin Üretimi
210
+ ```python
211
+ from transformers import pipeline
212
+
213
+ generator = pipeline(
214
+ "text-generation",
215
+ model="your-turkish-llm",
216
+ tokenizer=tokenizer
217
+ )
218
+
219
+ generated = generator("Türkiye'nin başkenti", max_length=50)
220
+ print(generated)
221
+ ```
222
+
223
+ ### 3. Türkçe Soru-Cevap
224
+ ```python
225
+ from transformers import pipeline
226
+
227
+ qa = pipeline(
228
+ "question-answering",
229
+ model="your-qa-model",
230
+ tokenizer=tokenizer
231
+ )
232
+
233
+ result = qa(
234
+ question="Türkiye'nin başkenti neresidir?",
235
+ context="Türkiye'nin başkenti Ankara'dır."
236
+ )
237
+ print(result)
238
+ ```
239
+
240
+ ### 4. Türkçe Sentiment Analizi
241
+ ```python
242
+ tokenizer = AutoTokenizer.from_pretrained(
243
+ "your-username/mini-turkish-tokenizer"
244
+ )
245
+
246
+ texts = [
247
+ "Çok güzel bir ürün!",
248
+ "Berbat kalite",
249
+ "Fena değil"
250
+ ]
251
+
252
+ for text in texts:
253
+ tokens = tokenizer.encode(text)
254
+ print(f"{text} → {len(tokens)} tokens")
255
+ ```
256
+
257
+ ---
258
+
259
+ ## 📋 Teknik Özellikler
260
+
261
+ ### Vocab Dağılımı
262
+
263
+ ```
264
+ Toplam Tokens: 5,610
265
+
266
+ Kategori Dağılımı:
267
+ ├── Türkçe Kelimeler: ~3,366 (60%)
268
+ ├── Subword Pieces: ~2,200 (39%)
269
+ ├── Special Tokens: 4 (1%)
270
+ └── Diğer: ~40 (1%)
271
+ ```
272
+
273
+ ### Eğitim Verileri
274
+
275
+ - **Dataset:** CulturaX Turkish
276
+ - **Toplam Dokümandan:** 735,991
277
+ - **Toplam Token:** 500M
278
+ - **Train/Val Split:** 90/10
279
+ - **Min Frequency:** 2 (en az 2 kez görülmüş kelimeler)
280
+
281
+ ---
282
+
283
+ ## 🔧 Kurulum & Bağımlılıklar
284
+
285
+ ### Gerekli Paketler
286
+
287
+ ```bash
288
+ # Temel
289
+ pip install transformers>=4.30.0
290
+ pip install datasets>=2.0.0
291
+
292
+ # İsteğe bağlı (örnek kodlar için)
293
+ pip install torch>=1.9.0
294
+ pip install pytorch-lightning>=1.5.0
295
+ ```
296
+
297
+ ### Versiyonlar
298
+
299
+ ```
300
+ Python: 3.8+
301
+ Transformers: 4.30+
302
+ Datasets: 2.0+
303
+ Torch: 1.9+
304
+ ```
305
+
306
+ ---
307
+
308
+ ## 📚 Örnekler
309
+
310
+ ### Örnek 1: Temel Tokenizasyon
311
+
312
+ ```python
313
+ from transformers import AutoTokenizer
314
+
315
+ tokenizer = AutoTokenizer.from_pretrained(
316
+ "your-username/mini-turkish-tokenizer"
317
+ )
318
+
319
+ # Basit cümle
320
+ text = "Günaydın, nasılsın?"
321
+ tokens = tokenizer.encode(text)
322
+ print(f"Tokens: {tokens}")
323
+ print(f"Token Sayısı: {len(tokens)}")
324
+
325
+ # Decode
326
+ decoded = tokenizer.decode(tokens)
327
+ print(f"Decoded: {decoded}")
328
+ ```
329
+
330
+ **Output:**
331
+ ```
332
+ Tokens: [59, 83, 96, ...]
333
+ Token Sayısı: 5
334
+ Decoded: Günaydın, nasılsın?
335
+ ```
336
+
337
+ ### Örnek 2: Batch Tokenizasyon
338
+
339
+ ```python
340
+ texts = [
341
+ "Merhaba dünya",
342
+ "Türkçe NLP harika",
343
+ "Açık kaynak yazılım"
344
+ ]
345
+
346
+ batch = tokenizer(
347
+ texts,
348
+ padding=True,
349
+ truncation=True,
350
+ max_length=20,
351
+ return_tensors="pt"
352
+ )
353
+
354
+ print(batch['input_ids'].shape)
355
+ # torch.Size([3, 20])
356
+ ```
357
+
358
+ ### Örnek 3: Dilbilimsel Analiz
359
+
360
+ ```python
361
+ # Kelime parçalanması
362
+ text = "Üniversitelerimizde"
363
+ tokens = tokenizer.tokenize(text)
364
+ print(f"Parçalar: {tokens}")
365
+ # Parçalar: ['Üniversite', 'leri', 'mizde']
366
+
367
+ # Token ID'leri
368
+ ids = tokenizer.convert_tokens_to_ids(tokens)
369
+ print(f"IDs: {ids}")
370
+ ```
371
+
372
+ ---
373
+
374
+ ## ⚠️ Sınırlamalar
375
+
376
+ ### Bilinçli Kısıtlamalar
377
+
378
+ 1. **Vocab Size:** 5,610 (küçük ama verimli)
379
+ - ✅ Hızlı tokenizasyon
380
+ - ❌ Nadir kelimeleri parçalayabilir
381
+
382
+ 2. **Türkçeye Özel:** Sadece Türkçe için optimize
383
+ - ✅ Türkçe için en iyi
384
+ - ❌ İngilizce vb. dillerle sorun olabilir
385
+
386
+ 3. **CulturaX Bias:** Belirli alanlara biased olabilir
387
+ - ✅ Haber, sosyal medya vb. iyi
388
+ - ❌ Teknik jargon eksik olabilir
389
+
390
+ ### Çözümler
391
+
392
+ ```python
393
+ # Eğer UNK token çok görürsen:
394
+ # 1. Vocab'i büyüt
395
+ # 2. Farklı dataset kullan
396
+ # 3. Subword parçalamayı artır
397
+ ```
398
+
399
+ ---
400
+
401
+ ## 🔄 Güncelleme
402
+
403
+
404
+ ### Güncelleme Nasıl Yapılır?
405
+
406
+ ```bash
407
+ # En son sürümü kur
408
+ pip install --upgrade transformers
409
+
410
+ # Tokenizer'ı güncelle
411
+ tokenizer = AutoTokenizer.from_pretrained(
412
+ "your-username/mini-turkish-tokenizer",
413
+ revision="main" # veya v1.1
414
+ )
415
+ ```
416
+
417
+ ---
418
+
419
+ ## 📖 Kaynaklar
420
+
421
+ ### Teorik Kaynaklar
422
+
423
+ - [Byte Pair Encoding](https://en.wikipedia.org/wiki/Byte_pair_encoding)
424
+ - [HuggingFace Tokenizers](https://huggingface.co/docs/tokenizers/)
425
+ - [Transformers Documentation](https://huggingface.co/docs/transformers/)
426
+
427
+ ### Benzer Projeler
428
+
429
+ - [Turkish BERT](https://github.com/dbmdz/bert-models)
430
+ - [Turkish GPT-2](https://huggingface.co/gpt2-turkish)
431
+ - [CulturaX Dataset](https://huggingface.co/datasets/uonlp/CulturaX)
432
+
433
+ ---
434
+
435
+ ## 🤝 Katkı ve İletişim
436
+
437
+ ### Katkı Yapmak
438
+
439
+ ```bash
440
+ git clone https://huggingface.co/kaanilker/mini-turkish-tokenizer
441
+ cd mini-turkish-tokenizer
442
+
443
+ # Değişiklik yap
444
+ git add .
445
+ git commit -m "Improvement: [açıklama]"
446
+ git push
447
+ ```
448
+
449
+ ### Sorun Bildirmek
450
+
451
+ HuggingFace Hub'da "Issues" kısmını kullan veya:
452
+ - GitHub: [repository link]
453
+ - Email: kaanilkernacar2010@gmail.com
454
+
455
+ ---
456
+
457
+ ## 📝 Sitasyon
458
+
459
+ Bu tokenizer'ı bilimsel çalışmalarda kullanıyorsan, lütfen şunu alıntı yap:
460
+
461
+ ```bibtex
462
+ @software{mini_turkish_tokenizer,
463
+ title = {Mini Turkish Tokenizer},
464
+ author = {[Senin Adın]},
465
+ year = {2025},
466
+ url = {https://huggingface.co/your-username/mini-turkish-tokenizer},
467
+ license = {GPL-2.0}
468
+ }
469
+ ```
470
+
471
+ ### APA Format
472
+
473
+ [Kaan İlker Nacar]. (2025). Mini Turkish Tokenizer. HuggingFace Hub. Retrieved from https://huggingface.co/kaanilker/mini-turkish-tokenizer
474
+
475
+ ---
476
+
477
+ ## 📜 Lisans
478
+
479
+ **GNU General Public License v2.0**
480
+
481
+ Bu tokenizer açık kaynak yazılımdır. Özgürce:
482
+ - ✅ Kullanabilir
483
+ - ✅ Değiştirebilir
484
+ - ✅ Dağıtabilir
485
+ - ❌ AMA: Türev eserler de GPL v2.0 olmalı
486
+
487
+ ---
488
+
489
+ ---
490
+
491
+ ## ✨ Teşekkürler
492
+
493
+ - **CulturaX Dataset** - Türkçe veri sağlayan uonlp
494
+ - **HuggingFace** - Tokenizer kütüphanesi
495
+ - **Transformers** - NLP framework
496
+ - **Açık Kaynak Topluluğu** - Destekler ve geri bildirim
497
+
498
+ ---
499
+
500
+ ## 📞 İletişim
501
+
502
+ - 📧 Email: kaanilkernacar2010@gmail.com
503
+ - 🔗 GitHub: https://github.com/kaanilker
504
+ - �� HuggingFace: https://huggingface.co/kaanilker
505
+ ---
506
+
507
+ **Made with ❤️ for Turkish NLP Community**
508
+
509
+ *Son güncelleme: Aralık 2025*