Merge branch 'master' of git.wmi.amu.edu.pl:filipg/aitech-moj

This commit is contained in:
Filip Gralinski 2022-02-23 20:50:35 +01:00
commit 42f5d311d9
5 changed files with 8721 additions and 107 deletions

View File

@ -7,16 +7,17 @@
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Ekstrakcja informacji </h1>\n",
"<h2> 0. <i>Język</i> [ćwiczenia]</h2> \n",
"<h2> 0. <i>Kodowanie tekstu</i> [ćwiczenia]</h2> \n",
"<h3> Jakub Pokrywka (2022)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 278,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@ -34,7 +35,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kodowanie"
"## Kodowanie znaku na bity"
]
},
{
@ -51,7 +52,7 @@
},
{
"cell_type": "code",
"execution_count": 279,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@ -60,7 +61,7 @@
},
{
"cell_type": "code",
"execution_count": 280,
"execution_count": 3,
"metadata": {},
"outputs": [
{
@ -69,7 +70,7 @@
"10755"
]
},
"execution_count": 280,
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@ -80,7 +81,7 @@
},
{
"cell_type": "code",
"execution_count": 281,
"execution_count": 4,
"metadata": {},
"outputs": [
{
@ -89,7 +90,7 @@
"'⨃'"
]
},
"execution_count": 281,
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@ -100,7 +101,7 @@
},
{
"cell_type": "code",
"execution_count": 282,
"execution_count": 5,
"metadata": {},
"outputs": [
{
@ -109,7 +110,7 @@
"0"
]
},
"execution_count": 282,
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@ -128,7 +129,7 @@
},
{
"cell_type": "code",
"execution_count": 283,
"execution_count": 6,
"metadata": {},
"outputs": [
{
@ -137,7 +138,7 @@
"0"
]
},
"execution_count": 283,
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
@ -155,7 +156,7 @@
},
{
"cell_type": "code",
"execution_count": 284,
"execution_count": 7,
"metadata": {},
"outputs": [
{
@ -164,7 +165,7 @@
"14"
]
},
"execution_count": 284,
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
@ -175,7 +176,7 @@
},
{
"cell_type": "code",
"execution_count": 285,
"execution_count": 8,
"metadata": {},
"outputs": [
{
@ -184,7 +185,7 @@
"'0010101000000011'"
]
},
"execution_count": 285,
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@ -209,7 +210,7 @@
},
{
"cell_type": "code",
"execution_count": 286,
"execution_count": 9,
"metadata": {},
"outputs": [
{
@ -218,7 +219,7 @@
"'11100010 10101000 10000011'"
]
},
"execution_count": 286,
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
@ -229,7 +230,7 @@
},
{
"cell_type": "code",
"execution_count": 287,
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
@ -238,7 +239,7 @@
},
{
"cell_type": "code",
"execution_count": 288,
"execution_count": 11,
"metadata": {},
"outputs": [
{
@ -255,7 +256,7 @@
},
{
"cell_type": "code",
"execution_count": 289,
"execution_count": 12,
"metadata": {},
"outputs": [
{
@ -272,7 +273,7 @@
},
{
"cell_type": "code",
"execution_count": 290,
"execution_count": 13,
"metadata": {},
"outputs": [
{
@ -281,7 +282,7 @@
"'\\x0c'"
]
},
"execution_count": 290,
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
@ -294,21 +295,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 1 ( 10 punktów)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- 2 ostatnie cyfry indeksu\n",
"- 3 ostatnie cyfy indeksu\n",
"- (5 ostatnich cyfr indeksu ) odjąć 123"
"### ZADANIE SAMODZIELNE 1 ( 10 punktów)\n",
"\n",
"Zakoduj poniższe znaki na bity wykonując niezbędne oblicznia"
]
},
{
"cell_type": "code",
"execution_count": 291,
"execution_count": 14,
"metadata": {},
"outputs": [
{
@ -317,7 +311,7 @@
"'U'"
]
},
"execution_count": 291,
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
@ -328,7 +322,7 @@
},
{
"cell_type": "code",
"execution_count": 292,
"execution_count": 15,
"metadata": {},
"outputs": [
{
@ -337,7 +331,7 @@
"'ϙ'"
]
},
"execution_count": 292,
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
@ -348,7 +342,7 @@
},
{
"cell_type": "code",
"execution_count": 293,
"execution_count": 16,
"metadata": {},
"outputs": [
{
@ -357,7 +351,7 @@
"'\\U00012856'"
]
},
"execution_count": 293,
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
@ -367,17 +361,29 @@
]
},
{
"cell_type": "code",
"execution_count": 294,
"cell_type": "markdown",
"metadata": {},
"source": [
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"outputs": [],
"source": [
"### Jakie są zakresy znaków?"
]
},
{
"cell_type": "code",
"execution_count": 295,
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
@ -398,7 +404,7 @@
},
{
"cell_type": "code",
"execution_count": 296,
"execution_count": 18,
"metadata": {},
"outputs": [
{
@ -421,12 +427,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 2 ( 10 punktów)"
"## ZADANIE SAMODZIELNE 2 ( 10 punktów)\n",
"\n",
"Zamień poniższy ciąg binarny na tekst UTF-8. Jeżeli tekst nie zaczyna się od prawidłowego bitu/bitów należy je pominąć."
]
},
{
"cell_type": "code",
"execution_count": 297,
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
@ -435,7 +443,7 @@
},
{
"cell_type": "code",
"execution_count": 298,
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
@ -444,7 +452,7 @@
},
{
"cell_type": "code",
"execution_count": 299,
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
@ -453,8 +461,10 @@
},
{
"cell_type": "code",
"execution_count": 300,
"metadata": {},
"execution_count": 22,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
@ -462,7 +472,7 @@
"'00101100 00001010 01001010 01100001 01101011 00100000 01100010 01111001 11000101 10000010 00100000 01010011 01110100 01100101 01100110 01100101 01101011 00100000 01000010 01110101 01110010 01100011 01111010 01111001 01101101 01110101 01100011 01101000 01100001 11100010 10000000 10100110 00001010 11100010 10000000 10010100 00100000 01001010 01100001 00100000 01101110 01101001 01101011 01101111 01100111 01101111 00100000 01110011 01101001 11000100 10011001 00100000 01101110 01101001 01100101 00100000 01100010 01101111 01101010 11000100 10011001 00100001 00001010 01000011 01101000 01101111 11000100 10000111 01100010 01111001 00100000 01101110 01101001 01100101 01100100 11000101 10111010 01110111 01101001 01100101 01100100 11000101 10111010 11100010 10000000 10100110 00100000 01110100'"
]
},
"execution_count": 300,
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@ -475,12 +485,28 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 3 ( 10 punktów)"
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 3 ( 10 punktów)\n",
"\n",
"Zamień poniższy ciąg binarny na tekst UTF-8. Jeżeli tekst nie zaczyna się od prawidłowego bitu/bitów należy je pominąć."
]
},
{
"cell_type": "code",
"execution_count": 301,
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
@ -489,7 +515,7 @@
},
{
"cell_type": "code",
"execution_count": 302,
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
@ -498,7 +524,7 @@
},
{
"cell_type": "code",
"execution_count": 303,
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
@ -507,8 +533,10 @@
},
{
"cell_type": "code",
"execution_count": 273,
"metadata": {},
"execution_count": 26,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
@ -516,7 +544,7 @@
"'0x2e 0x20 0x31 0x36 0x37 0x30 0x2c 0x20 0x70 0x72 0x7a 0x65 0x64 0x20 0x75 0x70 0x61 0x64 0x6b 0x69 0x65 0x6d 0x20 0x4b 0x61 0x6d 0x69 0x65 0xc5 0x84 0x63 0x61 0x20 0x69 0x20 0x68 0x61 0x6e 0x69 0x65 0x62 0x6e 0x79 0x6d 0x69 0x20 0x75 0x6b 0xc5 0x82 0x61 0x64 0x61 0x6d 0x69 0x20 0x62 0x75 0x63 0x7a 0x61 0x63 0x6b 0x69 0x6d 0x69 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x65 0x20 0x6f 0x62 0x6f 0x77 0x69 0xc4 0x85 0x7a 0x79 0x77 0x61 0xc5 0x82'"
]
},
"execution_count": 273,
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
@ -529,66 +557,104 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 4 (10 punktów)"
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"zabrać pliki a.txt i b.txt łącząć je spacją\n",
"\n",
"tylko linijki gdzie nie ma cyfr z numeru indeksu, \n",
"\n",
"usunąć wszystkie litery 'a',\n",
"\n",
"zamienić wszystkie litery 'c' na literę d\n",
"\n",
"potroić każde wystąpienie litery e (małe i wielkie)\n",
"\n",
"posortować linijki od końca\n",
"\n",
"zabrać tylko linjki od piatej do piątej od końca\n",
"\n",
"zapisać do pliku a.txt\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"pipe, paste, sed, awk, tr, grep, head, tail, cut, echo, redirect"
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 5 (10 punktów)"
"## ZADANIE SAMODZIELNE 4 (5 punktów)"
]
},
{
"cell_type": "code",
"execution_count": 317,
"cell_type": "markdown",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['a', 'aa']"
]
},
"execution_count": 317,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(['aa','a'])"
"Wykonaj następujące operacje w jednym bashowym/shellowym pipelinie:\n",
"\n",
"- scal a.txt i b.txt łącząc je spacją (tak, że pierwszy wiersz a.txt i pierwszy wiersz b.txt są połaczone spacją w nowy wiersz, drugi wiersz a.txt i drugi wiersz b.txt są połaczone spacją w następny wiersz, itp.) \n",
"\n",
"- wyfiltruj tylko linijki gdzie nie ma cyfr z Twojego numeru indeksu\n",
"\n",
"- usuń wszystkie litery 'a',\n",
"\n",
"- zamień wszystkie litery 'c' na literę 'd'\n",
"\n",
"- potrój każde wystąpienie litery e (małe i wielkie)\n",
"\n",
"- przestaw kolejność wiersz od końca (ostatni wiersz jest pierwszym, przedostani drugim, itp.)\n",
"\n",
"- wyfiltruj linijki od piątej do szóstej od końca (wg nowej kolejności)\n",
"\n",
"- zapisz pliku c.txt\n",
"\n",
"\n",
"Następnie wyprintuj zawartość pliku c.txt do tego notebooka\n",
"\n",
"\n",
"\n",
"Możesz użyć nastepujących programów: pipe, paste, sed, awk, tr, grep, head, tail, cut, echo, redirect. Nie używaj pythona, perla, ani innych podobnych języków."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ZADANIE SAMODZIELNE 5 (5 punktów)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Napisz funkcję sortującą dla stringów, która będzie działać \n",
"\n",
"- sortujemy słowa zgodnie z polskim alfabetem\n",
"- jeżeli są małe litery i wielkie to wielkie przed małymi\n",
"- jeżeli wyraz `x` jest początkiem wyrazu `y`, to wyraz `x` ma być pierwszy\n"
]
},
{
"cell_type": "code",
"execution_count": 329,
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"przykladowa_lista = ['ą', 'a','b','cef', 'ce', 'A','Ą', 'ż', ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"tak nie chcemy:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
@ -597,32 +663,40 @@
"['A', 'a', 'b', 'ce', 'cef', 'Ą', 'ą', 'ż']"
]
},
"execution_count": 329,
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sorted(['ą', 'a','b','cef', 'ce', 'A','Ą', 'ż', ])"
"sorted(przykladowa_lista)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- usuwamy słowa, które nie są składają sie wyłacznie z polskiego alfabetu\n",
"- najpierw zgodnie z polskim alfabetem\n",
"- jeżeli są małe litery i wielkie to wielkie przed małymi\n",
"- jeżeli wyraz `x` jest początkiem wyrazu `y`, to wyraz `x` ma być pierwszy\n"
"tak chcemy:"
]
},
{
"cell_type": "code",
"execution_count": 327,
"execution_count": 29,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"['A', 'Ą', 'a', 'ą', 'b', 'ce', 'cef', 'ż']"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"expected = ['A', 'Ą', 'a', 'ą' ,'b', 'ce', 'cef', 'ż']"
"['A', 'Ą', 'a', 'ą' ,'b', 'ce', 'cef', 'ż']"
]
},
{
@ -632,6 +706,34 @@
"https://wolnelektury.pl/media/book/pdf/lalka.pdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## WYKONANIE ZADAŃ\n",
"\n",
"- skopiuj niniejszy notebook\n",
"- podmień wartość zmiennej NR_INDEKSU na własny numer indeksu\n",
"- zadania wykonaj w tym jupyterze- dodawaj własne komórki tylko miedzy komórkami START ZADANIA, a KONIEC ZADANIA\n",
"- Zadania wykonaj tak, żeby po kliknięciu w Kernel → Restart & Run All notebook wykonał się bez błędów\n",
"- następnie wygeneruj z notebooka PDF (File → Download As → PDF via Latex).\n",
"- notebook z kodem oraz PDF zamieść w zakładce zadań w MS TEAMS"
]
},
{
"cell_type": "code",
"execution_count": null,

View File

@ -35,6 +35,16 @@
"## Literatura\n",
"Polecana literatura do przedmiotu:\n",
"\n",
"- Koehn, P. (2009). Statistical Machine Translation. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511815829\n",
"- Philipp Koehn. \"Neural Machine Translation\". 2020.\n",
"- https://web.stanford.edu/~jurafsky/slp3/3.pdf\n",
"- Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. North American Association for Computational Linguistics (NAACL).\n",
"- Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. 2020. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research vol 21, number 140, pages 1-67.\n",
"- Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya. 2019. Language Models are Unsupervised Multitask Learners\n",
"- https://jalammar.github.io/illustrated-transformer/\n",
"- https://www.youtube.com/watch?v=-9evrZnBorM&ab_channel=YannicKilcher\n",
"- https://www.youtube.com/watch?v=u1_qMdb0kYU&ab_channel=YannicKilcher\n",
"\n",
"\n",
"\n",
"## Zaliczenie\n",
@ -60,6 +70,13 @@
"\n",
"**Żeby zaliczyć przedmiot należy pojawiać się na laboratoriach. Maksymalna liczba nieobecności to 3. Obecność będę sprawdzał co zajęcia. Jeżeli kogoś nie będzie więcej niż 3 razy, to nie będzie miał zaliczonego przedmiotu** \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

File diff suppressed because one or more lines are too long

7547
cw/02_Jezyk.ipynb Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,176 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Ekstrakcja informacji </h1>\n",
"<h2> 0. <i>Jezyk</i> [ćwiczenia]</h2> \n",
"<h3> Jakub Pokrywka (2022)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {},
"outputs": [],
"source": [
"NR_INDEKSU = 375985"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"https://web.stanford.edu/~jurafsky/slp3/3.pdf"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"class Model():\n",
" \n",
" def __init__(self, vocab_size=30_000, UNK_token= '<UNK>'):\n",
" pass\n",
" \n",
" def train(corpus:list) -> None:\n",
" pass\n",
" \n",
" def get_conditional_prob_for_word(text: list, word: str) -> float:\n",
" pass\n",
" \n",
" def get_prob_for_text(text: list) -> float:\n",
" pass\n",
" \n",
" def most_probable_next_word(text:list) -> str:\n",
" 'nie powinien zwracań nigdy <UNK>'\n",
" pass\n",
" \n",
" def high_probable_next_word(text:list) -> str:\n",
" 'nie powinien zwracań nigdy <UNK>'\n",
" pass\n",
" \n",
" def generate_text(text_beggining:list, length: int, greedy: bool) -> list:\n",
" 'nie powinien zwracań nigdy <UNK>'\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"def get_ppl(text: list) -> float:\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"def get_entropy(text: list) -> float:\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- wybierz tekst w dowolnym języku (10_000_000 słów)\n",
"- podziel zbiór na train/test w proporcji 90/100\n",
"- stworzyć unigramowy model językowy\n",
"- stworzyć bigramowy model językowy\n",
"- stworzyć trigramowy model językowy\n",
"- wymyśl 5 krótkich zdań. Policz ich prawdopodobieństwo\n",
"- napisz włąsnoręcznie funkcję, która liczy perplexity na korpusie i policz perplexity na każdym z modeli dla train i test\n",
"- wygeneruj tekst, zaczynając od wymyślonych 5 początków. Postaraj się, żeby dla obu funkcji, a przynajmniej dla high_probable_next_word teksty były orginalne. Czy wynik będzię sie róźnił dla tekstów np.\n",
"`We sketch how LoomisWhitney follows from this: Indeed, let X be a uniformly distributed random variable with values` oraz `random variable with values`?\n",
"- stwórz model dla korpusu z ZADANIE 1 i policz perplexity dla każdego z tekstów (zrób split 90/10) dla train i test\n",
"\n",
"- klasyfikacja za pomocą modelu językowego\n",
"- wygładzanie metodą laplace'a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### START ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### KONIEC ZADANIA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- znajdź duży zbiór danych dla klasyfikacji binarnej, wytrenuj osobne modele dla każdej z klas i użyj dla klasyfikacji. Warunkiem zaliczenia jest uzyskanie wyniku większego niż baseline (zwracanie zawsze bardziej licznej klasy)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## WYKONANIE ZADAŃ\n",
"Zgodnie z instrukcją 01_Kodowanie_tekstu.ipynb"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Teoria informacji"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Wygładzanie modeli językowych"
]
}
],
"metadata": {
"author": "Jakub Pokrywka",
"email": "kubapok@wmi.amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
},
"subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]",
"title": "Ekstrakcja informacji",
"year": "2021"
},
"nbformat": 4,
"nbformat_minor": 4
}