1. Tokenizing
Tokenizing
Tokenizing je proces razbijanja podataka, kao što je tekst, na manje, upravljive delove nazvane tokens. Svakom tokenu se zatim dodeljuje jedinstveni numerički identifikator (ID). Ovo je osnovni korak u pripremi teksta za obradu od strane modela mašinskog učenja, posebno u obradi prirodnog jezika (NLP).
Cilj ove inicijalne faze je vrlo jednostavan: Podeliti ulaz u tokene (ids) na način koji ima smisla.
Kako Tokenizing Funkcioniše
Deljenje Teksta:
Osnovni Tokenizer: Jednostavan tokenizer može podeliti tekst na pojedinačne reči i interpunkcijske znakove, uklanjajući razmake.
Primer: Tekst:
"Hello, world!"
Tokeni:["Hello", ",", "world", "!"]
Kreiranje Rečnika:
Da bi se tokeni pretvorili u numeričke ID-ove, kreira se rečnik. Ovaj rečnik navodi sve jedinstvene tokene (reči i simbole) i dodeljuje svakom specifičan ID.
Specijalni Tokeni: Ovo su posebni simboli dodati rečniku za upravljanje raznim scenarijima:
[BOS]
(Početak Sekvence): Ukazuje na početak teksta.[EOS]
(Kraj Sekvence): Ukazuje na kraj teksta.[PAD]
(Podočnjaci): Koristi se da sve sekvence u grupi budu iste dužine.[UNK]
(Nepoznato): Predstavlja tokene koji nisu u rečniku.Primer: Ako je
"Hello"
dodeljen ID64
,","
je455
,"world"
je78
, i"!"
je467
, tada:"Hello, world!"
→[64, 455, 78, 467]
Upravljanje Nepoznatim Rečima: Ako reč poput
"Bye"
nije u rečniku, zamenjuje se sa[UNK]
."Bye, world!"
→["[UNK]", ",", "world", "!"]
→[987, 455, 78, 467]
(Pretpostavljajući da[UNK]
ima ID987
)
Napredne Metode Tokenizacije
Dok osnovni tokenizer dobro funkcioniše za jednostavne tekstove, ima ograničenja, posebno sa velikim rečnicima i upravljanjem novim ili retkim rečima. Napredne metode tokenizacije rešavaju ove probleme razbijanjem teksta na manje podjedinice ili optimizovanjem procesa tokenizacije.
Byte Pair Encoding (BPE):
Svrha: Smanjuje veličinu rečnika i upravlja retkim ili nepoznatim rečima razbijajući ih na često korišćene parove bajtova.
Kako Funkcioniše:
Počinje sa pojedinačnim karakterima kao tokenima.
Iterativno spaja najčešće parove tokena u jedan token.
Nastavlja dok se ne mogu spojiti više učestali parovi.
Prednosti:
Eliminira potrebu za
[UNK]
tokenom jer se sve reči mogu predstaviti kombinovanjem postojećih podrečnih tokena.Efikasniji i fleksibilniji rečnik.
Primer:
"playing"
može biti tokenizovan kao["play", "ing"]
ako su"play"
i"ing"
česti podrečni tokeni.
WordPiece:
Koriste: Modeli poput BERT.
Svrha: Slično BPE, razbija reči na podrečne jedinice kako bi se upravljalo nepoznatim rečima i smanjila veličina rečnika.
Kako Funkcioniše:
Počinje sa osnovnim rečnikom pojedinačnih karaktera.
Iterativno dodaje najčešći podrečni koji maksimizira verovatnoću podataka za obuku.
Koristi probabilistički model da odluči koje podrečne reči spojiti.
Prednosti:
Balansira između upravljive veličine rečnika i efikasnog predstavljanja reči.
Efikasno upravlja retkim i složenim rečima.
Primer:
"unhappiness"
može biti tokenizovan kao["un", "happiness"]
ili["un", "happy", "ness"]
u zavisnosti od rečnika.
Unigram Language Model:
Koriste: Modeli poput SentencePiece.
Svrha: Koristi probabilistički model da odredi najverovatniji skup podrečnih tokena.
Kako Funkcioniše:
Počinje sa velikim skupom potencijalnih tokena.
Iterativno uklanja tokene koji najmanje poboljšavaju verovatnoću modela za obučene podatke.
Finalizuje rečnik gde je svaka reč predstavljena najverovatnijim podrečnim jedinicama.
Prednosti:
Fleksibilan i može modelovati jezik prirodnije.
Često rezultira efikasnijim i kompaktnijim tokenizacijama.
Primer:
"internationalization"
može biti tokenizovan u manje, smislene podrečne reči kao što su["international", "ization"]
.
Code Example
Hajde da ovo bolje razumemo kroz primer koda sa https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
References
Last updated