--- 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 v slovenskom 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 slovenské texty. 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. # Diplomovy projekt 1 Ciele na semester (spoliu s K. Sopkovicom) - Chceme rozbehat demoo vyhladavanie. 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. - 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. # 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.