1. Tokenizing

Reading time: 3 minutes

Tokenizing

Tokenizing ni mchakato wa kugawanya data, kama vile maandiko, kuwa vipande vidogo, vinavyoweza kudhibitiwa vinavyoitwa tokens. Kila token kisha inapata kitambulisho cha kipekee cha nambari (ID). Hii ni hatua ya msingi katika kuandaa maandiko kwa ajili ya usindikaji na mifano ya kujifunza mashine, hasa katika usindikaji wa lugha asilia (NLP).

tip

Lengo la awamu hii ya awali ni rahisi sana: Gawanya ingizo katika tokens (ids) kwa njia ambayo ina maana.

How Tokenizing Works

  1. Splitting the Text:
  • Basic Tokenizer: Tokenizer rahisi inaweza kugawanya maandiko kuwa maneno binafsi na alama za uakifishaji, ikiondoa nafasi.
  • Example:
    Text: "Hello, world!"
    Tokens: ["Hello", ",", "world", "!"]
  1. Creating a Vocabulary:
  • Ili kubadilisha tokens kuwa IDs za nambari, vocabulary inaundwa. Vocabulary hii inataja tokens zote za kipekee (maneno na alama) na inawapa kila mmoja ID maalum.
  • Special Tokens: Hizi ni alama maalum zilizoongezwa kwenye vocabulary ili kushughulikia hali mbalimbali:
  • [BOS] (Beginning of Sequence): Inaashiria mwanzo wa maandiko.
  • [EOS] (End of Sequence): Inaashiria mwisho wa maandiko.
  • [PAD] (Padding): Inatumika kufanya mfuatano wote katika kundi kuwa na urefu sawa.
  • [UNK] (Unknown): Inawakilisha tokens ambazo hazipo katika vocabulary.
  • Example:
    Ikiwa "Hello" inapata ID 64, "," ni 455, "world" ni 78, na "!" ni 467, basi:
    "Hello, world!"[64, 455, 78, 467]
  • Handling Unknown Words:
    Ikiwa neno kama "Bye" halipo katika vocabulary, linabadilishwa na [UNK].
    "Bye, world!"["[UNK]", ",", "world", "!"][987, 455, 78, 467]
    (Kukisia [UNK] ina ID 987)

Advanced Tokenizing Methods

Wakati tokenizer ya msingi inafanya kazi vizuri kwa maandiko rahisi, ina mipaka, hasa na vocabularies kubwa na kushughulikia maneno mapya au nadra. Mbinu za hali ya juu za tokenizing zinashughulikia masuala haya kwa kugawanya maandiko kuwa sehemu ndogo au kuboresha mchakato wa tokenization.

  1. Byte Pair Encoding (BPE):
  • Purpose: Inapunguza ukubwa wa vocabulary na inashughulikia maneno nadra au yasiyojulikana kwa kuyagawanya kuwa jozi za byte zinazotokea mara kwa mara.
  • How It Works:
  • Inaanza na wahusika binafsi kama tokens.
  • Inachanganya kwa hatua jozi za tokens zinazotokea mara nyingi zaidi kuwa token moja.
  • Inaendelea hadi hakuna jozi za mara nyingi zaidi zinazoweza kuchanganywa.
  • Benefits:
  • Inafuta hitaji la token ya [UNK] kwani maneno yote yanaweza kuwakilishwa kwa kuunganisha tokens za subword zilizopo.
  • Vocabulary yenye ufanisi zaidi na inayoweza kubadilika.
  • Example:
    "playing" inaweza kutokenizwa kama ["play", "ing"] ikiwa "play" na "ing" ni subwords zinazotokea mara nyingi.
  1. WordPiece:
  • Used By: Mifano kama BERT.
  • Purpose: Kama BPE, inagawanya maneno kuwa vitengo vya subword ili kushughulikia maneno yasiyojulikana na kupunguza ukubwa wa vocabulary.
  • How It Works:
  • Inaanza na vocabulary ya msingi ya wahusika binafsi.
  • Inachanganya kwa hatua subword inayotokea mara nyingi zaidi ambayo inaboresha uwezekano wa data ya mafunzo.
  • Inatumia mfano wa uwezekano kuamua ni subwords zipi za kuchanganya.
  • Benefits:
  • Inafanya uwiano kati ya kuwa na ukubwa wa vocabulary unaoweza kudhibitiwa na kuwakilisha maneno kwa ufanisi.
  • Inashughulikia kwa ufanisi maneno nadra na ya mchanganyiko.
  • Example:
    "unhappiness" inaweza kutokenizwa kama ["un", "happiness"] au ["un", "happy", "ness"] kulingana na vocabulary.
  1. Unigram Language Model:
  • Used By: Mifano kama SentencePiece.
  • Purpose: Inatumia mfano wa uwezekano kubaini seti inayowezekana zaidi ya tokens za subword.
  • How It Works:
  • Inaanza na seti kubwa ya tokens zinazoweza kuwa.
  • Inachanganya kwa hatua inatoa tokens ambazo haziboresha uwezekano wa mfano wa data ya mafunzo.
  • Inakamilisha vocabulary ambapo kila neno linawakilishwa na vitengo vya subword vinavyoweza kuwa na uwezekano zaidi.
  • Benefits:
  • Inaweza kubadilika na inaweza kuunda lugha kwa njia ya asili zaidi.
  • Mara nyingi inasababisha tokenizations zenye ufanisi na zenye compact.
  • Example:
    "internationalization" inaweza kutokenizwa kuwa subwords ndogo, zenye maana kama ["international", "ization"].

Code Example

Tujifunze hili vizuri kutoka kwa mfano wa msimbo kutoka https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:

python
# 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]

Marejeo