vybere vˇsechny elementy, kter´e maj´ı atribut href vybere vˇsechny elementy, u kter´ ych atribut href obsahuje hodnotu predmet
Takˇze pokud chceme vybrat vˇsechny odkazy z dokumentu, kter´e v adrese obsahuj´ı slovo predmet. CSS selektor bude vypadat: a[href*=predmet]
2.2
Anal´ yza str´ anek ˇ cesk´ ych univerzit
V n´asleduj´ıc´ı kapitole se zamˇeˇr´ım na formu a obsah pˇredmˇet˚ u na webov´ ych str´ank´ach vysok´ ych ˇskol a pˇrehlednost jejich navigace. Z prohl´ıˇzen´ı univerzitn´ıch web˚ u jsem zjistil, ˇze struktura jejich domovsk´ ych str´anek se podob´a. Pro uchazeˇce zpravidla nab´ızej´ı po u ´vodn´ım v´ ybˇeru fakulty popis obor˚ u, d˚ uvody proˇc studovat pr´avˇe u nich a pod´an´ı pˇrihl´aˇsky. Skladbu pˇredmˇet˚ u jednotliv´ ych obor˚ u vˇsak b´ yv´a obt´ıˇznˇejˇs´ı naj´ıt (existuj´ı i v´ yjimky). Ve vˇsech pˇr´ıpadech je bud’ uˇzivatel pˇresmˇerov´an na informaˇcn´ı syst´em univerzity nebo je obsah zobrazen´eho pˇredmˇetu syst´emem vygenerov´an. Z tohoto d˚ uvod je proto je lepˇs´ı rovnou naj´ıt informaˇcn´ı syst´em univerzity (napˇr. u Z´apadoˇcesk´e univerzity se jmenuje port´al ) a postupnˇe proch´azet fakulty, obory a pˇredmˇety. Webov´e str´anky vysok´ ych ˇskol vˇetˇsinou nepouˇz´ıvaj´ı dynamick´e prvky, 3
Webov´e str´anky ˇcesk´ych univerzit
Anal´yza str´anek ˇcesk´ych univerzit
kter´e umoˇzn ˇuj´ı zmˇeny obsahu webu. Pro internetov´eho robota je tud´ıˇz snazˇs´ı z´ıskat potˇrebn´e informace, aniˇz by musel simulovat ˇcinnost ˇclovˇeka. Dynamick´e prvky jsou zde pˇrev´aˇznˇe pouˇzity pro mˇeˇren´ı dat nebo r˚ uzn´ ych banner˚ u. Vˇetˇsina univerzit d´ale nab´ız´ı ECTS 1 katalog pˇredmˇet˚ u. Pˇredmˇet v kata2 logu by mˇel obsahovat u ´daje podle ECTS n´avodu jako jsou n´azev, semestr, obsah, studijn´ı zat´ıˇzen´ı, literatura atd. V´ ybˇer univerzit pro vytvoˇren´ı kolekce prob´ıhal podle nˇekolika faktor˚ u. Nejprve byly vybr´any fakulty, kter´e ve sv´ ych programech vyuˇcuj´ı informaˇcn´ı technologie. Pot´e jsem pouˇzil hodnocen´ı ˇskol z nˇekolika r˚ uzn´ ych zdroj˚ u a ˇ vybral podle nich 10 nejlepˇs´ıch fakult. Cerpal jsem z kaˇzdoroˇcn´ıho vyhodnocen´ı Hospod´aˇrsk´ ych novin [5], hodnocen´ı kvality webu z Webometrics [6] a z hodnocen´ı vˇsech univerzit na svˇetˇe U-Multirank[7]. Tabulka 2.2: Vybran´e univerzity s verz´ı HTML a N´ azev univerzity verze HTML Masarykova univerzita Brno XHTML 1.0 Univerzita Karlova HTML 5 ˇ Cesk´e vysok´e uˇcen´ı technick´e HTML 5 Vysok´e uˇcen´ı technick´e HTML 5 Z´apadoˇcesk´a univerzita No doctype Univerzita Pardubice HTML 5 Technick´a univerzita Ostrava XHTML 1.0 Univerzita Tom´aˇse Bati HTML 5 XHTML 1.0 Vysok´a ˇskola ekonomick´a Transitional Technick´a univerzita Liberec HTML 5
2.2.1
poˇctem chyb na str´ance validn´ı poˇ cet chyb ne 7 ne 29 ne 76 ne 8 ne 40 ne 9 ne 1 ne 2
ano
0
ne
23
Podobn´ e rysy
Struktura zobrazen´ı str´anek univerzitn´ıch obor˚ u je velice podobn´a. Nejvˇetˇs´ı probl´emem je duplicita pˇredmˇet˚ u nebo obor˚ u pˇri proch´azen´ı str´anek 1
European Credit Transfer and Accumulation System (ECTS) je standard pro porovn´av´ an´ı pr´ ace student˚ u na vysok´ ych ˇskol´ach po cel´e Evropsk´e unii. 1 ECTS kredit odpov´ıd´a 25-30 hodin´ am studia pr˚ umˇern´eho studenta. 2 v´ıce na http://ec.europa.eu/education/tools/docs/ects-guide_en.pdf
4
Webov´e str´anky ˇcesk´ych univerzit
Anal´yza str´anek ˇcesk´ych univerzit
robotem. Vˇetˇsina univerzit totiˇz nab´ız´ı k nahl´ıˇzen´ı stejn´e studijn´ı pl´any s aktu´aln´ı, ale i se starou akreditac´ı. Ukl´ad´an´ı stejn´ ych pˇredmˇet˚ u m˚ uˇzeme zamezit vytvoˇren´ım seznamu, do kter´eho budeme ukl´adat adresu a n´azev pˇredmˇetu. Navˇst´ıven´ı dalˇs´ı str´anky je pak podm´ınˇeno t´ım, ˇze adresa str´anky nen´ı obsaˇzena v tomto seznamu. Usnadˇ nuj´ıc´ım prvkem je odkaz na kaˇzd´ y detail pˇredmˇetu obsahuj´ıc´ı v adrese ˇretˇezec predmet.
2.2.2
Rozbor univerzit
Neˇz zaˇcnu s rozborem, vysvˇetl´ım, jak ch´apu term´ın hledan´y v´yraz. Mysl´ım t´ım textov´ y ˇretˇezec, kter´ y je obvykle obsaˇzen v samostatn´em HTML elementu a specifikuje druh informace o pˇredmˇetu. Pokud se d´ale nespecifikuje, tak se pˇredpokl´ad´a, ˇze za t´ımto elementem n´asleduje hledan´ yu ´daj. Pokud chci napˇr´ıklad zn´at pˇredpoklady pˇredmˇetu, ale na str´ance jsou oznaˇcov´any jako prerekvizity, pak hledan´ y v´ yraz pro z´ısk´an´ı pˇredpoklad˚ u bude prerekvizity. Informaˇcn´ı syst´em Masarykovy univerzity Brno se nach´az´ı na adrese is.muni.cz. Informace o pˇredmˇetu m´a jako jedin´a univerzita uloˇzen´e v elementech dl (description list). Z´ısk´an´ı poˇzadovan´ ych u ´daj˚ u je proto jednoduˇsˇs´ı. Staˇc´ı naj´ıt pouze hledan´ y v´ yraz. V´ yjimkou je n´azev pˇredmˇetu, kter´ y se nach´az´ı v nadpisu, a semestr, kter´ y je nutn´e speci´alnˇe parsovat. Z´aroveˇ n je Masarykova univerzita unik´atn´ı v oznaˇcen´ı jednotliv´ ych semestr˚ u. Zat´ımco ostatn´ı univerzity uv´ad´ı letn´ı a zimn´ı semestr na brnˇensk´e univerzitˇe je oznaˇcuj´ı jarn´ı a podzimn´ı semestr. Cesta k pˇredmˇetu vede pˇres vyplnˇen´ y formul´aˇr s fakultou a oborem a n´asledn´ ym v´ ybˇerem odkazu pˇredmˇetu. To n´am umoˇzn ˇuje snadn´e vybr´an´ı vˇsech odkaz˚ u vedouc´ıch k detailn´ım informac´ım o pˇredmˇetech. Univerzita Karlova m´a sv˚ uj informaˇcn´ı syst´em na adrese is.cuni.cz/ studium. Na rozd´ıl od ostatn´ıch ˇskol nem´a v detailu pˇredmˇetu informaci, ve kter´ ych oborech se pˇredmˇet vyskytuje. Je tedy tˇreba poˇc´ıtat s t´ım, ˇze pˇri proch´azen´ı je nutn´e si pamatovat obor, pˇres kter´ y jsem zaˇcal vyhled´avat. Informace o vyuˇcuj´ıc´ım tak´e chyb´ı, a proto jsem jej nahradil jm´enem garanta, jenˇz uveden´ y je. D´ale chyb´ı u ´daj o nutn´ ych pˇredpokladech k absolvov´an´ı pˇredmˇetu. Ostatn´ı informace se pak nach´azej´ı v elementech, kter´e lze jednoznaˇcnˇe identifikovat tˇr´ıdami a hledan´ ym n´azvem. K samotn´emu pˇredmˇetu lze pak doj´ıt pˇres formul´aˇr s vyplnˇenou fakultou, v´ ybˇerem oboru pˇres odkaz a pot´e opˇet klikneme na odkaz s pˇredmˇetem. ˇ ˇ Cesk´ e uˇ cen´ı technick´ e v Praze (CVUT) nem´a sv˚ uj informaˇcn´ı sys5
Webov´e str´anky ˇcesk´ych univerzit
Anal´yza str´anek ˇcesk´ych univerzit
t´em veˇrejnˇe pˇr´ıstupn´ y. Nicm´enˇe pˇredmˇety m˚ uˇzeme z´ıskat ze str´anek fakulty informaˇcn´ıch technologi´ı. Pˇrehled obor˚ u se nal´ez´a na bk.fit.cvut.cz. Nejjednoduˇsˇs´ı cesta k pˇredmˇet˚ um je pˇres sekci vˇsechny pˇredmˇety a navˇst´ıven´ım odkaz˚ u s pˇredmˇety. Vˇetˇsina obsahu str´anky je strukturov´ana do odstavc˚ u. ´ Udaje o n´azvu pˇredmˇetu, vyuˇcuj´ıc´ım, semestru a poˇctu kredit˚ u se nach´azej´ı v tabulce. N´azev pˇredmˇetu lze z´ıskat pomoc´ı selektoru (viz kapitola 2.1) v posledn´ım elementu v hlaviˇcce tabulky (th:last-of-type). Obsah, c´ıl, literatura a pˇredpoklady pˇredmˇetu pak dost´av´ame hled´an´ım v´ yrazu v odstavc´ıch. Je potˇreba si d´avat pozor na mˇen´ıc´ı se HTML strukturu str´anky v z´avislosti na vyplnˇen´em obsahu. Jako ˇreˇsen´ı se nab´ız´ı zamˇeˇren´ı pouze na obsahovou ˇc´ast a t´ım extrahovat pouze text nach´azej´ıc´ı se mezi dvˇema hledan´ ymi v´ yrazy. Vysok´ e uˇ cen´ı technick´ e Brno (VUT) m´a sv˚ uj informaˇcn´ı syst´em zakomponovan´ y v hlavn´ı str´ance www.vutbr.cz a z vybran´ ych univerzit se hledal katalog pˇredmˇet˚ u nejsn´aze (pˇres dva odkazy studium a studijn´ı proˇ gramy). Informace o pˇredmˇetu pak vytˇeˇz´ıme podobnˇe jako u CVUT univerzity, jen s t´ım rozd´ılem, ˇze n´azev pˇredmˇetu je v nadpisu a sylabus pˇredmˇetu nen´ı v odstavc´ıch, ale v buˇ nk´ach tabulky(td). Vysok´ aˇ skola b´ an ˇ sk´ a — Technick´ a univerzita Ostrava nem´a veˇrejnˇe pˇr´ıstupn´ y informaˇcn´ı syst´em. K pˇrehledu pˇredmˇet˚ u lze doj´ıt jako u VUT z hlavn´ı str´anky www.vsb.cz. Detail pˇredmˇetu pak obsahuje vˇsechny u ´daje, ke kter´ ym se dostaneme pˇres rodiˇce elementu nalezen´eho v´ yrazu. Z´ apadoˇ cesk´ a univerzita Plzeˇ n, Univerzita Pardubice , Univerzita Tom´ aˇ se Bati a Technick´ a univerzita v Liberci maj´ı jedno spoleˇcn´e. Vˇsechny univerzity pouˇz´ıvaj´ı informaˇcn´ı syst´em studijn´ı agendy (IS/STAG) ˇ Ten generuje na ects dom´enˇe tˇret´ıho ˇra´du studijn´ı katavyvinut´ y na ZCU. ˇ je to adresa ects.zcu.cz). Jelikoˇz pouˇz´ıvaj´ı stejn´ log (u ZCU y syst´em, jsou ˇsablony a pr˚ uchod robotem (viz kapitola 4.6) u vˇsech univerzit stejn´ y. Proch´azen´ı prob´ıh´a pˇres odkazy v posloupnosti podle jm´ena fakulty, studijn´ıho ´ programu, studijn´ıho pl´anu a pak samotn´eho pˇredmˇetu. Udaje o vyuˇcuj´ıc´ım, semestru, poˇctu kredit˚ u se z´ısk´a z hledan´eho v´ yrazu, a zbytek informac´ı jako u pˇredchoz´ı univerzity pˇres rodiˇce elementu nalezen´eho v´ yrazu. Vysok´ aˇ skola ekonomick´ a Praha — jej´ı informaˇcn´ı syst´em je velmi nepˇrehledn´ y. Pouˇzil jsem radˇeji ECTS katalog na www.vse.cz/ects. U detailn´ıch informac´ı o pˇredmˇetu jsou vˇsechna kl´ıˇcov´a slova v elementu small. Staˇc´ı jej naj´ıt a k poˇzadovan´emu textu se dostat pˇres rodiˇce vybran´eho elementu. O nˇeco komplikovanˇejˇs´ı je cesta k magistersk´ ym pˇredmˇet˚ um, kter´e se nach´azej´ı v jin´e z´aloˇzce. Po z´ısk´an´ı bakal´aˇrsk´ ych pˇredmˇet˚ u se cel´ y proces
6
Webov´e str´anky ˇcesk´ych univerzit
Anal´yza str´anek ˇcesk´ych univerzit
restartuje a zaˇcne u odkazu s magistersk´ ymi obory.
7
3 XML Staˇzen´e pˇredmˇety se budou ukl´adat do form´atu XML. Tento typ souboru byl zvolen hned z nˇekolika d˚ uvod˚ u. Extensible Markup Language (XML) je velmi jednoduch´ y, flexibiln´ı znaˇckovac´ı jazyk. Je standardizov´an konsorciem W3C do form´atu, kter´ y je ˇciteln´ y jak pro ˇclovˇeka, tak i pro poˇc´ıtaˇc. XML je ˇsiroce vyuˇz´ıv´ano pro v´ ymˇenu r˚ uzn´ ych typ˚ u dat. Mezi hlavn´ı v´ yhody tohoto jazyka patˇr´ı pˇrenositelnost, kter´a m´a za n´asledek podporu mnoha programovac´ıch jazyk˚ u, n´astroj˚ u a nez´avislost na operaˇcn´ım syst´emu. XML podporuje univerz´aln´ı jazykovou sadu, takˇze dokument m˚ uˇze obsahovat v´ıce jazyk˚ u najednou, mezi kter´ ymi je moˇzn´e pˇrep´ınat. Dalˇs´ım pozitivem jazyka je snadn´a konverze do jin´ ych form´at˚ u, automatick´a kontrola struktury dokumentu a moˇznost vytv´aˇret odkazy a hypertext.
3.1
Spr´ avnˇ e strukturovan´ y dokument
Jedn´a se o nejniˇzˇs´ı u ´roveˇ n kontroly, kter´a se prov´ad´ı pˇri kaˇzd´em zpracov´an´ı XML dokumentu. Aby byl XML soubor spr´avnˇe strukturovan´ y (wellformed ), mus´ı splˇ novat n´asleduj´ıc´ı pravidla [4]: • Mus´ı existovat pr´avˇe jeden koˇrenov´ y element. • Kaˇzd´a otev´ırac´ı znaˇcka m´a svoji odpov´ıdaj´ıc´ı ukonˇcovac´ı znaˇcku. • Elementy se nesmˇej´ı navz´ajem kˇr´ıˇzit nebo pˇrekr´ yvat. • Hodnoty atribut˚ u mus´ı b´ yt uzavˇreny v uvozovk´ach nebo apostrofech. • V elementech nesmˇej´ı b´ yt stejnˇe pojmenovan´e atributy. • Koment´aˇre nesmˇej´ı b´ yt vnoˇren´e a ani uvnitˇr znaˇcek. • Ve znakov´ ych datech nejsou znaky < a &.
8
XML
3.2
Sch´ema
Sch´ ema
XML sch´ema(XSD) je dalˇs´ım d˚ uleˇzit´ ym pojmem pˇri pracov´an´ı s XML dokumenty. Jeho c´ılem je definovat strukturu XML dokumentu a t´ım z´ıskat n´astroj pro snadn´e ovˇeˇren´ı spr´avnosti novˇe vytvoˇren´e kolekce. XML sch´ema definuje: • elementy a atributy, kter´e se mohou objevit v dokumentu • rodiˇcovsk´e elementy a poˇcet a poˇrad´ı jejich potomk˚ u • jednoduch´e a komplexn´ı datov´e typy element˚ u a atribut˚ u • r˚ uzn´a omezen´ı (napˇr. minim´aln´ı poˇcet v´ yskytu, m˚ uˇze b´ yt element pr´azdn´ y, maxim´aln´ı d´elku, v´ yˇcet pˇr´ıpustn´ ych hodnot atd.) • jmenn´e prostory, referenˇcn´ı integritu (podobn´e relac´ım v datab´azi) • jedineˇcnost hodnot (zabr´anˇen´ı v´ yskytu duplicit) Pro m˚ uj typ u ´kolu jsem si zavedl dva jednoduch´e datov´e typy, pro kter´e v pˇr´ıpadˇe potˇreby m˚ uˇzeme pˇridat nˇejak´a omezen´ı. Prvn´ım je textov´ y ˇretˇezec, kter´ y bude ve vˇetˇsinˇe elementech a atributech. <xs:simpleType name=”stringType”> <xs:restriction base=”xs:string”/> Druh´ ym jednoduch´ ym datov´ ym typem je kladn´e cel´e ˇc´ıslo, kter´e se bude pouˇz´ıvat v elementu pro poˇcet kredit˚ u. <xs:simpleType name=”intType”> <xs:restriction base=”xs:positiveInteger”/> Komplexn´ım datov´ ym typem bude pˇredmˇet. Pˇrehled vˇsech element˚ u obsaˇzen´ ych v tomto typu m˚ uˇzete vidˇet na dalˇs´ı str´ance. Jedn´a se o v´ ybˇer nejd˚ uleˇzitˇejˇs´ıch informac´ı o pˇredmˇetu, kter´e byly dostupn´e na vˇsech str´ank´ach univerzit, a ty, kter´e by budouc´ı z´ajemce o studium mohl cht´ıt zn´at. Prvn´ı element all je pro u ´ˇcely vyhled´av´an´ı. Samotn´ y pˇredmˇet obsahuje u ´daje: obsah, poˇcet kredit˚ u, obory, c´ıl, literaturu, pˇredpoklady, semestr a odkaz na pˇredmˇet. 9
XML
Sch´ema
Pˇredt´ım neˇz zm´ın´ım v´ yˇcet nezahrnut´ ych u ´daj˚ u mus´ıme si uvˇedomit, ˇze kolekce je prim´arnˇe urˇcena pro studenta pˇrihlaˇsuj´ıc´ıho se na univerzitu. Takov´ y student nem´a vˇetˇsinou znalosti pr˚ ubˇehu v´ yuky a studijn´ıho syst´emu. K pˇredmˇetu nebyla zahrnuta informace o metodˇe v´ yuky. Vˇetˇsinou obsahovala kombinace pˇredn´aˇsek a cviˇcen´ı, coˇz pro studenta nen´ı moc d˚ uleˇzit´a informace. Dalˇs´ım vynechan´ ym u ´dajem je zp˚ usob hodnocen´ı, u kter´eho nevid´ım d˚ uvod, proˇc by mohl rozhodovat pˇri v´ ybˇeru pˇredmˇetu. Tˇret´ı neuveden´ yu ´daj je rok studia. Ten m˚ uˇze b´ yt leckdy zav´adˇej´ıc´ı, protoˇze pro jin´ y obor m˚ uˇze m´ıt pˇredmˇet v jin´em studijn´ım roce. Mezi dalˇs´ı vynechan´e u ´daje jsem zaˇradil vyuˇcovac´ı jazyk, typ studia (d´a se zjisti z oboru), typ pˇredmˇetu a studijn´ı praxe. Vˇsechny tyto zm´ınˇen´e informace maj´ı z´aroveˇ n spoleˇcn´e to, ˇze nebyly k dispozici na vˇsech univerzitn´ıch str´ank´ach. <xs:complexType name=”courseType”> <xs:sequence> <xs:element name=”all” type=”stringType” /> <xs:element name=”content” type=”stringType” /> <xs:element name=”credits” type=”intType” /> <xs:element name=”fields” type=”fieldsType” /> <xs:element name=”goal” type=”stringType” /> <xs:element name=”literature” type=”stringType” /> <xs:element name=”prerequisites” type=”stringType” /> <xs:element name=”semester” type=”stringType” /> <xs:element name=”url” type=”stringType” /> <xs:attribute name=”name” type=”stringType”/> U elementu fieldsType si m˚ uˇzeme vˇsimnout dalˇs´ıho nezn´am´eho datov´eho typu. Bude se jednat o seznam obor˚ u, ve kter´em se dan´ y pˇredmˇet vyuˇcuje. <xs:complexType name=”fieldsType”> <xs:sequence> <xs:element name=”item” type=”stringType” /> Pˇredmˇety pak budou vnoˇren´e do elementu university, kde bude v atributech jej´ı jm´eno a jm´eno fakulty. A rodiˇcem vˇsech univerzit pak bude element informatick´e pˇredmˇety, kter´ y bude obsahovat celou vytvoˇrenou kolekci.
10
XML
3.3
Uk´azka
Uk´ azka
Uk´azka pˇredmˇetu z´aklady kybernetiky pro informatiku na Z´apadoˇcesk´e univerzitˇe bude v kolekci vypadat takto :
z´ aklad kybernetik informatik finanˇ cn informatik statistik c´ ıl sezn´ amn z´ akladn pˇ rı ´stup princip kybernetik pˇ redmˇ et .. 1. ´ Uvodn´ ı pozn´ amky o kybernetice. 2. Z´ akladn´ ı pojmy a poznatky teorie informace. Entropie, komunikaˇ cn´ ı kan´ al, k´ ody... 3 <studyFields> - Informaˇ cn´ ı syst´ emy
- V´ ypoˇ cetn´ ı technika
- Informatika
.. C´ ılem je sezn´ amen´ ı se z´ akladn´ ımi pˇ r´ ıstupy a principy kybernetiky. Pˇ redmˇ et m´ a ... Kotek, Z., Vysok´ y, P., Zdr´ ahal, Z. Kybernetika. Praha, 1990. Maˇ rı ´k, Vladim´ ır a kol. Umˇ el´ a inteligence (2). Academia, Praha, 1997.. <prerequisites>Nejsou pˇ redeps´ any ˇ za ´dn´ e specifick´ e pˇ redpoklady. <semester>Zimn´ ı http://ects.zcu.cz/predmet/KKY...
11
XML
3.4
JAXB
JAXB
Abychom mohli kolekci ukl´adat a dobˇre s n´ı manipulovat, potˇrebujeme prostˇredky pro zpracov´an´ı XML dokumentu. Z´akladn´ı pˇr´ıstupy jsou proudov´e ˇcten´ı a reprezentace dokumentu do stromu. Mezi nejzn´amˇejˇs´ı z´astupce tˇechto dvou zp˚ usob˚ u patˇr´ı SAX a DOM. V´ yhodou proudov´e ˇcten´ı je velk´a rychlost a n´ızk´e pamˇet’ov´e n´aroky. Zato stromov´a reprezentace m´a cel´ y dokument dostupn´ y v pamˇeti, coˇz n´am umoˇzn ˇuje se k jednotliv´ ym u ´daj˚ um vracet nebo je upravovat. JAXB (Java architecture for XML Binding) pˇredstavuje z´astupce stromov´e reprezentace, kter´ y prov´ad´ı mapov´an´ı na objekty. Jednotliv´e objekty jsou pˇrevedeny z element˚ u v XML souboru. Tˇr´ıdy reprezentuj´ıc´ı objekty mohou vzniknout automatick´ ym generov´an´ım XSD. JAXB je vhodn´e pouˇz´ıt v situac´ıch, kdy je zn´am´e sch´ema dopˇredu, obsahuje opakuj´ıc´ı se informace a potˇrebujeme XML naˇc´ıtat a ve velk´em rozsahu upravovat. [4]
12
4 Internetov´y bot Internetov´ y bot nebo tak´e webov´ y robot je program, kter´ y automatizovanˇe vykon´av´a ˇcinnost pˇri proch´azen´ı Internetu. Jedn´a se vˇetˇsinou o jednoduch´e opakovan´e u ´kony, kter´e jsou prov´adˇeny daleko rychleji neˇz by dok´azal ˇclovˇek. Nejvˇetˇs´ı vyuˇzit´ı bot˚ u se skl´ad´a z indexov´an´ı pro vyhled´avaˇce, analyzov´an´ı obsahu str´anek nebo sb´ır´an´ı dat. Internetov´ y bot je tak´e zn´am pod dalˇs´ımi n´azvy: spider, crawler nebo robot. Terminologie v tomto nen´ı moc jednotn´a, a proto zde m˚ uˇze doch´azet k nedorozumˇen´ım. Napˇr´ıklad Google povaˇzuje tyto term´ıny za rovnocenn´e [8]. Na druhou stranu jinde vysvˇetluj´ı rozd´ıl, ˇze spider je program, kter´ y v urˇcit´ y ˇcas ˇcte web str´anky jako uˇzivatel (tud´ıˇz je nˇeco jako prohl´ıˇzeˇc). Crawlerem je myˇslen s´emantick´ y algoritmus, kter´ y ˇr´ık´a spiderovi kdy, kde a jak hluboko danou str´anku proch´azet. [9]
4.1
Druhy robot˚ u
Vyhled´ avac´ı roboti jsou vyuˇz´ıv´any vˇsemi internetov´ ymi vyhled´avaˇci. Pouˇz´ıvaj´ı sv´e algoritmy, kter´e stanov´ı jak´e str´anky navˇst´ıvit, jak ˇcasto a kolik z jedn´e adresy. Kaˇzdou navˇst´ıvenou str´anku analyzuje a provede indexaci1 vˇsech slov a jejich um´ıstˇen´ı na str´ance. Batch crawlers pokraˇcuj´ı v prohled´av´an´ı dokud nen´ı splnˇena nˇejak´a podm´ınka. Obvykle se jedn´a o zastavovac´ı krit´erium typu [11]: • dokud nevyprˇs´ı urˇcit´ y ˇcas • nˇejak´ y poˇcet str´anek byl navˇst´ıven • pamˇet’ov´ y limit byl pˇrekroˇcen Incremental crawlers neust´ale znovu proch´azej´ı jiˇz dˇr´ıve navˇst´ıven´e 1
Indexace proces vyj´ adˇren´ı obsahu dokumentu pomoc´ı prvk˚ u selekˇcn´ıho jazyka, obvykle ´ 2003, Cesk´ ˇ a terminologick´ s c´ılem umoˇznit zpˇetn´e vyhled´ av´an´ı. (BAL´IKOVA, a datab´ aze knihovnictv´ı a informaˇcn´ı vˇedy)
13
Internetov´y bot
Konvence internetov´eho bota
str´anky a staraj´ı se tak o aktu´alnost obsahu. Web je ze sv´e podstaty velmi dynamick´ y, protoˇze obsah pˇrib´ yv´a, aktualizuje se a maˇze se. K udrˇzen´ı aktua´ln´ıho obsahu se nejv´ıce pouˇz´ıvaj´ı ohodnocuj´ıc´ı funkce nazvan´e freshness a age. [12]. Freshness funkce vrac´ı 1, pokud je lok´aln´ı kopie pˇresn´a, a 0 pokud nen´ı. Age funkce mˇeˇr´ı, jak je lok´aln´ı kopie zastaral´a. Focused crawlers projde urˇcitou mnoˇzinu str´anek t´ ykaj´ıc´ıch se jednoho t´ematu a snaˇz´ı se minimalizovat poˇcet str´anek, kter´e s poˇzadovan´ ym t´ematem nemaj´ı nic spoleˇcn´eho. Boti pro spr´ avu a u ´ drˇ zbu se pouˇz´ıvaj´ı hlavnˇe v rozs´ahl´ ych webov´ ych informaˇcn´ıch syst´emech, kde zpravidla vytv´aˇrej´ı nov´a pˇresmˇerov´an´ı, kontroluj´ı validn´ı HTML, odstraˇ nuj´ı nefunkˇcn´ı odkazy nebo cyklick´e smˇerov´an´ı. Spamboti jsou typem automatizovan´eho programu, kter´ y pom´ah´a ˇs´ıˇrit nevyˇz´adan´e zpr´avy (spam). Toho doc´ıl´ı nˇekolika zp˚ usoby: sb´ıraj´ı e-mailov´e adresy nalezen´e na str´ank´ach, pˇrid´avaj´ı pˇr´ıspˇevky na blogy, f´ora a do koment´aˇr˚ u, at’ uˇz za u ´ˇcelem ˇs´ıˇren´ı reklamy nebo zv´ yˇsen´ım poˇctu zpˇetn´ ych odkaz˚ u na svou str´anku. Nejzn´amˇejˇs´ı obranou proti posledn´ımu zmiˇ novan´emu probl´emu je technika CAPTCHA1 . Jedn´a se o Turing˚ uv test, kde ops´an´ım pro ˇclovˇeka ˇciteln´eho textu zamez´ıte bot˚ um v pˇr´ıstupu na urˇcitou ˇca´st webov´e aplikace.
4.2
Konvence internetov´ eho bota
Martijn Koster zformuloval z´asady pro vytv´aˇren´ı internetov´eho bota. Zde jsou nejd˚ uleˇzitˇejˇs´ı body [10]:
4.2.1
Bud’ odpovˇ edn´ y
Identifikace robota — HTTP protokol m´a v hlaviˇcce pole User-agent pro identifikov´an´ı WWW prohl´ıˇzeˇc. Jelikoˇz robot je nˇeco jako prohl´ıˇzeˇc, m˚ uˇze pouˇz´ıt ”mujRobot/verze”, a t´ım se pro spr´avce serveru odliˇsit od bˇeˇzn´ ych prohl´ıˇzeˇc˚ u. 1
Completely Automated Public Turing test to tell Computers and Humans Apart
14
Internetov´y bot
Konvence internetov´eho bota
Identifikace tv˚ urce — HTTP podporuje pole From, kter´e identifikuje uˇzivatele pouˇstˇej´ıc´ı WWW prohl´ıˇzeˇc. Toto pole se pouˇz´ıv´a pro uveden´ı emailov´e adresy, aby ho spr´avce serveru mohl kontaktovat v pˇr´ıpadˇe pot´ıˇz´ı. ˇ Informuj — Casto spr´avce zaj´ım´a, proˇc je navˇst´ıven jejich server. Lze je informovat polem Referer, kter´ y slouˇz´ı k urˇcen´ı, z jak´e str´anky uˇzivatel pˇriˇsel, nebo v pˇr´ıpadˇe bota se m˚ uˇze jednat o adresu, popisuj´ıc´ı jeho funkce a u ´ˇcel. Bud’ pˇ r´ıtomen — Doporuˇcuje se pro tv˚ urce nenechat bota bˇeˇzet v dobˇe dlouhodob´e nepˇr´ıtomnosti. Bot m˚ uˇze zaˇc´ıt p˚ usobit ˇskody a pak nelze kontaktovat jeho tv˚ urce, aby jej vypnul.
4.2.2
Nepˇ rivlastˇ nuj si zdroje
Testuj lok´ alnˇ e — Nespouˇstˇej opakovan´e testy na vzd´alen´e servery. M´ısto toho vyzkouˇsej na nˇekolika lok´aln´ıch serverech a analyzuj v´ ykon, v´ ysledky a zat´ıˇzen´ı, a aˇz pot´e pust’ do re´aln´eho provozu. Radˇ eji pomalu neˇ z rychle— Internetov´ y bot velice snadno zahlt´ı server stovkami poˇzadavk˚ u za minutu, a proto je d˚ uleˇzit´e, aby dodrˇzoval nˇejak´ y ˇcasov´ y odstup od kaˇzd´eho nov´eho poˇzadavku. Koneckonc˚ u by mohl server botovi zamezit pˇr´ıstup u ´plnˇe kv˚ uli ne´ unosn´emu zatˇeˇzov´an´ı a nez´ıskali bychom ˇz´adn´e informace. Pouˇ zij HEAD poˇ zadavek — Kde je moˇzn´e, pouˇzij m´enˇe n´aroˇcnˇejˇs´ı poˇzadavek HEAD m´ısto GET. ˇ Rekni, co chceˇ s — V hlaviˇcce HTTP je pole Accept, kter´e urˇcuje, jak´e typy dat dok´aˇze prohl´ıˇzeˇc zpracovat. Pro robota proch´azej´ıc´ıho pouze text nen´ı tˇreba, aby server pos´ılal obr´azky, m´edia, archivn´ı souboru, atd. Neopakuj se — Neproch´azej stejnou adresu v´ıcekr´at. Je dobr´e si v´est list navˇst´ıven´ ych adres, aby nedoˇslo k opˇetovn´emu navr´acen´ı. Tento bod z´aroveˇ n eliminuje zacyklen´ı. Vyber prav´ yˇ cas — Vˇetˇsina server˚ u m´ıv´a bˇehem urˇcit´e ˇc´asti dne menˇs´ı zat´ıˇzen´ı, a proto je vhodn´e vybrat takov´ y ˇcas, kdy bˇeˇzn´ y uˇzivatel str´anky sp´ı.
15
Internetov´y bot
4.2.3
Parsov´an´ı HTML
V´ ysledky bota
Loguj — Veden´ı r˚ uzn´ ych statistik typu poˇcet u ´spˇeˇsn´ ych/ne´ uspˇeˇsn´ ych poˇzadavk˚ u, velikost str´anky, navˇst´ıven´e adresy, atd. pom´ah´a odhalit nˇekter´e chyby. Ukl´ adej v´ ysledky — Je dobr´e si uchov´avat tolik dokument˚ u, kolik to jen jde. Dokumenty se mohou pˇr´ıpadnˇe znovu prozkoumat jinou metodou a z´ıskat nov´e uˇziteˇcn´e v´ ysledky.
4.3
Parsov´ an´ı HTML
Aˇckoliv m´a HTML pˇredepsan´ y standard, t´emˇeˇr kaˇzd´a str´anka obsahuje chyby (tzv. nen´ı validn´ı). Mezi nejˇcastˇejˇs´ı chyby patˇr´ı chybˇej´ıc´ı tagy, neuveden´a deklarace DOCTYPE nebo k´odov´an´ı a ˇspatn´e poˇrad´ı element˚ u. D˚ uleˇzitou vlastnost´ı HTML parseru je se vypoˇra´dat s tˇemito chybami. Pro parsov´an´ı cel´ ych HTML dokument˚ u se jeˇstˇe nab´ız´ı pouˇzit´ı regul´arn´ıch v´ yraz˚ u (regex ). To by vˇsak nebyla vhodn´a volba, protoˇze HTML je gramatika typu 2 (bezkontextov´a gramatika) podle Chomsk´eho rozdˇelen´ı a regul´arn´ı v´ yrazy rozpoznaj´ı pouze gramatiku typu 3 (regul´arn´ı gramatika). Z toho plyne, ˇze regul´arn´ı v´ yraz nem˚ uˇze zpracovat cel´ y HTML dokument, jelikoˇz z´avis´ı na existenci otev´ırac´ıch a uzav´ırac´ıch tag˚ u. Na druhou stranu regex je velmi vhodn´ y pˇri z´ısk´av´an´ı urˇcit´e informace z obsahu nˇejak´eho elementu. Dalˇs´ı probl´em m˚ uˇze vzniknout, kdyˇz robot navˇst´ıv´ı web s r´amy (frames). Prohl´ıˇzeˇc je rozdˇelen na nˇekolik vymezen´ ych r´am˚ u, kde v kaˇzd´em r´amu je samostatn´a HTML str´anka. Tud´ıˇz k sestaven´ı cel´e str´anky je tˇreba naˇc´ıst kaˇzd´ y r´am. Naˇstˇest´ı se od r´am˚ u upustilo z d˚ uvod˚ u ˇspatn´e udrˇzovatelnosti, grafick´e vizualizaci, ukl´ad´an´ı, ovl´ad´an´ı a pomalejˇs´ı rychlosti naˇc´ıt´an´ı. Posledn´ım probl´emem jsou dynamick´e prvky na str´ance, kter´e jsou pˇr´ıstupn´e aˇz po urˇcitˇe akci. Typick´ ym pˇr´ıkladem je spuˇstˇen´ı funkce javascriptu kliknut´ım na tlaˇc´ıtko. Pokud robot chce z´ıskat vˇsechna data, mˇel by b´ yt schopen simulovat tuto ˇcinnost. Ovˇsem leckdy je sloˇzit´e prov´est pˇresnou posloupnost akc´ı k dosaˇzen´ı poˇzadovan´e informace. Usnadˇ nuj´ıc´ım faktorem m˚ uˇze b´ yt znalost webov´e str´anky, kde se pak daj´ı akce prov´adˇet pro konkr´etn´ı pˇr´ıpad.
16
Internetov´y bot
4.4
V´ybˇer programovac´ıho jazyka
V´ ybˇ er programovac´ıho jazyka
M´ ym prvn´ım u ´kolem je vytvoˇrit webov´eho robota, kter´ y projde str´anky univerzit a st´ahne ty, na nichˇz se nach´az´ı seznam pˇredmˇet˚ u. Na tento probl´em lze pouˇz´ıt celou ˇradu programovac´ıch jazyk˚ u. Zkus´ım vybrat vhodn´e pro tento u ´ˇcel a zhodnotit jejich vyuˇzit´ı. • Skriptovac´ı jazyk PHP je pˇredevˇs´ım urˇcen´ y pro v´ yvoj dynamick´ ych webov´ ych aplikac´ı. Nen´ı vˇsak vyhovuj´ıc´ı pro tento typ u ´kolu. D˚ uvod˚ u je nˇekolik: PHP samo o sobˇe nepodporuje v´ıcevl´aknov´e programy, ˇspatnˇe se udrˇzuje rozs´ahl´a architektura a existuj´ıc´ı knihovny ˇci framework jsou velmi slab´e. • Python se jev´ı jako velmi vhodn´ y. Je snadn´ y na rychl´e nauˇcen´ı. Knihovny jako Beautiful Soup nebo framework scrapy se jev´ı jako snadn´ y start. Na druhou stranu jazyk neopl´ yv´a ˇza´dnou speci´aln´ı vlastnost´ı, kter´a by jej zv´ yhodˇ novala pˇri proch´azen´ı a stahov´an´ı str´anek. • Clojure tzv. modern´ı Lisp zamˇeˇren´ y na zjednoduˇsen´ı v´ yvoje v´ıcevl´aknov´ ych aplikac´ı se stal neskuteˇcnˇe siln´ ym a produktivn´ım n´astrojem v t´eto oblasti. Jeho hlavn´ı nev´ yhodou je velk´a ˇcasov´a n´aroˇcnost na osvojen´ı jazyka. • Javascript je dalˇs´ım skriptovac´ım jazykem a vhodn´ ym ˇreˇsen´ım pro tento probl´em. Obsahuje mnoho knihoven (napˇr pjscrape) poskytuj´ıc´ıch snadnou implementaci a dostateˇcnou funkˇcnost. • Java nejrozˇs´ıˇrenˇejˇs´ı objektovˇe orientovan´ y jazyk je na tom podobnˇe jako zm´ınˇen´e jazyky javascript ˇci python. Opˇet obsahuje velk´e mnoˇzstv´ı knihoven ˇreˇs´ıc´ıch dan´ y probl´em a nab´ız´ı snadnou implementaci. Rozhodl jsem se vyuˇz´ıt programovac´ı jazyk Java a to hned z nˇekolika d˚ uvod˚ u. Javu ovl´ad´am z programovac´ıch jazyk˚ u nejl´epe. V prostˇred´ı naˇs´ı univerzity je tak´e hojnˇe pouˇz´ıvan´a, takˇze pˇr´ıpadn´a n´avaznost na moji pr´aci by byla snazˇs´ı. Poˇcet pouˇziteln´ ych knihoven je vyˇsˇs´ı neˇz u ostatn´ıch jazyk˚ u. D´ale pˇri rozs´ahlejˇs´ım projektu nebo pˇri pˇrid´av´an´ı dalˇs´ıch funkˇcn´ıch modul˚ u se Java sn´aze udrˇzuje. N´asleduj´ıc´ı HTML parsery jsou napsan´e v Javˇe a vˇsechny maj´ı licenci Open source. 17
Internetov´y bot
4.5
Porovn´an´ı HTML parser˚ u
Porovn´ an´ı HTML parser˚ u
NekoHTML — http://nekohtml.sourceforge.net Jednoduch´ y HTML skener a doplˇ novaˇc chybˇej´ıc´ıch tag element˚ u umoˇzn ˇuje program´atorovi naparsovat HTML dokumenty a pˇristupovat k nim pomoc´ı XML rozhran´ı. Opravuje bˇeˇznˇe se vyskytuj´ıc´ı chyby, pˇrid´a nebo oprav´ı chybˇej´ıc´ı elementy a porad´ı si se ˇspatnˇe vloˇzen´ ymi tagy. Je zaloˇzen na popul´arn´ım XML parseru Xerces. Pˇristupov´an´ı ke str´ance pomoc´ı rozhran´ı XML mi nepˇripad´a efektivn´ı a pr˚ uhledn´e. Plusem m˚ uˇze b´ yt pˇr´ıstupn´a dokumentace, kde lze vyˇc´ıst, ˇze celkov´a funkˇcnost nen´ı oslniv´a, a v porovn´an´ı s ostatn´ımi nab´ız´ı pouze nejnutnˇejˇs´ı prvky. HTML Parser — http://htmlparser.sourceforge.net Rychl´ y real-time parser pro real-world HTML“, jak o sobˇe tvrd´ı HTML ” parser. Hlavn´ım l´akadlem je jednoduch´ y design, rychlost a vypoˇra´d´an´ı se s online streamov´an´ım HTML. Je zejm´ena vhodn´ y pro dva sc´en´aˇre: extrakci dat a transformaci. Z´ısk´av´an´ı dat zahrnuje potˇrebn´e metody jako vytˇeˇzen´ı textu, odkaz˚ u, r˚ uzn´ ych soubor˚ u (obr´azky, hudba) ze str´anky. Dalˇs´ı zaj´ımavou vlastnost´ı HTML parseru je kontrola validn´ıch odkaz˚ u a sledov´an´ı str´anek (kontrola aktualizace obsahu). Transformac´ı se pak rozum´ı upravov´an´ı odkaz˚ u, cenzura (odstraˇ nov´an´ı sprost´ ych slov), validace HTML, odstraˇ nov´an´ı reklam a konverze str´anky do XML. Sestavov´an´ı filtr˚ u pro parsov´an´ı HTML se jev´ı krkolomn´e a chyb´ı mi tu nˇekolik d˚ uleˇzit´ ych filtr˚ u (jako jsou CSS selektory, filtry na tabulky atd.). D´ale postr´ad´am uk´azkov´e pˇr´ıklady a nesm´ım opominout, ˇze knihovna je z roku 2006 a posledn´ı update vyˇsel pˇred v´ıce neˇz rokem. Jericho HTML Parser — http://jericho.htmlparser.net Jericho HTML Parser um´ı analyzovat a upravovat HTML dokument vˇcetnˇe tag˚ u na stranˇe serveru(PHP, JSP, ASP). Porad´ı si se ˇspatnˇe form´atovan´ ym HTML dokumentem. M´a snadno pˇr´ıstupn´e jednotliv´e elementy, kter´e lze upravovat, aniˇz by se musel vytv´aˇret znovu cel´ y dokument z DOM stromu (nevyuˇz´ıv´a parsov´an´ı do stromu ani pomoc´ı ud´alost´ı jako DOM nebo SAX). Jedn´a se o kombinaci textov´eho vyhled´av´an´ı a tag rozpozn´av´an´ı.
18
Internetov´y bot
Porovn´an´ı HTML parser˚ u
Pˇrehledn´a dokumentace, obs´ahl´e vyjmenov´an´ı vlastnost´ı a n´azorn´e uk´azky jsou hlavn´ı pˇrednost´ı t´eto knihovny. Pozici na hlavn´ıho kandid´ata pro pouˇzit´ı pouze br´an´ı absence CSS selektor˚ u a neaktu´aln´ı podpora (posledn´ı update vyˇsel pˇred dvˇema lety). JTidy — http://jtidy.sourceforge.net Knihovna pˇrev´aˇznˇe funguje jako kontrolor syntaxe s jej´ım n´asledn´ ym opraven´ım. M˚ uˇze tedy b´ yt pouˇzita pro poˇskozen´e ˇci ˇspatnˇe strukturovan´e HTML dokumenty. K element˚ um pˇristupuje pˇres strom DOMu. Pro moje u ´ˇcely to nen´ı pˇr´ıliˇs vhodn´a knihovna svoj´ı funkˇcnost´ı. D´ale pˇri opravov´an´ı HTML vyˇcist´ı vˇse, co nezn´a, coˇz nemus´ı b´ yt vˇzdy pˇr´ınosn´e. Z´aroveˇ n nesm´ım opomenout, ˇze posledn´ı aktualizace probˇehla v roce 2009. HTML cleaner — http://htmlcleaner.sourceforge.net S podobnou funkˇcnost´ı jako pˇredchoz´ı knihovna pˇrich´az´ı i HTML cleaner. Vytvoˇr´ı well-formed XML a k element˚ um pˇristupuje pouze pˇres DOM. Na rozd´ıl od JTidy je knihovna st´ale udrˇzovan´a, ale soustˇred’uje se pˇredevˇs´ım na ˇcist´e HTML neˇz na snadn´ y pˇr´ıstup k element˚ um. Jsoup — http://jsoup.org Jsoup um´ı pracovat s real-world HTML (dok´aˇze opravit ˇspatnou strukturu). Poskytuje snadn´e API pro stahov´an´ı a manipulaci s daty za pouˇzit´ı toho nejlepˇs´ıho z DOMu, CSS a metod podobn´ ych jquery. D´ale implementuje HTML5 standard a parsuje HTML do stejn´eho DOMu jako modern´ı prohl´ıˇzeˇce. Knihovna obsahuje n´azorn´e uk´azky pouˇzit´ı mezi nˇeˇz patˇr´ı: parsov´an´ı dokumentu z textov´eho ˇretˇezce, naˇcten´ı dokumentu z url/souboru, dolov´an´ı dat pomoc´ı r˚ uzn´ ych metod, u ´prava element˚ u a vyˇciˇstˇen´ı HTML k´odu od ˇskodliv´eho k´odu. N´asleduj´ıc´ı pˇr´ıklad demonstruje snadn´e z´ısk´an´ı vˇsech element˚ us odkazem ze str´anky Z´apadoˇcesk´e univerzity. Document doc = Jsoup.connect("http://www.zcu.cz").get(); Elements linkElements = doc.select("a"); Knihovna pod MIT je pr˚ ubˇeˇznˇe vylepˇsov´ana (posledn´ı update 13.4.2015) a m´a pomˇernˇe velkou komunitu a tak´e kvalitn´ı podporu. 19
Internetov´y bot
4.5.1
Zp˚ usob proch´azen´ı a z´ısk´av´an´ı dat
Shrnut´ı
Pro u ´ˇcely stahov´an´ı str´anek jsem si vybral knihovnu Jsoup. K rozhodnut´ı pˇrispˇely d˚ uvody jako podpora HTML 5, snadn´a extrakce dat pomoc´ı CSS selektoru nebo DOMu. Podporuje i manipulaci HTML element˚ u, kter´a m˚ uˇze b´ yt n´apomocn´a pˇri vyplˇ nov´an´ı r˚ uzn´ ych formul´aˇr˚ u, vyhled´avac´ıch box˚ u a r˚ uzn´ ych selektor˚ u/dropdown˚ u. Dalˇs´ım plusem je pˇr´ıstup a parsov´an´ı HTML pˇres URL, soubor nebo i String. Nem´enˇe d˚ uleˇzit´ ymi aspekty pro pouˇzit´ı t´eto knihovny se stala MIT licence, dobˇre popsan´a dokumentace s uk´azkov´ ymi pˇr´ıklady a jiˇz zm´ınˇen´a aktu´aln´ı udrˇzovatelnost projektu, velk´a komunita uˇzivatel˚ u a kvalitn´ı podpora. Tabulka 4.1: Srovn´an´ı vybran´ ych HTML parser˚ u Latest HTML CSS Parser License update Parsing selector NekoHTML Apache Software 2014-06-02 Ne Ne HTML Parser General Public 2006-09-23 Ano Ne Jericho HTML General Public 2012-10-30 Ne Ne Parser JTidy JTidy License 2009-12-01 Ano Ne HTML cleaner BSD License 2014-10-31 Ne Ne JSOup MIT license 2015-04-13 Ano Ano
4.6
HTML 5 support Ne Ne Ne Ne Ne Ano
Zp˚ usob proch´ azen´ı a z´ısk´ av´ an´ı dat
Na dolov´an´ı dat z webov´ ych str´anek probˇehlo nˇekolik v´ yzkum˚ u. V souˇcasn´e dobˇe dominuje technika dolov´an´ı naz´ yvan´a wrapper induction. Wrapper je procedura pro z´ısk´an´ı obsahu z urˇcit´eho zdroje informac´ı a jejich uloˇzen´ı do relaˇcn´ıho modelu. Tato technika je zaloˇzena na kontrolovan´em uˇcen´ı procedur. Procedura se na zaˇca´tku natr´enuje na ruˇcnˇe oznaˇcen´em obsahu (manual labeling), kter´ y chceme st´ahnout. T´ım si vytvoˇr´ı mnoˇzinu pravidel (ˇsablonu) pro z´ısk´av´an´ı dalˇs´ıch dat bez znalosti struktury zdroj˚ u. Nev´ yhoda je ˇcasovˇe n´aroˇcn´e manu´aln´ı oznaˇcov´an´ı. Vytvoˇren´a pravidla z natr´enov´an´ı nefunguj´ı na velk´e mnoˇzstv´ı str´anek a je potˇreba vytvoˇrit novou vzorovou mnoˇzinu[13]. Podobn´ ym zp˚ usob na dolov´an´ı dat se m˚ uˇze jevit instance-based learning. 20
Internetov´y bot
Zp˚ usob proch´azen´ı a z´ısk´av´an´ı dat
Ten nejprve ve sv´e klasick´e podobˇe uloˇz´ı oznaˇcen´e instance. Pak pˇri zkoum´an´ı nov´e instance porovn´av´a s jin´ ymi jiˇz uloˇzen´ ymi a vyhodnot´ı v´ ysledek. K porovn´an´ı se nejˇcastˇeji pouˇz´ıv´a algoritmus k-nejbliˇzˇs´ıch soused˚ u (k-nearest neighbors) nebo pˇr´ıpadov´e usuzov´an´ı (Case-Based Reasoning) [14]. Jedn´a se o bˇeˇzn´ y zp˚ usob klasifikace. M˚ uˇzeme si vˇsimnout podobn´eho probl´emu jako u pˇredchoz´ı techniky, a to je vytvoˇren´ı ruˇcnˇe oznaˇcen´e mnoˇziny pro dalˇs´ı porovn´an´ı. Existuje metoda, kter´a eliminuje ˇcasovˇe n´aroˇcn´e manu´aln´ı oznaˇcovan´ı poˇzadovan´eho obsahu. Uˇzivatel vyznaˇc´ı informace, kter´e ho zaj´ımaj´ı, pouze u jedn´e str´anky. To staˇc´ı pro dalˇs´ı bˇeh programu. Pˇresn´e z´ısk´an´ı chtˇen´ ych informac´ı tkv´ı v urˇcen´ı podobnosti mezi uloˇzen´ ym obsahem a nov´ ym c´ılov´ ym [15]. Vhodnˇejˇs´ım ˇreˇsen´ım bude napsat ˇsablony na proch´azen´ı jednotliv´ ych str´anek. Hlavn´ımi nev´ yhodami bude vˇetˇs´ı ˇcasov´a n´aroˇcnost a nutn´a znalost struktury webov´e str´anky. Bude se jednat o implementaˇcnˇe daleko jednoduˇsˇs´ı variantu, protoˇze seznam str´anek nen´ı velk´ y. D´ale lze pˇredpokl´adat, ˇze vysok´e ˇskoly nebudou strukturu sv´ ych web˚ u tak ˇcasto mˇenit. Odmˇenou budou staˇzen´a data, u nichˇz budeme vˇedˇet, kam pˇresnˇe je zaˇradit. Pro budouc´ı vyhled´av´an´ı tak budeme porovn´avat v´ yznamovˇe stejn´a data. Napˇr´ıklad na jedn´e univerzitˇe maj´ı u pˇredmˇetu uvedeno V´ystupy z uˇcen´ı a na druh´e C´ıle pˇredmˇetu. Pˇri pouˇzit´ı ˇsablony budeme vˇedˇet, ˇze se jedn´a o tot´eˇz a uloˇz´ıme v´ ysledek ke stejn´emu kl´ıˇci. Ze sekce 4.2.2 v´ıme, ˇze nem´ame zatˇeˇzovat server velk´ ym poˇctem poˇzadavk˚ u za kr´atk´ y ˇcas. Velikost intervalu na vykon´an´ı dalˇs´ıho poˇzadavku nech´ame na volbˇe uˇzivatele v aplikaci. Vznik´a vˇsak probl´em prodlouˇzen´ı ˇcekac´ı doby na staˇzen´ı vˇsech pˇredmˇet˚ u. To lze vyˇreˇsit paralelismem. Pˇri paraleln´ım bˇehu bota ve v´ıce vl´aknech si mus´ıme d´avat pozor na opakovan´e navˇst´ıven´ı str´anky. V naˇsem pˇr´ıpadˇe je ˇreˇsen´ı jednoduch´e. Kaˇzd´emu crawlerovi pˇriˇrad´ıme jednu adresu univerzity. Chov´an´ı naˇseho bota vypad´a n´asledovnˇe (obr´azek 4.1). Postup bota po str´ance se skl´ad´a z krok˚ u. U kaˇzd´eho kroku je obecnˇe urˇceno, na kter´e elementy a textov´e ˇretˇezce se zamˇeˇrovat (d˚ uleˇzit´e pro f´azi filtrov´an´ı element˚ u).
21
Internetov´y bot
Zp˚ usob proch´azen´ı a z´ısk´av´an´ı dat
N´asleduj´ıc´ı u ´ryvek metody se pouˇz´ıv´a ve stavu navˇst´ıven´ı str´anky (Obr´azek 4.1). Vyhodnocuje, zda element je odkaz, odes´ılac´ı tlaˇc´ıtko (input) nebo v´ ybˇer z moˇznost´ı (option) Elements analyze(Element el, String searchedText, String url){ if (el.tagName().equalsIgnoreCase("a")) { url = el.attr("abs:href"); return visitNextPage(url, searchedText); ..
Obr´azek 4.1: V´ yvojov´ y diagram pro internetov´eho bota
22
5 Zpracov´an´ı vytvoˇren´e kolekce 5.1
Zp˚ usob uloˇ zen´ı
Ze staˇzen´ ych str´anek m˚ uˇzeme z´ıskat r˚ uzn´e informace a nab´ız´ı se ot´azka, ´ zda je uloˇzit nebo vyfiltrovat k potˇrebn´ ym u ´ˇcel˚ um a zbytek zahodit. Ukolem bylo vytvoˇrit kolekci informatick´ ych pˇredmˇet˚ u, kde form´at kaˇzd´eho pˇredmˇetu bude pˇredem dan´ y, a tak je lepˇs´ı se soustˇredit pouze na urˇcit´e druhy informac´ı (viz sekce 3.2). Prakticky tedy nen´ı d˚ uvod se ke str´ance vracet, natoˇz ji ukl´adat. Nav´ıc si uchov´av´ame odkaz na str´anku s pˇredmˇetem a v pˇr´ıpadˇe potˇreby jej m˚ uˇzeme znova navˇst´ıvit. Nicm´enˇe vyfiltrovan´ y“ obsah je tˇreba nˇejak´ ym zp˚ usobem uloˇzit, aby se ” dal vyuˇz´ıt na n´asledn´e vyhled´av´an´ı, k ˇcemuˇz je pˇr´ımo urˇcen.
5.1.1
Ukl´ ad´ an´ı do soubor˚ u
Uloˇ zen´ y soubor odpov´ıd´ a kolekci uloˇ zen´ ych pˇ redmˇ et˚ u Tato varianta ukl´ad´an´ı m´a sv´e v´ yhody a nev´ yhody. V´ yhodou je rychl´ y sekvenˇcn´ı pˇr´ıstup a implementaˇcnˇe nejjednoduˇsˇs´ı zp˚ usob ukl´ad´an´ı. Jako nejvˇetˇs´ı nev´ yhoda se jev´ı detekce duplicitn´ıch pˇredmˇet˚ u. Proch´azet cel´ y soubor nebo jenom jeho ˇca´st a zjiˇst’ovat, zda pˇredmˇet jiˇz nebyl zapsan´ y, by bylo velmi ˇcasovˇe n´aroˇcn´e. Duplicitu by bylo nejvhodnˇejˇs´ı oˇsetˇrit jiˇz pˇred zaps´an´ım (tedy za bˇehu). Mus´ıme br´at v potaz, ˇze se n´am mus´ı vej´ıt do pamˇeti RAM seznam pˇredmˇet˚ u, kde m˚ uˇze doj´ıt k duplicitˇe.
Uloˇ zen´ y soubor odpov´ıd´ a jednomu pˇ redmˇ etu Uloˇzen´ım pˇredmˇetu po jednom usnadn´ı probl´em ˇreˇsen´ı duplicit. Urˇcili bychom si jednotn´ y form´at n´azv˚ u soubor˚ u, a t´ım se vyvarovali koliz´ım i dalˇs´ı kopi´ım. Na druhou stranu si pˇrit´ıˇz´ıme podstatn´ ym zhorˇsen´ım rychlosti ˇcten´ı a redundanc´ı dat (nˇekter´e vlastnosti budou spoleˇcn´e a v samostatn´em souboru budou muset b´ yt znovu uvedeny).
23
Zpracov´an´ı vytvoˇren´e kolekce
5.1.2
Zp˚ usob uloˇzen´ı
Ukl´ ad´ an´ı do datab´ aze
Ukl´ad´an´ı pˇredmˇet˚ u do relaˇcn´ı datab´aze bude m´ıt sloˇzitˇejˇs´ı implementaci. Zato n´am poskytne cel´ y apar´at, kter´ y se za n´ı skr´ yv´a. Mysl´ım zejm´ena pouˇzit´ı libovoln´eho jazyka na pˇr´ıstup do datab´aze, zachov´an´ı integrity dat, vzd´alen´ y pˇr´ıstup a moˇznost distribuovat syst´em. Dalˇs´ım plusem by bylo snadn´e vyvarov´an´ı duplicit a jednoduch´e vyhled´av´an´ı pomoc´ı dotazovac´ıch jazyk˚ u. Alternativn´ım zp˚ usobem m˚ uˇze b´ yt uloˇzen´ı do nativn´ı XML datab´aze, kde by byl snadn´ y pˇrechod ze souborov´eho zp˚ usobu ukl´ad´an´ı. Pravdˇepodobnˇe v budoucnu budeme potˇrebovat poskytnout sluˇzbu, kter´a by umoˇznila vyhled´av´an´ı online. Pˇredmˇety pˇred vloˇzen´ım do XML datab´aze mus´ıme nejdˇr´ıve pˇrev´est do spr´avn´eho form´atu a pot´e zaindexovat. Nad t´ım vytvoˇrit dotazovac´ı sluˇzbu (query engine), kterou pot´e m˚ uˇzeme volat libovolnou aplikaˇcn´ı sluˇzbou pˇres zvolen´e rozhran´ı. N´avrh by mohl vypadat n´asledovnˇe (viz 5.1):
Obr´azek 5.1: N´avrh architektury vyhled´av´an´ı v XML datab´az´ıch [16]
24
Zpracov´an´ı vytvoˇren´e kolekce
5.1.3
Lemmatizace
Shrnut´ı
´ Ukolem bakal´aˇrsk´e pr´ace je vytvoˇrit XML kolekci informatick´ ych pˇredmˇet˚ u. Byl zvolen zp˚ usob ukl´ad´an´ı do souboru, kde jeden soubor odpov´ıd´a cel´e kolekci. V´ yhodou je snadnˇejˇs´ı implementace. D´ale k tomuto ˇreˇsen´ı pˇrispˇel i fakt, ˇze objem dat nebude velk´ y (1 univerzita m´a velikost souboru cca 2 MB). Zpracov´an´ı XML souboru pro n´asledn´e prohled´av´an´ı nebude ˇcasovˇe n´aroˇcn´e. V pˇr´ıpadˇe enormn´ıho zvˇetˇsen´ı dat nen´ı d´ıky zvolen´emu XML form´atu probl´em pˇrej´ıt na jin´ y zp˚ usob uloˇzen´ı (napˇr´ıklad na zm´ınˇenou XML datab´azi).
5.2
Lemmatizace
Pro dosaˇzen´ı c´ıle relevantn´ı odpovˇedi pˇri vyhled´av´an´ı je potˇreba indexovat jednotliv´a slova v z´akladn´ım tvaru. Vyhled´avac´ı algoritmus nemus´ı rozumˇet ˇcesk´emu jazyku, a tak napˇr´ıklad pˇri poˇzadavku na levn´e penˇeˇzenky“ vyhod” not´ı v´ yraz jako jin´ y neˇz levn´a penˇeˇzenka“. Proto je nutn´e jednotliv´a slova ” vyskytuj´ıc´ı se v r˚ uzn´ ych morfologick´ ych tvarech (p´ad, osoba, ˇc´ıslo atd.) pˇrev´est na z´akladn´ı tvar tzv. lemmu. Lemmatizace je proces pˇrev´adˇen´ı slov na lemmy. Pˇredpokl´ad´a se, ˇze z´akladn´ı tvar bude m´ıt stejn´ y v´ yznam ve vˇsech ´ jeho tvarech. Uskal´ı nast´av´a v jazyc´ıch, kter´e obsahuj´ı slova mnohoznaˇcn´a. [20]
5.2.1
Zp˚ usoby lemmatizace
Lemmatizaci lze prov´est nˇekolika zp˚ usoby: • slovn´ık koˇren˚ u — Pokud je k dispozici slovn´ık koˇren˚ u (z´akladn´ıch tvar˚ u) s pˇr´ısluˇsn´ ym skloˇ nov´an´ım, je moˇzn´e jej vyuˇz´ıt pro vytvoˇren´ı lemmy. V´ yhodou je minim´aln´ı chybovost metody. Celkov´a u ´spˇeˇsnost pak z´aleˇz´ı na rozs´ahlosti slovn´ıku a omezen´ı pouˇzit´ı na specifick´ y obor, kde se hojnˇe pouˇz´ıvaj´ı odborn´e term´ıny. Hlavn´ı nev´ yhodou je skuteˇcnost, ˇze slovn´ık je v podstatˇe vˇzdy ne´ upln´ y. Ve slovn´ıku se nem˚ uˇzou nach´azet vˇsechna vlastn´ı jm´ena, n´azvy nebo odborn´e term´ıny. Ne´ uplnost slovn´ıku tak´e znamen´a probl´em, ˇze pokud poˇzadovan´e slovo nenajdeme ve slovn´ıku, lemmatizace n´am neposkytne ani pˇribliˇzn´ y odhad koˇrene slova. 25
Zpracov´an´ı vytvoˇren´e kolekce
Lemmatizace
• odstranˇen´ı pˇredpon a pˇr´ıpon — Z´akladn´ı tvar se z´ısk´a odstranˇen´ım pˇr´ıpon a pˇredpon na z´akladˇe slovn´ıku afix˚ u1 nebo pomoc´ı definovan´ ych pravidel. Tato metoda velice dobˇre funguje u jazyk˚ u, kde se nemˇen´ı koˇren slova a hl´asky pˇri spojov´an´ı slov. Pˇr´ıkladem je anglick´ y jazyk, u kter´eho se nejˇcastˇeji pouˇz´ıv´a Porter˚ uv algoritmus zaloˇzen´ y pr´avˇe na odstraˇ nov´an´ı pˇr´ıpon a dalˇs´ıch morfologick´ ych2 pravidel angliˇctiny. • statistick´a metoda — Pˇrevod prob´ıh´a na z´akladˇe statistick´eho pˇr´ıstupu a strojov´eho uˇcen´ı. Frekvence jednotliv´ ych skupin p´ısmen urˇcuje, zda se jedn´a o pˇr´ıponu nebo pˇredponu. V´ yhodou je nez´avislost na konkr´etn´ım jazyku.
5.2.2
Pouˇ zit´ eˇ reˇ sen´ı
Na ˇcesk´ y jazyk uˇz bylo vytvoˇreno nˇekolik lemmatiz´ator˚ u. CLEF2007 se zamˇeˇruje na slovn´ı druhy nejv´ıce vystihuj´ıc´ı v´ yznam vˇety. Jedn´a se o podstatn´a a pˇr´ıdavn´a jm´ena. Byl tak vytvoˇren soubor pravidel k z´ısk´an´ı kmenu slova. Dalˇs´ım je program Morce na morfologickou anal´ yzu ˇcesk´eho jazyka. J´adrem lemmatiz´atoru je neuronov´a s´ıt’, kter´a se uˇc´ı na slovn´ıkov´ ych datech. Pˇrevod prob´ıh´a na z´akladˇe spojen´ı slovn´ıkov´eho a statistick´eho zp˚ usobu lemmatizace [17]. Posledn´ım ve v´ yˇctu jsou algoritmy navrˇzen´e v programovac´ım jazyce Snowball. Jedn´a se o jazyk speci´alnˇe vytvoˇren´ y pro u ´ˇcely popisu algoritm˚ u lemmatizace nebo stemmingu (pˇrevod na kmen slova). Z nejzaj´ımavˇejˇs´ıch algoritm˚ u zm´ın´ım zlepˇsen´ y stemmer, kter´ y vznikl na Z´apadoˇcesk´e univerzitˇe [18] a stemmer zaloˇzen´ y na gramatick´ ych pravidlech.[19] Vˇetˇsina ze zm´ınˇen´ ych algoritm˚ u je implementov´ana v projektu Apache Lucene. Lucene je open source knihovna urˇcen´a pro z´ısk´av´an´ı a vyhled´av´an´ı informac´ı. Pro u ´ˇcely pr´ace byla pouˇzita pouze ˇc´ast knihovny umoˇzn ˇuj´ıc´ı lemmatizaci. Z v´ ybˇeru jej´ıch lemmatizaˇcn´ıch algoritm˚ u jsem zvolil standardn´ı 1
Afix je jednotliv´ a ˇc´ ast slova, kter´a se pˇripojuje k z´akladn´ımu tvaru slova (koˇrenu nebo kmeni). 2 Morfologie neboli tvaroslov´ı je nauka o struktuˇre a tvaru slov (vˇcetnˇe skloˇ nov´an´ı, ˇcasov´ an´ı, derivace atd.)
26
Zpracov´an´ı vytvoˇren´e kolekce
Ontologie
metodu (oproti agresivnˇejˇs´ı). V´ yhodou tohoto algoritmu je rychlost, protoˇze pracuje na z´akladˇe gramatick´ ych pravidel. K dalˇs´ımu d˚ uvodu, proˇc pouˇz´ıt pr´avˇe tento zp˚ usob, byla snadn´a implementace a pomˇernˇe velk´a pˇresnost. K porovn´an´ı jsem jeˇstˇe implementoval vlastn´ı lemmatizaˇcn´ı algoritmus, kde jsem vyuˇzil dodan´eho slovn´ıku koˇren˚ u, kter´ y obsahuje pˇres 2 miliony tvar˚ u. Tento postup se samozˇrejmˇe pot´ ykal s probl´emy slovn´ıkov´eho zp˚ usobu. Nejvˇetˇs´ı pot´ıˇz´ı byla dlouh´a doba naˇcten´ı slovn´ıku do pamˇeti pˇri lemmatizaci vytvoˇren´e kolekce. D´ale pak absence pˇrevodu n´azv˚ u a vlastn´ıch jmen. Z tˇechto dvou naprogramovan´ ych ˇreˇsen´ı jsem vyhodnotil jako lepˇs´ı variantu pro pouˇzit´ı lemmatizaˇcn´ı algoritmus od knihovny Lucene. V osnov´ach informatick´ ych pˇredmˇet˚ u sice nen´ı velk´ y rozsah slovn´ı z´asoby, zato se vyskytuje velk´ y v´ yˇcet zkratek a vlastn´ıch jmen v odborn´ ych n´azvech (napˇr. Petriho s´ıtˇe). A pr´avˇe v tˇechto pˇr´ıpadech slovn´ıkov´ y pˇr´ıstup zaost´av´a.
5.3
Ontologie
Ontologie m´a mnoho definic. V´ yraz pramen´ı z filozofie a z pohledu informatiky se pˇrirovn´av´a k taxonomii. Vyjadˇruje vztahy mezi urˇcit´ ymi pojmy. Je to jednoduch´e zachycen´ı nadtˇr´ıd a podtˇr´ıd objekt˚ u v naˇs´ı realitˇe. Rozˇs´ıˇren´a definice od T. Grubera zn´ı: Ontologie je form´aln´ı, explicitn´ı specifikace ” sd´ılen´e konceptualizace“.
5.3.1
Dom´ enov´ a ontologie
Dom´enov´a ontologie popisuje vztahy v nˇejak´e pojmov´e oblasti. Slouˇz´ı k pochopen´ı struktury informac´ı mezi lidmi a poˇc´ıtaˇci. M˚ uˇzeme pomoc´ı n´ı dˇelat pˇredpoklady. V naˇsem pˇr´ıpadˇe poslouˇz´ı pro zlepˇsen´ı vyhled´av´an´ı v informatick´e kolekci. Napˇr´ıklad budeme cht´ıt vˇedˇet, v kter´ ych pˇredmˇetech se prob´ır´a virtu´aln´ı pamˇet’“. Pomoc´ı dom´enov´e ontologie m˚ uˇzeme usoudit, ˇze pˇredmˇet ” m˚ uˇze tak´e obsahovat term´ın nadˇrazen´ y. V naˇsem pˇr´ıpadˇe (viz Obr´azek 5.2) m˚ uˇzeme zahrnout do vyhled´av´an´ı term´ın spr´ava pamˇeti“ a pokud chceme ” hledat jeˇstˇe obecnˇeji zahrneme v´ yraz operaˇcn´ı syst´em“. ” The ACM1 Computing Classification System [21] byl vytvoˇren
27
Zpracov´an´ı vytvoˇren´e kolekce
Zhodnocen´ı
Obr´azek 5.2: Uk´azka ˇca´sti dom´enov´e ontologie ACM
v roce 2012, a jak n´azev napov´ıd´a, jedn´a se o dom´enovou ontologii v informatice. Obsahuje pˇres 2500 pojm˚ u a dodrˇzuje specifikaci RDF definuj´ıc´ı reprezentaci dat ve formˇe (objekt—atribut—hodnota). Ontologie je napsan´a v anglick´em jazyce. Vzhledem k tomu, ˇze staˇzen´e pˇredmˇety v informatick´e kolekci jsou v ˇceˇstinˇe, bylo tˇreba ontologii pˇreloˇzit. Bohuˇzel jsem nenaˇsel ˇza´dn´ y pˇresn´ y anglicko-ˇcesk´ y terminologick´ y slovn´ık, kter´ y by byl dostupn´ y online. Zvolil jsem k pˇreloˇzen´ı nˇekter´ ych term´ın˚ u internetovou encyklopedii Wikipedia. Term´ıny, kter´e nemˇely ˇceskou str´anku na Wikipedii, jsem pot´e pˇreloˇzil pomoc´ı aplikaˇcn´ıho rozhran´ı od Bing pˇrekladaˇce. 1
ACM — Association for Computing Machinery je mezin´arodn´ı organizace podporuj´ıc´ı rozvoj a studium informatiky
28
Zpracov´an´ı vytvoˇren´e kolekce
Zhodnocen´ı
Tabulka 5.1: Poˇcet informatick´ ych obor˚ u na fakult´ach univerzit s poˇctem staˇzen´ ych pˇredmˇet˚ u
N´ azev univerzity Masarykova univerzita Brno Univerzita Karlova ˇ e vysok´e uˇcen´ı technick´e Cesk´ v Praze Vysok´e uˇcen´ı technick´e v Brnˇe Z´apadoˇcesk´a univerzita Univerzita Pardubice Technick´a univerzita Ostrava Univerzita Tom´aˇse Bati ve Zl´ınˇe Vysok´a ˇskola ekonomick´a v praze Technick´a univerzita Liberec
5.4
Poˇ cet obor˚ u Poˇ cet pˇ redmˇ et˚ u 30 162 40 244 27
315
20
311
27 12 16
348 194 504
15
403
11
58
11
202
Zhodnocen´ı
Pro vytvoˇren´ı kolekce jsem vybral vˇsechny studijn´ı obory, kter´e byly na ˇ seznamu akreditovan´ ych program˚ u Ministerstva ˇskolstv´ı CR. Vybran´e studijn´ı programy musely obsahovat v n´azvu jeden z tˇechto ˇretˇezc˚ u: informatika, programov´an´ı, softwarov´e, informaˇcn´ı. Internetov´ y robot pot´e proˇsel vˇsechny tyto vybran´e obory a st´ahl jejich pˇredmˇety ve studijn´ım pl´anu. V´ ysledkem bylo 2743 staˇzen´ ych pˇredmˇet˚ u. Na prvn´ım m´ıstˇe s nejvˇetˇs´ım poˇctem nab´ızen´ ych pˇredmˇet˚ u se um´ıstila Vysok´a ˇskola b´an ˇsk´a. Druh´a skonˇcila univerzita Tom´aˇse Bati ve Zl´ınˇe a tˇret´ı je Z´apadoˇcesk´a univerzita s 348 pˇredmˇety. Nicm´enˇe poˇcet pˇredmˇet˚ u nen´ı d˚ uleˇzit´ ym faktorem, protoˇze je ovlivnˇen nab´ıdkou voliteln´ ych pˇredmˇet˚ u uveden´ ych u studijn´ıho pl´anu. Tento z´avˇer ˇ ve dosvˇedˇcuje nejmenˇs´ı poˇcet pˇredmˇet˚ u u Vysok´e ˇskole ekonomick´e. VSE sv´ ych studijn´ıch pl´anech nab´ız´ı pouze pˇrehled povinn´ ych a povinnˇe voliteln´ ych pˇredmˇet˚ u. Nab´ıdka voliteln´ ych pˇredmˇet˚ u je zobrazena oddˇelenˇe.
29
Zpracov´an´ı vytvoˇren´e kolekce
5.4.1
Zhodnocen´ı
Ovˇ eˇ ren´ı funkˇ cnosti
Pro ovˇeˇren´ı funkˇcnosti dotazov´an´ı na obsah v´ yuky jsem implementoval jednoduch´ y vyhled´avac´ı algoritmus. Ten vrac´ı seznam vˇsech pˇredmˇet˚ u obsahuj´ıc´ıch dvˇe a v´ıce slov v hledan´em v´ yrazu. Pro svou uk´azku jsem vybral term´ın noSQL datab´aze. Tento datab´azov´ y koncept ukl´ad´an´ı dat v posledn´ı dobˇe vzr˚ ust´a na popularitˇe zejm´ena v oblastech Big Data a real-time web˚ u. Jedn´a se o vzorovou situaci pouˇzit´ı, kter´a by studentovi pomohla se rozhodnout pˇri v´ ybˇeru oboru nebo z´apisu dan´eho pˇredmˇetu. V´ ysledek hled´an´ı (Obr´azek 5.3) na odpov´ıdaj´ıc´ı dotaz zobrazil 4 pˇredmˇety: DB technologie pro ˇ ˇ ızen´ı datab´az´ı z univerzity v Liberci, PoBig Data vyuˇcovan´ y na CVUT, R´ kroˇcil´e datab´azov´e syst´emy na VUT a datab´azov´e syst´emy 2 na Z´apadoˇcesk´e univerzitˇe.
Obr´azek 5.3: V´ ysledek hled´an´ı v kolekci
5.4.2
Doba bˇ ehu
Proch´azen´ı str´anek, zpracov´an´ı a uloˇzen´ı kolekce prob´ıhalo 33 minut na poˇc´ıtaˇci s procesorem i5-3210M a 4 GB RAM. Navˇstˇevov´an´ı str´anek bylo prov´adˇeno ve v´ıce vl´aknech se zvolen´ ym parametrem 3 vteˇriny zpoˇzdˇen´ı na dalˇs´ı poˇzadavek pro str´anku. Pˇri zahrnut´ı dosaˇzen´ ych v´ ysledk˚ u m˚ uˇzeme snadno zjistit, ˇze samotn´e ˇcek´an´ı na z´ısk´an´ı dalˇs´ı str´anky trvalo drtivou vˇetˇsinu ˇcasu. U Vysok´e ˇskoly b´an ˇsk´e to bylo odhadem pˇres 600 zobrazen´ ych str´anek (z toho 506 str´anek s pˇredmˇety), coˇz ˇcin´ı ˇcekac´ı dobu 30 minut. M˚ uˇzeme jeˇstˇe porovnat dobu trv´an´ı lemmatizace slovn´ıkem proti knihovnˇe Lucene. Lemmatizace knihovnou Lucene bˇeˇzela 5 sekund oproti slovn´ıkov´e metodˇe, kter´a trvala 25 vteˇrin.
30
Zpracov´an´ı vytvoˇren´e kolekce
Zhodnocen´ı
Naˇcten´ı kolekce pro vizualizaci trv´a v jednotk´ach sekund a to sam´e plat´ı pro vyhled´av´an´ı.
31
6 Z´avˇer Nejprve byla prozkoum´ana struktura a forma webov´ ych str´anek ˇcesk´ ych univerzit. Na z´akladˇe anal´ yzy str´anek se urˇcily informace o pˇredmˇetech, kter´e dostateˇcnˇe informuj´ı studenta o jeho obsahu. Jako spoleˇcn´e u ´daje se vybraly: n´azev, obsah, obory, c´ıl, pˇredpoklady, vyuˇcuj´ıc´ı, literatura, pˇredpoklady, semestr, poˇcet kredit˚ u a odkaz na pˇredmˇet. Podle tˇechto informac´ı byla navrˇzena struktura XML souboru pro jejich uloˇzen´ı. K ovˇeˇren´ı spr´avn´e struktury XML bylo specifikov´ano XML sch´ema. D´ale byly prostudov´any technologie a moˇznosti stahov´an´ı webov´ y str´anek. Pˇri v´ ybˇeru byl kladen d˚ uraz na jednoduchost, aktu´alnost a podporu modern´ıch technologi´ı. Pro u ´ˇcel t´eto pr´ace byla pouˇzita knihovna jsoup napsan´a v jazyce Java. Z anal´ yzy str´anek byl tak´e zvolen zp˚ usob proch´azen´ı internetov´ ym botem. Z d˚ uvodu pˇresn´eho z´ısk´an´ı informac´ı internetov´ y bot navˇstˇevoval str´anky pomoc´ı ˇsablon. Posledn´ım u ´kolem bylo staˇzen´e pˇredmˇety zpracovat pro u ´ˇcely dotazov´an´ı. Pro dosaˇzen´ı relevantn´ı odpovˇedi byla staˇzen´a kolekce lemmatizov´ana. Byly vyzkouˇseny dva zp˚ usoby lemmatizace. Vhodnˇejˇs´ı metodu lemmatizace obsahuje knihovna Lucene. Budouc´ı moˇznosti vyhled´av´an´ı se jeˇstˇe zlepˇsily pˇrid´an´ım pˇreloˇzen´e dom´enov´e ontologie. V´ ysledkem pr´ace je funkˇcn´ı aplikace. D´ıky t´eto aplikaci se podaˇrilo st´ahnout informace o pˇredmˇetech z 10 vybran´ ych univerzit a z nich vytvoˇrit kolekci dat obsahuj´ıc´ıch 2743 pˇredmˇet˚ u. Pro ovˇeˇren´ı funkˇcnosti dotazov´an´ı byl implementov´an prototyp vyhled´av´an´ı.
6.1
Navrhovan´ a vylepˇ sen´ı
Z´akladn´ım c´ılem pr´ace bylo vytvoˇrit kolekci pˇredmˇet˚ u. Nab´ız´ı se pokraˇcovat v zlepˇsen´ı vyhled´avac´ıho algoritmu. Nav´azat by se dalo vytvoˇren´ım sluˇzby, kter´a by student˚ um usnadnila v´ ybˇer obor˚ u podle zadan´ ych krit´eri´ı. Snadn´e by bylo rozˇs´ıˇren´ı na stahov´an´ı vˇsech ostatn´ıch pˇredmˇet˚ u, kter´e nejsou jenom ve studijn´ım pl´anu informatick´ ych obor˚ u.
32
Literatura [1] What is HTML. [online]. [cit. 2015-04-10]. Dostupn´e z: http://www.w3. org/TR/html401/intro/intro.html#h-2.2 [2] CSS [online]. [cit. 2015-04-10]. Dostupn´e z: http://www.w3.org/ standards/webdesign/htmlcss [3]
CSS selectors [online]. [cit. 2015-04-10]. Dostupn´e z: http://www. w3schools.com/cssref/css_selectors.asp
ˇ e Budˇejovice: Kopp, 2007. [4] HEROUT, Pavel. Java a XML. 1. vyd. Cesk´ 313 s. ISBN 978-80-7232-307-4. ˇ r´ıˇcky [5] Hospod´aˇrsk´e noviny. Zebˇ VSˇ [online]. [cit. 2014-04-15]. Dostupn´e z: http://archiv.ihned.cz/ c1-63417690-informatika-se-nejlepe-vyucuje-na-cvut ˇ r´ıˇcky VSˇ [online]. [cit. [6] Webometrics. Ranking web of universities Zebˇ 2014-04-15]. Dostupn´e z: http://www.webometrics.info/en/Europe/ Czech%20Republic [7] U-Multirank. Universities compared.[online]. [cit. 2014-04-15]. Dostupn´e z: http://www.umultirank.org [8] Google crawlers [online]. [cit. 2015-04-15]. Dostupn´e z: https:// support.google.com/webmasters/answer/1061943?hl=en [9] Difference between Spider,Crawler and Robot line]. 7.4.2009, [cit. 2015-04-15]. Dostupn´e z : //forums.seochat.com/search-engine-spiders-27/ difference-between-spider-crawler-robot-244471.html
[onhttp:
[10] KOSTER, M. Guidelines for Robots Writers [online]. 1993, [cit. 201504-15]. Dostupn´e z : http://www.robotstxt.org/guidelines.html 33
LITERATURA
LITERATURA
[11] Ronny Lempel, Type of crawlers [online]. 2006, [cit. 2015-0415]. Dostupn´e z : http://webcourse.cs.technion.ac.il/236620/ Winter2006-2007/ho/WCFiles/lec14-crawlers.PDF [12] Junghoo Cho, Synchronizing a database to Improve Freshness, [online]. 1999-09-25, [cit. 2015-04-16]. Dostupn´e z : http://oak.cs.ucla.edu/ ~cho/papers/cho-synch.pdf [13] KUSHMERICK, Nicholas, Wrapper induction for Information Extraction. [online]. [cit. 2015-04-20]. Dostupn´e z : http://www.isi.edu/ info-agents/courses/iiweb/kushmerick-ijcai97.pdf [14] MITCHELL, Tom. Machine Learning. McGraw-Hill 1997, ISBN 0070428077 [15] ZHAI, Yanhong. Extracting Web Data Using Instance-Based Learning [online]. [cit. 2015-05-01]. Dostupn´e z : http://www.dbai.tuwien.ac. at/education/wie/SS06/papers/WISE05-instance-extract.pdf [16] HAYASHI, Yoshihiko. Searching Text-rich XML Documents with Relevance Ranking [online]. 2000-06-14, [cit. 2015-05-01]. Dostupn´e z https://www.research.ibm.com/haifa/sigir00-xml/final-papers/ Hayashi/hayashi.html [17] PYTELKA, Petr. Jak kvalita lemmatizace ovlivˇ nuje v´ysledky vyhled´av´an´ı dokument˚ u v ˇcesk´em jazyce. [online]. [cit. 2015-05-01]. Dostupn´e z : https://www.vse.cz/vskp/34929_jak_kvalita_lemmatizace_ ovlivnuje_vysledky_vyhledavani_dokumentu_v%C2%A0ceskem_ jazyce ´ Tom´aˇs. High Precision Stemmer [online]. [cit. 2015-05-01]. [18] BRUCHYN, Dostupn´e z : http://liks.fav.zcu.cz/HPS/article.pdf [19] HELLERBRAND, David. Nalezen´ı slovn´ıch koˇren˚ u v ˇceˇstinˇe. [online]. 2010, [cit. 2015-04-26]. Dostupn´e z : http://ceur-ws.org/Vol-802/ paper6.pdf ´ ˇ J´an. Dolovanie znalost´ı z textov. Technick´a univerzita v Ko[20] PARALI C, ˇsiciach. 2010. ISBN 978-80-89284-62-7 [21] ACM Computing Classification System. [online]. [cit. 2015-04-26]. Dostupn´e z : http://www.acm.org/about/class/2012
34
A Uˇzivatelsk´a dokumentace A.1
Sestaven´ı a spuˇ stˇ en´ı
Pˇred spuˇstˇen´ım programu zkontrolujte, zda m´ate nainstalovanou Javu. Pro samotn´e spuˇstˇen´ı napiˇste do pˇr´ıkazov´e ˇra´dky v adres´aˇri, kde se soubor nach´az´ı java -jar A11B0504P_bakalarska_prace.jar nebo soubor m˚ uˇzete otevˇr´ıt dvojklikem.
A.2
Stahov´ an´ı
Na obr´azku A.1 vid´ıme tlaˇc´ıtko se jm´enem univerzity reprezentuj´ıc´ı ˇsablonu, podle kter´e se stahuj´ı pˇredmˇety. Editaci ˇsablony otevˇreme kliknut´ım na tlaˇc´ıtko a po proveden´ ych zmˇen´ach stiskneme uloˇzit. Pro stahov´an´ı m˚ uˇzeme nastavit ˇcas, po kter´em robot ˇcek´a na dalˇs´ı navˇst´ıven´ı str´anky na jedn´e dom´enˇe. Druh´ ym moˇzn´ ym nastaven´ım je doba ˇcek´an´ı na pˇrijet´ı odpovˇedi. Pokud nepˇrijde od str´anky odpovˇed’ do stanoven´e doby, str´anka se vyhodnot´ı jako nenavˇst´ıven´a. Z´akladn´ı hodnoty jsou 3 a 10 sekund. Zah´ajen´ı stahov´an´ı se provede stisknut´ım tlaˇc´ıtko st´ahnout vˇse. Stisknut´ım tlaˇc´ıtka Nov´y v´ybˇer univerzit m˚ uˇzeme zmˇenit standardn´ı v´ ybˇer univerzit. Oznaˇc´ıme ˇsablony, kter´e chceme pˇridat (v pˇr´ıpadˇe oznaˇcen´ı v´ıce pˇredmˇet˚ u drˇz´ıme CTRL), a v´ ybˇer potvrd´ıme tlaˇc´ıtkem Open. Po dokonˇcen´ı stahov´an´ı budete informov´an´ı dialogov´ ym oknem. Staˇzen´a kolekce se uloˇz´ı do souboru file.txt.
35
Uˇzivatelsk´a dokumentace
Proch´azen´ı a vyhled´av´an´ı
´ Obr´azek A.1: Uvodn´ ı obrazovka poskytuje nastaven´ı pro staˇzen´ı pˇredmˇet˚ u
A.3
Proch´ azen´ı a vyhled´ av´ an´ı
Po zvolen´ı XML soubor v nab´ıdce menu se zobraz´ı Obr´azek A.2. XML soubor m˚ uˇzete proch´azet jako stromovou strukturu a po kliknut´ı na jednotliv´e elementy jeho obsah v lev´em panelu Po zvolen´ı Hledat pˇredmˇet v nab´ıdce menu se zobraz´ı Obr´azek A.3. V t´eto uk´azce se zadalo do vyhled´av´an´ı operaˇcn´ı syst´em a m˚ uˇzeme vidˇet v´ ysledky dotazu. Pokud chceme vˇedˇet o pˇredmˇetu v´ıce dvojklikem se otevˇre v prohl´ıˇzeˇci str´anka s detailn´ımi informacemi o pˇredmˇetu.
36
Uˇzivatelsk´a dokumentace
Proch´azen´ı a vyhled´av´an´ı
Obr´azek A.2: Proch´azen´ı kolekce
Obr´azek A.3: Vyhled´av´an´ı pˇredmˇet˚ u v kolekci
37