Šiame vadove išmoksime sukurti pasirinktinį tokenizatorių naudojant Tiktoken biblioteka. Procesas apima iš anksto išmokyto tokenizatoriaus modelio įkėlimą, apibrėžiant bazinius ir specialius žetonus, inicijuoti tokenizatorių su konkrečia įprastine išraiška, skirta žetonų padalijimui, ir išbandyti jo funkcionalumą koduojant ir dekoduojant tam tikrą pavyzdžio tekstą. Ši sąranka yra būtina atliekant NLP užduotis, kurioms reikia tiksliai valdyti teksto tokenizaciją.
from pathlib import Path
import tiktoken
from tiktoken.load import load_tiktoken_bpe
import json
Čia importuojame kelias bibliotekas, būtinas teksto apdorojimui ir mašininiu mokymuisi. Jis naudoja kelią iš „Pathlib“, kad būtų galima lengvai valdyti failų kelią, o „Tiktoken“ ir „Load_tikToken_BPE“ palengvina įkėlimą ir darbą su baitų pora, koduojančiu tokenį.
tokenizer_path = "./content/tokenizer.model"
num_reserved_special_tokens = 256
mergeable_ranks = load_tiktoken_bpe(tokenizer_path)
num_base_tokens = len(mergeable_ranks)
special_tokens = (
"<|begin_of_text|>",
"<|end_of_text|>",
"<|reserved_special_token_0|>",
"<|reserved_special_token_1|>",
"<|finetune_right_pad_id|>",
"<|step_id|>",
"<|start_header_id|>",
"<|end_header_id|>",
"<|eom_id|>",
"<|eot_id|>",
"<|python_tag|>",
)
Čia mes nustatėme kelią į „Tokenizer“ modelį, nurodydami 256 rezervuotus specialius žetonus. Tada jis įkelia sujungtas gretas, kurios sudaro bazinį žodyną, apskaičiuoja bazinių žetonų skaičių ir apibrėžia specialiųjų žetonų sąrašą teksto riboms ir kitiems rezervuotiems tikslams.
reserved_tokens = (
f"<|reserved_special_token_{2 + i}|>"
for i in range(num_reserved_special_tokens - len(special_tokens))
)
special_tokens = special_tokens + reserved_tokens
tokenizer = tiktoken.Encoding(
name=Path(tokenizer_path).name,
pat_str=r"(?i:'s|'t|'re|'ve|'m|'ll|'d)|(^rnp{L}p{N})?p{L}+|p{N}{1,3}| ?(^sp{L}p{N})+(rn)*|s*(rn)+|s+(?!S)|s+",
mergeable_ranks=mergeable_ranks,
special_tokens={token: len(mergeable_ranks) + i for i, token in enumerate(special_tokens)},
)
Dabar mes dinamiškai sukuriame papildomus rezervuotus žetonus, kad pasiektume 256, tada pridedame juos prie iš anksto nustatytų specialiųjų žetonų sąrašo. Tai inicijuoja tokenizatorių, naudodamas tiktoken. Kodavimas su nurodyta įprasta teksto padalijimo išraiška, pakrautos sujungtos gretos kaip bazinis žodynas ir specialiųjų žetonų žemėlapių sudarymas iki unikalių žetonų ID.
#-------------------------------------------------------------------------
# Test the tokenizer with a sample text
#-------------------------------------------------------------------------
sample_text = "Hello, this is a test of the updated tokenizer!"
encoded = tokenizer.encode(sample_text)
decoded = tokenizer.decode(encoded)
print("Sample Text:", sample_text)
print("Encoded Tokens:", encoded)
print("Decoded Text:", decoded)
Mes išbandome tokenizatorių, koduodami pavyzdinį tekstą į žetonų ID ir tada dekoduojame tuos ID į tekstą. Jis atspausdina originalų tekstą, užkoduotus žetonus ir iššifruotą tekstą, kad patvirtintų, kad tokenizatorius veikia teisingai.
Čia mes užkoduojame eilutę „Hey“ į atitinkamus žetonų ID, naudodamiesi „Tokenizer“ kodavimo metodu.
Apibendrinant, vadovaudamiesi šia vadove išmokysite, kaip nustatyti pasirinktinį BPE tokenizatorių naudojant „Tiktoken“ biblioteką. Jūs matėte, kaip įkelti iš anksto išmokytą tokenizatoriaus modelį, apibrėžti tiek bazinius, tiek specialius žetonus ir inicijuoti tokenizatorių su konkrečia įprastine išraiška, kad būtų galima suskaidyti žetoną. Galiausiai jūs patikrinote „Tokenizer“ funkcionalumą koduodami ir dekoduojant pavyzdžio tekstą. Ši sąranka yra pagrindinis bet kurio NLP projekto, kuriam reikalingas pritaikytas teksto apdorojimas ir žetonas, žingsnis.
Čia yra „Colab“ užrašų knygelė Aukščiau pateiktam projektui. Be to, nepamirškite sekti mūsų „Twitter“ ir prisijunkite prie mūsų „Telegram“ kanalas ir „LinkedIn GrOUP. Nepamirškite prisijungti prie mūsų 75K+ ml subreddit.
🚨 Rekomenduojama atvirojo kodo AI platforma: „„ Intellagent “yra atvirojo kodo daugialypės terpės sistema, skirta įvertinti sudėtingą pokalbio AI sistemą“ (Paaukštintas)
Asif Razzaq yra „MarkTechPost Media Inc“ generalinis direktorius. Kaip vizionierius verslininkas ir inžinierius, ASIF yra įsipareigojęs išnaudoti dirbtinio intelekto potencialą socialiniam gėrybei. Naujausias jo siekis yra dirbtinio intelekto žiniasklaidos platformos „MarkTechPost“, kuri išsiskiria išsamia mašininio mokymosi ir giluminio mokymosi naujienų, kuri yra techniškai pagrįsta, ir lengvai suprantama plačiai auditorijai. Platforma gali pasigirti daugiau nei 2 milijonai mėnesinių peržiūrų, parodydama jos populiarumą tarp auditorijos.
🚨 Rekomenduojama atvirojo kodo AI platforma: „„ Intellagent “yra atvirojo kodo daugialypės terpės sistema, skirta įvertinti sudėtingą pokalbio AI sistemą“ (reklamuojama)