İçeriğe geç
<UK/>

Tokenizer atölyesi

Birikim

Bir tokenizer’ın her birleştirmeyle nasıl öğrendiğini izle ve aynı cümlenin Türkçede neden daha fazla tokene mal olabildiğini gör.

Tarayıcında çalışır · üretim modeli değil, öğretim amaçlı bir tokenizer

Nasıl öğrendiğini izle

Bayt çifti kodlaması (BPE) tek tek karakterlerle başlar. Her adımda kelimelerin içinde en sık yan yana gelen çifti bulur ve onu tek bir yeni token olarak birleştirir. Toz çakıla, harfler alt kelimelere dönüşür.

Eğitim metni
Eğitim metnini oku (30)
Hız

Sistemin hareketin azaltılmasını istediği için Oynat ve hız seçimi gizlendi. Adım, +10 ve kaydırıcı çalışmaya devam eder.

Sözlük
3029 karakter + kelime sonu + 0 birleştirme
Derlem tokenleri
EN 1.611 · TR 1.607

Örnekler

Bu odanın örnek cümlelerinden üç İngilizce ve üç Türkçe kelime, tokenizer’ın şu anki hâliyle bölünmüş.

  • ENplanets
    1. p
    2. l
    3. a
    4. n
    5. e
    6. t
    7. s
    8. kelime sonu
  • ENtogether
    1. t
    2. o
    3. g
    4. e
    5. t
    6. h
    7. e
    8. r
    9. kelime sonu
  • ENquestions
    1. q
    2. u
    3. e
    4. s
    5. t
    6. i
    7. o
    8. n
    9. s
    10. kelime sonu
  • TRyıldızlara
    1. y
    2. ı (bilinmeyen karakter)
    3. l
    4. d
    5. ı (bilinmeyen karakter)
    6. z
    7. l
    8. a
    9. r
    10. a
    11. kelime sonu
  • TRarkadaşlarımızla
    1. a
    2. r
    3. k
    4. a
    5. d
    6. a
    7. ş (bilinmeyen karakter)
    8. l
    9. a
    10. r
    11. ı (bilinmeyen karakter)
    12. m
    13. ı (bilinmeyen karakter)
    14. z
    15. l
    16. a
    17. kelime sonu
  • TRbitiremedik
    1. b
    2. i
    3. t
    4. i
    5. r
    6. e
    7. m
    8. e
    9. d
    10. i
    11. k
    12. kelime sonu

Son birleştirme

Henüz birleştirme yok. Adım’a ya da Oynat’a bas.

Sıkıştırmaİngilizce yarı 1.611Türkçe yarı 1.607

Birleştirme geçmişi

Tokenizer öğrendikçe birleştirmeler burada görünür.

Aynı anlam, farklı fatura

Her çift aynı şeyi İngilizce ve Türkçe söyler. Bunlar bu oda için yazılmış örnek cümlelerdir ve hiçbiri hazır eğitim metinlerinde yok. İki taraf da yukarıdaki tokenizer’ı, şu an eğitildiği hâliyle kullanır.

Cümle çifti
  1. w
  2. e
  3. kelime sonu
  4. c
  5. o
  6. u
  7. l
  8. d
  9. kelime sonu
  10. n
  11. o
  12. t
  13. kelime sonu
  14. f
  15. i
  16. n
  17. d
  18. kelime sonu
  19. o
  20. u
  21. r
  22. kelime sonu
  23. n
  24. o
  25. t
  26. e
  27. b
  28. o
  29. o
  30. k
  31. s
  32. kelime sonu
  33. .
  34. kelime sonu
token
34
kelime
6
karakter
32
UTF-8 bayt
32
  1. d
  2. e
  3. f
  4. t
  5. e
  6. r
  7. l
  8. e
  9. r
  10. i
  11. m
  12. i
  13. z
  14. i
  15. kelime sonu
  16. b
  17. u
  18. l
  19. a
  20. m
  21. a
  22. d
  23. ı (bilinmeyen karakter)
  24. k
  25. kelime sonu
  26. .
  27. kelime sonu
token
27
kelime
2
karakter
25
UTF-8 bayt
26

Her biri en fazla 400 karakter. Yazdıkların bu sayfada kalır, bağlantıya asla eklenmez.

Burada Türkçe daha az token gerektiriyor: İngilizcenin 0,79 katı.

