forked from KEMT/zpwiki
125 lines
5.8 KiB
Markdown
125 lines
5.8 KiB
Markdown
## Návod na prácu s Elasticsearch
|
|
### Inštalácia
|
|
|
|
ES je dostupný na všetky operačné systémy ako Windows, MacOs aj Linux. Pre
|
|
prácu bol zvolený operačný systém Linux, ktorý je vhodnejší ako Windows. V systéme sme vytvorili adresár, ktorý bude obsahovať všetky potrebné súčasti. Do tohto
|
|
adresára sme si stiahli ES, ktorý stačilo rozbaliť a je pripravený na použitie aj bez
|
|
inštalácie. Pre spustením je potrebné mať prostredie Java Runtime Environment vo
|
|
verzii aspoň 1.8
|
|
|
|
|
|
Na tejto stránke najdeme najnosvsiu verziu ES
|
|
[Návod na instalaciu ES - oficialna stranka](https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)
|
|
|
|
**Zopár prikazov na lepsie fungovanie ES**
|
|
|
|
sudo -i service elasticsearch start //start ES
|
|
sudo -i service elasticsearch stop //stop ES
|
|
|
|
**Ak chceme aby sa ES spustal automaticky po spusteni OS**
|
|
|
|
sudo /bin/systemctl daemon-reload
|
|
sudo /bin/systemctl enable elasticsearch.service
|
|
|
|
**potom vieme ES spustat takto**
|
|
|
|
sudo systemctl start elasticsearch.service
|
|
|
|
sudo systemctl stop elasticsearch.service
|
|
|
|
**alebo zistime v akom stave sa nachadza**
|
|
|
|
sudo service elasticsearch status
|
|
|
|
|
|
|
|
### Podpora slovenčiny
|
|
|
|
Pre použitie Hunspell token filtru, stačí jeho obsah stiahnuť z webovej stránky a
|
|
rozbaliť ho. Po rozbalení obsahu je potrebné otvoriť adresár kde máme nainštalovaný
|
|
ES. Konkrétne v adresári config vytvoríme nový adresár s názvom hunspell, v ňom
|
|
ďalej vytvoríme adresár sk_SK. Do tohto adresára nakopírujeme súbory, ktoré sme
|
|
získali rozbalením Hunspellu. Výsledná súborová štruktúru si môžeme pozrieť na
|
|
obrázku :
|
|
|
|
![Súborová štruktúra Hunspell](suborova_struktura.PNG)
|
|
|
|
Pre správne fungovanie už potrebujeme len nastaviť analyzér správne. Dôležité
|
|
je poradie v akom sa filtre budú aplikovať na text. Na obrázku si môžeme pozrieť
|
|
kompletné nastavenie analyzéru(pozn. ES musí byť spustený). Ak je všetko správne
|
|
ES nám odpovie hláškou "true". Ako definovať analyzér si môžeme pozrieť na obrázku :
|
|
|
|
![Definícia analýzeru](def_analyzeru.PNG)
|
|
|
|
### Mapping
|
|
|
|
Po nastavení analyzéra potrebujeme ešte pred samotným indexovaním dát nastaviť mapping. Je dôležité nastaviť to na začiatku, kedže mapping už potom nie je
|
|
možné upraviť. Bolo by potrebné zmazať celý index a nastaviť mapping znova. Pri
|
|
mappingu potrebujeme vedieť, že každý článok bude obsahovať svoje jedinečné ID,
|
|
názov(title) a telo(body) článku. Týmto poliam musíme definovať štruktúru, čiže ID
|
|
bude typu integer, polia title a body budú typu text.
|
|
|
|
### Indexovanie dát
|
|
|
|
Na indexovanie použijeme pripravený zdrojový kód s názvom elasticsearch.js. Na
|
|
spustenie javascript kód potrebujeme mať nainštalovaný program Nodejs, najlepšie
|
|
v čo najnovšej verzii. Kód spustíme pomocou príkazového riadka zadaním príkazu:
|
|
nodejs elasticsearch.js.
|
|
Zdrojový kód načítava súbor, v ktorom sú všetky novinové články vo formáte
|
|
JSON, kde jeden riadok je jeden JSON, čiže jeden novinový článok. Načítavanie
|
|
prebieha po riadkoch, kde každému riadku je priradený index postupne v rozsahu 1
|
|
až 4781. každý článok obsahuje jedinečné ID, názov a telo.
|
|
Po spustení kódu sa nám zobrazí hláška, ktorá nás informuje o počte indexovaných článkov a vytvorí index s názvom "skweb", kde sa indexuje 4781 novinových
|
|
článkov, ktorým budú priradené ID. Po úspešnom indexovaní môžeme začať dáta
|
|
vyhľadávať. Ukážka správneho indexovania je na obrázku :
|
|
|
|
![Ukážka indexovania](ukazka_indexovania.PNG)
|
|
|
|
### Vyhľadávanie
|
|
|
|
Po úspešnom indexovaní môžeme začať s vyhľadávaním. Musíme si pripraviť dotaz
|
|
pre ES. Obrázok znázorňuje komunikáciu s ES a vyhľadávanie pomocou neho.
|
|
Odpoveď ES si môžeme pozrieť na obrázku. Sú tam zobrazené informácie
|
|
o trvaní vyhľadávania v ms, počte nájdených dokumentov, indexe, v ktorom sa
|
|
nachádza nájdený dokument, type, v ktorom je uložený dokument a ID dokumentu.
|
|
|
|
![Vyhľadávanie](vyhladavanie.PNG)
|
|
|
|
![Odpoveď]( odpoved.PNG)
|
|
|
|
|
|
### Výpočet presnosti
|
|
|
|
Použijeme metódu precision-recall. V priečinku ../scnc21 sa nachádza súbor answers,
|
|
ktorý obsahuje ID všetkých relevantných článkov pre každú otázku. Pri vyhľadávaní
|
|
majú články ID v rozsahu 1-4871. V súbore answers majú články ID dokumentov
|
|
označené inými číslami. Preto je potrebné každému ID z nášho vyhľadávača priradiť ID zo súboru answers aby sme správne vedeli vypočítať presnosť. Keďže naše indexovanie článkov prebiehalo načítavaním po riadkoch tak ID dokumentu, ktorý
|
|
nám našiel vyhľadávač je vlastne číslo riadku, pomocou ktorého sme indexovali dáta.
|
|
Stačí si pozrieť súbor info.txt , pomocou ktorého vieme prideliť správne ID.
|
|
Potom nám stačí použiť nástroj na výpočet precision-recall, môžeme to byť npm
|
|
balíček precision-recall alebo online kalkulátor. Ak vypočítame presnosť pre každú
|
|
otázku na záver stačí vypočítať aritmetický priemer všetkých otázok.
|
|
|
|
|
|
**Všetky potrebné zdrojové súbory su priložené v tomto repozitári**
|
|
|
|
**Môžu nastať menšie rozdiely kvôli novším verziám použitých nástrojov napr. ES, Nodejs**
|
|
|
|
**Užitočné odkazy** :
|
|
|
|
Dáta na indexovanie k stiahnutiu, články zo slovenského internetu:
|
|
|
|
https://nlp.web.tuke.sk/static/files/scnc1.zip
|
|
|
|
Súbory potrebné na výpočet presnosti, konkrétne otázky a a súbor správnych odpovedí:
|
|
|
|
https://nlp.web.tuke.sk/static/files/scnc21.zip
|
|
|
|
Všetko doležité ohľadom ES je na ich oficiálnej stránke :
|
|
https://www.elastic.co/elasticsearch/
|
|
|
|
Dôležité veci ohľadom Nodejs nájdete tu :
|
|
https://nodejs.org/en/blog/
|
|
|
|
Pre viac informácií stači pozrieť bakalársku prácu :
|
|
https://opac.crzp.sk/?fn=detailBiblioForm&sid=A4CA3C451D400D4BD034603141D1&seo=CRZP-detail-kniha |