1. Tokenizing
Reading time: 5 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Tokenizing
Tokenizing, verilerin, örneğin metinlerin, daha küçük, yönetilebilir parçalara token denir. Her token, benzersiz bir sayısal tanımlayıcı (ID) ile atanır. Bu, metni makine öğrenimi modelleri tarafından işlenmeye hazırlamak için temel bir adımdır, özellikle doğal dil işleme (NLP) alanında.
tip
Bu ilk aşamanın amacı çok basittir: Girişi mantıklı bir şekilde token'lara (id'lere) ayırmak.
Tokenizing Nasıl Çalışır
- Metni Bölme:
- Temel Tokenizer: Basit bir tokenizer, metni bireysel kelimelere ve noktalama işaretlerine ayırabilir, boşlukları kaldırır.
- Örnek:
Metin:"Merhaba, dünya!"
Tokenlar:["Merhaba", ",", "dünya", "!"]
- Bir Kelime Dağarcığı Oluşturma:
- Tokenları sayısal ID'lere dönüştürmek için bir kelime dağarcığı oluşturulur. Bu kelime dağarcığı, tüm benzersiz tokenları (kelimeler ve semboller) listeler ve her birine belirli bir ID atar.
- Özel Tokenlar: Çeşitli senaryoları ele almak için kelime dağarcığına eklenen özel sembollerdir:
[BOS]
(Dizinin Başlangıcı): Bir metnin başlangıcını belirtir.[EOS]
(Dizinin Sonu): Bir metnin sonunu belirtir.[PAD]
(Doldurma): Bir partideki tüm dizileri aynı uzunlukta yapmak için kullanılır.[UNK]
(Bilinmeyen): Kelime dağarcığında olmayan tokenları temsil eder.- Örnek:
Eğer"Merhaba"
ID64
ile atanmışsa,","
455
,"dünya"
78
, ve"!"
467
ise:
"Merhaba, dünya!"
→[64, 455, 78, 467]
- Bilinmeyen Kelimeleri Ele Alma:
Eğer"Hoşça kal"
kelimesi kelime dağarcığında yoksa,[UNK]
ile değiştirilir.
"Hoşça kal, dünya!"
→["[UNK]", ",", "dünya", "!"]
→[987, 455, 78, 467]
(Varsayılarak[UNK]
ID'si987
)
Gelişmiş Tokenizing Yöntemleri
Temel tokenizer basit metinler için iyi çalışırken, büyük kelime dağarcıkları ve yeni veya nadir kelimeleri ele almakta sınırlamaları vardır. Gelişmiş tokenizing yöntemleri, metni daha küçük alt birimlere ayırarak veya tokenizasyon sürecini optimize ederek bu sorunları ele alır.
- Byte Pair Encoding (BPE):
- Amaç: Kelime dağarcığının boyutunu azaltır ve nadir veya bilinmeyen kelimeleri sıkça karşılaşılan byte çiftlerine ayırarak ele alır.
- Nasıl Çalışır:
- Token olarak bireysel karakterlerle başlar.
- En sık karşılaşılan token çiftlerini tek bir token haline getirerek birleştirir.
- Daha fazla sık çift birleştirilemeyecek hale gelene kadar devam eder.
- Faydaları:
- Tüm kelimelerin mevcut alt kelime tokenları ile temsil edilebilmesi nedeniyle
[UNK]
tokenına ihtiyaç duyulmaz. - Daha verimli ve esnek bir kelime dağarcığı.
- Örnek:
"oynama"
token olarak["oyna", "ma"]
şeklinde ayrılabilir eğer"oyna"
ve"ma"
sıkça karşılaşılan alt kelimelerse.
- WordPiece:
- Kullananlar: BERT gibi modeller.
- Amaç: BPE'ye benzer, bilinmeyen kelimeleri ele almak ve kelime dağarcığını azaltmak için kelimeleri alt kelime birimlerine ayırır.
- Nasıl Çalışır:
- Bireysel karakterlerden oluşan bir temel kelime dağarcığı ile başlar.
- Eğitim verilerinin olasılığını maksimize eden en sık alt kelimeyi iteratif olarak ekler.
- Hangi alt kelimelerin birleştirileceğine karar vermek için olasılıksal bir model kullanır.
- Faydaları:
- Yönetilebilir bir kelime dağarcığı boyutu ile kelimeleri etkili bir şekilde temsil etme arasında denge kurar.
- Nadir ve bileşik kelimeleri etkili bir şekilde ele alır.
- Örnek:
"mutsuzluk"
token olarak["mut", "suz", "luk"]
veya["mut", "suzluk"]
şeklinde ayrılabilir, kelime dağarcığına bağlı olarak.
- Unigram Dil Modeli:
- Kullananlar: SentencePiece gibi modeller.
- Amaç: En olası alt kelime token setini belirlemek için olasılıksal bir model kullanır.
- Nasıl Çalışır:
- Potansiyel tokenların büyük bir seti ile başlar.
- Eğitim verilerinin modelin olasılığını en az artıran tokenları iteratif olarak kaldırır.
- Her kelimenin en olası alt kelime birimleri ile temsil edildiği bir kelime dağarcığı oluşturur.
- Faydaları:
- Esnek ve dili daha doğal bir şekilde modelleyebilir.
- Genellikle daha verimli ve kompakt tokenizasyonlar ile sonuçlanır.
- Örnek:
"uluslararasılaştırma"
daha küçük, anlamlı alt kelimelere["uluslararası", "laştırma"]
şeklinde ayrılabilir.
Code Example
Let's understand this better from a code example from https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
# Download a text to pre-train the model
import urllib.request
url = ("https://raw.githubusercontent.com/rasbt/LLMs-from-scratch/main/ch02/01_main-chapter-code/the-verdict.txt")
file_path = "the-verdict.txt"
urllib.request.urlretrieve(url, file_path)
with open("the-verdict.txt", "r", encoding="utf-8") as f:
raw_text = f.read()
# Tokenize the code using GPT2 tokenizer version
import tiktoken
token_ids = tiktoken.get_encoding("gpt2").encode(txt, allowed_special={"[EOS]"}) # Allow the user of the tag "[EOS]"
# Print first 50 tokens
print(token_ids[:50])
#[40, 367, 2885, 1464, 1807, 3619, 402, 271, 10899, 2138, 257, 7026, 15632, 438, 2016, 257, 922, 5891, 1576, 438, 568, 340, 373, 645, 1049, 5975, 284, 502, 284, 3285, 326, 11, 287, 262, 6001, 286, 465, 13476, 11, 339, 550, 5710, 465, 12036, 11, 6405, 257, 5527, 27075, 11]
Referanslar
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.