zpwiki/pages/students/2019/michal_stromko/README.md

498 lines
17 KiB
Markdown

---
title: Michal Stromko
published: true
taxonomy:
category: [vp2021,bp2022,dp2024]
tag: [ir,cloud,demo,nlp]
author: Daniel Hladek
---
rok začiatku štúdia: 2019
# Diplomová práca 2023/24
Sémantické vyhľadávanie vo viacjazyčnom texte.
Zadanie práce:
1. Vypracujte prehľad najnovších metód sémantického vyhľadávania pomocou neurónových sietí.
2. Vyberte vhodné metódy pre vyhľadávanie a modifikujte ich tak aby boli použiteľné pre texty vo viacerých jazykoch.
3. Pripravte experimenty na vyhodnotenie vyhľadávania. Porovnajte vybrané metódy.
4. Vyhodnoťte experimenty a identifikujte slabé miesta a navrhnite zlepšenia.
Ciele DP:
- Bolo by fajn, keby z DP bol vedecký článok.
- Dotrénovať slovenský ST model.
- Porovnať viacero metód na vyhľadávanie v slovenskom texte - BM25, TF IDF, WordEmbedding, SentenceTransformers, Alebo iné embeddingy.
# Diplomový projekt 2
Stretnutie 28.9.2023
Stav:
- Naindexovaná nová verzia Wikipédie (14.8.2023). Sentence Transformers a BM25.
- Otázky sú v angličtine aj v slovenčine.
- Zistili sme, že otázky v SK QUAD sú veľmi jednoduché.
Úlohy:
- Dajte skripty na parsovanie Wiki na GIT.
- Vytvorte a vyhoddnoťte kros linguálny QA systém. Otázky v slovenčine by fungovali aj pre anglickú databázu.
- Nájdite vedecké články publikované na túto tému. Prečítajte si ich a urobte si poznámky. Aké databázy a aké spôsoby vyhodnotenia sa používajú? Systém sa skladá z dvoch modulov - information retrieval a question answering. Každý sa vyhodnocuje inak. Vyhľadávajte "cross lingual information retrieval", "cross lingual question answering". Môže sa použiť ako esej AKT.
- Skúste vytvoriť systém na "kros linguálne" indexovanie na "information retrieval". Je potrebné zistiť, aké modely a metódy sa na to používajú. MPnet alebo LABSE?
Nápad:
- Vytvoriť alebo vybrať zložitejšie otázky a vyhodnotiť ich.
# Diplomovy projekt 1
Nápady na semester (spolu s K. Sopkovicom)
- Chceme rozbehat demo vyhľadávanie. Existuje streamlit verzia.
- Chceme natrénovať a vyhodbnotiť model pre sémantické vyhľadávanie. Existuje prvá verzia sentence transformera (Cross Encoder, Dual Encoder natrénovaná na SK QUAD. Porovnať s STS SlovakBERT.
- Chceme využiť aj QA model - využiť ho v deme.
- Chcemem vyhodnotiť výkonnosť celého systému - všetky komponenty naraz. Aké sú možné metriky.
- Pripraviť slovenskú databázu STS a NLI.
- Vypracovať prehľad metód na vyhodnotenie IR systémov a kompletných systémov QA.
- Preskúmať možnosti zlepšenia - Sentence Transformer skripty pre doménovú adaptáciu a multilinguálne modely.
- Vypracovať prehľad článkov, ktoré riešia kompletné sémantické vyhľadávanie.
- Podrobne opísať proces fungovania a trénovanie sentence transformera. Princíp dual-encoder, cross-encoder.
- Pripraviť multi-lingual experiment na vyhľadávanie, napr. Angličtina, Slovenčina, Nemčina.
- Vyskúšať vyhľadávanie v inej doméne (noviny, mestské dokumenty).
Stretnutie 26.6.
Stav:
- Demo funguje, je odladene aj nasadene
- Praca naa pisomenj casti pokracuje
Úlohy:
- Pripraviť vyhľadávanie čislo anglické, čislo slovenské a slovensko anglické multilinguálne.
- Vyčísliť p-r-f1 celého vyhľadávania pre tieto tri prípady to tak, že jeden dokument (jedna jednotka) je jeden odsek (paragraf). Teda indexujete po paragrafoch.
- Cieľ je aby bola diplomovka publikovateľná.
- Pokračovať v písaní. Text by mal byť podkladom na prezentované experimenty.
Mal by vysvetľovať základné pojmy. Pozrite si články na tému "information retrieval in wikipedia".
Stretnutie 27.3.2023
Stav:
- Jednoduché demo stremalit fuguje - vektorové vyhľadávanie pomocou transformers utils.semantic_search.
- Cieľ: ku každému paragrafu vypočítať embedding pomocou mnlr. Poznačiť si dokument id. V prvom kroku ku otázke vyhľadať paragrafy. V druhom kroku ku otázke vyhľadať odpovede v paragrafoch. V treťom kroku zobraziť odpoveď na otázku aj najrelevantnejšie dokumenty.
- Pokračovať v písomnej časti.
Zásobník úloh:
- util_semanticsearch vymentiť za qdrant alebo faiss alebo iné.
- Určiť prah, na základe ktorého sa zistí, že odpoveď nie je v databáze.
- Neskôr dorobiť "fallback" na "fuzzy" vyhľadávanie relevatných dokumentov.
Stretnutie 20.2.2023
Úlohy:
- [-] Spravte QA demo pomocou streamlit. Najprv vytvorte faiss index, do pamäte nahrajte všetky paragrafy.
- [ ] Dotaz transformuje na vektor. Nájdite 5 najlepších odsekov. Vykonajte QA na všety odseky. Zobrazte odseky. Zobrazte najlepšiu odpoveď a názov dokumentu kde sa nachádza.
- [ ] Modely sa nachádzajú na HF TUKE-DeutscheTelekom.
Zásobník:
- Na uloženie odsekov a vektorov vyberte a použite vhodnú databázu (faiss, sqlite, qdrtant, jina ....).
- Implementujte stránkovanie (ak bude potrebné), zlepšite výzor.
Stretnutie 17.2.2023
Úlohy:
- Zoberte existujúci model bi-encoder. Indexujte všetky odseky do vektorovej databázy FAISS.
- Upravte streamlit demo na QA systém. Skript sa nachádza v slovak-retrieval/qademo. Skript bude vyhľadávať k najlepších dokumentov vektorovým vyhľadávaním.
- Potom v najlepších dokumentoch vykonajte QA vyhľadávanie.
- Zobrazte výsledky používateľovi.
Zásobník úloh:
- Pripravte experimenty, kde prezentujeme komponenty, porovnáme rôzne možnosti do podoby článku.
# Vedecky projekt 2022/23
Súvisiace práce:
- Matej Kobyľan
- Suchanič
- Kristián Sopkovič
Ciele na semester:
- Zistiť ktorá knižnica je dobrá a ktorý model je dobrý na slovenské vyhľadávnaie vo wikipédii pre QA.
- Možnosti pre knižnice sú: JinaDocArray, Elasticsearch-Opensearch, Faiss, Haystack
- Možnosti pre modely sú: DPR, LABSE, LASER, Iný Sentence Transformer, WordEmbedding.
- Vypracovat demonštračné vyhľadávanie v slovenskej wikipédii.
- Vypracovat spravu o precitanych clankoch spolu s odkazmi, cca 4 strany
- Vyslovit ciele diplomovej prace.
Klucove slova:
- Jina, Rasa, Vektorova Databaza
- Hierarchicke vztahy medzi dokumentami
- Faiss, Elasticsearch-Opensearch, Fasttext
- https://aclanthology.org/2020.emnlp-main.550/, Dense Passage Retrieval for Open-Domain Question Answering.
- Urobit demo vyhladavanie v slovenskej wikipedii.
- LABSE, LASER embedding model
- multi language IR
Stretnutie 9.1.2023
Stav:
- Vyrobená tabuľka s experimentami pre rôzne modely a rôzne veľkosti vrátenej množiny k
- Zatiaľ najlepší je model BM25
Úlohy:
- Pripravte experiment v ktorom najprv vyhľadáte množinu k=(napr. 100, 200 alebo 50) prvkov pomocou bm25, výsledky zoradíte pomocou neurónovej siete a vyberiete m=(napr. 10,20,50) najlepších prvkov. Výsledky vyhodnotíte.
- Zoradenie pomocou NN vyzerá takto: zoberiete otázku a paragraf. Vypočítate skóre podobnosti. Prvý spôsob výpočtu je, že vložíte otázku aj paragraf naraz do NN. Výsledok je podobnosť. Na výpočet podobnosti zatiaľ použite model slovakbert-stsb.
Zásobník úloh:
- Vytvoriť vyhľadávanie v dvoch krokoch. Najprv "nahrubo", potom výsledky znova zoradiť.
- Druhý spôsob vyhľadávania nahrubo je: vypočítate významový vektor pre paragraf aj pre odsek. Výpočítate kosínusovú podobnosť jedného aj druhého.
- Vyhodnotiť modely v adresári crossencoder.
Stretnutie 19.12.2022
Stav:
- Spustený skript pre vyhodnotenie
Úlohy:
- Pripravte testovací scenár. Množina SK QUAD. Vyhľadávame v paragrafoch. Pri vyhľadávaní nás zaujíma k najlepších výsledkov. K=1,5,10,20,30
- V testovacom scenári vyskúšqjte viacero modelov. WordEmbedding, LABSE, SlovakBERT, BN25
- V texte opíšte použíté modely, dataset aj testovací scenár.
- Z výsledky by mohol byť konferenčný článok.
Zásobník úloh:
- Natrénujte model Kharpukin DPR, podľa Facebook skriptov alebo pomocou Nvidia Deep learning examples.
- Vyhodnotte celý proces QA na vrátených výsledkoch.
Stretnutie 10.11.2022
Stav:
- Konvertovaný SCNC do JSON.
- Práca s Jina-Elasticsearch pre uloženie embeddingov.
- Prečítaný a spoznámkovaný článok "Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation".
Úlohy:
- Rozbehať skript SlovakRetrieval ktorý využíva FAISS. V skripte je už aj BM25, ostatné modely aj vyhodnotenie Recall na množine SK QUAD.
- Vytvoriť slovenské vyhľadávanie pomocou WordEmbeding. Použiť slovenský Spacy Model.
- Prečítať a spoznámkovať ďalšie články z https://github.com/UKPLab/sentence-transformers
Zasobnik uloh:
- Dotrénovať sentence transformer na slovenský jazyk. Ako?
Stretnutie 14.10.2022
Ulohy:
- Precitat si clanok, napiste poznamky
- Navrhnite na co by ste sa chceli sustredit.
Stav:
- Naštudovaný článok Kharpukin Dense Passage Retrieval
- Naštudované Jina-DocArray.
- Je k dispozícci ES na školskom servri - aj tak je lepšie pracovať na vlastnej inštancii.
Úlohy:
- Dodaný skript na indexovanie SCNC do ES. Upravte skript na Jina DocArray
- Skúste zaindexovať slovenské dokumenty pomocou JinaDoc Array. Vyberte vhdoný existujúci model, napr. LABSE.
- Skúste ich vyhľadávať.
- Nájdite si článok o vyhľadávaní pomocou LABSE. Napíšte si z neho poznámky. Ako prebieha vyhľadávanie pomocou LABSE?
Zásobník úloh:
- skúste zaindexovať slovenské dokumenty pomocou Elasticsearch.
- Zistite ako funguje vektorové vyhľadávanie v ES.
# Bakalárska práca 2022
- [Repozitár](https://git.kemt.fei.tuke.sk/ms111of/bp2022)
Názov: Indexovanie slovenského textu pomocou Elasticsearch
1. Vypracujte prehľad metód pre získavanie informácií.
2. Vytvorte vyhľadávací index dokumentov zo slovenského internetu.
3. Vytvorte demonštračnú webovú aplikáciu pre vyhľadávanie na slovenskom internete.
4. Navrhnite zlepšenia vyhľadávania.
## Bakalársky projekt 2021
4.3.2022
- Prebehlo viacero stretnutí
- Spravená Flask aplikácia, funguje, doplnené stránkovanie, zobrazenie otázok samosttne aj s ohodnotením , zobrazenie článku. Vyhľadanie podľa ľubovoľnej otázky.
- Urobený compose pre ES a Kibanu
Úlohy:
- Dorobiť Dockerfile pre web aplikáciu.
- Pracovať na texte práce.
Stretnutie 18.2.2022
- Boli viaceré stretnutia
- Aplikácia funguje
Úlohy:
- Doplniť stránkovanie, vyhľadanie vo voľnej otázke, zobrazenie článku.
- Pracovač na texte.
Stretnutie 7.1.2022
- Vytvorená Flask aplikácia a Dockerfile
- Urobené jednoduché vyhodnotenie pomocou počtu výsledkov.
Úlohy:
- Urobte konfiguráciu url Elasticsearch pomocou premennej prostredia alebo argumentu príkazového riadka do Dockerfile.
- Môžete dať všetko do docker-compose.
- Urobte vyhodnotenie vyhľadávania pomocou Precision-recalll. Pozrite si DP Ján Holp. Zaindexujete testovaciu množinu. V testeovacej množine sú vzorové otázky a vzorové vyýsledky. Zoberiete vzorovú otázu a ku nej vyhľadáte výsledky. Porovnáte Vašu množinu a vzorovú množinu. zistíte veľkosť ich prieniku. Podľa veľkosti vzorovej množiny a výsledkovej množiny vypožítate precision-recall.
- Dorobte prezentáciu
- Do práce pridajte opis toho ako funguje Flask aplikácia a ako komunikuje s Elasticsearch.
Stretnutie 3.12.2021
- Podarilo sa zaindexovať dokument do ES pomocou Python skriptu
Úlohy:
- Zaindexujte viac dát
- Vytvorte webové rozhranie pre vyhľadávanie. Flaśk aplikácia.
Stretnutie 26.11.2021
- Vypracované skripty na vkladanie, ale zatiaľ nefungujú.
Úlohy:
- Zoznámte sa s ES API
- Prejdite tutoriál http://blog.adnansiddiqi.me/getting-started-with-elasticsearch-in-python/
Stretnutie 12.11.2021
Pokračujú práce na písomnej časti, na praktickej zatiaľ nie.
Úlohy:
- Zlepšiť štruktúru práce.
- Doplniť do textu odkazy na literatúru.
Ciele na semester:
- vedieť zaindexovať väčšie množstvo slovenských textov.
- vytvoriť funkčné webové demo na vyhľadávanie v týchto textoch.
Stretnutie 22.10.2021:
- Pokračovanie na otvrených úlohách - problémy s Essential Data Docker setup
Úlohy:
- Nainštalovať ES a Kibana, upravte compose na https://alysivji.github.io/elasticsearch-kibana-with-docker-compose.html
- Pozrieť si knihu https://nlp.stanford.edu/IR-book/ a urobiť z nej poznámky do teoretickej časti BP. Odvolávajte sa na túto knihu v texte.
- Skúste cez Kibanu zaindexovať jeden text a vyhľadať niečo.
- Preštudujte si ES Analyzer.
Stretnutie 15.10.2021
Stav:
- Nainštalovaný ES na UVT virtuálke s dostatkom miesta.
- Naštudovaný Docker.
Úlohy:
- Pokračovať v otvorených úlohách.
- Vyberte vhodnú klientskú knižnicu pre prácu s ES.
- Pozrite podporu slovenčiny na ES od [Essential Data](https://github.com/essential-data/elasticsearch-sk).
Stretnutie 1.10.2021
Stav:
- Urobený GIT, Overleaf aj virtuálny stroj na tuke cloud.
Úlohy:
- Pokračovať v otvorených úlohách.
Stretnutie 24.9.2021
Stav:
- Urobené poznámku ku knihe "Learning to Rank".
- Naštudované Cassandra.
Úlohy:
- Kódy dávajte na GIT do repozitára bp2022
- Začnite pracovať na Flask Web aplikácii. Aplikácia by mala vedieť zadať dotaz a zobraziť výsledky vyhľadávania.
- Vytvorte skript na indexovanie wikipédie do ES
- Napíšte si osnovu bakalárskej práce a dopíšte do nej relevantné texty ktoré máte.
Zásobník úloh:
- Vytvorte si virtuálny stroj na cloud.tuke.sk
- Web aplikácia by mala byť Dockerizovaná - vytvoríme Docker image.
- Vytvorte si pracovné prostredie s ElasticSearch a docker-compose: nainštalujete Docker Swarm
## Vedecký projekt 2021
Návrh na zadanie bakalárskej práce:
1. Vypracujte teoretickú úvod do problematiky získavania informácií.
2. Navrhnite spôsob vytvorenia indexu vybranej databázy a implementujte vyhľadávanie.
3. Vykonajte niekoľko experimentov a identifikujte mesto pre zlepšenie vyhľadávania.
Podobná práca [Ján Holp](/students/2016/jan_holp)
Klaudové služby pre získavanie informácií
Cieľom projektu je zistiť ako fungujú klaudové služby pre umelú inteligenciu a ako fungujú webové vyhľadávače.
Úlohy:
- Zistite čo je to získavanie informácií.
- Oboznámte sa s Azure Cognitive Search a získajte prístup k službe. Pre prihlásenie môžete použiť Váše študentské prihlasovacie údaje.
- Vypracujte minimálne jeden tutoriál pre prácu s Azure Cognitive Search.
- Vypracujte krátky report na 2 strany kde napíšete čo ste robili a čo ste sa dozvedeli.
Zásobník úloh:
- Vytvorte index a vyhľadávanie na ZP Wiki.
- Napíšte tutoriál o tom ako ste to dokázali.
Stretnutie 4.6.
- Dohodli sme sa na vytvorení vyhľadávacieho systému za použitia crawlera, indexu a webového rozhrania.
- Vytvorený prístup na websucker-pip git,
- Vytvorený prístup na idoc
- Pre vedúceho : vytvoriť prístup na cassandra, dorobiť deployment elasticsearch.
Úlohy:
- Zoznámiť sa so zdrojovými kódmi crawlera
- Prečítať si knihu "Learning to Rank for Information Retrieval and Natural Language Processing: Second Edition"
- Nainštalujte si u seba cassandru a vyskúšajte crawler, zistite ako pracuje Cassandra.
- Porozmmýšľajte, ako vytvoriť vyhľadávací index pre text uložený v cassandre. Index môže byť vytvorený pomocou elasticsearch alebo podobného systému.
Do budúcnosti:
- Zaindexovať texty
- Vytvoriť webové rozhranie pre vyhľadávací index.
Stretnutie 7.5.
Stav:
- Vytvorená SQL databáza pomocou az príkazov (SQL Database).
- Nainštalované Azure Data Studio, vytvorená databáza študentov.
- Vytvorený nový ACS index a naindexovaná databáza.
- Azure Blob funguje iba cez Portál kvôli Location. Azure Data Storage. Všetky README sa dali do jedného súboru a to sa zaindexxovalo pomocou ACS.
- [Dokumetácia](vp2021) je rozsiahla, podmienky na zápočet sú splnené.
Stretnutie 23.4.
Stav:
- vytvorené ACS pre vyhľadávanie vo vzorovej databáze hotelov.
- vytvorený prázdny index pre vyhľadávanie na Wiki.
- vytvorená databáza SQL Database - zatiaľ nefunguje. Chýba prístup na shell pre vytvorenie.
- vytvorený Azure BLOB - zatiaľ nefunguje. Vytvorená tabuľka so základnými informáciami -id, meno,... Nefunguje indexovanie blobu - problém s názvami blobu.
- zpwiki viem pridať do kontajnera - statický WEB blob kontajner.
- Vyzerá to tak, že ACS priamo nepracuje s PostgreSQL ani s Mariadb
Možnosti:
- Pokračovať v ceste pomocou ACS.
- Využiť Grav Plugin TNT Search.
- Vymyslieť niečo celkom iné.
Úlohy:
- Zapracovať na indexovaní pomocou Azure SQL.
- Porozmýšľať ako ďalej - chceme použiť hotové riešenie alebo niečo vymyslieť. Napríklad Elasticsearch - vyžaduje si Python, Javascript.
Stretnutie 9.4:
Stav:
- Vytvorená sada tutoriálov o Azure a Azure Cognitive Search. Dobré na ZKT. Tutorály sú na [GIthube](https://github.com/michal552703/Vedecky-projekt).
- Zistili sme, že ACS indexuje iba z Azure Storage.
Úlohy:
- Vytvoriť pokusný Azure Storage zdroj. Môže to byť Azure Blob alebo Azure Table alebo Azure SQL.
- Použiť indexer na indexovanie obsahu zdroja.
- Zapísať postup do súboru MD.
Stretnutie 19.3
Stav:
- Vytvorený prístup na Azure Portal
Úlohy:
- Vypracujte minimálne jeden tutoriál pre prácu s Azure Cognitive Search.