diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..6ff6e1d559 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.swp diff --git a/pages/home/README.md b/pages/home/README.md new file mode 100644 index 0000000000..9d4a54dee0 --- /dev/null +++ b/pages/home/README.md @@ -0,0 +1,35 @@ +--- +title: Záverečné práce a projekty +published: true +--- + +# Záverečné práce na KEMT + +Wiki stánka pre spoluprácu na záverečných prácach. + + +- 28.1.2020 budú predobhajoby záverečných prác. +- [Pokyny KEMT](http://kemt.fei.tuke.sk/studium/diplomova-praca/organizacne-pokyny-k-predmetu-timovy-projekt-v-st-programe-pocitacove-siete-2019-2020/) k predmetu Tímový projekt 2019. +- [Pokyny KEMT](http://kemt.fei.tuke.sk/studium/bachelor-works/organizacne-pokyny-k-predmetom-bakalarsky-projekt-a-bakalarska-praca-v-st-programe-pocitacove-siete-v-sk-r-2019-2020/) k predmetu Bakalársky projekt 2019. + +## Témy + +- [Často kladené otázky](../topics/faq) +- [Ako odovzdám výsledky](../topics/submit) +- [Ako napíšem záverečnú prácu](../topics/akopisat) + +## Projekty + +- [Spracovanie prirodzeného jazyka](../teachers/hladek/topics/nlp) +- [Podpora slovenčiny v knižnici Spacy](../teachers/hladek/topics/spacy) +- [Anotácia textových korpusov](../teachers/hladek/topics/prodigy) +- [Rozpoznávanie pomenovaných entít](../teachers/hladek/topics/named-entity) +- [Dialógový systém](../teachers/hladek/topics/chatbot) + + +## Predmety + +- [Bakalárske práce 2020](../teachers/hladek/subjects/bp2020) +- [Diplomové práce 2021](../teachers/hladek/subjects/dp2021) +- [Bakalárske práce 2019](../teachers/hladek/subjects/bp2019) + diff --git a/pages/students/2016/darius_lindvai/README.md b/pages/students/2016/darius_lindvai/README.md new file mode 100755 index 0000000000..f33e58d469 --- /dev/null +++ b/pages/students/2016/darius_lindvai/README.md @@ -0,0 +1,9 @@ + +# Dárius Lindvai + +## Tímový projekt 2019 + +Úlohy na vypracovanie: +- [rešerš](./timovy_projekt/resers) tak na 3 strany - čo najnovšie sa píše na tému "puctuation restoration" +- krátky program a [tutoriál](./timovy_projekt/tutorial) (program s rozsiahlym komentárom ) v Pythone na využitie LSTM + diff --git a/pages/students/2016/darius_lindvai/timovy_projekt/resers/README.md b/pages/students/2016/darius_lindvai/timovy_projekt/resers/README.md new file mode 100644 index 0000000000..d327cf947e --- /dev/null +++ b/pages/students/2016/darius_lindvai/timovy_projekt/resers/README.md @@ -0,0 +1,42 @@ + +# Novinky v oblasti “Punctuation Restoration” + +Keďže interpunkcia a veľké písmená v slovách nemajú vplyv na výslovnosť slov, sú z výstupu **ASR** (*automatic speech recognition = automatické rozpoznávanie reči*) odstraňované, výsledkom čoho sú iba sekvencie slov alebo písmen. Systémy vykonávajúce doplňovanie **interpunkčných znamienok** a veľkých písmen sú potrebné najmä preto, lebo tieto výstupy bez interpunkcie a veľkých písmen väčšinou pre ľudí nie sú zrozumiteľné (v textovej forme). Interpunkcia a veľké písmená sú taktiež dôležité prvky aj pri **NLP** (*natural language processing = spracovanie prirodzeného jazyka*). + +V súčasnosti existuje mnoho metód/spôsobov, akými je možné pristupovať k problematike doplňovania interpunkcie a obnovy veľkých písmen. V niektorých metódach je použitý princíp strojového prekladu, kde do modelu vstupoval text bez interpunkcie a model tento text následne “preložil” na text s interpunkciu. V iných metódach sú zasa použité CRF (*conditional random field = podmienené náhodné polia*). Avšak väčšina existujúcich metód/systémov rieši iba interpunkciu, čo však nestačí napr. pri NER (*named-entity recognition*) alebo POS (*part-of-speech*), kde je potrebné poznať hlavne to, kde sa nachádzajú veľké písmená. + +V tomto článku predstavím dve metódy z roku 2019, v ktorých sú predstavené dva rôzne spôsoby, ako je možné pristupovať k problematike doplňovania interpunkcie. Prvá z nich je zameraná na tzv. transformátory a druhá z nich funguje na princípe tzv. „self-attention“. + +### 1. FAST AND ACCURATE CAPITALIZATION AND PUNCTUATION FOR AUTOMATIC SPEECH RECOGNITION USING TRANSFORMER AND CHUNK MERGING +#### Rýchle a presné doplňovanie interpunkčných znamienok a obnovovanie veľkých písmen pre Automatické rozpoznávanie textu použitím transformátora a “zlučovania blokov textu” (chunk merging) + +Metóda vytvorená kolektívom autorov okolo Binh Nguyena z Vietnamu predstavuje spôsob doplňovania interpunkcie a obnovy veľkých písmen pre ASR. Využíva princíp transformačných modelov (*transformer models*) a zlučovania blokov (*chunk-merging*) textu so schopnosťou doplňovať interpunkciu a obnovovať veľké písmená v jednom kroku. + +Skladá sa z 3 komponentov, z ktorých prvý slúži na rozdeľovanie veľkých textových segmentov na menšie časti (*chunk-splitting*), ktoré sa však prekrývajú. To znamená, že takmer všetky vety (alebo slová/časti viet, to závisí aké kritérium bolo zvolené pri rozdeľovaní textu) sa po rozdelení objavia vo viacerých častiach (vysvetlené na príklade nižšie). Tieto časti textu sú po rozdelení dostatočne dlhé na to, aby mal druhý komponent k dispozícii dostatok kontextu zľava aj sprava a mohol tak vykonať čo najpresnejšiu predikciu. Posledný komponent rozhoduje, ktoré časti textu (prekrývajúce sa) budú odstránené a ktoré budú zachované a zlúčené naspäť do jedného celku (*chunk-merging*). +> Príklad na "chunk splitting": Máme určitý text -skupinu viet: +> - "... . Futbalisti FC Liverpool sa stretnú v osemfinále Ligy majstrov s Atleticom Madrid. Rozhodol o tom pondelňajší žreb v sídle UEFA vo švajčiarskom Nyone. ..." +> +> Ak na tieto vety aplikujeme algoritmus "chunk-splitting"-u, dostaneme podobný výstup: +> 1. veta: Futbalisti FC Liverpool sa stretnú v osemfinále Ligy majstrov s Atleticom Madrid. +> 2. veta: v osemfinále Ligy majstrov s Atleticom Madrid. Rozhodol o tom pondelňajší žreb +> 3. veta: Rozhodol o tom pondelňajší žreb v sídle UEFA vo švajčiarskom Nyone. +> +> Samozrejme, toto je len príklad na pochopenie "chunk-splittingu". Reálne môžu byť vety rozdeľované rôznymi spôsobmi. + +Motiváciou autorov k navrhnutie tejto metódy sa stal fakt, že pokiaľ ide o kratšie rečové segmenty, štúdie v oblasti ASR dosahujú výborné výsledky (v poslednej dobe). Avšak pokiaľ ide o dlhšie rečové segmenty, stále existujú nedostatky v štandardizácii výsledného textového výstupu ASR, napríklad doplňovanie interpunkcie a obnova kapitalizácie (veľkých písmen). Tieto nedostatky bránia čitateľovi porozumieť výstup ASR a taktiež spôsobujú problémy pri modeloch pre spracovanie prirodzeného jazyka, napríklad NER, POS “tagging” alebo sémantické parsovanie (*semantic parsing*). + +Experimenty, ktoré autori vykonali na Britskom národnom korpuse (*British national corpus*), preukázali, že predstavený model svojou presnosťou a rýchlosťou značne prevyšuje existujúce metódy a modely. + +### 2. SELF-ATTENTION BASED MODEL FOR PUNCTUATION PREDICTION USING WORD AND SPEECH EMBEDDINGS +#### Model založený na “self-attention” zameraný na predikciu interpunkcie použitím slovných a rečových embeddingov + +Ďalšia metóda, ktorej autormi sú Jiangyan Yi a Jianhua Tao z Číny používa na predikciu interpunkčných znamienok model založený na “*self-attention*”. V modeli sú použité “word and speech embeddings”, ktoré sú pred-trénované vo frameworku Word2Vec a Speech2Vec. Použitie tohto prístupu umožňuje modelu využívať akýkoľvek druh lexikálnych a akustických dát. Vysoká úspešnosť predošlých “self-attention” modelov v oblasti predikcie a doplňovania interpunkčných znamienok autorov inšpirovala k vytvoreniu tohto modelu. + +Predošlé modely používali k činnosti akustické príznaky, lexikálne príznaky, alebo ich kombináciu. Využitie akustických príznakov textu sa javí ako efektívnejšie ako využitie samotných lexikálnych príznakov. Avšak v mnohých prípadoch ich nie je možné použiť v ASR, nakoľko ľudia pri hovorení zvyknú používať pauzy medzi slovami na miestach, kde by ich používať nemali. Kombinovanie týchto dvoch typov príznakov (akustické a lexikálne) čiastočne vyrieši tento problém. Veľa štúdií používa lexikálne dáta, ktoré však musia mať pridelené rečové údaje (bodky, čiarky, pauzy medzi slovami, a podobne), čo však spôsobuje komplikácie a limituje používanie čisto lexikálnych dát. + +Výsledky experimentov, ktoré bolo vykonané na korpuse “English IWSLT2011”, ukazujú, že model založený na “self-attention”, ktorý používa “word and speech embeddings” dosahuje oveľa lepšie výsledky a väčšiu rýchlosť ako viacero modelov slúžiacich na doplňovanie interpunkcie. + +[1] NGUYEN, B. a kol.: *Fast and Accurate Capitalization and Punctuation for Automatic Speech Recognition Using Transformer and Chunk Merging.* [online] [citované 07-08-2019] URL: + +[2] YI, J. a kol.: *Self-attention Based Model for Punctuation Prediction Using Word and Speech Embeddings.* [online] [citované 17-04-2019] URL: + diff --git a/pages/students/2016/darius_lindvai/timovy_projekt/tutorial/README.md b/pages/students/2016/darius_lindvai/timovy_projekt/tutorial/README.md new file mode 100755 index 0000000000..cc947e06ea --- /dev/null +++ b/pages/students/2016/darius_lindvai/timovy_projekt/tutorial/README.md @@ -0,0 +1,159 @@ + +# PYTORCH - LSTM TUTORIÁL + +### Čo je to Pytorch? + +[Pytorch](https://pytorch.org/) je open-source knižnica založená na knižnici Torch a určená primárne na účely strojového učenia (*machine learning*) a hĺbkového učenia (*deep learning*). Táto knižnica sa najčastejšie používa v kombinácii s jazykom **Python**, avšak je možné ju použiť aj s jazykom C++. Jej najväčšie využitie je v oblasti Spracovania prirodzeného jazyka (NLP). Je vyvíjaná hlavne výskumným tímom Facebooku pre umelú inteligenciu (FAIR = Facebook's AI Research lab). + +Vlastnosti Pytorchu: +- je jednoduchý na naučenie a používanie, +- obsahuje rozsiahlu dokumentáciu a rôzne tutoriály, ktoré môžu začiatočníci vhodne využiť pri učení, +- poskytuje možnosť rýchleho počítania tzv. **tensorov** (forma výstupu v knižnici Pytorch podobná matici) použitím GPU. + +### Čo je to LSTM? + +Problematikou LSTM (Long Short-Term Memory networks) som sa zaoberal v mojej [Bakalárskej práci](http://opac.crzp.sk/?fn=detailBiblioForm&sid=2D0B46080A5AC858AA11B21AE978&seo=CRZP-detail-kniha). LSTM sú špeciálny typ **Rekurentných neurónových sietí** (RNN), schopné naučiť sa využívať dlhodobé kontextové súvislosti (napr. pri dopĺňaní chýbajúcej interpunkcie alebo veľkých písmen). Najväčšie využitie LSTM je v oblasti strojového učenia a hĺbkového učenia. + +Vlastnosti LSTM: +- dokážu spracovávať nielen jednoduché dáta (napr. obrázky), ale aj celé sekvencie dát (napr. reč alebo video), +- sú vhodné na klasifikáciu, spracovanie a vytváranie predikcií na základe časových údajov (v Bakalárskej práci som sa venoval **Interpunkčným znamienkam**), +- LSTM boli navrhnuté tak, aby si na rozdiel od RNN vedeli poradiť s problémom, ktorý sa nazýva “[Exploding and vanishing gradient problems](https://medium.com/learn-love-ai/the-curious-case-of-the-vanishing-exploding-gradient-bf58ec6822eb)”. + +|![LSTM](https://i1.wp.com/www.jessicayung.com/wp-content/uploads/2018/09/short_term_memory_by_toxicpaprika.png?w=630)| +|:--:| +|*Obr.1 Problém "krátkej" pamäte RNN*| + +Tento tutoriál sa delí na 2. časti. V prvej časti ukážem návod ako si nainštalovať Pytorch a v druhej predvediem vzorový kód pomocou knižnice Pytorch na vyžitie LSTM. + +## 1. Inštalácia knižnice Pytorch +Na inštaláciu Pytorchu existuje viacero možných spôsobov. Pracovať s ním je možné či už vo Windowse alebo aj v Linuxovom prostredí. Taktiež je možné vybrať si, či bude inštalácia vykonaná pomocou **Anacondy** alebo PIP. Ja som sa rozhodol pracovať v prostredí Ubuntu (keďže v tomto prostredí som pracoval aj na Bakalárskej práci. Preto teraz predstavím spôsob ako nainštalovať Pytorch v tomto prostredí pomocou Anacondy. + +Pred inštaláciou Anacondy a Pytorchu je potrebné nainštalovať prostredie **Ubuntu 16.04 LTS**. Môžete si ho stiahnuť napr. z Microsoft Store. + +### a. Inštalácia Anacondy +Pred samotnou inštaláciou Anacondy je potrebné overiť, či sú všetky balíčky (*packages*) aktualizované. Je to možné vykonať pomocou príkazu `apt-get`: +```bash +dl874wn@Darius-PC:~$ apt-get update -y +``` +Následne je treba stiahnuť inštalačný súbor Anacondy. Jedným zo spôsobov ako to urobiť, je stiahnutie tohto súboru priamo cez terminál. Avšak pri tomto spôsobe je potrebné uistiť sa o bezpečnosti stránky, ktorá poskytuje inštalačný skript. Na stiahnutie súboru pomocou terminálu je možné použiť príkaz `curl`: +```bash +dl874wn@Darius-PC:~$ curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh +``` +Zadanie tohto príkazu vám zabezpečí stiahnutie najnovšej verzie Anacondy. Po stiahnutí súboru je možné spustiť inštalačný skript použitím príkazu `bash`: +```bash +dl874wn@Darius-PC:~$ bash Miniconda3-latest-Linux-x86_64.sh +``` +Vrámci inštalácie Anacondy sa nainštaluje aj Python 3.7.4. Počas inštalácie je potrebné potvrdiť licenčné podmienky a umiestnenie, kam sa Python nainštaluje. + +Po stiahnutí a nainštalovaní Anacondy ju už stačí iba spustiť. Pre spustenie bude stačiť refresh terminálu, čo je možné vykonať príkazom `source`: +```bash +dl874wn@Darius-PC:~$ source ~/.bashrc +``` + +### b. Inštalácia Pytorchu +Ďalším krokom je nainštalovanie Pytorchu. Inštalácia je veľmi jednoduchá a rýchla. Stačí zadať jednoduchý príkaz: +```bash +dl874wn@Darius-PC:~$ conda install pytorch torchvision cpuonly -c pytorch +``` +Taktiež je potrebné zadať “**y**” po výzve terminálu. Po nainštalovaní bude treba odpovedať „**yes**“ na otázku, či chceme, aby bola Anaconda hneď incializovaná. + +Na záver je ešte potrebné overiť, že Pytorch bol skutočne nainštalovaný. Toto overenie je možné vykonať sériou príkazov. Na začiatok je potrebné dostať sa do módu “Python REPL (a read-eval-print loop)”, čo je možné vykonať veľmi jednoducho - zadaním príkazu `python3` do terminálu: +```bash +(base) dl874wn@Darius-PC:~$ python3 +Python 3.7.4 (default, Aug 13 2019, 20:35:49) +[GCC 7.3.0] :: Anaconda, Inc. on linux +Type “help”, “copyright”, “credits” or “license” for more information. +>>> +``` +> Python REPL je jednoduché interaktívne prostredie, ktoré spracováva jednoduché užívateľské vstupy po jednom riadku a vracia výsledok (výstup). Užívateľ teda zadáva príkazy po jednom a program ich spracováva a vyhodnocuje postupne. + +Keď sa už nachádzame v móde Python REPL, môžeme spustiť napr. tento jednoduchý skript, ktorý vygeneruje maticu 3x5 náhodných čísel (tensor) v intervale (0,1). Prvé číslo v zátvorke udáva počet riadkov a druhé počet stĺpcov. +```bash +>>> import torch +>>> x = torch.rand(3,5) +>>> print(x) +``` +Výstup skriptu by mal vyzerať nasledovne: +```bash +tensor([[0.8490, 0.5107, 0.2124, 0.8478, 0.6296], + [0.9270, 0.8925, 0.0260, 0.3883, 0.4998], + [0.7393, 0.9261, 0.7133, 0.6712, 0.4431]]) +>>> +``` +Týmto skriptom sme overili funkčnosť Pytorchu a teda môžeme Python REPL opustiť stlačením klávesovej skratky **CTRL + D**. V prípade potreby môžete Anacondu deaktivovať príkazom `conda deactivate`, avšak ak budete chcieť znova pracovať s Pytorchom, je potrebné ju znova aktivovať. +```bash +(base) dl874wn@Darius-PC:~$ conda deactivate +dl874wn@Darius-PC:~$ +``` +## 2. Vzorový kód na využitie LSTM v Pytorchu + +Vstup a výstup v LSTM v knižnici Pytorch je tvorený 3D tensormi. V tomto tutoriáli predvediem, ako tento vstup a výstup funguje. + +Na začiatok je potrebné importovať pár relevantných knižníc. +Budeme pridávať základnú knižnicu **torch** a knižnicu **nn**, ktorá obsahuje základný balík Neurónových sietí (NN). +```python +import torch +import torch.nn as nn +``` +Následne sa presunieme k vytváraniu LSTM vrstvy, ktoré funguje rovnako ako pri ostatných typoch vrstiev. LSTM vrste totiž budeme priradzovať argumenty. V tomto príklade budú použité 3 argumenty: +- vstupná dimenzia (*input dimension*): definuje veľkosť vstupu v každom časovom kroku, napr. ak má vstupná dimenzia veľkosť 5, vstup bude vyzerať podobne - `[5, 3, 8, 6, 2]`, +- skrytá dimenzia (*hidden dimension*): predstavuje veľkosť "cell state" a "hidden state" v každom časovom kroku, +- počet vrstiev: počet LSTM vrstiev "naskladaných" na seba. + +```python +input_dim = 5 #velkost vstupnej dimenzie +hidden_dim = 10 #velkosť skrytej dimenzie +n_layers = 1 #pocet vrstiev +``` + +Tieto parametre potom uložíme do LSTM vrstvy nasledovne: + +```python +lstm_layer = nn.LSTM(input_dim, hidden_dim, n_layers) +``` + +V ďalšom kroku si vytvoríme fiktívne dáta aby sme videli, ako funguje vstup na vrstve. Keďže sme veľkosť dimenzie definovali ako 5, potrebujeme vytvoriť tensor vo tvare `(1, 1, 5)`. Hodnoty v tensore reprezentujú `(veľkosť vzorky, dĺžka sekvencie, veľkosť vstupnej dimenzie)`. +Taktiež potrebujeme inicializovať "cell state" a "hidden state" jednotky LSTM. Tieto 2 parametre sú uložené vo "zväzku" vo formáte `(hidden state, cell state)`. + +```python +batch_size = 1 #velkost vzorky +seq_len = 1 #dlzka sekvencie + +inp = torch.randn(seq_len, batch_size, input_dim) +hidden_state = torch.randn(n_layers, batch_size, hidden_dim) +cell_state = torch.randn(n_layers, batch_size, hidden_dim) +hidden = (hidden_state, cell_state) +``` + +> Ak máme vstupnú sekvenciu (*seq_len*) napr. 100, veľkosť vzorky (*batch_size*) udáva, v akých dávkach sa bude sekvencia spracovaná a vyhodnotená. Ak máme napr. veľkosť vzorky 20, sekvencia bude spracovaná v 5 dávkach po 20. + +Ak si chceme skontrolovať v akom tvare bude vyzerať tvar vstupnej vrstvy a skrytej vrstvy, môžeme to urobiť pomocou príkazov `print` a `shape`: + +```python +print("Input shape:", inp.shape) +print("Hidden shape:", hidden_state.shape, ",", cell_state.shape) +``` + +Výstup bude vyzerať nasledovne: + +```bash +(base) dl874wn@Darius-PC:~$ python test.py +Input shape: torch.Size([1, 1, 5]) +Hidden shape: torch.Size([1, 1, 10]) , torch.Size([1, 1, 10]) +``` + +Na záver pridáme vstupy a skryté stavy (*hidden states*): + +```python +out, hidden = lstm_layer(inp, hidden) +print("Output shape:", out.shape) +print("Hidden:", hidden) +``` + +Na výstupe by sa mal objaviť tvar výstupných tensorov a taktiež samotné tensory pre "cell state" a "hidden state": + +```bash +Output shape: torch.Size([1, 1, 10]) +Hidden: (tensor([[[-0.3184, 0.0795, -0.2122, -0.0699, -0.1824, -0.1231, -0.1314, 0.3096, -0.0371, 0.0488]]], grad_fn=), tensor([[[-0.5415, 0.2349, -0.4794, -0.1918, -0.2433, -0.2443, -0.2989, 0.5557, -0.0896, 0.1062]]], grad_fn=)) +``` + diff --git a/pages/students/2016/jakub_maruniak/README.md b/pages/students/2016/jakub_maruniak/README.md new file mode 100644 index 0000000000..deae17dc36 --- /dev/null +++ b/pages/students/2016/jakub_maruniak/README.md @@ -0,0 +1,10 @@ +# Meno: Jakub Maruniak + +## Tímový projekt 2019 + +#### Anotácia textových dát +- Vypracujte min. 4. stranový rešerš na tému "Crowdsourcing" +- citujte min. 10 najvýznamnejších bibliografických zdrojov + +[Rešerš](./timovy_projekt) + diff --git a/pages/students/2016/jakub_maruniak/timovy_projekt/README.md b/pages/students/2016/jakub_maruniak/timovy_projekt/README.md new file mode 100644 index 0000000000..43b3dd5afd --- /dev/null +++ b/pages/students/2016/jakub_maruniak/timovy_projekt/README.md @@ -0,0 +1,90 @@ +**Crowdsourcing** + +Čo je to crowdsourcing? Výraz _crowdsourcing_ bol prvý krát použitý v júni 2006, kedy editor magazínu Wired, Jeff Howe, vydal článok „The Rise of Crowdsourcing" [1]. V tomto článku a v ďalších príspevkoch na svojom blogu popisuje novú organizačnú formu, koncept, pri ktorom je problém zadaný neznámej skupine riešiteľov. Zákazníci, alebo žiadatelia môžu uverejniť požadované úlohy na crowdsourcingovú platformu, kde dodávatelia – skupina, alebo jednotlivci vykonajú tieto úlohy na základe ich záujmov a schopností [2]. + +Podobne ako mnoho iných výrazov, ktoré boli po prvý krát použité v magazíne Wired, aj výraz crowdsourcing sa rýchlo udomácnil a začal byť používaný širokou verejnosťou. Podľa vyjadrenia Howa, sa vyhľadávanie termínu crowdsourcing pomocou Googlu zvýšilo v priebehu jedného týždňa po uverejnení článku na jeho blogu z 3 až na 180 000 výsledkov. Táto téma je aj dnes veľmi diskutovanou oblasťou výskumu, pričom v priebehu posledných 5 rokov bolo publikovaných viac ako 10 000 publikácii [3]. Platformy, akými sú Amazon Mechanical Turk, alebo CrowdFlower poskytujú možnosť jednoduchého spojenia zákazníkov a dodávateľov. + +Presne definovať crowdsourcing je kvôli rozdielnemu pohľadu na túto problematiku takmer nemožné. To, čo niektorí autori považujú za súčasť tejto oblasti nemusia iní odborníci klasifikovať ako crowdsourcing. Príkladom môžu byť tvrdenia autora Buechelera [4], ktorý vo svojom výskume opisuje Wikipediu ako príklad crowdsourcingu, alebo autor Huberman [5] na tento príklad využíva YouTube, zatiaľ čo Frank Kleeman [6] vo svojom článku tvrdí úplný opak. Množstvo rozdielnych definícii má za následok to, že crowdsourcing nemožno definovať koherentne. Estellés-Arolas a Fernando Gonzáles-Ladrón-de-Guevara vydali v roku 2012 odborný článok venujúci sa tejto problematike, pričom zozbierali odbornú literatúru na túto tému a našli takmer 40 rozdielnych interpretácií tohto termínu s viacerými konfliktmi [7]. Aj podľa vyjadrenia Darena Brabhama sa začalo mnoho médií využívať ako príklad pre crowdsourcing, avšak nemajú nič spoločné s ich pôvodnou štruktúrou. Spomenul napríklad Wikipediu, YouTube, Flickr, blogy a open-source softvéry. Všetko, kde sa nachádzala väčšia skupina ľudí, ktorá robila čokoľvek bola chybne považovaná za crowdsourcing, pričom aj v mnohých známych médiách bola o tejto problematike rozširovaná mätúca informácia o tom, čo to vlastne je [1]. Estellés-Arolas a Fernando Guaevara vo svojej práci rozanalyzovali dostupné informácie a dospeli k záveru, že správna definícia by mala byť: „Crowdsourcing je typ online participatívnej aktivity, v ktorej jednotlivec, inštitúcia, nezisková organizácia, alebo spoločnosť navrhne skupine jednotlivcov s rôznymi znalosťami, rôzneho pohlavia a počtu prostredníctvom verejnej výzvy možnosť dobrovoľného vykonávania úlohy. Vykonanie úlohy variabilnej zložitosti a modularity, ktorej sa skupina zúčastní prínosom vo forme svojej práci, peňazí, vedomostí a/alebo skúseností prináša vždy vzájomný prospech. Používateľ je uspokojený daným typom potreby, či už je to finančným spôsobom, sociálnym uznaním, sebauspokojením alebo rozvojom individuálnych zručností, zatiaľ čo zadávateľ získa a využije vo svoj prospech to, čo používateľ doniesol do projektu, ktorého forma závisí od typu vykonávanej činnosti. " [7] + +Využitie tohto konceptu so sebou prináša aj potenciálne benefity, medzi ktoré môžeme zaradiť: [2], [8] + +- Náklady – Odmeny za vykonanú prácu sa značne líšia na základe typu vykonávanej práce, začínajú na mikro platbách, ale môžu sa vyšplhať až na niekoľko stovák, resp. tisícok eur. Zákazníci platia iba za vedomosti, ktoré potrebujú pre svoj konkrétny projekt. Účastníci crowdsourcingových projektov sú často krát amatéri, čerství absolventi univerzít alebo jednotlivci, ktorí si chcú vo voľnom čase privyrobiť a teda nemajú také vysoké nároky ako profesionáli. Taktiež niektoré typy úloh sú vykonávane zadarmo, na báze dobrovoľníctva. +- Kvalita – vďaka prístupu k širokej skupine vývojárov, ktorí majú požadovanú zručnosť k vypracovaniu daného problému si má zadávateľ možnosť vybrať riešenie, ktoré najviac vyhovuje jeho podmienkam, resp. má prístup k väčšiemu množstvu dosiahnutých výsledkov. +- Rýchlosť – vďaka prístupu k väčšiemu množstvu talentov je možné vyvíjať, resp. zadať niekoľko úloh súčasne, nakoľko úlohy sa neviažu ku konkrétnemu vývojárovi. Taktiež sú tvorcovia na crowdsourcingových platformách často ochotní pracovať vo svojom voľnom čase, alebo cez víkendy, takže požadovaná úloha môže byť splnená o výrazne nižší čas ako v porovnaní s klasickými zamestnancami vo firmách. +- Kreativita a inovácie – rozmanitosť odborných znalostí, ktoré poskytuje dav je omnoho väčšia ako v porovnaní s väčšinou jednotlivých spoločností. To zaisťuje, že riešenia môžu byť kreatívnejšie. + +Na základe týchto benefitov možno konštatovať a dedukovať, že čoraz viac úloh bude riešených práve takouto formou. Aj Lakhani a Panetta v ich štúdii poukazovali na to, že splniť úlohy požadujúce konkrétne znalosti bude pomocou klasického uzatvoreného modelu čoraz náročnejšie, nakoľko väčšina potrebných znalostí sa bude nachádzať mimo túto organizáciu [2], [9]. + + + + + +**Crowdsourcing a spracovanie prirodzeného jazyka** + + _Natural Language Processing (NLP),_ alebo spracovanie prirodzeného jazyka je oblasť výskumu, ktorá prepája lingvistiku a umelú inteligenciu. Prirodzený jazyk je v porovnaní s počítačovými programovacími jazykmi úplne odlišný. Prirodzený jazyk slúži na komunikáciu medzi ľuďmi a vzájomné vymieňanie si informácii. Nie sú určené na preklad do konečného cyklu matematických operácii, aké používajú programovacie jazyky. Počítačový program napísaný v určitom programovacom jazyku odovzdá stroju konkrétnu úlohu, ktorú má vykonať. Neexistuje však kompilátor pre prirodzený jazyk, akými sú napríklad slovenčina, alebo angličtina. + +Spracovanie prirodzeného jazyka predstavuje v princípe preklad prirodzeného jazyka na dáta (čísla), pomocou ktorých sa počítač učí o svete. Toto chápanie sveta môže byť následne použité na generovanie textu v prirodzenom jazyku, ktorý odráža toto chápanie [10]. + +Systém spracovania prirodzeného jazyka je často nazývaný „pipeline", teda potrubie. Toto pomenovanie môžeme chápať ako zreťazené spracovanie, ktoré pozostáva z niekoľkých častí, pričom vstupom na začiatku je prirodzený jazyk a na konci je spracovaný výstup. Myšlienkou je rozdeliť problém na malé kúsky a následne využiť strojové učenie na vyriešenie každého z týchto kúskov osobitne. Zreťazením viacerých modelov strojového učenia tak môžeme spracovať aj komplikovanejšie vstupy [11]. Je známym faktom, že výkonnosť systémov strojového učenia vo veľkej miere závisí aj od množstva a kvality dát, ktoré slúžia ako vstup pre tréningový algoritmus. + +V priebehu posledných 10 rokoch bolo spracovanie prirodzeného jazyka posúvané vpred vďaka stále rastúcemu množstvu anotovaných dát – korpusov. Tie sú potrebné na trénovanie NLP algoritmov, ich vyhodnocovanie, ako aj umožnenie porovnávania algoritmov a opakované experimentovanie. V minulosti sa o produkovanie takýchto dát starali projekty ako napríklad ACE-2004, TAC, SemEval a Senseval alebo veľký projekt OntoNotes [12]–[15]. Tie sa ukázali, ako základ pre tréning NLP algoritmu a vďaka nim dnes vieme, aký spôsob je najlepší pre vytváranie anotácii vysokej kvality prostredníctvom zamestnávania, školenia a riadenia skupín lingvistických expertov. V posledných rokoch vznik rôznych crowdsourcových platforiem podmienil výskumníkov v oblasti NLP, aby experimentovali s týmto modelom ako novým prístupom pri získavaní jazykových korpusov [16]. Mnoho pozornosti si tieto platformy získali aj vďaka tomu, že získavanie anotácii pre tréning systémov umelej inteligencie pomocou klasických metód bolo často namáhavé a veľmi nákladné. Viacero výskumov na túto tému v poslednej dobe poukazuje na fakt, že pokiaľ sú anotácie získané od bežných ľudí v dostatočnej kvantite, dokážu sa svojou kvalitou vyrovnať, alebo často krát aj prekonať anotácie od expertov a to za podstatne nižšie náklady [17], [18], [19]. + +Vďaka crowdsourcingu majú výskumníci jednoduchý prístup k veľkej zásobe lacnej práce a poskytuje im potenciál na podrobné skúmanie jazykových javov vďaka obrovskému množstvu vzoriek ľudských anotovaných dát. Táto metóda získavania dát je veľmi cenná pre počítačových lingvistov ako zdroj označených tréningových dát na využitie v strojovom učení a taktiež ako prostriedok na zhromažďovanie údajov zo spoločenských vied, ktoré spájajú používanie jazyka so základným presvedčením a správaním [3]. + +Efektívne zbieranie crowdsourcových dát vyžaduje pozorné kladenie dôrazu na samotný proces, od výberu vhodnej skupiny pracovníkov, cez zadanie jasných inštrukcii, ktoré by mali byť pochopiteľné pre každého, až po vykonanie kontroly zozbieraných dát a eliminovanie spamu, ktorý bol vyplnený náhodne alebo zlým spôsobom, iba za účelom získania odmeny. + +Model crowdsourcingu pre vytváranie korpusu môže mať 3 formy. Prvou formou je mechanizovaná práca, kde sú pracovníci zvyčajne finančne odmenení. Sem patria problémy, ktoré sú subjektívne a zatiaľ nemôžu byť spoľahlivo riešené automaticky, ako napríklad získavanie názorov a citov (Mellebeek a kol., 2010) [19], rozpoznanie správneho výrazu slov (Parent, Eskenazi, 2010) [20], odpovedanie na otázky (Heilman a Smith, 2010) [21], korpusy získavané zo špeciálnych zdrojov – Twitter (Finin a kol., 2010) [22], alebo emailová komunikácia (Lawson a kol., 2010) [23] a mnoho ďalších. Nespornou výhodou crowdsourcingu je prístup k zahraničným trhom a k ľuďom, ktorých materinský jazyk je nezvyčajný, exotický. Ďalšou formou crowdsourcingu sú hry s určitým účelom (Games with a purpose – GWAP), v tomto prípade na anotáciu textov. Jedná sa o alternatívnu metódu anotačnej metódy za využitia hry. Úloha je pretransformovaná na hru, výsledkom ktorej sú anotačné dáta. Podľa niektorých výskumov vedie využitie tejto metódy ku kvalitnejším výsledkom a väčšiemu nasadeniu anotátorov vďaka tomu, že ku práci je pridaná zábavná zložka. Taktiež môže hra osloviť iné publikum, než iba klasickú skupinu crowdsourcerov, a teda môže poskytnúť väčšie množstvo výsledkov [24]. Väčšina takýchto hier v sebe obsahuje prvky hier, akými sú počítadlo skóre, výber obtiažnosti, tabuľku najlepších hráčov, ale samotná hra je z väčšej bázy v textovej forme so silnou podobnosťou s tradičnou anotáciou. V niektorých výskumoch sa však vývojári snažili o opačný prístup a navrhli klasickú grafickú hru, do ktorej následne importovali prvky anotácie. Príkladom pre takúto hru môže byť napríklad _Puzzle Racer_ [24]. Poslednou formou je využívanie dát od dobrovoľníkov, ktorí sa rozhodli určitým spôsobom prispieť k anotácii. Príkladom môže byť určovanie vhodného významu konkrétneho slova vo vete, určovanie typov entít vo vetách, hľadanie chýb atď. Vhodným príkladom môže byť napríklad online demo nástroja Prodigy [25]. + + + +**Zoznam použitej literatúry** + +[1] D. C. Brabham, _Crowdsourcing_. 2013. + +[2] K. J. Stol, B. Caglayan, and B. Fitzgerald, "Competition-Based Crowdsourcing Software Development: A Multi-Method Study from a Customer Perspective," _IEEE Trans. Softw. Eng._, vol. 45, no. 3, pp. 237–260, 2019. + +[3] C. Callison-Burch, L. Ungar, and E. Pavlick, "Crowdsourcing for NLP," no. January, pp. 2–3, 2015. + +[4] T. Buecheler, J. H. Sieg, R. M. Füchslin, and R. Pfeifer, "Crowdsourcing, open innovation and collective intelligence in the scientific method: A research agenda and operational framework," _Artif. Life XII Proc. 12th Int. Conf. Synth. Simul. Living Syst. ALIFE 2010_, no. August, pp. 679–686, 2010. + +[5] B. A. Huberman, D. M. Romero, and F. Wu, "Crowdsourcing, attention and productivity," _J. Inf. Sci._, vol. 35, no. 6, pp. 758–765, 2009. + +[6] F. Kleemann, G. G. Voß, and K. Rieder, "Un(der)paid Innovators: The Commercial Utiliza-tion of Consumer Work through Crowdsourcing," _Sci. Technol. Innov. Stud._, vol. 4, no. 1, p. PP. 5-26, 2008. + +[7] E. Estellés-Arolas and F. González-Ladrón-De-Guevara, "Towards an integrated crowdsourcing definition," _J. Inf. Sci._, vol. 38, no. 2, pp. 189–200, 2012. + +[8] E. Schenk and C. Guittard, "Towards a characterization of crowdsourcing practices," _J. Innov. Econ._, vol. 7, no. 1, p. 93, 2011. + +[9] K. R. Lakhani and J. A. Panetta, "The Principles of Distributed Innovation." + +[10] H. Hobson, Lane; Howard, Cole; Hapke, _Natural Language Processing in Action_. Manning, 2019. + +[11] "The essential guide to how NLP works - Riti Dass - Medium." [Online]. Available: https://medium.com/@ritidass29/the-essential-guide-to-how-nlp-works-4d3bb23faf76. [Accessed: 11-Nov-2019]. + +[12] "ACE 2004 Multilingual Training Corpus - Linguistic Data Consortium." [Online]. Available: https://catalog.ldc.upenn.edu/LDC2005T09. [Accessed: 12-Nov-2019]. + +[13] "Text Analysis Conference (TAC)." [Online]. Available: https://tac.nist.gov/. [Accessed: 12-Nov-2019]. + +[14] "SENSEVAL 3 – evaluation exercises." [Online]. Available: https://www.senseval.org/. [Accessed: 12-Nov-2019]. + +[15] "OntoNotes Release 5.0 - Linguistic Data Consortium." [Online]. Available: https://catalog.ldc.upenn.edu/LDC2013T19. [Accessed: 12-Nov-2019]. + +[16] M. Sabou, K. Bontcheva, L. Derczynski, and A. Scharl, "Corpus annotation through crowdsourcing: Towards best practice guidelines," _Proc. 9th Int. Conf. Lang. Resour. Eval. Lr. 2014_, no. May 2018, pp. 859–866, 2014. + +[17] R. Snow, B. O'connor, D. Jurafsky, and A. Y. Ng, "Cheap and Fast-But is it Good? Evaluating Non-Expert Annotations for Natural Language Tasks," 2008. + +[18] Q. Su, D. Pavlov, J.-H. Chow, and W. C. Baker, _Internet-Scale Collection of Human-Reviewed Data_. . + +[19] B. Mellebeek, F. Benavent, J. Grivolla, J. Codina, M. R. Costa-Jussà, and R. Banchs, "Opinion Mining of Spanish Customer Comments with Non-Expert Annotations on Mechanical Turk." + +[20] G. Parent and M. Eskenazi, "Clustering dictionary definitions using Amazon Mechanical Turk." + +[21] M. Heilman and N. A. Smith, "Rating Computer-Generated Questions with Mechanical Turk," Association for Computational Linguistics, 2010. + +[22] T. Finin, W. Murnane, A. Karandikar, N. Keller, J. Martineau, and M. Dredze, "Annotating Named Entities in Twitter Data with Crowdsourcing," Association for Computational Linguistics, 2010. + +[23] N. Lawson, K. Eustice, M. Perkowitz, and M. Yetisgen-Yildiz, "Annotating Large Email Datasets for Named Entity Recognition with Mechanical Turk." + +[24] D. Jurgens and R. Navigli, "It's All Fun and Games until Someone Annotates: Video Games with a Purpose for Linguistic Annotation." + +[25] "Live Demo · Prodigy · An annotation tool for AI, Machine Learning & NLP." [Online]. Available: https://prodi.gy/demo?view\_id=ner. [Accessed: 12-Nov-2019]. \ No newline at end of file diff --git a/pages/students/2016/jan_holp/README.md b/pages/students/2016/jan_holp/README.md new file mode 100644 index 0000000000..48aab37885 --- /dev/null +++ b/pages/students/2016/jan_holp/README.md @@ -0,0 +1,25 @@ +# Ján Holp + +[Bakalárska práca 2018 - Vyhľadávač na slovenskom internete](https://opac.crzp.sk/?fn=detailBiblioForm&sid=A4CA3C451D400D4BD034603141D1) + +## Tímový projekt 2019 + +- Vypracujte min. 4 stranový abstrakt z knihy "Hang Li: Learning to Rank for Information Retrieval and Natural Language Processing" +- Sústreďte sa najprv na algoritmus PageRank a BM25 +- citujte 10 najvýznamnejších bibliografických zdrojov + + +## Návrh na zadanie DP + +- Vypracujte prehľad metód ohodnotenia dokumentov v systémoch získavania informácií +- Implementujte jednoduchý systém pre získavanie informácií v slovenskom jazyku, v ktorom využijete ohodnotenie dokumentov. +- Navrhnite a vypracujte experimenty, v ktorých vyhodnotíte vybrané metódy odhodnotenia dokumentov +- Navrhnite možné zlepšenia presnosti vyhľadávania + +## Poznámky k vypracovaniu DP + +- možnosť pracovať s veľkými dátami Elasticsearch, je nutné sprevádzkovať ES Cluster. +- možnosť vypracovať jednoduché demo web vyhľadávača +- inšpirácia Agent pre získavanie textu "dano/websucker" +- Pozrite si Python knižnice pre elasticsearch, a information retrieval (pagerank a pod.) + diff --git a/pages/students/2016/lukas_pokryvka/README.md b/pages/students/2016/lukas_pokryvka/README.md new file mode 100644 index 0000000000..24facce736 --- /dev/null +++ b/pages/students/2016/lukas_pokryvka/README.md @@ -0,0 +1,11 @@ + +# Lukáš Pokrývka + +## Tímový projekt 2019 + + + +- min. 4 strany rešerš na tému: "Paralelné spracovanie prirodzeného jazyka" alebo "Paralelné trénovanie sémantických modelov prirodzeného jazyka" (word2vec, word embeddings, GloVe, fastText) +- citujte min. 10 najvýznamnejších bibliografických zdrojov + +[Rešerš](./timovy_projekt) \ No newline at end of file diff --git a/pages/students/2016/lukas_pokryvka/timovy_projekt/README.md b/pages/students/2016/lukas_pokryvka/timovy_projekt/README.md new file mode 100644 index 0000000000..9e4272f4f7 --- /dev/null +++ b/pages/students/2016/lukas_pokryvka/timovy_projekt/README.md @@ -0,0 +1,94 @@ +**Paralelné spracovanie** + +Systémy na spracovanie prirodzeného jazyka (_z angl. Natural Language Processing_ – ďalej už len NLP), boli ešte v nedávnej minulosti založené na sériových algoritmoch, ktoré simulovali spôsob, ktorým ľudia čítajú text – slovo za slovom, riadok po riadku [1]. Keďže týmto štýlom boli prezentované všetky gramatické teórie, programátori ich týmto štýlom aj implementovali. + +Žijeme v dobe, kedy jedno-jadrový výkon v dostupnom hardwari nemusí stačiť. Táto technológia má viacero nedostatkov, od rýchlosti prenosu dát, až po zvyšovanie nákladov, s cieľom zvýšiť rýchlosť jedno-jadrových procesorov[2]. Distribuované systémy a multi-jadrové architektúry nám dokazujú, že paralelizmus je budúcnosť výpočtovej techniky. + +Paralelné spracovanie umožňuje riešiť väčšie problémy za kratší čas, čo však prináša nové problémy – správne načasovanie a spustenie programov medzi zdieľanými počítačmi a ich následná synchronizácia. Jedna z oblastí, ktorá potrebuje veľký výpočtový výkon, je NLP. Dôvod, prečo NLP vyžaduje veľký výpočtový výkon, je práca s veľkými balíkmi dát. + +Poznáme dve populárne metódy, ktorými sa dá dosiahnuť vysoký výkon pre NLP. Prvou možnosťou je pridať viac grafických kariet do servera, ktorý je zodpovedný za spracovávanie, alebo prepojiť viacero serverov a tým pádom využiť dostupnosť viacerých procesorov [3]. Grafické karty sú navrhnuté paralelne spracovávať veľký počet úloh a pristupovať k veľkému objemu pamäti. Na druhej strane, čo sa týka dizajnu procesora, ktorý je jadrom každého počítača, ten bol navrhnutý tak, aby úlohy riešil sekvenčne a vysokou rýchlosťou. Kvôli tomuto dokáže pristupovať iba k obmedzenému množstvu pamäti. + +Trénovaním modelov hlbokého učenia sa zistilo, že viacero operácií dokáže ťažiť z paralelného spracovania. Medzi tieto operácie patrí napríklad násobenie matíc [3]. Podobne ako grafické animácie, ktoré boli hlavným cieľom pre trh s grafickými kartami, trénovanie modelov hlbokého učenia je významne urýchlený paralelizovaním násobenia matíc. + + ![Násobenie matíc](./matice.png) +_Obr._ _1. Násobenie matíc_ _[3]._ + +Jednotlivé jadrá grafickej karty sú v porovnaní s jadrami procesora pomalé, ale každé jadro dokáže vypočítať príslušný vektorový komponent. Keby tento výpočet prebiehal na procesore, každý riadok násobenia by sa vykonával sekvenčne. Ak by počet riadkov matice bol _n_, procesor by na výpočet rovnakej úlohy potreboval _n_-krát viacej času. Ak by sme dokázali zredukovať čas potrebný na spracovanie modelu na napríklad na jednu desatinu, v praxi by to znamenalo, že dokážeme vyskúšať desať rôznych prístupov a dosiahnuť oveľa vyššiu presnosť. + +**Word embedding** + +Word embedding je názov pre skupinu techník, slúžiacich na jazykové modelovanie v NLP. V tomto procese sú slová a frázy zo slovníka mapované do vektorov, ktoré majú podobu reálnych čísel. Táto technika zahŕňa premenu priestoru s viacerými dimenziami na spojitý vektorový priestor s nižším počtom dimenzií. Použitím vnorených slov a fráz ako základnou reprezentáciou vstupu bol zaznamenaný zvýšený výkon pri úlohách, ako syntaktická analýza a analýza sentimentov [4]. + +Word embedding je často využívaný v NLP práve pre jeho schopnosť zachytiť z vektorovej reprezentácie slov ich sémantické vlastnosti a lingvistické vzťahy medzi slovami použitím hlbokého učenia [5]. Tým pádom dokáže dať väčšiemu objemu surového textu nejaký kontext. Tým, že z textu získame kontext, sa nám otvárajú dvere pre extrakciu informácií, možnosť odpovedať na rôzne otázky, alebo textová sumarizácia. Na internete sú verejne dostupné rôzne predtrénované vnorené slová, ako napríklad Google News, alebo GloVe. + +**GloVe** + +Tento model kombinuje výhody dvoch najväčších rodín modelov v literatúre – maticová faktorizácia a metódy lokálneho kontextu [6]. Efektívnosť tohto modelu je dosiahnutá hlavne trénovaním iba na nenulových elementoch v maticiach, ktoré reprezentujú spoločný výskyt dvoch slov. Výstupom tohto modelu je významový vektorový priestor. Ďalšou jeho výhodou je vyšší výkon v porovnaní s modelmi založenými na podobnej technológii a to konkrétne v úlohách zameraných na podobnosť a rozpoznávanie vlastných mien. + +| Pravdepodobnosť a pomer | k = pevné | k = plyn | k = voda | k = móda | +| --- | --- | --- | --- | --- | +| P(k|ľad) | 1.9 x 10^-4 | 6.6 x 10^-5 | 3.0 x 10^-3 | 1.7 x 10^-5 | +| P(k|para) | 2.2 x 10^-5 | 7.8 x 10^-4 | 2.2 x 10^-3 | 1.8 x 10^-5 | +| P(k|ľad)/P(k|para) | 8.9 | 8.5 x 10^-2 | 1.36 | 0.96 | + +_Tab. 1. Pravdepodobnosti z testovacieho súboru dát_ _[7]._ + +Hlavná myšlienka tohto modelu vyplýva z obyčajného sledovania pomeru spoločného výskytu dvoch slov. Z toho sa usudzuje, že je z týchto slov neskôr možné vyvodiť ich význam. V tabuľke číslo jeden sa uvažuje výskyt pravdepodobností dvoch slov, ľad a para, s testovacími slovami zo slovníka. Testovací súbor dát má približne šesť miliárd slov. + +Podľa očakávaní, ľad sa vyskytuje častejšie so slovom pevný (myslené skupenstvo), ako so slovom plyn. Naopak, para sa vyskytuje častejšie práve so slovom plyn, ako so slovom pevný. So slovom voda sa tieto dva slová vyskytujú približne rovnako a so slovom móda sa ich výskyt rapídne znižuje. Vďaka týmto pravdepodobnostiam vieme zhruba odhadnúť, že v testovacom súbore mali tieto slová spoločný význam viac v zmysle termodynamiky, ako v móde. + +**Word2vec** + +Word2vec je skupina relačných modelov, ktorá má za úlohu vytvárať word embedding. Tieto modely sú trénované na rekonštrukciu lingvistického kontextu slov. Word2vec používa veľký súbor dát ako svoj vstup a následne produkuje vektorový priestor, zvyčajne o veľkosti niekoľkých stoviek dimenzií. Každému slovu, ktoré je unikátne, je priradený prislúchajúci vektor v priestore. Ich pozícia vyplýva z ich významu, takže slová, ktoré zdieľajú podobný význam, sú uložené bližšie pri sebe. + +Hlavnou výhodou tohto modelu je teda jeho schopnosť vytvárať a niesť sémantický význam, čo je veľmi užitočné pre rôzne NLP projekty [8]. Dve hlavné techniky používané v tomto modely sú _skip-gram_ a _continuous bag-of-words(CBOW)_ [9]. Tieto dva modely vytvárajú odlišne nezávislosť slov a takisto inak vnímajú podmienenosť a predpoklady. Ich spoločnou črtou je rušenie postupnosti slov, ktorá tvorí kontext vety. Sémantickú informáciu teda čerpajú z _n_-tíc slov a Word2vec zostáva naďalej populárnou voľbou z dôvodu jeho efektivity a jednoduchosti. + +Hlavný rozdiel medzi syntaxou s sémantikou je, že dôležitá informácia pre syntax je rozloženie slov vo vete, kdežto sémantika vníma hlavne problém, ktoré slová patria k sebe. Keďže v modely, v ktorom je postupnosť slov zrušená, väčšina syntaktických vzťahov nedokáže byť správne interpretovaná [9]. Model CBOW je využívaný hlavne v úlohách, kedy má syntax prioritu. + +**FastText** + +FastText je voľne dostupná, odľahčená knižnica, určená pre word embedding a klasifikáciu textu. Bola vytvorená v laboratóriách umelej inteligencie spoločnosti Facebook. V súčasnosti obsahuje pred-trénované modely pre vyše 160 rôznych jazykov, vrátane slovenčiny [10]. + +Klasifikácia textu je dôležitou súčasťou NLP a to hlavne v úlohách, ako je webové vyhľadávanie, získavanie informácií, rebríčky, spam filter, alebo klasifikácia dokumentov [11]. V súčasnosti sa dostali do popredia modely na báze neurónových sietí. Napriek tomu, že tieto modely dosahujú nadpriemerné výsledky pri výkone v praktických úlohách, majú tendenciu spomaľovať pri trénovaní a testovaní. To ich limituje pri ich použití na väčších dátových súboroch. Ich hlavnou výhodou sú kompaktné veľkosti trénovacích modelov, čo je dôležité hlavne pre aplikácie, ktoré musia pracovať na zariadeniach s obmedzenou pamäťou, ako napríklad smartfóny [12]. + +Textové klasifikátory ako fastText zjednodušujú vývojárom vývoj rôznych nástrojov s potrebou základnej analýzy jazyka. Práve identifikovanie rôznych odkazov ako potenciálne nechcené, alebo filtrovanie spamu si vyžadujú základný jazykový model, ktorý dokáže tento jazyk správne interpretovať a kategorizovať. + +V porovnaní s Word2vec bol pridaný nový algoritmus. Tento algoritmus berie do úvahy a predpovedá okolitých n-charakterov, kdežto Word2vec spracováva len okolité slová [3]. Pre slovo auto by to boli napríklad dvojice a trojice: au, aut, ut, uto, to. FastText následne vytvára vektorovú reprezentáciu pre každú takúto dvojicu, alebo trojicu. To zahŕňa aj zle napísané slová a časti slov. Výhodou tohto prístupu je, že fastText lepšie zvláda prácu so slovami s menej častým výskytom. Predtrénované modely poskytované Facebookom boli trénované iba na dostupných súboroch dát Wikipedie. To znamená, že slovník a presnosť modelov sa môžu líšiť v závislosti od jazyka. + + + + + + + + + + + + + +**Zoznam použitej literatúry** + +[1]. Moghrabi, C. - Moussa, S. E. - Eid, M. S. Natural language processing complexity and parallelism. IEEE: Proceedings - International Symposium on High Performance Computing Systems and Applications, 2002. 277 str. ISBN 0-7695-1626-2. + +[2]. Jos, Alexandre. Paraleliza¸c˜ao de Algoritmos de Processamento de L´ıngua Natural em Ambientes Distribu´ıdos. [Online] Instituto Superior Técnico, Universidade Técnica de Lisboa, október 2008 [cit. 08.11.2019] Dostupné na internete: \<[http://www.inesc-id.pt/publications/4052/pdf](http://www.inesc-id.pt/publications/4052/pdf)\> + +[3]. Lane H. – Howard C. – Hapke H. M. Natural Language Processing: In Action. New York: Manning Publications Co., 2019. ISBN 9781617294631. + +[4]. Socher R. – Bauer J. – Manning C. et al. Parsing With Compositional Vector Grammars. Stanford: Computer Science Department, Stanford University, 2013. ISBN 9781937284503. + +[5]. Wang Y. – Liu S. – Afzal N. et al. A Comparison of Word Embeddings for the Biomedical Natural Language Processing. Rochester: Department of health Sciences Research, Mayo Clinic, 2018. ISSN 15320464. + +[6]. Pennington J. – Socher R. – Manning C. GloVe: Global Vectors for Word Representation. Stanford: Computer Science Department, Stanford University, 2014. ISSN 00047554. + +[7]. GloVe: Global Vectors for Word Representation. [Online]. Dostupné na internete: \<[https://nlp.stanford.edu/projects/glove/](https://nlp.stanford.edu/projects/glove/)\> + +[8]. Rong Xin. Word2vec Parameter Learning Explained. [Online]. 2016 [cit. 10.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1411.2738.pdf](https://arxiv.org/pdf/1411.2738.pdf)\> + +[9]. Ling W. – Dyer C. – Black A. et al. Two/Too Simple Adaptations of Word2Vec for Syntax Problems. [online]. Lisbon: Instituto Superior Tecnico, Lisbon, Portugal, 2015 [cit. 10.11.2019] Dostupné na internete: \<[https://www.aclweb.org/anthology/N15-1142.pdf](https://www.aclweb.org/anthology/N15-1142.pdf)\> + +[10]. fastText: Library for efficient text classification and representation learning. [Online]. Dostupné na internete: \<[https://fasttext.cc/](https://fasttext.cc/)\> + +[11]. Joulin A. – Grave E. – Bojanowski P. et al. Bag of Tricks for Efficient Text Classification. [Online]. 15th Conference of the European Chapter of the Association for Computational Linguistic, EACL 2017 [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1607.01759.pdf](https://arxiv.org/pdf/1607.01759.pdf)\> + +[12]. Joulin A. – Grave E. – Bojanowski P. et al. FastText.zip: Compressing Text Classification Models. [Online]. ICLR, 2017. [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1612.03651.pdf](https://arxiv.org/pdf/1612.03651.pdf)\> \ No newline at end of file diff --git a/pages/students/2016/lukas_pokryvka/timovy_projekt/matice.png b/pages/students/2016/lukas_pokryvka/timovy_projekt/matice.png new file mode 100644 index 0000000000..e364838633 Binary files /dev/null and b/pages/students/2016/lukas_pokryvka/timovy_projekt/matice.png differ diff --git a/pages/students/2016/maros_harahus/README.md b/pages/students/2016/maros_harahus/README.md new file mode 100644 index 0000000000..795f2b978e --- /dev/null +++ b/pages/students/2016/maros_harahus/README.md @@ -0,0 +1,21 @@ +# Maroš Harahus + +## Tímový projekt 2019 + +Projektová stránka [Podpora slovenčiny v knižnici Spacy](../../../teachers/hladek/topics/spacy) + +[Spacy tutoriál](./timovy_projekt) + +- Vypracovať tutoriál pre prácu s nástrojom Spacy pre úlohu zisťovania gramatických značiek (part-of-speech). Súčasťou tutoriálu by mali byť aj odkazy na relevantné zdroje (odborné članky, min. 4). +- Návrh na zadanie: Doplnenie podpory morfologického značkovania slovenského jazyka do nlp frameworku (spacy alebo flair) +- Úloha na ďalší semester: + - Pozrieť jazykové zdroje z https://www.clarin.eu/resource-families/manually-annotated-corpora (MultextEast) + - Oboznámte sa so sadou morfologických značiek Universal Dependencies https://universaldependencies.org/sk/index.html + - Oboznámte sa so sadou SNK https://korpus.sk/morpho.html + - Vytvoriť mapovanie morfologických značiek SNK na Universal Dependencies + +## Návrh na zadanie DP + +- Vypracujte prehľad spôsobov morfologickej anotácie slovenského jazyka. +- Pripravte trénovacie dáta vo vhodnom formáte a natrénujte štatistický model morfologického značkovania +- Vyhodnotte presnosť značkovania a navrhnite možné zlepšenia. diff --git a/pages/students/2016/maros_harahus/timovy_projekt/README.md b/pages/students/2016/maros_harahus/timovy_projekt/README.md new file mode 100644 index 0000000000..92dc8ffa7e --- /dev/null +++ b/pages/students/2016/maros_harahus/timovy_projekt/README.md @@ -0,0 +1,190 @@ +# NLP + +Je založený na umelej inteligencii, ktorá sa zaoberá interakciami medzi počítačom a jazykmi. NLP uľahčuje proces analýzy a +porozumenia ľudského jazyka pre počítače a umelú inteligenciu. Pomáha extrahovať informácie z textu. V dnešnej dobe sa textové údaje vytvárajú vo veľkom množstve a je ich dôležité spravovať a odovzdať informácie z neštruktúrovaných údajov. Preto musíme údaje reprezentovať vo formáte v ktorom počítače rozumejú a v tomto prípade nám pomáha NLP. Má niekoľko prípadov použitia: + + +* Automatické zhrnutie +* Uznanie pomenovaného subjektu +* Systémy odpovedania na otázky +* Analýza sentimentu + +# SPACY + + + Je bezplatná knižnica pre NLP v programovacom jazyku python. Táto knižnica je napísala v Cythone a je určená pre budovanie extrakcie informácii alebo pochopenie prirodzeného jazyka. Je navrhnutý pre použitie v pythone a ponuka priateľské rozhranie API. + +## Detekcia viet + +Detekcia viet je proces lokalizácie začiatku a konca vety v danom texte. Tato detekcia nám umožňuje rozdeliť vetu resp. text na jazykovo významne jednotky. Tieto jednotky potom môžem využívať pri spracovaní text na vykonávanie úloh ako napríklad označovanie reči. + +## Part-of-speech (Part of Speech) + + +Značkovanie pomocou Part of Speech je proces označovania slova pomocou príslušnej časti reči, ako je podstatné meno, prídavné meno, sloveso, príslovka atď. Podľa gramatických pravidiel jazyka, ktoré sa ďalej konštruujú na základe kontextu výskytu slova a jeho vzťahy s inými slovami vo vete. Po tokenizácii môže spacy daný objekt označiť pomocou svojich najmodernejších štatistických modelov. Značky sú k dispozícii ako atribút objektu Token. + + +## Tokenizácia + + +Tokenizácia sa voľne označuje ako segmentácia textového dokumentu na slová, ktoré sa tiež nazývajú tokeny. Token je definovaný ako postupnosť znakov, ktoré spolu tvoria sémantickú jednotku pri spracovaní textu. V niektorých kontextoch nemusia byť tokeny slovami a môžu pozostávať zo slov alebo dokonca viacslovných fráz v závislosti od toho, čo sa považuje za sémantickú jednotku. Spacy tonizuje daný text na slová a interpunkcie použitím pravidiel, ktoré sú vyladené pre konkrétny jazyk. Najnákladnejšie pravidlo pre anglický jazyk je rozdelenie postupnosti znakov v texte na medzery (napr. Medzeru), často známe ako točenie medzier. +* **text_with_ws** tlačí tokenový text s medzerou (ak je k dispozícii), +* **is_alpha** zistí, či token pozostáva z abecedných znakov alebo nie, +* **is_punct** zistí, či je token interpunkčný symbol alebo nie, +* **is_space** zistí, či je token medzerou alebo nie, +* **shape_** vytlačí tvar slova, +* **is_stop** zistí, či je token zastavovacím slovom alebo nie, + +| Skratka | Anglicky vyznam | Slovensky vyznam | +|:-------:|:-------------------------:|:------------------:| +| ADJ | adjective | prídavné meno | +| ADP | adposition | umiestnenie | +| ADV | adverb | príslovka | +| AUX | auxiliary verb | pomocné sloveso | +| CONJ | coordinating conjunction | koordinačná spojka | +| DET | determiner | determinant | +| INTJ | interjection | prerušenie | +| NOUN | noun | podstatné meno | +| NUM | numeral | číslice | +| PART | particle | častica | +| PRON | pronoun | zámeno | +| PROPN | proper noun | vlastné meno | +| PUNCT | punctuation | interpunkcia | +| SCONJ | subordinating conjunction | podriadená spojka | +| SYM | symbol | symbol | +| VERB | verb | sloveso | +| X | other | iné | + + +| Tag | Description | Slovensky vyznam | Example | +|:----:|:-----------------------------------------:|:----------------:|:--------------------------:| +| CC | conjunction, coordinating | | and, or, but | +| CD | cardinal number | | five, three, 13% | +| DT | determiner | | the, a, these | +| EX | existential there | | there were six boys | +| FW | foreign word | | mais | +| IN | conjunction, subordinating or preposition | | of, on, before, unless | +| JJ | adjective | | nice, easy | +| JJR | adjective, comparative | | nicer, easier | +| JJS | adjective, superlative | | nicest, easiest | +| LS | list item marker | | | +| MD | verb, modal auxillary | | may, should | +| NN | noun, singular or mass | | tiger, chair, laughter | +| NNS | noun, plural | | tigers, chairs, insects | +| NNP | noun, proper singular | | Germany, God, Alice | +| NNPS | noun, proper plural | | we met two Christmases ago | +| PDT | predeterminer | | both his children | +| POS | possessive ending | | 's | +| PRP | pronoun, personal | | me, you, it | +| PRP$ | pronoun, possessive | | my, your, our | +| RB | adverb | | extremely, loudly, hard | +| RBR | adverb, comparative | | better | +| RBS | adverb, superlative | | best | +| RP | adverb, particle | | about, off, up | +| SYM | symbol | | % | +| TO | infinitival to | | what to do | +| UH | interjection | | oh, oops, gosh | +| VB | verb, base form | | think | +| VBZ | verb, 3rd person singular present | | she thinks | +| VBP | verb, non-3rd person singular present | | I think | +| VBD | verb, past tense | | they thought | +| VBN | verb, past participle | | a sunken ship | +| VBG | verb, gerund or present participle | | thinking is fun | +| WDT | wh-determiner | | which, whatever, whichever | +| WP | wh-pronoun, personal | | what, who, whom | +| WP$ | wh-pronoun, possessive | | whose, whosever | +| WRB | wh-adverb | | where, when | + + + + + +# Inštalácia spacy + +```python +pip install -U spaCy //instalacia spacy +python -m spacy download en //instalacia anglickeho jazyka +``` +#### prvý kód +```python +import spacy +nlp = spacy.load('en') +doc = nlp('Hello World!') +for token in doc: + print('"' + token.text + '"', token.idx) +#Vystup +# "Hello" 0 +# " " 6 +# "World" 10 +# "!" 15 +``` +Ako prvé si importujeme spacy knižnicu. Zadáme vetu, ktorú chceme prejsť tokenizáciu. V tomto pípade používame iba dva tokeny. Prvý nám vypíše text a medzeri, druhý token nám napíše, na ktorom mieste sa nachádza naše slovo. +```python +doc = nlp("Next week I'll be in Madrid.") +for token in doc: + print("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}".format( + token.text, + token.idx, + token.lemma_, + token.is_punct, + token.is_space, + token.shape_, + token.pos_, + token.tag_ + )) + +#vystup +# Next 0 next False False Xxxx ADJ JJ +# week 5 week False False xxxx NOUN NN +# I 10 -PRON- False False X PRON PRP +# 'll 11 will False False 'xx VERB MD +# 15 False True SPACE _SP +# be 17 be False False xx VERB VB +# in 20 in False False xx ADP IN +# Madrid 23 madrid False False Xxxxx PROPN NNP +# . 29 . True False . PUNCT +``` +* **token.text** reprezentácia textu dokumentu v Unicode, +* **token.idx** znakový index začiatku, +* **token.lemma_** základná podoba tokenu bez inflexných prípon, +* **token.is_punct** je to interpunkcia znamienka, +* **token.is_space** pozostáva token z bielych znakov, +* **token.shape_** transformácia reťazca tokenov na zobrazenie ortografických prvkov, + napríklad „Xxxx“ alebo „dd“ +* **token.pos_** hrubozrnná časť reči, +* **token.tag_** jemnozrnná reč. + +Poďme si rozobrať výstup prvého slova Next. Ako prvé sa nám vypíše samotné slovo, ďalej nasleduje, na ktorom indexe slovo začína. V našom prípade je to index 0. V ďalšom stĺpci máme slovo napísané pomocou malých písmen. Ďalšie dva stĺpce nám zisťujú, či dané slovo obsahuje interpunkčné znamienko (napr. apostrof) a či slovo nepozostáva z medzery. Predposledný stĺpec nám zisťuje, aký slovný druh (viď. tabuľku nižšie) je dané slovo v našom prípade je to podstatné meno atd. + +Detekcia vety + +```python +doc = nlp("These are apples. These are oranges.") + +for sent in doc.sents: + print(sent) + +# These are apples. +# These are oranges. +``` +Pomenovanie entit + +```python +import spacy + +nlp = spacy.load("en_core_web_sm") +doc = nlp("Apple is looking at buying U.K. startup for $1 billion") + +for ent in doc.ents: + print(ent.text, ent.start_char, ent.end_char, ent.label_) + +#Apple 0 5 ORG +#U.K. 27 31 GPE +#$1 billion 44 54 MONEY +``` +Na tomto príklade môžme pozorovať, že spacy dokáže rozlíšiť slova. Dokáže zistiť či dané slovo je napr. mesto(GPE-Geopolitical entity) alebo nejaká organizácia (ORG- Companies). Ďalej vie určiť či sa jedná o dátum, sumu peňazí, osobu atď. . + + +# Záver +V tomto semestri som sa venoval programovaciemu jazyku python. Študoval som tento programovací jazyk jeho syntax a ďalšie veci okolo tohto programovacieho jazyka. V ďalšej časti som sa venoval frameworku Spacy ktorý vytvára model pre Part Of Speech tagging. Zisťoval som čo tento framework dokáže robiť a na akom princípe funguje. Ďalších semestroch sa budem venovať podpory slovenského jazyka pre framework Spacy. Konkrétne vytvorené značkovania v slovenskom jazyku. Ako prvé si musím naštudovať sadu slovenského národného korpusu a na akom princípe funguje. V letnom semestri by som už vytvoriť mapovanie morfologických značiek slovenského národného korpusu. Ako hlavne body mojej diplomovej prace budú vypracovanie prehľadu spôsobu morfologickej anotácie slovenského jazyka. Taktiež si budem musieť pripraviť nejaké dáta s ktorými by som mohol pracovať vo svojej diplomovej práci. Poslednou cestou mojej prace bude vyhodnotiť presnosť značkovania mnou vytvoreného nastroja a navrhnúť nejaké zlepšenia ktoré by sa mohli do budúcna implementovať. + diff --git a/pages/students/2017/stanislav_matsunych/README.md b/pages/students/2017/stanislav_matsunych/README.md new file mode 100644 index 0000000000..57320148c7 --- /dev/null +++ b/pages/students/2017/stanislav_matsunych/README.md @@ -0,0 +1,59 @@ +# Stanislav Matsunych +## Bakalársky projekt 2019 + +Pozrieť si + +- https://medium.com/@shivambansal36/language-modelling-text-generation-using-lstms-deep-learning-for-nlp-ed36b224b275 +- https://towardsdatascience.com/character-level-language-model-1439f5dd87fe + +Prejsť si tutoriál + +- http://karpathy.github.io/2015/05/21/rnn-effectiveness/ +- https://machinelearningmastery.com/develop-character-based-neural-language-model-keras/ + +Cielom je: + +Vytvoriť jazykový model slovenského jazyka na báze rekurentných neurónových sietí + +- V prvom semestri bude výstup: +- jednoduchý program na vytvorenie LM a generovanie znakov z neho + +- Vypracujte rešerš na tému "Rekurentné neurónové siete na tvorbu jazykových modelov " (LSTM, GRU) cca 10 strán + +Možné trénovacie texty: [Zlatý fond sme](https://zlatyfond.sme.sk/) + +Možný framework pre web demo: [Flask](https://www.fullstackpython.com/flask.html) + +Tutoriál https://realpython.com/flask-by-example-part-1-project-setup/ + + + 502 mkdir flask + 503 ls -l + 504 cd flask/ + 505 ls -l + 506 python -m virtualenv + 507 python -m virtualenv ./venv + 508 ls -l + 509 source ./venv/bin/activate + 510 ls -l + 511 pip install flask + 512 ls -l + 513 ls -l ./venv/lib/python3.8/site-packages/ + 514 python + 515 pip install ipython + 516 ipython + 517 ls -l + 518 vim ./mojawebka.py + 519 history + + +## Bakalárska práca 2019 + +Generovanie a modelovanie prirodzeného jazyka pomocou rekurentných neurónových sietí + +### Návrh na zadanie + +1. Vypracovať prehľad metód generovania prirodzeného jazyka pomocou rekurentných neurónových sietí +2. Vyberte si vhodnú metódu na zostavenie modelu prirodzeného jazyka a natrénujte model na vhodných dátach. +3. Vytvorte aplikáciu, ktorá bude demonštrovať generovanie prirodzeného jazyka +4. Vyhodnotte vytvorený model a navrhnite jeho zlepšenia. \ No newline at end of file diff --git a/pages/students/2017/vzorny_student/README.md b/pages/students/2017/vzorny_student/README.md new file mode 100644 index 0000000000..3d1036dc13 --- /dev/null +++ b/pages/students/2017/vzorny_student/README.md @@ -0,0 +1,19 @@ +# Meno: Vzorový študent + +Do nadpisu dajte Vaše meno + +## Názov bakalárskej práce + +Uveďte názov témy na ktorej pracujete + +## Zadanie bakalárskej práce + +Tu napíšte zadanie Vašej diplomovej práce + +## Bakalársky projekt 2019 + +Tu uvediete Vaše výsledky predmetu Bakalarsky projekt + +- [Tutoriál](./bakalarsky_projekt) +- Zdrojové kódy, ak sú nejaké + diff --git a/pages/students/2017/vzorny_student/bakalarsky_projekt/README.md b/pages/students/2017/vzorny_student/bakalarsky_projekt/README.md new file mode 100644 index 0000000000..9f67384afe --- /dev/null +++ b/pages/students/2017/vzorny_student/bakalarsky_projekt/README.md @@ -0,0 +1,16 @@ +# Vzorový článok z Bakalárskeho projektu + +Vysvetlite: + +- na akej téme pracujete +- aký problém riešite +- aké prostriedky na riešenie sú k dispozícii +- aké prostriedky ste si zvolili na riešenie +- aké dáta ste spracovávali +- ako riešite zadaný problém +- aké výsledky ste dosiahli + +Uveďte zoznam relevantnej odbornej literatúry + +Uveďte aj odkaz na zdrojové kódy ktoré ste vytvorili + diff --git a/pages/teachers/hladek/subjects/bp2019/README.md b/pages/teachers/hladek/subjects/bp2019/README.md new file mode 100644 index 0000000000..8cad3c9ff9 --- /dev/null +++ b/pages/teachers/hladek/subjects/bp2019/README.md @@ -0,0 +1,9 @@ +--- +title: Bakalárske práce 2018/2019 +published: true +--- + +- Vyhľadávač na slovenskom internete: [Ján Holp](http://opac.crzp.sk/?fn=detailBiblioForm&sid=A4CA3C451D400D4BD034603141D1&seo=CRZP-detail-kniha) +- Identifikácia hraníc viet a dopĺňanie interpunkčných znamienok: [Dárius Lindvai](http://opac.crzp.sk/?fn=detailBiblioForm&sid=2D0B46080A5AC858AA11B21AE978&seo=CRZP-detail-kniha) +- Patrik Pavlišin TBD + diff --git a/pages/teachers/hladek/subjects/bp2020/README.md b/pages/teachers/hladek/subjects/bp2020/README.md new file mode 100644 index 0000000000..f56617da60 --- /dev/null +++ b/pages/teachers/hladek/subjects/bp2020/README.md @@ -0,0 +1,163 @@ +--- +title: Bakalársky projekt 2019/2020 +published: true +--- + +# Bakalársky projekt 2019/2020 + +- Vedúci: Daniel Hládek +- odporúčaný čas konzultácie: štvrtok o 9:00 +- Oblasť výskumu: Spracovanie prirodzeného jazyka + +## Študenti + +- [Stanislav Matsunych](../../../../students/2017/stanislav_matsunych) +- Peter Maľar +- Andrej Hopko +- Kyryl Kobzar +- Dmitro Ushatenko +- Ediz Morochovič + +## Ciele + +- oboznámiť sa so základmi spracovania prirodzeného jazyka +- naučiť sa pracovať s [odbornou literatúrou](../zp) + +## Výstupy + +- článok na vybranú tému +- praktická aplikácia (demo, krátky program) +- [Odovzdanie cez Moodle](https://moodle.tuke.sk/moodle35/course/view.php?id=872&noprocess) heslo je BP2019 + +## Témy + +- Anotácia lingvistického korpusu : Andrej Hopko +- Identifikácia pomenovaných entít v slovenskom jazyku: Ediz Morochovič (študent na mobilite) +- Identifikácia pomenovaných entít v prirodzenom jazyku s pomocou neurónových sietí: Kyryl Kobzar +- Rekurentné neurónové siete pre jazykové modelovanie a generovanie prirodzeného jazyka: Stanislav Matsunych +- Jednoduchý chatbot v jazyku Python: Dymitro Ushatenko +- Automatická oprava preklepov: Peter Maľar + +## Stretnutia + +- 10.10 - Hopko, Matsunych, Kobzar +- 17.10 - Hopko, Pavlišin, Matsunych, Kobzar, Ushatenko (Prečítať knihu, prejsť Spacy tutoriál, nainštalovať Anaconda) +- 21.10. - Maľar +- 24.10 - Pracovná cesta +- 28.10 o 9:30 - +- 31.10 - Dekanské voľno +- 4.11. - Hopko +- 7.11 - Maľar, Ushatenko +- 14.11 - Odovzdanie draftu reportu +- 22.11. Matsunych +- 19.12. Matsunych + +## Andrej Hopko + +- Práca pomocou "Anaconda Prompt" +- Vyskúšať "python -m spacy" podľa tutoriálu na stránke +- Oboznámiť sa s https://prodi.gy/ (využíva spacy) a nainštalovať (python wheel) + +28.10 + +- Na idoc.fei.tuke.sk nainštalovať [Minoconda](https://repo.anaconda.com/miniconda/) +- pozrite si "python virtualenv" a [prostredia conda](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) + +Cieľ: + +- Vedieť pripraviť textové dáta na anotáciu pomocou Prodigy (textové dáta sa použijú na učenie systému) +- V prvom semestri bude výstup: +- Oboznámiť sa "ako písať záverečnú pracu" +- nainštalovaný systém prodigy +- Vybratá dátová množina pripravená vo vhodnom formáte. +- Pripravená anotačná uloha +- Report o inštalácii Prodigy a príprave anotačnej úlohy na cca 3 strany použiteľný ako návod pre druhých - vysvetlite na čo sú potrebné anotácie a čo je crowdsourcing +- V reporte spomente aspoň 3 odborné články na tému "crowdsourcing" +- V druhom semestri - rešerš o príprave trénovacích dát a crowdsourcingu. + + +## Kyryl Kobzar + +Cieľom je: + +Vedieť použiť nástroj Spacy na natrénovanie modelu a rozpoznávanie pomenovaných entít v texte v (anglickom) jazyku + +Zdroje dát + +https://lindat.mff.cuni.cz/repository/xmlui/ + +https://lindat.mff.cuni.cz/repository/xmlui/discover?field=subject&filtertype=subject&filter_relational_operator=equals&filter=named+entity+recognition + +Výstup do prvého semestra: + +- Tutoriál na cca 3-4 strany ako natrénovať a použiť Spacy na rozpoznávanie pomenovaných entít +- Rešerš na tému cca 10 strán : "Rozpoznávanie pomenovaných entít" - "named entity recognition", vystetlíte, čo to je, aké metódy sa používajú, ako sa to vyhodnocuje. + +V druhom semestri: + +- natrénovanie vlastného modelu na vlastných dátach +- vyhodnotenie modelu +- dokončenie práce + + +## Dmytro Ushatenko + +Cieľ: + +Vytvorenie jednoduchého chatbota s použitím toolkitu RASA ktorý bude informovať o zvolenej téme, +napr. o predmetoch štúdia prvého ročníka programu PS na KEMT: + +Pomôcka pre začínajúcich študentov: + +- Čo mám robiť? +- Aké predmety budem študovať? +- Ako skončím predmet? (potrebujem zápočet a skúšku) + + +Úlohy na tento semester: + +- Prejdite si tutoriál https://rasa.com/docs/rasa/user-guide/rasa-tutorial/ +- Pripravte jednoduchý dialógový systém +- Pripravte "návod na použitie", kde zapíšete čo ste spravili v tutoriáli +- Vylepšite Vašu rešerš, dajte dôraz na citovanie zdrojov a na jazykovú stránku. + + +V druom semestri: + +- pripravíte si celé demo +- dookončíte prácu + +## Peter Maľar + + +Cieľ: + +Vytvoriť jednoduchý systém na opravu preklepov na báze neurónových sietí + +Úlohy na tento semester: + +- Naštudovať si článok "Sequence to sequence spelling correction..." +- Nainštalovať a vyskúšať [fairseq](https://github.com/pytorch/fairseq) +- Prejsť si tutoriál na strojový preklad https://github.com/pytorch/fairseq/blob/master/examples/translation/README.md +- Vytvorte (prejdite krátky tutoriál - zapisujte čo ste urobili) +- Skúsiť zopakovať experimenty s použitím systému +- Vytvorte rešerš na tému "sequence to sequence systémy", "encoder-decoder" neurónové siete (5 strán, min. 5 odborných článkov) + +## Ediz Morochovič + +Zadanie BP: + +1. Vypracujte prehľad štatistických metód identifikácie pomenovaných entít v texte. +2. Podrobne opíšte zvolenú metódu identifikácie pomenovaných entít v texte +3. Zvoľte si vhodnú metodiku vyhodnotenia a na vhodnej testovacej množine navrhnite a vykonajte sadu experimentov. +4. Na základe výsledkov experimentov navrhnite možné zlepšenia. + +Úlohy: + +- Nainštalujte si prostredie Anaconda https://www.anaconda.com/ +- Oboznámiť sa so zvoleným štatistickým systémom pre rozpoznávanie pomenovaných entít (https://www.nltk.org/), https://www.nltk.org/install.html, https://stanfordnlp.github.io/CoreNLP/, https://www.nltk.org/book/ +- Zistite použitú štatistickú metódu a podrobne ju opíšte +- Vypracujte prehľad používaných štatistických metód (maximum entropy, conditional random fields, hidden markov models), min. 5 strán s min. 10 odkazmi na odborné články +- Navrhnite experimenty a vykonajte ich s rôznymi parametrami systému + + diff --git a/pages/teachers/hladek/subjects/dp2021/README.md b/pages/teachers/hladek/subjects/dp2021/README.md new file mode 100644 index 0000000000..f0a0b2aad5 --- /dev/null +++ b/pages/teachers/hladek/subjects/dp2021/README.md @@ -0,0 +1,108 @@ +--- +title: Spracovanie prirodzeného jazyka a jazyk Python +published: true +--- + +# Tímový projekt 2019 + +[Daniel Hládek](../) - odporúčaný čas konzultácie: štvrtok o 9:00 + +# Tím 2019 + +- [Maroš Harahus](../../../../students/2016/maros_harahus) "Part of Speet Tagging" pomocou Spacy +- [Lukáš Pokrývka](../../../../students/2016/lukas_pokryvka) "Paralelné trénovanie sémantických modelov prirodzeného jazyka" (word2vec, word embeddings, GloVe, fastText) +- [Ján Holp](../../../../students/2016/jan_holp) (získavanie informácií) +- Dominik Nagy (spelling correction, fairseq) + +- Dárius Lindvai (punctuation restoration, [tutorial](https://medium.com/@praneethbedapudi/deepcorrection2-automatic-punctuation-restoration-ac4a837d92d9), pytorch, LSTM tutorial) +- Jakub Maruniak (prodigy, vytvorenie korpusu, [named-entity](../prodigy), + + +Ciele: + +- oboznámiť sa so základmi spracovania prirodzeného jazyka +- oboznámiť sa s jazykom Python +- špecifikovať zadanie diplomovej práce +- naučiť sa pracovať s [odbornou literatúrou](../zp) +- oboznámiť kolegov s obsahom vykonanej práce + +Výstupy: + +Rozsah výstupu min. 3 A4 kvalitného textu + +- Vypracovaný tutoriál alebo rešerš vybranej metódy (8. a 13. týždeň) +- vypracovaný prehľad literatúry vybranej metódy (min. 10 odkazov) +- odovzdanie cez [MOOODLE](https://moodle.tuke.sk/moodle35/course/view.php?id=874) kľúč je TP2019 + + +Odporúčané nástroje: + +- Prostredie [Anaconda](https://www.anaconda.com/distribution/) +- Chatbot [RASA](https://rasa.com/) +- Knižnica [Spacy](https://spacy.io/) +- Anotácie [Prodigy](https://prodi.gy/) +- Získavanie informácií [Elasticsearch](https://www.elastic.co/products/elasticsearch) +- seq2seq Neurónové siete [Fairseq](https://github.com/pytorch/fairseq) +- webové aplikácie a REST [Flask](https://www.fullstackpython.com/flask.html) + +Odporúčané témy: + +- [identifikácia pomenovaných entít](./named-entity) (named entity recognition) +- [dialógové systémy](./chatbot) (chatbot) +- strojový preklad (machine translation) +- oprava preklepov (spelling error correction, diacritics restoration) +- získavanie informácií (vyhľadávanie v texte) +- identifikácia viacslovných výrazov (chunking) +- anotácia textových dát + +Informácie a literatúra: + +- [Spacy Tutoriál](https://nlpforhackers.io/complete-guide-to-spacy/) +- [Dive into Python](https://diveintopython3.problemsolving.io/) [(česky)](http://diveintopython3.py.cz/index.html) +- [Natural Language Processing in Action](https://www.manning.com/books/natural-language-processing-in-action) [(git)](https://github.com/totalgood/nlpia) +- [Python Data Science Handbook](https://github.com/jakevdp/PythonDataScienceHandbook) +- [Speech and Language Processing 2rd edition](https://github.com/rain1024/slp2-pdf) +- [Speech and Language Processing 3rd edition](https://web.stanford.edu/~jurafsky/slp3/) + +Postup: + +- Nainštaluj si Anacondu +- Prečítaj si materiály +- Vyber si zaujímavú úlohu a nástroj +- Vyskúšaj nástroj +- Napíš správu o riešení úlohy + + +Dátumy stretnutí: + +- 10.10 - Harahus, Holp +- 14.10. - Nagy, Maruniak, Pokrývka (prečítať knihu, vybrať tému) +- 17.10 - Harahus, Lindvai (Prečítať knihu, prejsť Spacy tutoriál, nainštalovať Anaconda) +- 24.10 - Pracovná cesta +- 28.10 o 9:00, Holp, Harahus +- 31.10 - Dekanské voľno +- 4.11 - Maruniak +- 7.11 o 13:40 - Lindvai, Nagy, Pokrývka, Harahus +- 14.11 - Lindvai, Harahus, Holp +- 21.11 - Lindvai +- 28.11 - Harahus, Holp +- 5.12. - Harahus +- 12.12. - Holp, Harahus + + +Dárius Lindvai + +- Rešerš tak na 3 strany - čo najnovšie sa píše na tému "puctuation restoration" +- krátky program a tutoriál (program s rozsiahlym komentárom ) v Pythone na využitie LSTM, napr. podobne [ako](https://pytorch.org/tutorials/beginner/nlp/sequence_models_tutorial.html). +- [zaujimavy blog](http://jalammar.github.io/illustrated-transformer/) + + +Jakub Maruniak + +- Vypracujte min. 4. stranový rešerš na tému "Crowdsourcing" +- citujte min. 10 najvýznamnejších bibliografických zdrojov + +Dominik Nagy: + +- Vypracujte min. 4 stranový rešerš na tému: "Sequence to Sequence" (Encoder-Decoder, seq2seq, transformer, attention) +- citujte min. 10 najvýznamnejších bibliografických zdrojov diff --git a/pages/teachers/hladek/topics/chatbot/README.md b/pages/teachers/hladek/topics/chatbot/README.md new file mode 100644 index 0000000000..9af1ecb92d --- /dev/null +++ b/pages/teachers/hladek/topics/chatbot/README.md @@ -0,0 +1,38 @@ +--- +title: chatbot +--- + +# Chatbot + +Ciele: Vytvorenie demonštračnej aplikácie pre interaktívnu komunikáciu s +automatom + +## Zdroje + + - + - + +### Prostriedky + + - [RASA toolbox](https://rasa.com/) + - Slack() - ako rozhranie + +## Riešitelia + + - Dmytro Ushatenko (Daniel Hládek), 19/20 + - Jozef Olekšák (Stanislav Ondáš) 18/19 Riadenie dialógu na báze + štatických metód + +## Existujúce riešenia + + - [KEMT Bot](https://kemt.fei.tuke.sk) + - + +## Riešiteľ 1 + +Zadanie: + +1. Vypracujte úvod do problematiky systémov pre riadenie dialógu +2. Vypracujte prehľad používaných metód riadenia dialógu +3. Navrhnite a implementujte agenta pre zisťovanie informácií o katedre + KEM diff --git a/pages/teachers/hladek/topics/named-entity/README.md b/pages/teachers/hladek/topics/named-entity/README.md new file mode 100644 index 0000000000..cfcebd8dea --- /dev/null +++ b/pages/teachers/hladek/topics/named-entity/README.md @@ -0,0 +1,44 @@ +--- +title: named-entity +--- + +# Named Entities + +## Goals + + - Be able to recognize unknown named entities + - Create a manually annotated training set from speech transcripts + - Propose an annotation schema + +## Plan + + - Convert speech transcripts into a training set + - Train and evaluate classifier + - Establish manual annotation + - Select unannotated data + +### Data preparation + +Input: Transcriber transcripts with inconsistent annotations + +``` + * First small letter: regular word + * Capital: named entity + * ''^^'': faoreign word + * ''@'': noise + * ''_'': multi word expression + * ''/'': pronuncation +``` + +Output: A file that can be read by `spacy convert` + +## People + +Cesar Abascal Gutierrez + +## Tools + +``` + * Machine learning : https://spacy.io/usage/training + * Manual Annotation : https://prodi.gy/ +``` diff --git a/pages/teachers/hladek/topics/nlp/README.md b/pages/teachers/hladek/topics/nlp/README.md new file mode 100644 index 0000000000..23c29580e8 --- /dev/null +++ b/pages/teachers/hladek/topics/nlp/README.md @@ -0,0 +1,25 @@ +--- +title: Spracovanie prirodzeného jazyka +published: true +--- + +# Spracovanie prirodzeného jazyka + +## Prezentácia + +- [Krátky úvod do NLP](./mrakt) (prezentácia z predmetu Moderné rečové a komunikačné technológie 2019) + +## Knihy + +- Lane, Howard, Hopke: Natural language processing in action + +## Knižnice Python + +- [Flair](https://github.com/zalandoresearch/flair) +- [Spacy](https://spacy.io/) + +## Word Embedding + +- [GloVe](https://nlp.stanford.edu/projects/glove/) +- [FastText](https://fasttext.cc/) +- [GenSim](https://radimrehurek.com/gensim/) (topic modelling) diff --git a/pages/teachers/hladek/topics/nlp/mrakt/README.md b/pages/teachers/hladek/topics/nlp/mrakt/README.md new file mode 100644 index 0000000000..07dbc06844 --- /dev/null +++ b/pages/teachers/hladek/topics/nlp/mrakt/README.md @@ -0,0 +1,318 @@ +--- +published:true +--- +# Spracovanie prirodzeného jazyka + +Ing. Daniel Hládek PhD. + +daniel.hladek@tuke.sk + +--- +Rastie potreba spracovávať veľké množstvo človekom vytvoreného textu alebo hovorenej reči + +--- +Čo je spracovanie prirodzeného jazyka +Natural Language Processing (NLP) + +--- +Kombinácia viacerých techník z oblasti: + +- Teórie formálnych jazykov +- Štatistiky +- Strojového učenia +- Lingvistiky +- Psychológie + +--- + +Spracovanie prirodzeného jazyka získavaním znalostí pomáha pri bežných činnostiach. + +--- + +dáta => informácie => znalosti + +text => príznaky => zistenia + +--- + +## Znalosť je užitočná informácia + +(dá sa premeniť na peniaze). + +--- +Typické úlohy NLP + +--- +Motivačný príklad: Alexa, WolframAlpha, Siri + +Počítač "porozumie" ľudskej komunikácii + +--- +Každý Váš deň: + +Google, Facebook, Apple + +--- +Porozumenie otázke : Google, počítačové hry, WolframAlpha (Siri) +Fulltextové vyhľadávanie: Google +Cielenie reklamy: AdSense, eTarget + +--- +Ohodnotenie sentimentu a detekcia nevhodných alebo podozrivých príspevkov: Facebook , LinkedIn + +Strojový preklad: Googe Translate +Detekcia spamu: Spam Assasin, Gmail + +--- +Získavanie informácií (Information Retrieval) + +Vyhľadávanie na webe napr. Vyhľadanie stránok súvisiacich s “natural language processing” + +Monitoring médií +Čo všetko sa napíše alebo odvysiela v televízii alebo v rádiu o mojej spoločnosti? + +--- + +Cielenie reklamy + +Analýza sentimentu na sociálnych sieťach + +Dolovanie v dátach a získavanie znalostí +Aká je priemerná cena hamburgeru v Južnej Amerike? + +--- +Prepis textu (Machine Translation): + +Strojový preklad. Napr. Ako sa povie “Dnes je pekný deň” po japonsky? + +Parafrázovač. Napr. Akým iným spôsobom sa dá povedať “Mám rád bryndzové halušky” + +Porozumenie jazyku (Natural Language Understanding) + +--- + +Chatboty, Umelý psychiater. + +“Umelá inteligencia” - počítač na lodi Enterpise, ktorý rozumie slovným príkazom kapitána a vie mu odpovedať na jeho požiadavky +Morfologická analýza (hľadanie gramatickej a sémantickej funkcie slova) + + +--- +Prirodzený jazyk je veľmi neurčitý (ambiguity) + +--- + +- To isté vieme povedať rôznymi spôsobmi +- Jedna výpoveď môže mať veľa rôznych významov +- Často pri komunikácii prenášame aj neverbálnu informáciu: + - Pocity + - Gestá + - Prízvuk a štýl reči + +--- +Homonymá: + + Práve sedím v škole. Nevyznám sa v občianskom práve. + To auto stojí 10000 eúr. Auto stojí na kraji cesty. + +--- +Synonymá: + + Išiel som do Bratislavy. Išiel som do Blavy. + +--- +Neurčité poradie slov vo vete: + + Dnes je pekný deň. Pekný deň je dnes. Deň je dnes pekný. + +--- +Neurčitý význam slov: + + „Po tráve sa nechodí, po tráve sa smeje” + +--- +Novotvary a slangové výrazy: + +Vygoogli si to a potom to postni na fb. + +--- +Emócie a spoločenské konvencie: + + Pane! Pekne ste sa doriadil! + +--- +Preklepy a brepty: + + Viď prednašku. + +--- + +Počítačový jazyk je jednoznačný +Potrebujeme metódy pre prácu s neurčitosťou + +--- +Práca s neurčitosťou v NLP + +- Klasifikácia kontextov alebo ich postupností +- Prepisovanie postupnosti symbolov + +--- +Klasifikácia kontextov + +Mapovanie: + + c => S + +- C: kontext: Veta,Dokument +- S: symbol: Morfologická značka, léma, vetný člen... + + +--- +Využitie + +- detekcia sentimentu +- detekcia spamu +- identifikácia pomenovaných entít + +--- +Pri klasifikácii nám pomáha, ak vieme ktorá časť kontextu je dôležitá pre klasifikáciu. + +- Slovo +- Koncovka, Koreň slova +- Predchádzajúce slovo, Nasledujúce slovo +- Typ prvého písmena + +--- +## Príznaková funkcia + +Taká binárna funkcia kontextu, ktorá je pravdivá iba v prípade výskytu daného príznaku v kontexte. +Vhodná sada príznakových funkcií nám pomáha riešiť problém. + +--- +## Príznaková funkcia + +Mapovanie + + Symbol => jednotkový vektor + + dnes => 0000100001 + + +--- +## Klasifikátor kontextov + +Extrakcia príznakov, klasifikácia + + symbol=> príznakový vektor => trieda + +--- +## Klasifikátor kontextov + +- Ľudskú znalosť vo forme pravidiel +- Štatistické informácie z trénovacích korpusov +- Kombináciu oboch prístupov + +--- +## Pravidlá + +- Slovníky +- Formálna gramatika +- Regulárne výrazy + +--- +## Štatistické prístupy + +- HMM +- N-gram model +- Umelá neurónová sieť + +--- +## Hlboké neurónové siete + +- LSTM, Konvolučné siete, Transformery + +Výpočtovo náročné + +--- +## Prepisovanie postupnosti symbolov + +Mapovanie: + + postupnosť => iná postupnosť + +--- +## Prepisovanie postupnosti symbolov + +- strojový preklad +- korekcia preklepov a gramatiky +- dialógové systémy + +--- +## Enkóder-Dekóder + +Enkóder: + + symboly => príznaky => významový vektor + +Dekóder: + + model a významový vektor => výstupné symboly + +--- +## Enkóder Dekóder + +Hlboké neurónové siete + +--- + +# Aj vy môžte robiť NLP + +--- + +## Všeobecný programovací jazyk + +Python + +--- + +## Všeobecné knižnice pre strojové učenie + +- keras +- pytorch + +--- + +## Všeobecné knižnice pre NLP + +- Spacy +- Flair + +--- +## Strojový preklad + +- fairseq + +--- +## Extrakcia sémantických príznakov + +- glove +- fasttext +- word2vec + +--- +## Získavanie informácií a spracovanie logov + +Elasticsearch + +--- +## Dialógové systémy a porozumenie jazyku + +RASA + +--- +## Bibliografia + +Jurafsky, Martin: Natural Language Processing +Christopher Manning: Natural Language Processing, Stanford University Online Video Lectures + + diff --git a/pages/teachers/hladek/topics/prodigy/README.md b/pages/teachers/hladek/topics/prodigy/README.md new file mode 100644 index 0000000000..b733dd732a --- /dev/null +++ b/pages/teachers/hladek/topics/prodigy/README.md @@ -0,0 +1,30 @@ +--- +title: Anotácia textových dát +published: true +--- + +# Anotácia textových dát + +- Natrénovanie štatistického modelu pre spracovanie prirodzeného jazyka zo slovenských dát +- Manuálna anotácia slovenských dát pre výskyt pomenovaných entít + +## Postup + +- Definovanie anotačnej schémy +- Príprava dátovej množiny vhodnej na anotáciu +- Natrénovanie štatistického modelu Spacy +- Príprava anotačnej úlohy Prodigy + +## Nástroje + +- Python (príprava dát) +- Spacy (štatistický model) [Spacy](https://spacy.io/)) +- [Prodigy](https://prodi.gy/) (anotácie) + +## Riešitelia + +- Andrej Hopko (BP) +- Lukáš Pokrývka (TP) +- Jakub Maruniak +- [Cesar Gutierez](../named-entity) (stáž leto 2019) + diff --git a/pages/teachers/hladek/topics/python/README.md b/pages/teachers/hladek/topics/python/README.md new file mode 100644 index 0000000000..0f4ea742ff --- /dev/null +++ b/pages/teachers/hladek/topics/python/README.md @@ -0,0 +1,14 @@ +# Ako začať s Pythonom + +Nainštalujte si prostedie anaconda + +https://www.anaconda.com/ + +Prečítajte si + +https://diveintopython3.net/ + +http://diveintopython3.py.cz/index.html + +https://jakevdp.github.io/PythonDataScienceHandbook/ + diff --git a/pages/teachers/hladek/topics/seq2seq/README.md b/pages/teachers/hladek/topics/seq2seq/README.md new file mode 100644 index 0000000000..ef8c6087cc --- /dev/null +++ b/pages/teachers/hladek/topics/seq2seq/README.md @@ -0,0 +1,14 @@ +--- +title: named-entity +--- +# Sequence to sequence + +Niektoré zaujímavé odkazy na tému sequence to sequence: + +https://github.com/pytorch/fairseq + +## Transformer + +http://jalammar.github.io/illustrated-transformer/ + +https://arxiv.org/abs/1706.03762 diff --git a/pages/teachers/hladek/topics/spacy/README.md b/pages/teachers/hladek/topics/spacy/README.md new file mode 100644 index 0000000000..9959d3af1f --- /dev/null +++ b/pages/teachers/hladek/topics/spacy/README.md @@ -0,0 +1,19 @@ +# Podpora slovenčiny v knižnici Spacy + +## Úlohy + +- Vytvoriť modul v jazyku Python pre podporu slovenčiny +- Pripraviť trénovacie dáta pomocu frameworku [Prodigy](./../prodigy). +- Natrénovať štatistické modely: + - pre morfologickú analýzu + - rozpoznávanie pomenovaných entít + +## Repozitár + +https://git.kemt.fei.tuke.sk/jo673fv/sk-spacy + + +## Ľudia + +- [Maroš Harahus](../../../../students/2016/maros_harahus) (štatistické značkovanie) +- Jozef Olekšák \ No newline at end of file diff --git a/pages/topics/akopisat/README.md b/pages/topics/akopisat/README.md new file mode 100644 index 0000000000..c6dabc0fa4 --- /dev/null +++ b/pages/topics/akopisat/README.md @@ -0,0 +1,51 @@ +--- +title: Záverečné práce a projekty +published: true +--- + +# Ako písať záverečnú prácu + +- [Ako písať záverečnú prácu](http://akopisatprace.sk/wp-content/uploads/ako_pisat_zav_prace_final_skratene2_6.pdf) +- [Odovzdanie a šablóna](https://portal.lib.tuke.sk/etd/) + +Predstavte čitateľovi problém a možné spôsoby riešenia. Z možných spôsobov vyberte jeden a odôvodnite že prečo. +V praktickej časti opíšte vykonané experimenty a výsledky uch vyhodnotenia tak aby ich bolo možné opakovať. +V závere identifikujte slabé miesta a navrhnite zlepšenia. + +# Využívajte indexy odbornej literatúry + +- https://scholar.google.sk/ +- https://www.scopus.com/ (prístupné iba zo školy) + +# Používajte softvér na manažment citácií + +Keď prečitate článok, uchovajte si bibliografický záznam pre ľahšie citovanie + +- [Mendeley](https://www.mendeley.com/) +- [JabRef](https://www.jabref.org/) + +# Ako citovať + +- https://ippr.sk/c/204-citacie-parafrazy-bibliograficke-odkazy-iso-690 +- Pri konkrétnych tvrdeniach sa odvolajte na zdroj odbornej literatúry. +- Preferujte aktuálne a kvalitné zdroje (nie rôzne blogy, manuály alebo tutoriály). +- Citácie by mali byť krátke. +- Doslovné citácie zvýraznite oddelené od ostatného textu. +- Sú povolené aj kratšie parafrázy. +- Počet referencia by mal byť min. 1 na každé dve strany. + +# Používajte správne slovenské termíny + +Ak ste si nie istí prekladom pojmu z angličtiny , pozrite si slovenskú literatúru na danú tému. + +Konzultujte existujúce odborné slovníky napr. z: + +- https://terminologickyportal.sk/ + +## Zadanie záverečnej práce + +1. Definujte PROBLÉM +2. Vypracujte prehľad možných metód riešenia a vyberte vhodnú METÓDU +3. Vyberte metódu OHODNOTENIA, navrhnite a vykonajte EXPERIMENTY. +4. Vyhodnoťte experimenty a navrhnite možné zlepšenia + diff --git a/pages/topics/faq/README.md b/pages/topics/faq/README.md new file mode 100644 index 0000000000..49a0446adb --- /dev/null +++ b/pages/topics/faq/README.md @@ -0,0 +1,81 @@ +# Často kladené otázky + +## Pre koho to je? + +Stránka je určená pre študentov a vyučujúcich na Katedre elektroniky a multimediálnych telekomunikácií pre zdieľanie výsledkov záverečných prác. +Pomôže aj záujemcom o štúdium, zamestnávateľom a partnerom katedry na získanie prehľadu o študentskej odbornej činnosti. + +## Ako to funguje + +Stránka je založená na princípe WIKI - každý prihlásený použvateľ môže zapisovať na ľubovoľné miesto. Každá zmena aj jej autor sa ale zaznamenáva pomocou [systému GIT](https://git.kemt.fei.tuke.sk). Je jednoduché zistiť, kto urobil kedy akú zmenu a zmenu zvrátiť. + +Stránky môžte editovať cez web rozhranie systému alebo lokálne pomocou Vášho obľúbeného textového editora a synchronizovať pomocou príkazu `git`. Jedna stránka zodpovedá jednému adresáru. Do adresáru umiestnite text stránky vo formáte Markdown do súboru `README.md` a ostatné súvisiace súbory, napr. obrázky. + +## Čo tu nájdem? + +Nájdete tu materiály súvisiace s vypracovaním záverečnej práce. + +- `/home` : Domovská stránka +- `/teachers`: Projekty pod vedením pedagógov (zapisuje hlavne pedagog). +- `/topics`: Iné informácie (Zapisujú hlavne pedagógovia) +- `/students`: Študentské výstupy (Zapisuje hlavne študent) + +Každý prihlásený používateľ ma svoj osobný profil, za ktorý je zodpovedný. + +- `/teachers/komensky`": Stránka s profilom pedagóga +- `/teachers/komensky/bp2020`: Stránka s bakalárskymi prácami pedagóga + +Študenti sú organizovaní do skupín podľa roku nástupu na štúdium: + +- `/students/2016/ab123cd`: Stránka s profilom študenta a prácami na ktorých pracoval. + + +## Ako upravím stránky cez webové rozhranie + + +Prihláste sa na katedrový systém GIT. Vyhľadajte repozitár [KEMT/zpwiki](https://git.kemt.fei.tuke.sk/KEMT/zpwiki). Do tohto repozitára môžte vykonávať zmeny pomocou webového editora, kotrý Vám uľahčí prácu s formátom Markdown. + + +Cez webové rozhranie nájdite adresár, ktorý patrí k stránke. Ťuknite na súbor `README.md`. V pravom hornom rohu ťuknite na ikonku s perom. Otvorí sa Vám editor v ktorom môžte upravovať. +Keď skončíte s úpravami, ťuknite na zelené tlačítko "Commit changes/Potvrď zmeny" celkom dole na stránke. Pre vytvorenie nového adresára stačí dopísať jeho meno pred názov nového súboru a adresár sa vytvorí automaticky. + +## Ako upravím stránky pomocu môjho textového editora + +Ak chcete upravovať pomocou Vášho textového editora, vytvorte si lokálnu kópiu repozirára. Použite grafický GIT klient, ktorý je súčasťou Vášho editora alebo pomocou príkazu `git clone` . +Ak kópiu už máte vytvorenú, získajte najnovšie zmeny príkazom `git pull`. + +V Vašou kópiou môžte vykonávať bežné operácie so súbormi a adresármi - úpravu, premiestnenie alebo vymazanie. Nájdite alebo vytvorte vhodný adresár, a upravte súbor `README.md`, do adresára skopírujte obrázky a iné súbory. Stránka sa bude volať rovnako ako adresár. + +Na konci pridajte zmenené súbory príkazom `git add` a potvrďte zmeny príkazom `/git commit`. Zmeny odošlite príkazom `git push`. + + +## Čo je to Markdown? + +Markdown je jednoduchý značkovací formát obyčajného textu ktorý sa dá ľahko premeniť na HTML alebo aj iné formáty. + +- [Krátky prehľad syntaxe](https://commonmark.org/help/) +- [Viac informácií o Markdown](https://www.markdownguide.org/getting-started) + +Text vo formáte Markdown vytvoríte pomocou textového editora alebo pomocou webového editora, ale môžte využiť aj špecializované nástroje: + +- [Dillinger](https://dillinger.io/), online Markdown Editor +- Online nástroj na [konverziu DOC](https://word2md.com/) +- [Pandoc](https://pandoc.org/) (konverzia z a do Markdown) + + +## Ako vytvorím odkaz + +Meno stránky je totožné s adresárom v ktorom sa nachádza. Na stránku sa odkážete podobne ako na adresár v ktorom sa nachádza. +Napr. odkaz na stránku s Vašim projektom zo stránky predmetu `/teachers/hladek/bp2020`: + + [Text odkazu](../../students/ab123cd/bp) + +## Ako vložím obrázok + +Uložte súbor s obrázkom do adresára s Vašou stránkou. Do textu pridajte odkaz na obrázok a pridajte výkričník: + + ![Text odkazu](./obrazok.jpg) + +## Čo ak som našiel preklep? + +Môžte ho sám opraviť. diff --git a/pages/topics/submit/README.md b/pages/topics/submit/README.md new file mode 100644 index 0000000000..d5dae6fc32 --- /dev/null +++ b/pages/topics/submit/README.md @@ -0,0 +1,37 @@ +# Ako zapíšem výsledky záverečnej práce + +Najprv si prečítajte [Často kladené otázky](../faq). + + +## Ako pridám článok z Bakalárskeho projektu? + +Vytvoríte si profilovú stránku s názvom: + + /students/2017/jan_hrasko + +`jan_hrasko` je Vase meno a priezvisko bez diakritiky , `2017` je rok keď ste začali študovať. + +Do Vášho profilu pridajte stránku s článkom a nazvite ju `bakalarsky_projekt`: + + /students/2017/jan_hrasko/bakalarsky_projekt + +Pridajte odkaz na článok do Vášho profilu. + + +## Ako pridám článok z Tímového projektu? + + +Vytvoríte si profilovú stránku s názvom: + + /students/2016/jan_hrasko + + +`jan_hrasko` je Vaše meno a priezvisko bez diakritiky , `2017` je rok keď ste začali študovať. + + +Do Vášho profilu pridajte stránku s článkom a nazvite ju `timovy_projekt`: + + /students/2016/jan_hrasko/timovy_projekt + +Pridajte odkaz na článok do Vášho profilu. +