"## Zajęcia 4: Tokenizacja (text segmentation)\n",
"\n",
"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`).\n",
"tutorial utworzenia tokenizatora wykorzystanego w modelu GPT-2 przez byłego pracownika OpenAI: https://www.youtube.com/watch?v=zduSFxRajkE\n",
"\n",
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Zadanie 1\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Solution 1 - write the answer as a comment"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Zadanie 2\n",
"Zaimplementuj algorytm MaxMatch na podstawie listy słów z https://www.kaggle.com/datasets/rtatman/english-word-frequency .\n",
"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.\n",
"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.\n",
"\n",
"Po utworzeniu tokenizera należy dokonać tokenizacji innego tekstu o długości minimum 100 znaków.\n",
"\n",
"UWAGA: tokenizator musi najpierw dokonywać tokenizacji we właściwej kolejności (zaczynając od zmergowanych elementów)."