1. Tokenizing

Reading time: 5 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Tokenizing

Tokenizing is die proses om data, soos teks, in kleiner, hanteerbare stukke genaamd tokens op te breek. Elke token word dan aan 'n unieke numeriese identifiseerder (ID) toegeken. Dit is 'n fundamentele stap in die voorbereiding van teks vir verwerking deur masjienleer modelle, veral in natuurlike taalverwerking (NLP).

tip

Die doel van hierdie aanvanklike fase is baie eenvoudig: Verdeel die invoer in tokens (ids) op 'n manier wat sin maak.

Hoe Tokenizing Werk

  1. Die Teks Verdeeld:
  • Basiese Tokenizer: 'n Eenvoudige tokenizer kan teks in individuele woorde en leestekens verdeel, terwyl spaties verwyder word.
  • Voorbeeld:
    Teks: "Hello, world!"
    Tokens: ["Hello", ",", "world", "!"]
  1. Skep 'n Woordeskat:
  • Om tokens in numeriese ID's om te skakel, word 'n woordeskat geskep. Hierdie woordeskat lys al die unieke tokens (woorde en simbole) en ken elkeen 'n spesifieke ID toe.
  • Spesiale Tokens: Dit is spesiale simbole wat by die woordeskat gevoeg word om verskillende scenario's te hanteer:
  • [BOS] (Begin van Sequentie): Dui die begin van 'n teks aan.
  • [EOS] (Einde van Sequentie): Dui die einde van 'n teks aan.
  • [PAD] (Padding): Gebruik om alle sequenties in 'n batch dieselfde lengte te maak.
  • [UNK] (Onbekend): Verteenwoordig tokens wat nie in die woordeskat is nie.
  • Voorbeeld:
    As "Hello" ID 64 toegeken word, "," is 455, "world" is 78, en "!" is 467, dan:
    "Hello, world!"[64, 455, 78, 467]
  • Hanteer Onbekende Woorde:
    As 'n woord soos "Bye" nie in die woordeskat is nie, word dit vervang met [UNK].
    "Bye, world!"["[UNK]", ",", "world", "!"][987, 455, 78, 467]
    (Aneem [UNK] het ID 987)

Geavanceerde Tokenizing Metodes

Terwyl die basiese tokenizer goed werk vir eenvoudige teks, het dit beperkings, veral met groot woordeskatte en die hantering van nuwe of seldsame woorde. Geavanceerde tokenizing metodes spreek hierdie probleme aan deur teks in kleiner subeenhede op te breek of die tokenisering proses te optimaliseer.

  1. Byte Pair Encoding (BPE):
  • Doel: Verminder die grootte van die woordeskat en hanteer seldsame of onbekende woorde deur hulle op te breek in gereeld voorkomende byte pare.
  • Hoe Dit Werk:
  • Begin met individuele karakters as tokens.
  • Samevoeg iteratief die mees gereelde pare van tokens in 'n enkele token.
  • Gaan voort totdat daar geen meer gereelde pare is wat saamgevoeg kan word nie.
  • Voordele:
  • Elimineer die behoefte aan 'n [UNK] token aangesien alle woorde verteenwoordig kan word deur bestaande subwoord tokens te kombineer.
  • Meer doeltreffende en buigsame woordeskat.
  • Voorbeeld:
    "playing" kan as ["play", "ing"] getokeniseer word as "play" en "ing" gereelde subwoorde is.
  1. WordPiece:
  • Gebruik Deur: Modelle soos BERT.
  • Doel: Soortgelyk aan BPE, breek dit woorde in subwoord eenhede op om onbekende woorde te hanteer en die grootte van die woordeskat te verminder.
  • Hoe Dit Werk:
  • Begin met 'n basiswoordeskat van individuele karakters.
  • Voeg iteratief die mees gereelde subwoord by wat die waarskynlikheid van die opleidingsdata maksimeer.
  • Gebruik 'n probabilistiese model om te besluit watter subwoorde saamgevoeg moet word.
  • Voordele:
  • Balans tussen 'n hanteerbare woordeskatgrootte en effektiewe verteenwoordiging van woorde.
  • Hanteer seldsame en saamgestelde woorde doeltreffend.
  • Voorbeeld:
    "unhappiness" kan as ["un", "happiness"] of ["un", "happy", "ness"] getokeniseer word, afhangende van die woordeskat.
  1. Unigram Taalmodel:
  • Gebruik Deur: Modelle soos SentencePiece.
  • Doel: Gebruik 'n probabilistiese model om die mees waarskynlike stel van subwoord tokens te bepaal.
  • Hoe Dit Werk:
  • Begin met 'n groot stel potensiële tokens.
  • Verwyder iteratief tokens wat die minste die model se waarskynlikheid van die opleidingsdata verbeter.
  • Finaliseer 'n woordeskat waar elke woord verteenwoordig word deur die mees waarskynlike subwoord eenhede.
  • Voordele:
  • Buigsame en kan taal meer natuurlik modelleer.
  • Lei dikwels tot meer doeltreffende en kompakte tokenisering.
  • Voorbeeld:
    "internationalization" kan in kleiner, betekenisvolle subwoorde soos ["international", "ization"] getokeniseer word.

Code Voorbeeld

Laat ons dit beter verstaan vanuit 'n kodevoorbeeld van 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]

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks