Poloautomatická anotácia stránok internetových obchodov Dávid Varga 4Ib, Abstrakt. Bakalárska práca sa zaoberá vytvorením metód na indukciu

Podobné dokumenty
Microsoft Word - prirucka_katedry_nova

Microsoft Word - Priloha_1.docx

Vyhľadávanie v CREPČ 2 (aktualizované dňa ) Centrum vedecko-technických informácií SR Odbor pre hodnotenie vedy Oddelenie pre hodnotenie pub

Centrum vedecko-technických informácií, Odbor pre hodnotenie vedy, Oddelenie pre hodnotenie publikačnej činnosti Vyhľadávanie a práca so záznamami - C

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Pracovný postup pre vypĺňanie údajov elektronického formulára IŠIS pre spravodajskú jednotku 1

Matej Kendera - PDF, word, lucene, java

eKasa

eKasa

eKasa

dFlex Nitra spol. s r.o.

Finančné riaditeľstvo Slovenskej republiky 9/ORP/2019/IM Stiahnutie identifikačných a autentifikačných údajov pri ORP - rola Administrátor/Technik Inf

eKasa

sprievodca_exp.pdf

Snímka 1

PowerPoint Presentation

GEODETICKÝ A KARTOGRAFICKÝ ÚSTAV BRATISLAVA Chlumeckého 4, Bratislava II Obsah 1. Export údajov ZBGIS do CAD formá

2

Finančné riaditeľstvo Slovenskej republiky 10/ORP/2019/IM Stiahnutie identifikačných a autentifikačných údajov pri ORP - rola Administrátor Informácia

bakalarska prezentacia.key

Informačný systém pre externú časť a písomnú formu internej časti maturitnej skúšky Informačný systém pre EČ a PFIČ maturitnej skúšky Užívateľská prír

Tomáš Jelínek - včely vyhľadávanie

Metódy dokazovanie v matematike 1 Základné pojmy Matematika exaktná veda vybudovaná DEDUKTÍVNE ZÁKLADNÉ POJMY základy každej matematickej teórie sú in

sprievodca-priestor.pdf

SK_mTransfer_Technicka_dokumentacia_ indd

Používateľská príručka elektronických služieb pre žiadateľov o štatistické informácie október 2016

PowerPoint Presentation

(Microsoft Word - Registr\341cia \372\350tu Hik-Connect.docx)

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, , Bratislava 4 Internet vecí v našich ž

Pravidelné úlohy verzia ku dňu SEAL IT Services, s.r.o. Kontakt: SEAL IT Services, s.r.o., Topoľová 4, Bratislava 1, tel.:

Používateľská príručka POUŽÍVATEĽSKÁ PRÍRUČKA Generátor XML dávok pre Informačný systém kontrolných známok z MS Excel šablóny Dátum: Verzia

Microsoft Word - 06b976f06a0Matice - Uzivatelska Dokumentacia

Navigácia po úvodnej stránke elektronickej schránky Dátum zverejnenia: Verzia: 10 Dátum aktualizácie: Navigácia po úvodnej st

0022-vub-mobilne-tokeny-200x200-v03.indd

SK_mTransfer_Okamzita_notifikacia_ indd

Manuál uchádzača ezakazky Manuál uchádzača Dátum vytvorenia dokumentu: Verzia: Autori slovenský Matej Marcin, Stanislava Marošiová Te

VSDC Free Video Editor stručný návod na používanie Link na sťahovanie softvéru: K prog

Microsoft Word - VI xfilcakt.docx

Detail správy a súvisiace prvky Dátum zverejnenia: Verzia: 5 Dátum aktualizácie: Detail správy a súvisiace prvky UPOZORNENIE

Kamera Sieťová klenbová kamera Rýchla používateľská príručka---po slovensky Táto rýchla príručka sa vzťahuje na: DS-2CD4112F-(I), DS-2CD4124F-(I), DS-

Pomoc pri práci s Online katalógom 1. Prihlásenie do konta používateľa v OPACu Jednoduché vyhľadávanie Rozšírené vyhľadávanie Zob

Finančné riaditeľstvo Slovenskej republiky 15/ORP/2019/IM Práca s dostupnými reportami - rola Administrátor/Účtovník Informácia je určená pre podnikat

2.5. Dotyčnica krivky, dotykový kužeľ. Nech f je krivka a nech P V (f) (t.j. m P (f) 1). Ak m P (f) = r a l je taká priamka, že I P (f, l) > r, potom

IT NEWS

SK MATEMATICKA OLYMPIADA 2010/ ročník MO Riešenia úloh domáceho kola kategórie Z4 1. Doplň do prázdnych políčok čísla od 1 do 7 každé raz tak,

Dobývanie znalostí

aplikácia do mobilého telefónu na stiahnutie digitálneho tachografu

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ Metodika archivácie verzií HW Tímový projekt Stratos FIIT M

eKasa

1

PowerPoint-Präsentation

SK MATEMATICKÁOLYMPIÁDA skmo.sk 2009/ ročník MO Riešenia úloh česko-poľsko-slovenského stretnutia 1. Určte všetky trojice (a, b, c) kladných r

Zásady spracovania a ochrany osobných údajov I. Základné ustanovenia 1. Správcom osobných údajov podľa čl. 4 bod 7 nariadenia Európskeho parlamentu a

MANUAL_PRE_UVODNU_PRACU_S_AIS

Microsoft Word - Argumentation_presentation.doc

Detekcia akustických udalostí v bezpečnostných aplikáciách

Chemical Business NewsBase

Microsoft PowerPoint - OOP_prednaska_10.pptx

Snímka 1

enum

Metrické konštrukcie elipsy Soňa Kudličková, Alžbeta Mackovová Elipsu, ako regulárnu kužeľosečku, môžeme študovať synteticky (konštrukcie bodov elipsy

Microsoft PowerPoint - CONNECT_R&A_76_sk

(Manu\341l)

Agenda záverečnej práce pedagóg Celá agenda týkajúca sa záverečnej práce je dostupná v obrazovke Záverečná práca (menu Agenda pedagóga -> Záverečné pr

Projekty bilaterálnej spolupráce PRÍLOHA 5 MANUÁL K ELEKTRONICKÉMU SYSTÉMU PREDKLADANIA ŽIADOSTÍ NA RIEŠENIE PROJEKTOV Obsah 1 ÚVOD Konvencie

Vlastná Vlastná tvorba tvorba Neobmedzene Neobmedzene Voľný Voľný obsah obsah my website Kdekoľvek Kdekoľvek na na internet internet Jednoduché Jednod

(Microsoft Word Zadanie na s\372\235a\236 KROS DESIGN AWARD .doc)

Microsoft Word - skripta3b.doc

DediĊnosť

Uchádzač o štúdium potvrdenie el. návratky. Prihlasovacie údaje do el. návratky na stránke vidíte na stránke

Microsoft Word - ESD_-_DA_-_MA_-_Ucastnicka_verzia_video_V_3.docx

MO_pred1

Pokyny_Doctorandorum dies

STRUČNÝ NÁVOD KU IP-COACHU

Microsoft Word - 6 Výrazy a vzorce.doc

Riesenie_zasielkovna

Slovenská technická univerzita v Bratislave Fakulta informatiky a informačných technológií Ilkovičova 2, Bratislava 4 Používateľská príručka Vi

Microsoft Word - visittrencin_analyza navstevnosti.docx

Distance search Ján Garaj Fakulta informatiky a informačných technológií Slovenská technická univerzita Školský rok: 2008/09 Popis problému a motiváci

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Ročníkový projekt (1) Herňa Študijný odbor: Aplikovaná informatika Autor :

SK01-KA O1 Analýza potrieb Zhrnutie BCIME tím Vyhlásenie: "Podpora Európskej komisie pre výrobu tejto publikácie nepredstavuje súhlas

Žiadosť o licenčnú zmluvu na podujatie Na adrese v sekcii hlavného menu kliknete na položku Používatelia. Zobrazí sa blokové menu,

Aktion.NEXT Novinky vo verzii 1.9

8 Cvičenie 1.1 Dokážte, že pre ľubovoľné body X, Y, Z platí X + Y Z = Z + Y X. 1.2 Dokážte, že pre ľubovoľné body A, B, D, E, F, G afinného priestoru

Metodika práce s gitom Spôsob práce s gitom V projekte sa budú udržovať dve hlavné vetvy: - Master - Hlavná vetva, ktorá odráža otestovaný funkčný kód

User:tomas.melicher

Pravidlá ochrany osobných údajov a cookies Tieto pravidlá ochrany osobných údajov upravujú spôsob používania osobných údajov zákazníkov spoločnosti LT

Microsoft Word - zapis-predmetov-AiS

Manuál pre nastavenie tlače z VRP elio m500 Elio m500 Manuál pre nastavenie tlače -1-

Resolution

2

Čo sú pojmové mapy 1 Charakterizácia pojmových máp pojmové mapy sú diagramy, ktoré vyjadrujú podstatné vzťahy medzi pojmami vo forme tvrdení. Tvrdenia

Slovenská technická univerzita v Bratislave

moja praca

Prepis:

Poloautomatická anotácia stránok internetových obchodov Dávid Varga 4Ib, 2017-2018 Abstrakt. Bakalárska práca sa zaoberá vytvorením metód na indukciu pravidiel pre automatickú extrakciu dát o produktoch z internetových obchodov na základe pozitívnych a negatívnych príkladov. Tieto metódy sa snažia nájsť najlepšiu cestu k atribútom produktov formou hľadania čo najuniverzálnejších XPath-ov a regulárnych výrazov pre vybraný internetový obchod. Navrhnuté metódy sú implementované v zásuvnom module internetového prehliadača a vylepšujú jeho funkcionalitu poloautomatického anotovania. Kľúčové slová: poloautomatická anotácia stránok, extrakcia dát, anotátor, internetový obchod, zásuvný model, Chrome Extension, XPath, wrapper, Javascript, Kapsa, regulárne výrazy, Angular 1

1 Úvod Nakupovanie prostredníctvom internetu sa stáva čím ďalej, tým populárnejším, vzniká mnoho internetových obchodov a človek má na výber z veľkého množstva produktov. Informácie o týchto produktoch nie sú na jednom mieste a zákazník musí navštíviť viacero internetových obchodov a manuálne porovnávať tieto produkty, aby si vybral to, čo by mu najviac vyhovovalo. Naša práca sa zaoberá vylepšením nástroja Exago, ktorý je súčasťou projektu Kapsa. Cieľom projektu je vytvoriť zoznam produktov umožňujúci porovnávať tieto produkty podľa ich vlastností a hodnotení používateľov, a tým zjednodušiť výber produktu pre koncového zákazníka. Exago je zásuvný modul do internetového prehliadača, ktorého cieľom je získať informácie o všetkých produktoch na ľubovoľnom internetovom obchode. Tento nástroj používa anotátor, ktorý s jeho pomocou vytvorí súbor pravidiel, tzv.wrapper pre extrahovanie dát produktov. Tieto dáta budú následne spracované mimo nástroja Exago a dostupné v zozname produktov Kapsy. Na to, aby sme vedeli extrahovať dáta všetkých produktov z nejakého internetového obchodu, potrebujeme vedieť, kde sa tieto dáta na detailovej stránke každého produktu v tomto internetovom obchode nachádzajú. Ako všetky elementy v XML dokumentoch, tak aj tieto dáta o produktoch vieme adresovať (anotovať) dopytovacím jazykom XPath, čím nájdeme elementy, v ktorých sa tieto informácie nachádzajú. Dáta o produktoch vieme adresovať aj samotnými regulárnymi výrazmi, alebo súčasným použitím XPath-ov a regulárnych výrazov. V druhom prípade sa regulárne výrazy používajú na podrobnejšie adresovanie v rámci elementov vyhľadaných XPath-mi. Keďže chceme porovnávať produkty z viacerých internetových obchodov, ktoré majú rôzne štruktúry webových stránok, tak adresovanie elementov, v ktorých sa nachádzajú dáta, bude odlišné skoro pre každý internetový obchod. Anotátor by tak musel poznať syntax XPath-ov a regulárnych výrazov, a taktiež ručne písať pre každý obchod a pre každú vlastnosť produktu XPath alebo regulárny výraz. 1.1 Analýza súčasného stavu Pôvodná verzia Exaga vygenerovala pre každý element iba jeden XPath a brala do úvahy len názov elementu a jeho poradie. Tento XPath väčšinou nebol univerzálny pre celý internetový obchod, anotátor ho musel ručne prepísať, čo bolo nepraktické, zdĺhavé a anotátor musel mať dostatočnú prax na to, aby vygenerovaný XPath prepísal tak, aby adresoval element správne na celom internetovom obchode. Ďalším nedostatkom predchádzajúcej verzie Exaga bolo, že nedokázal generovať regulárne výrazy. Ak anotátor chcel adresovať nejaký element alebo text na webovej stránke pomocou regulárnych výrazov, tak ich musel písať ručne. 2

Táto verzia Exaga bola implementovaná ako Add-on pre internetový prehliadač Mozilla Firefox a využívala zastarané metódy, ktoré následne stratili podporu a neumožnili plnú funkčnosť Exaga. 1.2 Ciele práce Cieľom našej práce je uľahčiť a zrýchliť prácu anotátorovi poloautomatickým anotovaním webových stránok na základe pozitívnych a negatívnych príkladov, aby anotátor dokázal anotovať celý internetový obchod jednoduchým klikaním na elementy zobrazené na web stránke tohto obchodu. Exago by podľa jeho klikania na elementy dokázalo vygenerovať XPath-y a regulárne výrazy, ktoré budú univerzálne pre celý internetový obchod. Tým pádom by anotátor nemusel manuálne písať XPath-y a regulárne výrazy, a dokonca by ani nemusel poznať ich syntax. Ak by vygenerovaný XPath nebol univerzálny, tak pomocou pozitívnych a negatívnych príkladov si anotátor nakliká, ktoré elementy mu vyhovujú a ktoré nie. Výsledkom by mal byť univerzálny XPath pre tento obchod. Anotátor ich teda nebude musieť prepisovať ani v prípade, ak vygenerovaný XPath či regulárny výraz hneď zo začiatku anotovania nebude vyhovovať. Ďalším cieľom je implementovať novú verziu Exaga v Angular frameworku ako zásuvný modul pre internetový prehliadač Google Chrome, a tým aktualizovať zastarané metódy z predošlej verzie. Taktiež je potrebné vytvoriť editor pre prácu s regulárnymi výrazmi, kde bude možné ich generovať, upravovať a kombinovať s XPath-mi. 2 Návrh riešenia V tejto kapitole popisujeme jednotlivé metódy poloautomatického anotovania na základe pozitívnych a negatívnych príkladov, generovania XPath-ov a regulárnych výrazov. 2.1 XPath XPath je dopytovací jazyk, ktorý slúži na výber uzlov XML dokumentov. Jeho syntax sa podobá na syntax v súborových systémoch, ale namiesto názvov súborov používa názvy elementov alebo vlastnosti elementov. V praxi sa dá k jednému elementu nájsť viacero XPath-ov a túto vlastnosť XPath-ov chceme využiť pre generovanie čo najuniverzálnejších XPath-ov pre atribúty produktov. 3

2.2 Exago Na to, aby nástroj Exago vedel vyrobiť wrapper, potrebuje vedieť pozíciu, kde sa nachádzajú atribúty produktov. Tieto pozície označí anotátor jednoduchým klikaním na miesta, kde sa tieto atribúty na webovej stránke nachádzajú. Exago automaticky vygeneruje XPath-y k týmto pozíciám a anotátor následne skontroluje, či automaticky vygenerované XPath-y fungujú na viacerých produktoch na danom internetovom obchode. Na nasledujúcom obrázku Obr. 1 je zobrazená webová stránka hodnotení produktu (www.heureka.sk). Po kliknutí anotátora na percentuálne hodnotenie 70% sa označilo dané hodnotenie sivým obdĺžnikom a automaticky sa tiež označilo hodnotenie 100%. Obr. 1 Príklad úspešného anotovania hodnotenia produktu(product rating) zo sekcie komentov 2.3 Generovanie množiny XPath-ov Veľké množstvo HTML elementov vo webových stránkach používaju rôzne atribúty, ktoré týmto elementom poskytujú dodatočné informácie. Atribúty sa uvádzajú v otváracom tag-u ako meno= hodnota a môžu ich mať všetky typy HTML elementov. Existuje veľa druhov atribútov, z ktorých každý má svoje špecifické použitie na webovej stránke. Ako príklad si môžeme vziať atribút id, jedinečný identifikátor elementu v danom HTML dokumente. To nám môže naznačovať, že ak budeme vedieť hodnotu atribútu id, tak budeme vedieť vytvoriť jednoduchý XPath, 4

ktorý bude jednoznačne adresovať element používajúci túto hodnotu. V nasledujúcom príklade Zdrojový kód 1 je časť HTML dokumentu detailnej stránky LCD monitora, kde HTML element table má atribút id a hodnota tohto atribútu je parametre produktu. Tento element teda vieme adresovať XPath-om //*[@id = 'parametre produktu'] s určitosťou, že vyhľadá práve jeden element. <h1>samsung 24FDX</h1> <h2>specifikacia</h2> <table id="parametre produktu" class="tabulka parametrov produktu"> <tbody> <tr> <td style="color:powderblue;">výrobca</td> <td style="color:pink;">samsung</td> </tr> <tr> <td style="color:powderblue;">model</td> <td style="color:pink;">24fdx</td> </tr> </tbody> </table> Zdrojový kód 1 Ukážka HTML dokumentu 5

Podobne vieme využívať aj iné typy atribútov ako napríklad style, class, src a mnoho ďalších. Implementované metódy na generovanie množiny XPath-ov fungujú tak, že sa v HTML dokumente vynárame od elementu, na ktorý sa kliklo, smerom k určenému rodičovskému elementu, po ktorý sa máme vynárať. Počas vynárania tieto metódy generujú rôzne XPath-y a berú do úvahy všetky atribúty aktuálneho elementu, meno tohto elementu a jeho poradie vzhľadom na súrodencov. Tieto vlastnosti elementu kombinujeme a vytvárame veľké množstvo XPath-ov. Ako príklad si vezmime HTML dokument Zdrojový kód 1, kde cieľom anotátora je spustiť generovanie množiny XPath-ov pre element td s hodnotou 24FDX a nech rodičovský element, po ktorý sa majú generovať XPath-y je koreň HTML dokumentu. Po kliknutí na daný element nám metódy vygenerovali nasledujúce XPath-y: //tr[2]/td[2] //tr[last()]/td[last()] //tr[last()]/td[2] //tr[2]/td[last()] //tr[2]/*[@style="color:pink;"] //tr[last()]/*[@style="color:pink;"] Aj napriek tomu, že HTML dokument Zdrojový kód 1 je jednoduchý a krátky tak nám metódy vygenerovali pomerne veľké množstvo XPath-ov, čo je aj potrebné, pretože tieto XPath-y sa využívajú aj pri funkcionalite pozitívnych a negatívnych príkladov. 2.4 Pozitívne a negatívne príklady Funkcionalita pozitívnych a negatívnych príkladov sa používa v tých prípadoch, ak vybraný XPath z vygenerovanej množiny nevyhovuje pre iné detailové stránky na danom internetovom obchode, pričom môžu nastať dve situácie. Buď XPath označí niečo, čo nechceme, aby označovalo, napr. namiesto percentuálneho hodnotenia označí cenu produktu, alebo nám XPath neoznačí niečo, čo chceme, aby označilo. Pomocou funkcionality pozitívnych a negatívnych príkladov anotátor vyberá univerzálny XPath pre celý internetový obchod. 2.4.1 XPath označuje nechcené Anotátor si v tejto situácii nastaví v nástroji tzv. negatívny príklad a klikne na element, ktorý označil vygenerovaný XPath. V našom príklade na Obr. 2 sa označil objekt s hviezdičkami. Na pozadí sa vygeneruje množina XPath-ov pre tento element, označme túto množinu B. Označme množinu A ako množinu vygenerovaných XPath-ov pôvodného elementu. Množina A\B bude nová množina, z ktorej sa vyberie jeden XPath a ten sa použije namiesto pôvodného nefunkčného XPath-u pre celý internetový obchod. 6

Obr. 2 Pri označovaní elementu s percentuálnym hodnotením nám vygenerovaný XPath na stránke iného produktu XPath nefungoval. 2.4.2 XPath neoznačuje chcené Anotátor si v tejto situácii nastaví v nástroji tzv. pozitívny príklad a klikne na element, ktorý nám vygenerovaný XPath neoznačil. V našom príklade na Obr. 3 sa neoznačilo percentuálne hodnotenie produktu 70%. Na pozadí sa vygeneruje množina XPath-ov pre tento chcený element. Označme túto množinu B, množinu A označme ako množinu vygenerovaných XPath-ov pôvodného elementu. Množina A B bude nová množina, z ktorej sa vyberie jeden XPath a ten sa použije namiesto pôvodného nefunkčného XPath-u pre celý internetový obchod. 7

Obr. 3 Pri označovaní elementu s percentuálnym hodnotením nám vygenerovaný XPath na stránke iného produktu XPath nefungoval. 8

2.5 Regulárne výrazy Regulárne výrazy sú špeciálne postupnosti znakov, ktoré reprezentujú určitý vzor na vyhľadávanie postupností znakov v texte. Tento vzor sa často používa pre textové vyhľadávacie algoritmy, ktorý vracia zoznam vyhovujúcich postupností znakov z prehľadávaného textu, či nahrádza vyhovujúce postupnosti znakov inými. V dnešnej dobe regulárne výrazy podporuje väčšina programovacích jazykov a sú silným nástrojom pri vyhľadávaní v texte, kontrole dát zadávaných vo formulároch, parsovaní kódu, ale aj pri programovaní, kde môžu ušetriť nadbytočné volania metód a množstvo riadkov kódu. V tejto kapitole si priblížime metódy, ktoré generujú regulárne výrazy a editor na prácu s regulárnymi výrazmi. 2.5.1 Generovanie pre označený výraz Tieto metódy umožňujú anotátorovi vygenerovať regulárne výrazy, ktoré vyhľadajú anotátorom označený text. Vygenerované regulárne výrazy sú zámerne generované tak, aby výsledná množina vyhovujúcich postupností znakov vo vyhľadávanom texte bola čo najväčšia, pretože v praxi bude žiadúce, aby sme vedeli adresovať viacero prvkov. To znamená, že okrem označeného textu anotátorom budú často vyhovovať týmto výrazom aj ďalšie postupnosti znakov. Základná metóda genregbasic() funguje tak, že v označenom texte nahradí všetky biele znaky metaznakom \s a ostatné znaky ponechá ako v označenom texte. Nasledujúci obrázok Obr. 4 opisuje ako anotátor označil text, ktorý je zvýraznený modrou farbou. Vygenerovaný regulárny výraz je tvaru /\s\s\s\sje\smnoho\s/g, pretože anotátor označil štyri medzery pred slovom je, slovo je, tabulátor za týmto slovom, slovo mnoho a znak nového riadku za týmto slovom. Obr. 4 Príklad generovania metódy genregbasic() 9

Druhá metóda genregbasicwhitespaceplus() sa odvíja od metódy genregbasic(), avšak skupiny bielych znakov nahradí regulárnym výrazom \s+. Výsledkom je menej prísne hľadanie označeného textu, a tým pádom v praxi tomuto vygenerovanému regulárnemu výrazu bude vyhovovať viacero postupností znakov. Predošlý obrázok Obr. 4 opisuje ako anotátor označil text, ktorý je zvýraznený modrou farbou. Táto metóda teda vygeneruje regulárny výraz tvaru /\s+je\s+mnoho\s+/g. 2.5.2 Generovanie podľa okolia Základnou myšlienkou tohto prístupu generovania regulárnych výrazov je označenie nejakej časti textu pred a za hľadaným výrazom, čo je práve okolím hľadaného výrazu. Následne sa vygeneruje predpona a prípona k týmto označeným textom, ktoré budú použité vo výslednom regulárnom výraze. Tento výsledný regulárny výraz teda berie do úvahy to, čo je pred a za hľadaným výrazom a bude adresovať všetky možné postupnosti znakov, ktoré sa nachádzajú medzi rovnakou predponou a príponou. 2.5.2.1 Generovanie predpony Pre generovanie regulárneho výrazu podľa okolia anotátor potrebuje vygenerovať regulárny výraz, takzvanú predponu. Ako príklad si zoberieme ďalší obrázok Obr. 5, kde sa anotátor snaží vygenerovať regulárny výraz podľa okolia, ktorému bude vyhovovať slovo je. Anotátor si teda označil text pred slovom je, tento text je zvýraznený modrou farbou. Obr. 5 Príklad označenia predpony regulárneho výrazu okolia Metóda generateprefix() dostane na vstup takto označený text a vygeneruje viacero predpôn, z ktorých si anotátor vyberie jednu na použitie v regulárnom výraze podľa okolia. Generovanie týchto predpôn prebieha v dvoch fázach. Najprv sa k označenému textu vygenerujú regulárne výrazy, ktorým bude vyhovovať označený text pomocou metód opísaných v kapitole 2.6.1. Nech r je jeden z týchto vygenerovaných regulárnych výrazov, potom predpona pre tento regulárny výraz bude tvaru (?<=r). Táto predpona je takzvaným kladným tvrdením o predchádzajúcom, čiže pred hľadaným výrazom sa musí nachádzať postupnosť znakov vyhovujúca regulárnemu výrazu r. 10

2.5.2.2 Generovanie prípony Po generovaní predpony ostáva anotátorovi už len generovanie prípony. Ako príklad si zoberieme nasledujúci obrázok Obr. 6, kde sa anotátor snaží vygenerovať regulárny výraz podľa okolia, ktorému bude vyhovovať slovo je. Anotátorovi sa podarilo vygenerovať predponu, čiže musí vygenerovať ešte príponu, aby mohol vygenerovať regulárny výraz podľa okolia slova je. Anotátor si teda označil text za slovom je, tento text je zvýraznený modrou farbou. Obr. 6 Príklad označenia prípony regulárneho výrazu okolia Metóda generatesuffix() dostane na vstup takto označený text a vygeneruje rôzne prípony, z ktorých má anotátor na výber pre použitie v regulárnom výraze podľa okolia. Generovanie prípon prebieha taktiež v dvoch fázach ako generovanie predpôn. K označenému textu sú následne vygenerované regulárne výrazy, ktorým bude vyhovovať označený text pomocou metód opísaných v kapitole 2.6.1. Nech p je jeden z vygenerovaných regulárnych výrazov, potom prípona pre tento regulárny výraz p bude (?=p). Táto prípona vyjadruje takzvané kladné tvrdenie o nasledujúcom, takže za hľadaným výrazom sa musí nachádzať postupnosť znakov vyhovujúca regulárnemu výrazu p. 2.5.2.3 Využitie predpony a prípony pri generovaní podľa okolia Po tom ako si anotátor vyberie jednu predponu z množiny vygenerovaných predpôn a jednu príponu, tak pomocou metódy applyprefixsuffix() bude vyskladaný regulárny výraz, podľa ktorého sa vyhľadá text medzi textom, ktorý si označil. V ďalšej fáze generovania regulárnych výrazov si anotátor vyberie jednu predponu z množiny vygenerovaných predpôn a jednu príponu. Nech (?<=r) je vygenerovaná predpona a (?=p) je vygenerovaná prípona, potom výsledný regulárny výraz, podľa ktorého sa bude vyhľadávať text bude (?<=r)(. \\s)*(?=p). Tento regulárny výraz teda vyhľadá všetko, čo sa nachádza medzi označeným textom, ktorý je reprezentovaný regulárnym výrazom r podľa Obr. 5 a označeným textom reprezentovaným regulárnym výrazom p podľa Obr. 6. V nasledujúcom obrázku Obr. 7 je vyznačený text modrou farbou, ktorý je vyhľadaný výsledným regulárnym výrazom. Obr. 7 Príklad vyhľadaného textu podľa jeho okolia 11

3 Záver Návrh riešenia sme implementovali ako zásuvný modul Chrome Extension do prehliadača Google Chrome. Pomocou implementovaných metód generovania XPathov, regulárnych výrazov, pozitívnych a negatívnych príkladov dokážeme anotovať detailnú stránku produktu omnoho úspešnejšie ako v predošlej verzii Exaga. Zostáva nám analyzovať presnosť a úplnosť týchto metód na množine internetových obchodov a prípadne tieto metódy vylepšiť. Poďakovanie. Ďakujem vedúcemu mojej bakalárskej práce, RNDr. Petrovi Gurskému, PhD., za pomoc a možnosť pracovať na projekte Kapsa. Literatúra 1. Liu, Bing: Web Data Mining: Exploring Hyperlinks, Contents,and Usage Data. Second Edition, ISBN 978-3-642-19459-7, Springer, 2011 2. Kushmerick, N.: Wrapper induction: efficiency and expressiveness. Artificial Intelligence, 118:15-68, 2000. 3. Muslea, I., Minton, S. and Knoblock, C.: A hierarchical approach to wrapper induction. Agents-99, 1999. 4. Cohen, W., Hurst, M., and Jensen, L.: A flexible learning system for wrapping tables and lists in HTML documents. WWW-2002, 2002. 5. Hsu, C.N., Dung, M.T.: Generating finite-state transducers for semi-structured data extraction from the Web. Information Systems. 23(8): 521-538, 1998. 6. Chabaľ, V: Poloautomatická extrakcia komentárov z produktových katalógov. Diplomová práca. Košice 2014 7. Crescenzi, V., Mecca, G., Merialdo,P.: Roadrunner: Towards automatic data extraction from large web sites. In Proceedings of VLDB 2001, pp. 109-118. 12