ssilistre commited on
Commit
1c1c1f5
·
verified ·
1 Parent(s): a9254be

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +94 -0
README.md ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - tr
5
+ library_name: tokenizers
6
+ tags:
7
+ - tokenizer
8
+ - bpe
9
+ - turkish
10
+ - byte-level
11
+ ---
12
+
13
+ # Türkçe BPE Tokenizer
14
+
15
+ Türkçe metin için sıfırdan eğitilmiş, byte-level BPE tokenizer.
16
+
17
+ ## Neden?
18
+
19
+ Genel amaçlı tokenizer'lar Türkçe'yi verimsiz bölüyor. Türkçe sondan eklemeli bir dil — `ev`, `evler`, `evlerimiz`, `evlerimizden` aynı kökten türüyor. İngilizce ağırlıklı bir sözlük bu ekleri tanımadığı için kelimeleri gereksiz parçalara ayırıyor ve aynı metin çok daha fazla token tutuyor.
20
+
21
+ ## Ölçümler
22
+
23
+ 300 Türkçe metin parçası üzerinde:
24
+
25
+ | Tokenizer | Sözlük | Fertility (token/kelime) |
26
+ |-----------|--------|--------------------------|
27
+ | **Bu tokenizer** | 24.433 | **1.425** |
28
+ | gpt2 | 50.257 | 3.877 |
29
+
30
+ Fertility düşük olması iyidir: aynı metni daha az token ile temsil eder. Bu tokenizer, gpt2'nin yarısı kadar sözlükle Türkçe'de **2,7 kat** daha verimli.
31
+
32
+ Pratik anlamı: aynı bağlam penceresine yaklaşık 2,7 kat daha fazla Türkçe metin sığar, eğitim ve çıkarım maliyeti buna oranla düşer.
33
+
34
+ ### Bölütleme örnekleri
35
+
36
+ ```
37
+ "İnsanların isimlerini hatırlamak, onlara değer verdiğinizi gösterir."
38
+ → 9 token: İnsanların | isimlerini | hatırlamak | , | onlara | değer | verdiğinizi | gösterir | .
39
+
40
+ "Eleştirmek yerine karşımızdakini anlamaya çalışmak ilişkileri güçlendirir."
41
+ → 10 token: Eleştir | mek | yerine | karşımız | dakini | anlamaya | çalışmak | ilişkileri | güçlendirir | .
42
+ ```
43
+
44
+ Sık kullanılan kelimeler tek token; türetilmiş biçimler kök ve ek olarak bölünüyor.
45
+
46
+ ## Teknik Detaylar
47
+
48
+ - **Model:** BPE (Byte-Pair Encoding)
49
+ - **Pre-tokenizer:** ByteLevel (`add_prefix_space=False`)
50
+ - **Decoder:** ByteLevel
51
+ - **Sözlük boyutu:** 24.433
52
+ - **Minimum frekans:** 2
53
+ - **Korpus:** ~1,7 MB Türkçe metin
54
+
55
+ ByteLevel kullanıldığı için **bilinmeyen karakter sorunu yok** — her bayt temsil edilebilir. `ç ğ ı İ ö ş ü` dahil tüm Türkçe karakterler encode/decode döngüsünden kayıpsız geçer (6/6 test başarılı).
56
+
57
+ ### Özel Tokenlar
58
+
59
+ | Token | Amaç |
60
+ |-------|------|
61
+ | `<\|endoftext\|>` | Dizi sonu / başlangıcı |
62
+ | `<\|pad\|>` | Dolgu |
63
+ | `<\|unk\|>` | Bilinmeyen (ByteLevel sayesinde pratikte kullanılmaz) |
64
+ | `<\|im_start\|>` | Sohbet mesajı başlangıcı |
65
+ | `<\|im_end\|>` | Sohbet mesajı sonu |
66
+ | `<\|think\|>` | Akıl yürütme bloğu başlangıcı |
67
+ | `<\|/think\|>` | Akıl yürütme bloğu sonu |
68
+
69
+ ## Kullanım
70
+
71
+ ```python
72
+ from transformers import PreTrainedTokenizerFast
73
+
74
+ tok = PreTrainedTokenizerFast.from_pretrained("ssilistre/turkish-bpe-tokenizer")
75
+
76
+ ids = tok.encode("İnsanların isimlerini hatırlamak önemlidir.")
77
+ print(len(ids), tok.decode(ids))
78
+ ```
79
+
80
+ Doğrudan `tokenizers` kütüphanesiyle:
81
+
82
+ ```python
83
+ from tokenizers import Tokenizer
84
+
85
+ tok = Tokenizer.from_pretrained("ssilistre/turkish-bpe-tokenizer")
86
+ print(tok.encode("Merhaba dünya").tokens)
87
+ ```
88
+
89
+ ## Sınırlamalar
90
+
91
+ - **Küçük korpus.** ~1,7 MB metinle eğitildi. Daha büyük ve çeşitli bir korpus, özellikle nadir kelimelerde daha iyi bölütleme verirdi.
92
+ - **Dar alan.** Korpus insan ilişkileri ve iletişim konularından oluşuyor. Teknik, hukuki ya da tıbbi metinlerde fertility yükselir.
93
+ - **Hedeflenen sözlük boyutuna ulaşılmadı.** 32.000 istendi, korpus bu büyüklükte anlamlı birleşme üretmeye yetmediği için 24.433'te durdu.
94
+ - **Mevcut modellerle uyumsuz.** Sıfırdan eğitildiği için hazır bir modelin gömme katmanıyla eşleşmez. Kullanmak için model ya sıfırdan eğitilmeli ya da gömme katmanı yeniden boyutlandırılmalı.