Tokenizer — matn yoki belgilar oqimini keyingi qayta ishlash uchun alohida birliklar — tokenlarga ajratadigan vosita.
Tokenizer atamasi compiler, natural language processing, qidiruv tizimi va machine learningda ishlatiladi. Har sohada “token”ning ma’nosi boshqacha bo‘lishi mumkin.
Compiler tokenizer
Dasturlash tilida tokenizer yoki lexer source code’ni:
- keyword;
- identifier;
- number;
- string;
- operator;
- punctuation
tokenlariga ajratadi.
Masalan:
total += 10
natija:
IDENTIFIER(total)
PLUS_EQUAL
NUMBER(10)
Bu tokenlar parserga uzatiladi.
NLP tokenizer
Natural language processing’da matn lingvistik birliklarga bo‘linadi.
Oddiy misol:
"Bugun havo yaxshi."
word tokenizer:
["Bugun", "havo", "yaxshi", "."]
Punctuation alohida token bo‘lishi yoki so‘z bilan birga qolishi mumkin.
Whitespace tokenizer
Eng sodda tokenizer matnni bo‘sh joy bo‘yicha ajratadi.
"salom dunyo" → ["salom", "dunyo"]
Kamchiliklari:
- punctuation;
- bir nechta whitespace;
- apostrof;
- emoji;
- CJK matni;
- URL;
- abbreviation
ni to‘g‘ri ajratmaydi.
Rule-based tokenizer
Til va domen qoidalari asosida ishlaydi.
Masalan:
Farrukhningbitta yoki ikki token;3.14bitta son;- email bitta token;
- URL bitta token;
- qisqartma ichidagi nuqta sentence oxiri emas.
Rulelar ko‘paygan sari edge case va tillararo moslik murakkablashadi.
Sentence tokenization
Matn sentence’larga bo‘linadi.
Nuqta har doim sentence oxiri emas:
Dr.
3.14
example.uz
Sentence tokenizer abbreviation va punctuation kontekstini hisobga oladi.
Subword tokenization
Language model va ko‘p NLP tizimlari to‘liq so‘z o‘rniga subword tokenlardan foydalanadi.
Masalan, kam uchraydigan so‘z:
dasturchilarimiz
bir nechta bo‘lakka ajralishi mumkin.
Subword usullari:
- BPE;
- WordPiece;
- Unigram;
- byte-level BPE.
Bu katta lug‘at va unknown word muammosini kamaytiradi.
Vocabulary
Tokenizer ma’lum tokenlar lug‘atiga ega.
Har token integer ID oladi.
"salom" → 1842
Model text bilan emas, token IDlar bilan ishlaydi.
Tokenizer vocabularysi model weightlari bilan mos bo‘lishi shart.
Unknown token
Word-level tokenizer lug‘atda yo‘q so‘zni maxsus <UNK> tokeniga aylantirishi mumkin.
Subword tokenizer ko‘p so‘zni mavjud bo‘laklardan quradi.
Byte-level yondashuv deyarli har qanday inputni unknown tokensiz ifodalay oladi, ammo token soni ko‘payishi mumkin.
Normalization
Tokenizationdan oldin matn o‘zgartirilishi mumkin.
Misollar:
- Unicode normalization;
- lowercase;
- accent removal;
- whitespace birlashtirish;
- control character olib tashlash;
- punctuation standardlashtirish.
Normalization ma’lumot yo‘qotishi mumkin. Case yoki accent ma’noli bo‘lgan vazifada ehtiyotkorlik talab qilinadi.
Pre-tokenization
Murakkab tokenizer avval matnni so‘zga o‘xshash bo‘laklarga ajratib, keyin subword algoritmini qo‘llaydi.
Whitespace va punctuation boundarylari pre-tokenizer tomonidan belgilanadi.
Turli pre-tokenization bir xil vocabulary bilan boshqa ID ketma-ketligi yaratadi.
Special token
Model maxsus tokenlardan foydalanadi:
- boshlanish;
- tugash;
- padding;
- mask;
- separator;
- unknown;
- system yoki role marker.
Ularning IDsi model konfiguratsiyasida qat’iy.
Oddiy text ichida special token satri uchrasa escaping yoki policy talab qilinadi.
Token offset
Tokenizer har tokenning original matndagi boshlanish va tugash offsetini saqlashi mumkin.
Bu:
uchun kerak.
Normalization qilingan matn bilan original offsetni bog‘lash murakkab.
Unicode va grapheme
Ko‘rinadigan bitta belgi bir nechta Unicode code pointdan iborat bo‘lishi mumkin.
Emoji family yoki combining accentni code point bo‘yicha bo‘lish foydalanuvchi kutgan natijani bermaydi.
UI tokenizer grapheme cluster, model tokenizer esa byte yoki subword darajasida ishlashi mumkin.
Token soni
Language model input limiti ko‘pincha tokenlar bilan o‘lchanadi, belgilar yoki so‘zlar bilan emas.
Bir xil ma’no turli tilda turlicha token sonini olishi mumkin.
Code, URL va random identifier ko‘p token hosil qilishi mumkin.
Detokenization
Token IDlardan matnni qayta tiklash detokenization deyiladi.
Subword marker, whitespace va byte sequence to‘g‘ri birlashtiriladi.
Har normalization reversible emas. Lowercase qilingan textdan asl katta harflarni tiklab bo‘lmaydi.
Search tokenizer
Qidiruv tizimi document va query uchun mos tokenizer ishlatadi.
U:
- lowercase;
- stemming;
- stop word;
- synonym;
- n-gram;
- language rule
qo‘llashi mumkin.
Index va query analyzer farq qilsa kerakli document topilmasligi mumkin.
Security
Tokenizer boundarylari securityga ta’sir qiladi.
Misollar:
- filter bir tokenizatsiya, parser boshqa tokenizatsiya qiladi;
- Unicode confusable;
- hidden control;
- prompt boundary;
- URL encoding;
- mixed script.
Validation oxirgi interpreter yoki parser semantikasiga mos bo‘lishi kerak.
Diagnostika
Tokenizer muammosida:
- normalizatsiya;
- vocabulary versiyasi;
- special token;
- byte offset;
- language;
- pre-tokenizer;
- unknown token;
- detokenization;
- model compatibility
tekshiriladi.
Bir xil model boshqa tokenizer bilan ishlatilsa natija mutlaqo noto‘g‘ri bo‘lishi mumkin.
Training va inference mosligi
Language model trainingda ishlatilgan tokenizer inference vaqtida aynan o‘sha vocabulary, normalization va special token qoidalari bilan ishlashi kerak. Faqat package nomi bir xil bo‘lishi yetarli emas; modelga bog‘langan tokenizer artifacti ishlatiladi.
Token budget
Prompt, system message, tool natijasi va model javobi umumiy token limitidan joy oladi. Application matnni so‘z soni bilan emas, real tokenizer orqali oldindan hisoblaydi.
Multilingual samaradorlik
Vocabulary ayrim tillardagi keng tarqalgan bo‘laklarni yaxshi qamrab olsa, o‘sha matn kamroq token oladi. Kam qamralgan script yoki aralash identifier ko‘proq token va hisoblash xarajati talab qilishi mumkin.
Bog‘liq tushunchalar
Token, Lexer, Natural Language Processing, Subword, BPE, Vocabulary, Normalization, Unicode, Detokenization, Language model