Tokenden sonraki nokta, kelimenin orada bittiğini gösterir: makaledeki kelime sonu simgesi. Yalnızca noktadan oluşan bir parça, henüz birleştirilmemiş kelime sonu simgesinin kendisidir. Kesikli çerçeveli tokenler, bu tokenizer’ın eğitimde hiç görmediği karakterlerdir. Bayt düzeyindeki tokenizer’lar 256 olası bayttan başladıkları için bu sorunu yaşamaz.

Türkçe neden çoğu zaman daha fazla öder, ne zaman ödemez

Fiyatı eğitim karışımı belirler

Tokenizer, birleştirmelerini eğitim metninde en çok tekrar eden şeylere harcar. İngilizceyle eğitirsen İngilizce kelimeler bütün tokenlere dönüşür, Türkçe ise parça parça kalır. Petrov ve arkadaşları bunu 200 dilde aynı 2.000 cümleden oluşan FLORES-200 üzerinde ölçtü: Türkçe, GPT-2’nin tokenizer’ıyla İngilizcenin 2,43 katı, cl100k_base (ChatGPT ve GPT-4) ile 1,91 katı token gerektiriyor; çok dilli XLM-RoBERTa ile ise yalnızca 1,04 katı.

Yukarıda dene: eğitim metnini değiştir, farkın tersine döndüğünü gör.

Ekler sıklığı dağıtır

Türkçe, kelimeleri köke ekler ekleyerek kurar. Toraman ve arkadaşları “veremedim” kelimesini ver-e-me-di-m olarak ayırır: tek kelime, dört ek. Her kök pek çok farklı biçimde görünür ve her biçim daha seyrek olur; bu yüzden bütün bir kelimeyi birleştirmek daha az kazandırır.

Bu derlemde İngilizcede 286 kelimede 155 farklı biçim, Türkçede 212 kelimede 159 farklı biçim var.

Biçimbirimler
  1. ver
  2. e
  3. me
  4. di
  5. m
Bu tokenizer, şu an
  1. v
  2. e
  3. r
  4. e
  5. m
  6. e
  7. d
  8. i
  9. m
  10. kelime sonu

BPE, dilbilgisinin sınır koyduğu yerden değil, çiftlerin sık görüldüğü yerden keser; bu yüzden parçaları biçimbirimlerle örtüşmek zorunda değildir.

Dil

Şu anki tokenizer’ın nasıl böldüğünü görmek için bir kelime yaz. Dil, küçük harfe çevirme kurallarını belirler: Türkçede I, ı olur.

Türkçe harfler iki bayt tutar

UTF-8’de ç, ğ, ı, ö, ş ve ü ikişer bayt tutar; İngiliz alfabesinin harfleri ise birer bayt (RFC 3629). Bayt düzeyindeki tokenizer’lar baytlardan başlar; bu yüzden birleştirmedikleri bir Türkçe harf iki tokene mal olabilir. Bu öğretim tokenizer’ı karakterlerden başlar; burada bir tokene mal olur.

Bu derlem: İngilizce 1.576 karakter, 1.576 bayt; Türkçe 1.570 karakter, 1.742 bayt.

Kelime yanlış bir ölçüt

Türkçe aynı şeyi daha az ama daha uzun kelimeyle söyler; kelime başına token ölçüsü bu yüzden İngilizceyi kayırır. Adil ölçü, aynı anlam için gereken token sayısıdır. Petrov ve arkadaşları buna tokenizasyon primi diyor; yukarıdaki çiftler de bunu hesaplıyor.

Model sınırları

Bilerek küçük tutulmuş bir öğretim modeli. Bu oda için yazılmış 30 cümle çiftinden ya da senin en fazla 2.000 karakterlik metninden öğrenir, metni küçük harfe çevirir, noktalama işaretlerini ayırır ve hiçbir çift iki kez görünmediğinde durur; böylece birkaç yüz birleştirme öğrenir. cl100k_base gibi üretim tokenizer’ları ise yaklaşık 100.000 tokenlik sözlüklerle çalışır. Buradaki sayılar mekanizmayı ve etkinin yönünü gösterir; herhangi bir ticari modelin sayacağı değerleri değil. Burada yaptığın hiçbir şey sunucuya gönderilmez.

Kaynaklar

Bu oda neden var

Umut Korkmaz, bu site de dahil olmak üzere iki dilli yazılımlar geliştiriyor. Açık kaynaklı dil modeli yığını Orkhon, bayt düzeyinde bir BPE tokenizer’ı eğitiyor ve pahalı eğitim çalıştırmalarından önce onu bir kontrolden geçiriyor: varsayılan hedef, Türkçede token başına en az 3,5 UTF-8 bayt.

GitHub’da Orkhon’un tokenizer verimliliği kontrolü (yeni sekmede açılır)