E· UniversitetLaboration· ca 60 min· container
Labb: byte-pair encoding från grunden
Träna en BPE-tokeniserare på en liten korpus, tokenisera ny text med de lärda sammanslagningarna och se avvägningen mellan ordförrådsstorlek och sekvenslängd.
Lär ut: bpe-tokenisering · Kräver: tokeniseringpython-listor-och-loopar
Teori
Börja med tecken. Räkna alla intilliggande par, slå ihop det vanligaste till en ny symbol, upprepa N gånger. Tokenisering av ny text tillämpar sammanslagningarna i samma ordning.
Deluppgifter
- par-statistik — `pair_counts(words)` där words är dict {tuple-av-symboler: antal} → dict {(a,b): antal}.
- merge — `merge(words, pair)` slår ihop paret i alla ord.
- träna och tokenisera — `train(text, n_merges)` returnerar listan av merges; `encode(text, merges)` returnerar tokens.
Evals: kompression (tokens_per_char <= 0.6)
Logga in för att köra laborationen.
Förväntade resultat
Efter 50 merges på korpusen: tokens per tecken ≤ 0,6 på ny text, vanliga ord blir en token.
Vanliga fel
- Slår ihop fler än ett par per iteration.
- Tillämpar merges i fel ordning vid encode.
- Ordslutmarkör (
</w>) saknas → 'is' i 'this' och 'is' blandas.