3.7 KiB
Zajęcia 4: Tokenizacja (text segmentation)
Wszystkie zadania ćwiczeniowe należy rozwiązywać w języku Python w kopii Jupyter Notebook'a dla danych zajęć w wyznaczonych miejscach (komórki z komentarzem # Solution
).
Nie należy usuwać komórek z treścią zadań.
Należy wyświetlać outputy przy pomocy print
Dla chętnych - superaśny materiał!
tutorial utworzenia tokenizatora wykorzystanego w modelu GPT-2 przez byłego pracownika OpenAI: https://www.youtube.com/watch?v=zduSFxRajkE
Powyższy materiał wyczerpująco opisuje różne zagadnienia tokenizacji - jeżeli ktoś jest bardziej zainteresowany NLP to powinien zapoznać się z tym materiałem.
Zadanie 1
Wejdź na stronę https://tiktokenizer.vercel.app/ i sprawdź jak wielkie modele języka dzielą tekst na tokeny. Przetestuj teksty z języku polskim oraz angielskim. Napisz różnice między tokenizacją tekstu w języku polskim, a tokenizacją tekstu w języku angielskim.
# Solution 1 - write the answer as a comment
Zadanie 2
Zaimplementuj algorytm MaxMatch na podstawie listy słów z https://www.kaggle.com/datasets/rtatman/english-word-frequency . Funkcja musi przyjmować słownik oraz tekst z usuniętymi spacjami i znakami interpunkcyjnymi (jedynie litery) i zwracać listę słów. Przetestuj program na wybranych 2 tekstach w języku angielskim, które zawierają minimum 100 znaków (znaki inne niż litery z tego tekstu można usunąć automatycznie). Proszę uwzględnić, czy w liście słów znajdują się wielkie litery.
# Solution 2
def maxmatch_text_split(text, vocabulary):
pass
Zadanie 3
Zaimplementuj algorytm BPE na podanym tekście (jako najmniejszą jednostkę należy traktować pojedynczy znak - również spację). Funkcja musi przyjmować tekst oraz maksymalną liczbę elementów w słowniku, a na koniec zwracać tokenizer. Przetestuj program na tekście zawierającym minimum 10000 znaków dla max_vocab_length=500.
Po utworzeniu tokenizera należy dokonać tokenizacji innego tekstu o długości minimum 100 znaków.
UWAGA: tokenizator musi najpierw dokonywać tokenizacji we właściwej kolejności (zaczynając od zmergowanych elementów).
# Solution 3
def create_bpe_tokenizer(text, max_vocab_length):
pass
def tokenize_text(text, tokenizer):
pass