zpwiki/pages/students/2017/martin_jancura/README.md

374 lines
12 KiB
Markdown

---
title: Martin Jancura
published: true
taxonomy:
category: [bp2021,dp2023]
tag: [opennmt,translation,demo,nlp]
author: Daniel Hladek
---
# Martin Jancura
*Rok začiatku štúdia*: 2017
## Diplomový projekt
Názov diplomovej práce:
Rozpoznávanie emócií v texte
Zadanie diplomovej práce:
1. Vypracujte prehľad metód rozpoznávania sentimentu z textu.
2. Vytvorte slovenskú overovaciu množinu pre rozpoznávanie sentimentu.
3. Vyberte vhodný model pre rozpoznávanie sentimentu v slovenských textoch.
4. Vyhodnoťte vybraný model pomocou vytvorenej množiny a navrhnite jeho zlepšenia.
Ciele:
- Vedieť klasifikovať emocionálny náboj v texte pomocou neurónovej siete.
Ciele na semester:
- Získať prehľad v problematike rozpoznávania emócií z textu
- Vybrať dátovú množinu, vybrať vhodný klasifikátor, natrénovať model a vyhodnotiť výsledky.
Informácie:
- [Hate speech Project](/topics/hatespeech)
- https://www.sciencedirect.com/topics/computer-science/emotion-detection
Stretnutie 20.1.2023
Stav:
- Vylepšený scraper, tak by zachytával jednotilivé príspevky, autora, text aj rating.
- Teoretická časť nebola urobená.
Úlohy:
- Zdrojové kódy scrapera pridajte na GIT.
- Vpracujte písomný prehľad datasetov pre slovenčinu a rozpoznávanie emócií https://github.com/slovak-nlp/resources.
- Vypracujte prehľad neurónových metód na rozpoznávanie emócií z textu. bert, roberta, gpt.
- Zistite, ako sa pomocou modelu GPT robí "zero shot sentiment classification".
- Vyskúšajte slovenský model pre klasifikáciu sentimentu https://huggingface.co/kinit/slovakbert-sentiment-twitter.
- Ručne anotujte vytvorenú databázu diskusných príspevkov z topky.sk
- Urobte klasifikáciu príspevkov pomocou neurónového modelu a vyhodnoťte presnosť (accuracy, precision, recall).
Zásobník úloh:
- Do scrapera skúste doplniť zaznamenanie ID nadradeného príspevku. ID môže byť aj nejaký hash.
- Urobte zero shot classification pomocou slovenského GPT .
Stretnutie 25.11.
Stav:
- Vieme parsovať Disqus fóra z topky.sk. Vieme získať nadpis a hlavičku článku, tagy článku. Vieme odlíšiť jednotlivé diskusné príspevky. Scraper je v javascripte, knižnica puppeteer.
Úlohy:
- Zdrojové texty scrapera dajte do git repozitára.
- Nainštalujte si balíček Anaconda a HF transformers.
- Pozrite si tento model https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment. Vyskúšajte ho na anglickom texte aj na slovenskom texte. Prečítajte si vedecký článok a urobte si poznámky.
- Prečítajte si článok o modeli XLM a napíšte poznámky. Prečítajte si vedecký článok o datasete, ktorý bol použitý a urobrte si poznámky. Vyhľadajte si dataset na huggingface HUB a pozrite sa ako vyzerá. Na vyhľadávanie použite TUKE sieť a google scholar.
Zásobník úloh:
- Zo získaných slovenských dát vytvorte overovaciu množinu pre vybranýb model pre klasifikáciu sentimentu.
- Pozrieť či existuje databáza.
Stretnutie 8.6.
Stav:
- Vypracovaný tutoriál huggingface
- Vytvorený jednoduchý scraper Beautifulsoup na Topky.sk
- Rozpracovaný scraper Selenium
Úlohy:
- [-] Dať kódy na GIT - scraper (twitter, topky) aj tutorial
- [ ] Dopísať písomnú správu o tutoriáli (2 až 3 strany) - čo ste sa dozvedeli o BERT, čo ste urobili. Dajte to do README.md.
Stretnutie 20.5.2022
Mierny pokrok nastal len v oblasti Python.
Úlohy:
- Pokračovať v otvorených úlohách.
- Chceme sa sústrediť na "sledovanie medií".
- [x] Vytvoriť skript pre sledovanie Twitter kanálov. Skript by mal v pravidelných interovaloch získať nový obsah a uložiť ho do databázy (cassandra?). Zistitie, ktoré informácie o príspevkoch sú dôležité. čo vieme zistiť o príspevkoch?
- Aký emočný náboj je v príspevku? Cieľom môže byť detekcia nenávistného obsahu.
11.3.2022
Návrh na tému:
- Sledovanie médií alebo sociálnych sietí. - blogy, noviny, diskusie, twitter.
- Zistenie metainformácií o príspevkoch.
- Spracovanie príspevku - identifikácia sentimentu, detekcia nenávistnej reči, určenie témy príspevku, lepšie vyhľadávanie v databáze príspevkov. Ktorý materiál sa týka určitej témy?
Návrh na postup:
1. Oboznámenie sa s problematikou.
2. Zostavenie databázy príspevkov. Stiahnutie a predspracovanie.
3. Spracovanie databázy - natrénovanie neurónovej siete, klasifikácia a vyhodnotenie.
Úlohy:
- [ ] Zistite ako funguje neurónový jazykový model typu BERT - ako ho trénujeme a ako ho dotrénujeme. Zistite ako vieme pomocou neurónového jazykového modelu rozpoznávať sentiment v texte. Napíšte o tom krátku správu.
- [ ] Nainštalujte si Anaconda, Oboznámte sa s knižnicou *HuggingFace Transformers*. Vyberte si tutoriál, prejdite ho a napíšte krátku správu.
- [ ] Vyskúšajte tento [model](https://huggingface.co/nlptown/bert-base-multilingual-uncased-sentiment) pre klasifikáciu anglických textov.
Zásobník úloh:
- [x] Pokračujte v štúdiu Pythonu, Oboznámte sa s Twitter API a zistite ako získať nejaký príspevok na Twitteri.
- [ ] Naučte sa pracovať s knižnicou BeautifulSoup a pripravte scraper na vybraný zdroj.
Stretnutie 4.3.2022
Nápady na tému diplomovej práce:
- Strojový preklad pomocou neurónových sietí.
- Rozpoznávanie reči pomocou transformerov - Hubert.
- Rozpoznávanie nenávistnej reči pomocou transfomers.
- Sledovanie medií - vytvorenie databázy a jej analýza.
- Rozpoznávanie (klasifikácia) obrázkov pomocou neurónovej siete.
Úlohy:
- Porozmýšľajte nad každou hore uvedenou témou.
- Porozmýšľajte nad témou čo by Vás bavila.
- Pokračujte v štúdiu Pythonu.
- Oboznámte sa s knižnicou HuggingFace Transformers alebo s knižnocou fairseq.
## Bakalárska práca 2020
Názov: Webová aplikácia pre demonštráciu strojového prekladu
1. Vypracujte teoretický úvod do strojového prekladu. Vypracujte prehľad komerčných služieb pre automatický preklad.
2. Podrobne vysvetlite zvolenú metódu strojového prekladu.
3. Vytvorte demonštračnú webovú aplikáciu v Javascripte pomocou ktorej je možné vyskúšať viaceré služby pre strojový preklad.
4. Navrhnite možné zlepšenia Vami vytvorenej aplikácie.
Zásobník úloh:
- Zapisať človekom urobený preklad do databázy.
- Vyrobiť deployment a zverejniť stránku s demom.
- pripraviť modul s vlastným prekladom.
- Vyhodnotiť preklad metódou BLEU
[repozitár](https://git.kemt.fei.tuke.sk/mj130zg/BP2021)
Stretnutie 26.3
Stav:
- Práca na písomnej časti, kontrola na budúce.
Úlohy:
- Pripravte deployment dema so strojovým prekladom
Stretnutie 13.3.
Stav:
- práca na písomnej časti (neurónový strojový preklad).
- odladená chyba axios cors na translation.tukekemt.xyz.
Úlohy:
- Písať.
Stretnutie 5.3.
Stav:
- Nastal progres v písomnej časti, pokračujte ďalej
Stretnutie 26.2.
Stav:
- Prerobený úvod práce podľa nového zadania.
- Práca na vlastnom backende (vedúci). Backend je prístupný na https://translation.tukekemt.xyz/ende/.
Úlohy:
- Pokračujte v písomnej práci.
- Backend momentálne nefunguje. Keď bude fungovať, pracujte na napojení na frontend.
## Bakalársky projekt 2020
Konzultácie sa budú konať osobne alebo cez [Teams](https://teams.microsoft.com/l/team/19%3aa8596a401a3842e5b91ac918a2a0afb1%40thread.tacv2/conversations?groupId=4fc0c627-d424-4587-b73a-2e47509862e9&tenantId=1c9f27ef-fee6-45f4-9a64-255a8c8e25a5) minimálne raz za dva týždne, menej ako 6 konzultácií za semester je dôvodom pre zníženie hodnotenia semester je dôvodom pre zníženie hodnotenia alebo neudelenie zápočtu. Odporúčaný čas konzultácie je piatok.
Možné backendy:
- https://opennmt.net/OpenNMT/installation/
- FairSeq
- [Dokumentácia k OpenNMT-py REST servru](https://forum.opennmt.net/t/simple-opennmt-py-rest-server/1392)
- [Zdrojové kódy k REST Servru](https://github.com/OpenNMT/OpenNMT-py/blob/master/onmt/bin/server.py|
### Poznámka vedúceho 2.2
Inštalácia OpenNMT-py na servri idoc:
OpenNMT-py vyžaduje verziu Pytorch presne 1.6.0.
CUDA 11 na idoc nefunguje, lebo je tam príliš starý nvidia driver (420).
```
conda create -n openmnt
conda activate opennmt
conda install pytorch=1.6.0 torchvision torchaudio cudatoolkit=9.2 -c pytorch
pip install OpenNMT-py
```
[Jednoduchý návod na trénovanie](https://opennmt.net/OpenNMT-py/quickstart.html).
### Stretnutie 29.1.2021
Stav:
- Práca na prezentácii.
- Dohoda na zadaní.
Úlohy:
- Dorobiť REST API pomocou nmt-wizard-docker - pre vedúceho.
### Stretnutie 26.1.2021
Stav:
- Práca na textovej časti
- Práca na prezentácii
- Urobený tutoriál OpenNMP-py, natrénovaný model na preklad z angličtiny do nemčiny.
Úlohy:
- Pracovať na teoretickej časti - doplňte aj o metódach vyhodnotenia BLEU
- Dokončiť prezentáciu
- Spojiť webovú aplikáciu s vlastným rest API.
- Pozrieť si výstupy práce P. [Pavlišin](/students/2016/patrik_pavlisin)
### stretnutie 18.12.2020:
Stav:
- inštalácia OpenNMT-py: zlyhala proavdepodobne kvôli konfigurácii CUDA
- práca na písomnej časti pokračuje
- kompletne prerobené kódy pre preklad (frontend aj backend) pomocou Microsoft a IBM. Aplikácia používa Express.JS
- kódy sú dostupné na https://git.kemt.fei.tuke.sk/mj130zg/BP2021
### Virtuálne stretnutie 4.12.2020:
Stav:
- Inštalácia OpenNMT-py. Tutoriál zatiaľ nefunguje, pravdepodobne kvôli chybne nainštalovanej knižnici numpy.
Úlohy na ďalšie stretnutie:
- Vypracujte písomný prehľad metód strojového prekladu pomocou neurónových sietí. Prehľad by mal obsahovať odkazy na aktuálnu odbornú literatúru - knihy a články.
V prehľade vysvetlite aj čo je to architektúra seq2seq, (endkóder-dekóder). Nájdite odborné články o opennmt, prečítajte si ich a napíšte čo ste sa dozvedeli.
- (vedúci) urobiť deployment openmnt-py (flask,wsgi).
- Pokračujte v tutoriáli openmt-py. Pre inštaláciu závislostí (pytorch, numpy, cuda) použite systém Anaconda.
### Virtuálne stretnutie 6.11.2020:
Stav:
Práca na písomnej časti.
Úlohy do ďalšieho stretnutia:
- Pohľadať takú knižnicu, kde vieme využiť vlastný preklad. Skúste si nainštalovať OpenNMT.
- Prejdite si tutoriál https://github.com/OpenNMT/OpenNMT-py#quickstart alebo podobný.
- Navrhnite ako prepojiť frontend a backend.
### Virtuálne stretnutie 23.10.2020:
Stav:
- Urobený frontend pre komunikáciu s Microsof Translation API, využíva Axios a Vanilla Javascriupt
Úlohy do ďalšieho stretnutia:
- Pohľadať takú knižnicu, kde vieme využiť vlastný preklad. Skúste si nainštalovať OpenNMT.
- Zistiť čo znamená politika CORS.
- Pokračujte v písaní práce, pridajte časť o strojovom preklade.. Prečítajte si články https://opennmt.net/OpenNMT/references/ a urobte si poznámky. Do poznámky dajte bibliografický odkaz a čo ste sa dozvedeli z článku.
### Virtuálne stretnutie 16.10:
Stav:
- Začiatok práce na textovej časti, napísaný úvod
- Vytvorený repozitár https://git.kemt.fei.tuke.sk/mj130zg/BP2021
- Vytvorené poznámky ku existujúcemu JS api
- Na ďalšie práce použiť IBM Watson na strane frontendu, ale pripraviť sa na vlastný backend.
Do ďalšieho stretnutia:
- Prezentovať frontend s IBM Watson alebo Microsoft, kódy dajte do repozitára.
- Pohľadať takú knižnicu, kde vieme využiť vlastný preklad.
- Zistiť čo znamená politika CORS.
- Pokračujte v písaní práce, pridajte časť o strojovom preklade.
### Virtuálne stretnutie 9.10:
Do ďalšieho stretnutia:
- Pripraviť si poznámky o tom čo ste sa dozvedeli o NLP na odovzdanie na kontrolu.
- Vytvoriť repozitár na GITe kde sa budú dávať zdrojové kódy. (adresár backend, adresár frontend, súbor README).
- Do súboru README napíšte možné API ktoré ste našli aj s krátkym opisom.
- V prvej fáze môžete využiť existujúce Cloud API.
Stav:
- rozhodli sme sa pre demonštráciu strojového prekladu.
- našli ste niekoľko API na strojový preklad (platené, alebo obmedzené).
### Stretnutie 30.9.
Nápady na úlohu NLP:
- demo [Spacy](https://github.com/explosion/spacy-services)
- strojový preklad pomocou [machine-translator](https://www.npmjs.com/package/machine-translator)
- chatbot napr. [chatbot](https://github.com/ddsky/chatbot)
- Niektorú knižnicu z [blogu](https://www.kommunicate.io/blog/nlp-libraries-node-javascript/)
- vyhľadajte natural language processing for javascript.
- Na ďalšom stretnutí si vyberieme konkrétnu tému NLP.
- Pripraviť si poznámky o tom čo ste sa dozvedeli o NLP.