Tokenization — matn, audio yoki boshqa ketma-ket ma’lumotni model qayta ishlay oladigan kichik birliklarga ajratish jarayoni. Til modellarida tokenization matnni token IDlar ketma-ketligiga aylantiradi. Token so‘z, so‘z bo‘lagi, character, byte yoki maxsus belgi bo‘lishi mumkin.
Model vocabulary’si va tokenizer trainingdan oldin yoki model bilan birga tanlanadi. Bir modelning tokenlari boshqa modelnikiga mos kelmasligi mumkin.
So‘z darajasi
Oddiy word tokenization matnni bo‘sh joy va punctuation bo‘yicha bo‘ladi:
Men dasturlashni o‘rganaman.
natija:
Men | dasturlashni | o‘rganaman | .
Bu usul tushunarli, ammo katta vocabulary va unknown word muammosiga ega.
Character darajasi
Har character alohida token:
s | a | l | o | m
Vocabulary kichik bo‘ladi.
Har qanday yangi so‘zni ifodalash mumkin.
Sequence juda uzunlashadi va model uzoq character patternlarini o‘rganishi kerak.
Subword
Subword tokenizer so‘zlarni tez-tez uchraydigan bo‘laklarga ajratadi.
Masalan:
dasturlashni
→ dastur | lash | ni
Aniq bo‘linish tokenizer vocabulary’siga bog‘liq.
Subword usuli vocabulary hajmi va sequence uzunligi o‘rtasida muvozanat yaratadi.
Byte Pair Encoding
BPE dastlab character yoki byte birliklaridan boshlaydi.
Datasetda eng ko‘p yonma-yon uchraydigan juftliklar bosqichma-bosqich birlashtiriladi.
Natijada tez-tez so‘zlar bitta token, kam uchraydigan so‘zlar bir nechta subword bo‘ladi.
Merge qoidalari tokenizer artifactining bir qismi.
WordPiece
WordPiece vocabulary tanlashda likelihood yoki modelga foydali birlashmalarga yaqin objective ishlatadi.
U subword prefix yoki continuation belgilaridan foydalanishi mumkin.
Turli implementation qoidalari mavjud.
BPE va WordPiece o‘xshash, lekin aynan bir xil algorithm emas.
Unigram tokenizer
Unigram modeli katta candidate vocabulary’dan boshlaydi.
Kam foydali tokenlar bosqichma-bosqich olib tashlanadi.
Bir matn uchun bir nechta segmentatsiya ehtimoli bo‘lishi mumkin.
Trainingda probabilistik segmentation regularization sifatida ishlatilishi ehtimoli bor.
Byte-level tokenization
Matn UTF-8 byte’lariga yaqin birliklardan ifodalanadi.
Afzalligi — unknown character deyarli bo‘lmaydi.
Har qanday Unicode matn byte ketma-ketligi sifatida yoziladi.
Kamchiligi — ayrim tillarda token soni ko‘payishi mumkin.
Vocabulary
Tokenizer vocabulary token string va ID mappingini saqlaydi:
"men" → 125
"##lar" → 904
Model embedding matrix token IDga tayanadi.
Vocabulary o‘zgarsa model weightlari bilan compatibility buziladi.
Unknown token
Word-level yoki cheklangan tokenizer noma’lum birlikni maxsus [UNK] tokeniga aylantirishi mumkin.
Bu asl matn detailini yo‘qotadi.
Subword va byte-level tokenizer unknown holatini kamaytiradi.
Maxsus tokenlar
Model maxsus tokenlardan foydalanishi mumkin:
Ular oddiy matn bilan collision qilmasligi va model configida aniq IDga ega bo‘lishi kerak.
Token ID
Tokenizer outputi integer IDlar:
[18, 904, 72, 5]
Model to‘g‘ridan-to‘g‘ri string emas, IDlarni qabul qiladi.
Decode jarayoni IDlarni tokenlarga, keyin matnga birlashtiradi.
Decode har doim original whitespace’ni mutlaq tiklamasligi mumkin.
Whitespace
Ba’zi tokenizer token ichida oldingi bo‘sh joyni maxsus belgi bilan saqlaydi.
Masalan, salom va salom boshqa token bo‘lishi mumkin.
Whitespace code, Markdown va natural language’da semantik ahamiyatga ega.
Normalization uni nazoratsiz olib tashlamaydi.
Normalization
Tokenizationdan oldin:
- Unicode normalization;
- lowercase;
- accent;
- apostrof;
- whitespace;
- control character
qayta ishlanishi mumkin.
Normalization qoidasi training va inference’da bir xil bo‘lishi kerak.
Turli apostrof shakllari o‘zbekcha tokenlarni bo‘lib yuborishi mumkin.
O‘zbek tili
O‘zbek tili ko‘p qo‘shimchali bo‘lgani sabab word vocabulary juda kattalashadi.
Subword tokenizer asos va qo‘shimchani qisman ajratishi mumkin.
Lotin-kirill, o‘, g‘, ʻ, ' va boshqa apostrof variantlari data preprocessingda bir xillashtiriladi.
Noto‘g‘ri normalization so‘zni ko‘p noyob tokenlarga ajratadi.
Token soni
API narxi, context window va inference latency ko‘pincha token soniga bog‘liq.
Bir xil belgilar soni turli tilda boshqa token soniga ega.
Code, URL va random identifier ko‘p mayda token yaratishi mumkin.
Token counter aynan model tokenizeridan foydalanadi.
Padding
Batchdagi sequence’lar turli uzunlikda.
Qisqa sequence maxsus padding token bilan tenglashtiriladi.
Attention mask padding positionlarni model hisobidan chiqaradi.
Padding chap yoki o‘ng tomonda bo‘lishi model va taskga bog‘liq.
Truncation
Input context limitdan uzun bo‘lsa kesilishi mumkin.
Strategiyalar:
- oxirini kesish;
- boshini kesish;
- markazdan;
- sliding window;
- chunking;
- summary.
Muhim instruction yoki answer qismi tasodifan kesilmasligi kerak.
Offset mapping
Tokenizer har token original matndagi qaysi character oralig‘iga tegishli ekanini berishi mumkin.
Bu:
- NER;
- highlighting;
- annotation;
- search result;
- error display
uchun foydali.
Unicode character va byte offset farqlanadi.
Tokenizer drift
Model bilan boshqa tokenizer ishlatilsa IDlar boshqa ma’noga ega bo‘ladi.
Natija ma’nosiz bo‘lishi mumkin.
Model artifacti:
- vocabulary;
- merges;
- normalization;
- special token;
- version
bilan birga saqlanadi.
Vocabulary training
Tokenizer corpus qaysi til va domainlardan tuzilganiga qarab tokenlarni o‘rganadi. Agar o‘zbekcha matn kam bo‘lsa, oddiy o‘zbek so‘zi ko‘p mayda tokenlarga bo‘linishi mumkin. Bu context sarfi va model o‘rganish samaradorligini pasaytiradi. Vocabulary trainingda til balansiga e’tibor beriladi.
Added token
Fine-tuning yoki maxsus application uchun yangi marker token qo‘shilishi mumkin. Model embedding matrixi yangi qator bilan kengayadi va bu embedding trainingda o‘rganiladi. Faqat tokenizerga token qo‘shib, model weightini moslashtirmaslik random yoki noto‘g‘ri representation beradi.
Security
Tokenizer control character, bidirectional text va confusable Unicode’ni turli usulda bo‘lishi mumkin. Input validation display qilingan matn bilan model ko‘rgan token ketma-ketligi orasidagi farqni hisobga oladi.
Bog‘liq tushunchalar
Tokenization, Token, Subword, Byte Pair Encoding, WordPiece, Unigram model, Vocabulary, Token ID, Padding, Context window, Text normalization