1. Tokenizing

Tokenizing

Tokenizing ni mchakato wa kugawanya data, kama vile maandiko, kuwa vipande vidogo, vinavyoweza kudhibitiwa vinavyoitwa tokens. Kila token kisha inapewa 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).

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

How Tokenizing Works

  1. Kugawanya Maandishi:

  • Basic Tokenizer: Tokenizer rahisi inaweza kugawanya maandiko kuwa maneno binafsi na alama za uakifishaji, ikiondoa nafasi.

  • Mfano: Maandishi: "Hello, world!" Tokens: ["Hello", ",", "world", "!"]

  1. Kuunda Kamusi:

  • Ili kubadilisha tokens kuwa IDs za nambari, kamusi inaundwa. Kamusi hii inataja tokens zote za kipekee (maneno na alama) na inawapa kila mmoja ID maalum.

  • Tokens Maalum: Hizi ni alama maalum zilizoongezwa kwenye kamusi ili kushughulikia hali mbalimbali:

  • [BOS] (Mwanzo wa Mfululizo): Inaonyesha mwanzo wa maandiko.

  • [EOS] (Mwisho wa Mfululizo): Inaonyesha mwisho wa maandiko.

  • [PAD] (Padding): Inatumika kufanya mfuatano wote katika kundi kuwa na urefu sawa.

  • [UNK] (Unknown): Inawakilisha tokens ambazo hazipo kwenye kamusi.

  • Mfano: Ikiwa "Hello" imepewa ID 64, "," ni 455, "world" ni 78, na "!" ni 467, basi: "Hello, world!"[64, 455, 78, 467]

  • Kushughulikia Maneno Yasiyojulikana: Ikiwa neno kama "Bye" halipo kwenye kamusi, linabadilishwa na [UNK]. "Bye, world!"["[UNK]", ",", "world", "!"][987, 455, 78, 467] (Kukisia [UNK] ina ID 987)

Advanced Tokenizing Methods

Ingawa tokenizer ya msingi inafanya kazi vizuri kwa maandiko rahisi, ina mipaka, hasa na kamusi 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):

  • Madhumuni: Inapunguza ukubwa wa kamusi na inashughulikia maneno nadra au yasiyojulikana kwa kuyagawanya kuwa jozi za byte zinazotokea mara kwa mara.

  • Jinsi Inavyofanya Kazi:

  • 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.

  • Faida:

  • Inafuta hitaji la token ya [UNK] kwani maneno yote yanaweza kuwakilishwa kwa kuunganisha tokens za subword zilizopo.

  • Kamusi yenye ufanisi zaidi na inayoweza kubadilika.

  • Mfano: "playing" inaweza kutokenizwa kama ["play", "ing"] ikiwa "play" na "ing" ni subwords zinazotokea mara nyingi.

  1. WordPiece:

  • Inayotumiwa na: Mifano kama BERT.

  • Madhumuni: Kama BPE, inagawanya maneno kuwa vitengo vya subword ili kushughulikia maneno yasiyojulikana na kupunguza ukubwa wa kamusi.

  • Jinsi Inavyofanya Kazi:

  • Inaanza na kamusi ya msingi ya wahusika binafsi.

  • Inajumuisha kwa hatua subword inayotokea mara nyingi zaidi ambayo inaboresha uwezekano wa data ya mafunzo.

  • Inatumia mfano wa uwezekano kuamua ni subwords zipi za kuunganisha.

  • Faida:

  • Inaleta usawa kati ya kuwa na ukubwa wa kamusi unaoweza kudhibitiwa na kuwakilisha maneno kwa ufanisi.

  • Inashughulikia kwa ufanisi maneno nadra na ya mchanganyiko.

  • Mfano: "unhappiness" inaweza kutokenizwa kama ["un", "happiness"] au ["un", "happy", "ness"] kulingana na kamusi.

  1. Unigram Language Model:

  • Inayotumiwa na: Mifano kama SentencePiece.

  • Madhumuni: Inatumia mfano wa uwezekano kubaini seti inayowezekana zaidi ya tokens za subword.

  • Jinsi Inavyofanya Kazi:

  • Inaanza na seti kubwa ya tokens zinazoweza kuwa.

  • Inafuta kwa hatua tokens ambazo haziboresha uwezekano wa mfano wa data ya mafunzo.

  • Inakamilisha kamusi ambapo kila neno linawakilishwa na vitengo vya subword vinavyoweza kuwa na uwezekano zaidi.

  • Faida:

  • Inaweza kubadilika na inaweza kuunda lugha kwa njia ya asili zaidi.

  • Mara nyingi inasababisha tokenizations zenye ufanisi na zenye muundo mzuri.

  • Mfano: "internationalization" inaweza kutokenizwa kuwa subwords ndogo, zenye maana kama ["international", "ization"].

Code Example

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

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

Marejeleo

Last updated