Bosh sahifa Wiki Tokenizer

Tokenizer

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:

  • Farrukhning bitta yoki ikki token;
  • 3.14 bitta 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:

  • entity recognition;
  • highlighting;
  • annotation;
  • search result;
  • error ko‘rsatish

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