Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Agreg´ ator novinov´ ych zpr´ av
Plzeˇ n, 2014
Michel Sobˇehart
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 7. kvˇetna 2014 Michel Sobˇehart
Podˇ ekov´ an´ı Chtˇel bych podˇekovat vedouc´ımu pr´ace Ing. Michalu Konkolovi za jeho odborn´e veden´ı, trpˇelivost a cenn´e rady, poskytnut´e pˇri zpracov´an´ı t´ematu bakal´aˇrsk´e pr´ace. D´ale tak´e Ing. Tom´aˇsi Brychc´ınovi za u ´pravu projektu HPS pro m´e u ´ˇcely. M´e d´ıky patˇr´ı tak´e rodinˇe a pˇr´ıtelkyni, kteˇr´ı mi dodali motivaci a plnˇe podporovali.
Abstrakt Hlavn´ım c´ılem bakal´aˇrsk´e pr´ace je vytvoˇrit program, kter´ y shlukuje podobn´e novinov´e zpr´avy. Dalˇs´ım c´ılem je vytvoˇrit program pro stahov´an´ı novinov´ ych dat z internetov´ ych zdroj˚ u, kter´a budou slouˇzit jako testovac´ı data. Je potˇreba navrhnout posloupnost zpracov´an´ı dat, urˇcen´ı podobnosti a tak´e princip clusterov´an´ı dat. Posledn´ı f´az´ı je urˇcen´ı spr´avn´eho prahu, po kter´em jsou dva soubory podobn´e. Aplikace byla programov´ana v objektovˇe orientovan´em jazyce Java. Pˇri testov´an´ı navrˇzen´a aplikace dos´ahla 96,85% F-m´ıry.
Abstract The main goal of the bachelor thesis is to create a program, which clusters similiar RSS newspaper data. Next goal is to create a program for downloading newspaper data from internet sources, which will be used as testing data. Designing a sequence of data processing, determinating similiarities and also principle of the data clustering is required to design. The last phase is selecting the right threshold, after which two files are similar. The application was created using object-oriented Java language. After the testing proposed application has reached 96,85% F-measure.
B Uˇ zivatelsk´ a dokumentace novinov´ eho agreg´ atoru
45
C Obsah CD
51
´ 1 Uvod Novinov´e agreg´atory jsou syst´emy, kter´e sledov´an´ım internetov´ ych zdroj˚ u novinov´ ych zpr´av shrnuj´ı, co se ve svˇetˇe internetu p´ıˇse. Vyuˇz´ıvaj´ı se v datab´az´ıch novinov´ ych ˇcl´ank˚ u, kde jsou zaloˇzeny na shromaˇzd’ov´an´ı, anal´ yze a rozdˇelen´ı velk´eho mnoˇzstv´ı dat. Pouˇz´ıvaj´ı metody pro pˇredzpracov´an´ı textu, kdy d´ale sleduj´ı a zpracov´avaj´ı r˚ uzn´e pˇr´ıznaky textu jako je jejich d´elka, obsaˇzen´a slova nebo jm´ena osob a organizac´ı. Na z´akladˇe informac´ı pot´e urˇcuj´ı podobnost mezi ˇcl´anky a shlukuj´ı je do skupin, ve kter´ ych jsou si dan´e ˇcl´anky navz´ajem podobn´e. V praxi se ˇclovˇek ˇcasto setk´a se situac´ı, kdy si chce pˇreˇc´ıst novinov´e zpr´avy na internetu. Na proch´azen´ı vˇsech server˚ u nem´a ˇcas a tak by bylo vhodn´e, aby data z jeho obl´ıben´ ych server˚ u byla na jednom m´ıstˇe. Poˇr´ad je nutn´e hledat podobn´e zpr´avy v mnoˇzstv´ı dat, proto je ide´aln´ı data roztˇr´ıdit podle t´ematu, o kter´em p´ıˇs´ı. Mohu si tedy pˇreˇc´ıst vˇsechny zpr´avy t´ ykaj´ıc´ı se specifick´eho t´ematu z v´ıce server˚ u po sobˇe a nemus´ım je vyhled´avat. C´ılem bakal´aˇrsk´e pr´ace je nejdˇr´ıve prozkoumat technologie, kter´e jsou pouˇziteln´e pro agreg´ator novinov´ ych zpr´av. D´ale navrhnout syst´em pro agreg´ator a n´aslednˇe jej implementovat. V neposledn´ı ˇradˇe tak´e zhodnotit v´ ysledky syst´emu a otestovat jeho funkˇcnost. Pro otestov´an´ı je nutn´e vytvoˇrit program pro stahov´an´ı novinov´ ych zpr´av z internetov´ ych zdroj˚ u.
1
2 Anal´yza 2.1
RSS
RSS je datov´ y form´at, jehoˇz hlavn´ı v´ yhodou je jeho jednoduchost. Velk´e mnoˇzstv´ı webov´ ych str´anek, informaˇcn´ıch nebo zpravodajsk´ ych server˚ u a v neposledn´ı ˇradˇe i blog˚ u, maj´ı moˇznost odeb´ırat RSS kan´aly. RSS kan´al obsahuje informace nebo novinky poskytovan´e webovou str´ankou. Kan´al je strukturovan´ y a tak nen´ı sloˇzit´e zpracovat data, kter´a se v nˇem nach´azej´ı. RSS zdroj je form´atov´an znaˇckovac´ım jazykem XML. Obsahem RSS kan´alu je popis serveru nebo webov´e str´anky, jednoduch´e popisy spoleˇcnˇe s n´azvy zpr´av a odkazy na str´anku, kde je zpr´ava publikov´ana na internetu. Dokument popisuje pouze form´at a ne jeho vzhled. Ten lze nadefinovat napˇr. pomoc´ı kask´adov´eho stylu CSS1 .
2.1.1
Jazyk XML
RSS vych´az´ı a je zaloˇzen na principu otevˇren´eho znaˇckovac´ıho form´atu XML. Tento jazyk vyvinula a d´ale standartizuje organizace W3C. P˚ uvodn´ım pl´anem bylo nahradit form´at HTML pro psan´ı WWW str´anek. Informace jsou ohraniˇceny tzv. p´arov´ ymi znaˇckami2 a popisuj´ı v´ yznam dat mezi nimi. T´ımto zp˚ usobem se zvyˇsuje hodnota informace v dokumentu a sniˇzuj´ı nadbyteˇcn´e informace. XML se nepouˇz´ıv´a pouze v RSS, ale je vyuˇziteln´e v mnoha jin´ ych 3 aplikac´ıch a form´atech. Pˇr´ıkladem m˚ uˇze b´ yt form´at SVG , jazyk pro psan´ı webov´ ych str´anek XHTML4 nebo ve form´atu dat ATOM5 . 1
CSS – kask´ adov´ y styl pro vzhled str´anek – http://www.w3schools.com/css/ P´ arov´ a znaˇcka – je vytvoˇrena na zaˇc´atku i na konci textu 3 SVG – form´ at obr´ azk˚ u ve vektorov´e grafice – http://www.w3schools.com/svg/ 4 XHTML – Jazyk pro psan´ı k´odu webov´ ych str´anek http://www.w3schools.com/html/html xhtml.asp 5 ATOM – form´ at dat podobn´ y RSS – http://atomenabled.org/ 2
2
–
Anal´yza
2.1.2
RSS
Vyuˇ zit´ı RSS
RSS je vyuˇziteln´ y v mnoha sf´er´ach internetu. Jako bˇeˇzn´ı uˇzivatel´e se nejˇcastˇeji setk´ame s vyuˇzit´ım na zpravodajk´ ych serverech, str´ank´ach s produkty, diskuzn´ıch f´orech a bloz´ıch. Vˇetˇsinou RSS kan´aly ukazuj´ı novinky, kter´e se na serveru publikovali. Na zpravodajsk´em serveru nemus´ı b´ yt pouze jeden informaˇcn´ı kan´al, ale m˚ uˇze se rozdˇelovat do v´ıce kan´al˚ u, kter´e lze odeb´ırat. T´ım lze zajistit filtrov´an´ı zpr´av. Uˇzivatel se vˇsak s technologi´ı nemus´ı setkat vˇedomˇe, ale nˇejak´ ym zp˚ usobem ji vyuˇz´ıv´a. Pom´ah´a v podcastu6 , sd´ılen´ı dat na internetu a orientaci na webov´ ych str´ank´ach. Vzhledem k faktu, ˇze RSS se vyuˇz´ıv´a k sd´ılen´ı dat, slouˇz´ı tak´e k propojen´ı internetov´ ych str´anek. Dalˇs´ım vyuˇzit´ım je moˇznost zobrazen´ı dat na jednom m´ıstˇe a t´ım u ´spora ˇcasu v proch´azen´ı str´anek. K tomu slouˇz´ı aplikace zvan´e RSS ˇcteˇcky. Mezi argumenty, proˇc pouˇz´ıvat RSS ˇcteˇcky hovoˇr´ı pˇredevˇs´ım ˇcasov´a u ´spora. Uˇzivatel nemus´ı proch´azet des´ıtky obl´ıben´ ych web˚ u (tˇreba nˇekolikr´at za den), coˇz mu zabere nem´alo ˇcasu, ale m˚ uˇze se rychle pod´ıvat na souhrn toho, co ho zaj´ım´a prostˇrednictv´ım webov´e aplikace. Vˇetˇsina ˇcetby se nav´ıc soustˇred´ı na zpr´aviˇcky a perexy, takˇze nen´ı tˇreba ˇcteˇcku ˇcasto v˚ ubec opustit. Nezobrazuje se reklama, coˇz m´a pˇr´ızniv´ y vliv na spotˇrebu elektrick´e energie a v´ ykon poˇc´ıtaˇce a jde tedy o ˇcasovˇe i ekologicky zaj´ımav´e ˇreˇsen´ı. Pˇrevzato z [2]
2.1.3
Srovn´ an´ı a syntaxe RSS specifikac´ı
R˚ uzn´e specifikace RSS vznikaly postupnˇe a kaˇzdou verzi vyv´ıjela jin´a organizace. Pr´avˇe proto ani nezn´ame pˇresn´ y v´ yznam zkratky, kter´a se pro tuto technologii vyuˇz´ıv´a, ale m´ame tˇri r˚ uzn´e v´ yznamy: • RDF Site Summary (RSS 0.90 a 1.0) • Rich Site Summary (RSS 0.91) • Really Simple Syndication (RSS 2.0) 6
Podcast – pˇrehr´ av´ an´ı hudby
3
Anal´yza
RSS
Existuj´ı r˚ uzn´e verze, kter´e se dnes jiˇz nevyuˇz´ıvaj´ı. Napˇr´ıklad verze 0.90 je nyn´ı plnˇe nahrazena 1.0 verz´ı. Postupem pˇri vyv´ıjen´ı dalˇs´ıch verz´ı RSS je vˇetˇsinou pˇrid´av´an´ı element˚ u jako parametr˚ u do souboru. Vˇsechny vˇsak obsahuj´ı deklaraci XML hlaviˇcky s jeho verz´ı a deklaraci verze RSS dokumentu. Nejv´ıce vyuˇz´ıvanou specifikac´ı je RSS 2.0, na cel´em internetu ji vyuˇz´ıv´a okolo 80% RSS kan´al˚ u.
RSS 0.91 Tato specifikace je nejjednoduˇsˇs´ı verz´ı RSS dokumentu a jej´ım obsahem jsou z´akladn´ı informace o dokumentu, kan´alu a zpr´avˇe. Tak´e je obsah dokumentu omezen, a to nˇekolika vlastnostmi. Prvn´ım limitov´an´ım je vyuˇzit´ı HTML tag˚ u, kter´e v t´eto verzi nejsou podporov´any. Dalˇs´ı omezen´ı se t´ ykaj´ı poˇctu a d´elky element˚ u. Poˇcet zpr´av, kter´e lze publikovat, m˚ uˇze b´ yt maxim´alnˇe 15 a d´elky titulku a popisu nesm´ı pˇrekroˇcit 100 a 500 znak˚ u, stejnˇe jako 500 znak˚ u je maxim´aln´ı d´elka odkazu na soubor nebo kan´al. Tuto specifikaci vyv´ıjela firma UserLand Software. D´ale je tak´e vyˇzadov´an element pro deklaraci DTD7 . • xml - voliteln´ y - verze jazyka XML • !DOCTYPE - povinn´ y - definice typu dokumentu • rss - povinn´ y - koˇrenov´ y element s atributem version • channel - povinn´ y - element kan´alu • title - povinn´ y - n´azev kan´alu • link - povinn´ y - odkaz na dan´ y kan´al, maxim´alnˇe 500 znak˚ u • description - povinn´ y - popis kan´alu, maxim´alnˇe 500 znak˚ u • language - povinn´ y - jazyk, ve kter´em je kan´al naps´an, vybran´ y z v´ yˇctu jazyk˚ u • image - povinn´ y - obr´azek, obsahuj´ıc´ı dalˇs´ı elementy url - povinn´ y v obr´azku - odkaz na um´ıstˇen´ı obr´azku title - povinn´ y v obr´azku - titulek obr´azku 7
DTD – definice typu dokumentu
4
Anal´yza
RSS
link - povinn´ y v obr´azku - odkaz na kan´al width - voliteln´ y v obr´azku - ˇs´ıˇrka obr´azku, maxim´alnˇe 144 px height - voliteln´ y v obr´azku - v´ yˇska obr´azku, maxim´alnˇe 400 px • copyright - voliteln´ y - autorsk´a pr´ava, maxim´alnˇe 100 znak˚ u • managingEditor - voliteln´ y - email na editora kan´alu, maxim´alnˇe 100 znak˚ u • webMaster - voliteln´ y - emailov´a adresa webmastera kan´alu, maxim´alnˇe 100 znak˚ u • rating - voliteln´ y - PICS8 hodnocen´ı str´anky, maxim´alnˇe 500 znak˚ u • pubDate - voliteln´ y - datum publikace • lastBuildDate - voliteln´ y - posledn´ı u ´prava souboru • docs - voliteln´ y - dokument s popsan´ ym form´atem v dokumentu, maxim´alnˇe 500 znak˚ u • textInput - voliteln´ y - text vloˇzen´ y do souboru • skipDays - voliteln´ y - dny, kdy kan´al nepublikuje nov´e informace • skipHours - voliteln´ y - hodiny, kdy kan´al nepublikuje nov´e informace • item - voliteln´ y - zpr´avy publikovan´e v RSS, maxim´alnˇe 15 zpr´av title - povinn´ y ve zpr´avˇe - titulek zpr´avy, maxim´alnˇe 100 znak˚ u link - povinn´ y ve zpr´avˇe - odkaz na plnou verzi zpr´avy, maxim´alnˇe 500 znak˚ u description - povinn´ y ve zpr´avˇe - zkr´acen´ y popis zpr´avy, maxim´alnˇe 500 znak˚ u [1]
RSS 1.0 Tato specifikace se liˇs´ı od v´ yraznˇe ostatn´ıch a nen´ı s pˇredchoz´ımi verzemi zpˇetnˇe kompatibiln´ı. Nen´ı totiˇz zaloˇzena na form´atu RSS, ale na RDF. Jako koˇrenov´ y element tedy nen´ı uveden , ale . Element kan´alu 8
PICS – hodnocen´ı str´ anek na internetu – http://www.w3.org/PICS/
5
Anal´yza
RSS
je uzavˇren jiˇz pˇred seznamem poloˇzek . Novinkou je seznam poloˇzek pˇred samotn´ ymi poloˇzkami a tak´e moˇznost vytvoˇren´ı jmenn´eho prostoru, kde si m˚ uˇze uˇzivatel vytvoˇrit vlastn´ı elementy nad r´amec z´akladn´ı verze. V koˇrenov´em elementu je pˇripojen odkaz na extern´ı dokument parametrem xmlns:“. Tato verze je vyv´ıjena skupinou RSS-DEV ” Working Group.
RSS 2.0 Specifikace 2.0 rozˇsiˇruje verzi 0.91 a odstraˇ nuje nˇekter´a omezen´ı. Uk´azku takov´eho souboru najdete ve v´ ypisu 2.1. V dokumentu jiˇz nemus´ı b´ yt deklarov´an DTD. Poˇcet poloˇzek jiˇz nen´ı nijak omezen oproti pˇredchoz´ı verzi. I jin´a omezen´ı z hlediska d´elky informac´ı v elementu jsou odstranˇeny, a to v elementech a <description>. Element se z nutn´eho st´av´a pouze voliteln´ ym a lze pro zpr´avu uv´est v´ıce odkaz˚ u v r˚ uzn´ ych jazyc´ıch. Dalˇs´ı zmˇenou je tak´e fakt, ˇze v textu RSS se mohou vyskytovat HTML tagy. Posledn´ım rozd´ılem je pˇrid´an´ı nov´ ych element˚ u, kter´e jsou vˇsechny voliteln´e: • generator - ˇretˇezec, kter´ y ukazuje program generov´an´ı RSS kan´alu • category - kategorie, do kter´e kan´al patˇr´ı • cloud - umoˇzn ˇuje proces˚ um zaregistrovat oblak a b´ yt informov´an o zmˇen´ach kan´alu • ttl - poˇcet minut, jak dlouho m˚ uˇze b´ yt kan´al v mezipamˇeti pˇred osvˇeˇzen´ım od zdroje • enclosure - popisuje pˇr´ılohu, kter´a je ke zpr´avˇe pˇriloˇzena source - URL odkaz, odkud poch´az´ı kan´al guid - jednoznaˇcn´a identifikace URL
6
Anal´yza
Novinov´y agreg´ator
V´ ypis 2.1: Uk´azka RSS souboru specifikace 2.0 < t i t l e>Novinky . c z − Vase zpravy t i t l e> h t t p : //www. novinky . c z / vase−zpravy l i n k> Novinky . c z − z p r a v o d a j s k y s e r v e r d e s c r i p t i o n> c s l a n g u a g e> h t t p : //www. novinky . c z / vase−zpravy l i n k> < t i t l e>Novinky . c z − Vase zpravy t i t l e> h t t p : //www. novinky . c z / s t a t i c / images / l o g o . g i f u r l> <width>144 width> 49 h e i g h t> image> < t i t l e> P o l i c e j n i p e s o d h a l i l v baru drogy t i t l e> < ! [CDATA[ V nedeli priblizne . . . d e s c r i p t i o n > h t t p : //www. novinky . c z / vase−zpravy −21636−. html h t t p : //www. novinky . c z / vase−zpravy / praha /1297−21636− p o l i c e j n i −pes−o d h a l i l −v−baru−drogy . html l i n k > <s z n : i m a g e/> <szn:upDate>Sun , 08 Dec 2013 19 : 1 7 : 2 3 +0100 szn:upDate> r s s >
2.2
Novinov´ y agreg´ ator
Novinov´e (RSS) agreg´atory jsou servery, kter´e sledov´an´ım RSS zdroj˚ u, shrnuj´ı, co se kde na internetu p´ıˇse. T´ematicky ˇrazen´e nadpisy ˇcl´ank˚ u s kr´atkou anotac´ı pak uveˇrejˇ nuj´ı na sv´ ych str´ank´ach s odkazem na p˚ uvodn´ı zdroj. Tyto servery vlastnˇe prov´ad´ı jak´ ysi monitoring tisku a v tom je jejich pˇridan´a hodnota. [3]
7
Anal´yza
2.3
Pˇr´ıznakov´y model
Pˇ r´ıznakov´ y model
Pˇri zpracov´an´ı textov´ ych dokument˚ u se vyuˇz´ıv´a tzv. pˇr´ıznakov´ y model. Model je tvoˇren prostorem, kter´ y m´a n-dimenz´ı. Kaˇzd´a dimenze pˇredstavuje pˇr´ıznak dan´eho dokumentu.
2.3.1
Pˇ r´ıznaky
Z´akladn´ı technikou pouˇz´ıvanou pro klasifikaci dokument˚ u jsou pˇr´ıznaky (angl. features). Jako pˇr´ıznak m˚ uˇzeme vyuˇz´ıt libovolnou informaci o objektu dokumentu. Objektem m˚ uˇze b´ yt slovo, u kter´eho lze vypoˇc´ıtat hodnotu ˇcetnosti v dokumentu nebo frekvence slova ve vˇsech dokumentech. D´ale tak´e slovn´ı spojen´ı (fr´aze) nebo pojmenovan´e entity. Za pojmenovan´e entity m˚ uˇzeme povaˇzovat slova a slovn´ı spojen´ı, kter´e v textu pˇredstavuj´ı geografick´e n´azvy, jm´ena osob nebo produkt˚ u, n´azvy organizac´ı nebo firem, ˇcasov´e u ´daje a dalˇs´ı.
2.3.2
Reprezentace dokumentu
Kaˇzd´ y dokument ke zpracov´an´ı mus´ı b´ yt rozdˇelen na jednotliv´a slova. Z´akladn´ım principem m˚ uˇze b´ yt tvoˇren´ı pˇr´ıznakov´eho modelu pouze z bin´arn´ıch ˇ eji hodnot (1, pokud slovo je v dokumentu obsaˇzeno a 0, pokud nen´ı). Castˇ se vˇsak vyuˇz´ıv´a ˇcetnosti dan´eho slova. To vˇsak nezohledˇ nuje d´elku dokumentu, kde stejn´ ych slov m˚ uˇze b´ yt mnohem v´ıce. Proto je moˇzn´e vyuˇz´ıt metodu zvanou TF-IDF (v´ıce v kapitole 2.5). Pˇr´ıklad pˇrevzat z [5]. 1. M´ ama m´ a m´ısu. 2. M´ ama mele maso. 3. Ema nese m´ısu. 4. Ema a m´ ama sol´ı maso. Nejprve vytvoˇr´ıme unik´atn´ı slovn´ık slov ve vˇet´ach. Pot´e ho podle abecedy seˇrad´ıme vzestupnˇe.
8
Anal´yza
Pˇr´ıznakov´y model
[1= a“, 2= ema“, 3= maso“, 4= mele“, 5= m´ a“, 6= m´ ama“, ” ” ” ” ” ” 7= m´ısu“, 8= nese“, 9= sol´ı“] ” ” ” Jelikoˇz poˇcet slov ve slovn´ıku je devˇet, bude model obsahovat stejn´ y poˇcet dimenz´ı. Obsahuje-li vektor slovo, bude hodnota na t´eto pozici rovna jedn´e, pokud neobsahuje, je hodnota nulov´a.
9
Anal´yza
Pˇr´ıznakov´y model
1. [0,0,0,0,1,1,1,0,0] 2. [0,0,1,1,0,1,0,0,0] 3. [0,1,0,0,0,0,1,1,0] 4. [1,1,1,0,0,1,0,0,1] Vzhledem k faktu, ˇze kaˇzd´ y jazyk obsahuje mnoho r˚ uznorod´ ych slov, pohybuje se poˇcet dimenz´ı prostoru ˇr´adovˇe ve statis´ıc´ıch. Pˇri takov´emto poˇctu je vhodn´e slovn´ık zredukovat. Redukce by se mˇela t´ ykat slov, kter´a nemaj´ı velk´ y vliv na ohodnocen´ı dokumentu. Jsou to tedy slova vyskytuj´ıc´ı se ve vˇsech dokumentech ve velmi n´ızk´em poˇctu nebo naopak ta, kter´a jsou zastoupena v kaˇzd´em dokumentu v hojn´em poˇctu. V ˇcesk´em jazyce se jedn´a pˇrev´aˇznˇe o z´ajmena, pˇredloˇzky a spojky. Dalˇs´ım faktorem pˇri zpracov´an´ı textov´ ych dokument˚ u do pˇr´ıznakov´eho modelu je oh´ yb´an´ı slov, rozd´ıl mezi jednotn´ ymi a mnoˇzn´ ymi ˇc´ısly, skloˇ nov´an´ı a ˇcasov´an´ı slov. Budeme-li m´ıt zpr´avu, t´ ykaj´ıc´ı se mˇesta Klatovy, m˚ uˇzeme zde naj´ıt slova jako klatovsk´ y“ a klatovsk´a“. Obˇe slova maj´ı podobn´ y v´ y” ” znam a v anal´ yze by mˇela b´ yt povaˇzov´ana za stejn´a. Proto je pro textovou anal´ yzu d˚ uleˇzit´e pˇredzpracov´an´ı textu, kde z´akladn´ımi principy jsou lemmatizace a stemming.
2.3.3
Stemming
Stemming je operace pro u ´pravu slov. Pro vˇsechna slova se snaˇz´ı vr´atit kmen slova9 . Stemmer pro ˇcesk´ y jazyk je sloˇzitˇejˇs´ı vzhledem napˇr. k anglick´emu jazyku. V ˇcesk´em jazyce vyuˇz´ıv´ame ˇcasto pˇredpon a pˇr´ıpon (napˇr. pro z´aporn´e slovo ˇcasto pˇrid´av´ame pˇredponu ne-), ale hlavnˇe tak´e zmˇeny slova takov´e, ˇze se zmˇen´ı i jeho kmen. Napˇr´ıklad u podstatn´eho jm´ena se m˚ uˇzeme ˇcasto setkat se tˇremi tvary slova, kdy kmen je pokaˇzd´ y jin´ y (viz Tabulka 2.1). 9
kmen – tvar slova po odstranˇen´ı koncovky nebo pˇredpony
10
Anal´yza
Podobnost dokument˚ u P´ ad Tvar slova Stemmer 1. p´ad jedn. ˇc´ısla koˇcka koˇck3. a 6. p´ad jedn. ˇc´ısla koˇcce koˇcc2. p´ad mnoˇz. ˇc´ısla koˇcek koˇcekTabulka 2.1: Oh´ yb´an´ı ˇcesk´ ych slov
2.3.4
Lemmatizace
Lemmatizace je operace podobn´a stemmeru, kter´a se s n´ım ˇcasto mylnˇe zamˇen ˇuje. Pˇri t´eto operaci totiˇz z´ısk´ame tvar zvan´ y lemma10 . V´ ysledn´e slovo by tedy mˇelo vypadat jako z´akladn´ı slovn´ıkov´ y tvar. M´ame-li tedy slovo koˇcce“, ” v´ ysledkem by mˇela b´ yt lemma koˇcka“. ” Je viditeln´e, ˇze lemmatizace vrac´ı slovo, kter´e l´epe vyjadˇruje v´ yznam p˚ uvodn´ıho slova.
2.4
Podobnost dokument˚ u
Vyuˇzit´ı pˇr´ıznakov´eho modelu je d˚ uleˇzit´e pro vypoˇcten´ı podobnosti dokument˚ u. Podobnost dokument˚ u se nach´az´ı v intervalu h−1, 1i. Zpr´avy jsou vyj´adˇreny vektory, mezi nimiˇz lze vypoˇc´ıtat podobnost pomoc´ı matematick´ ych pˇr´ıstup˚ u. Vektory p a q jsou dva dokumenty, mezi kter´ ymi chceme zn´at m´ıru podobnosti. Oˇcek´av´a se, ˇze zpr´avy, kter´e budou popisovat stejnou ud´alost, budou tak´e vyuˇz´ıvat podobn´a slova. Z´akladn´ı podobnosti jsou pops´any a pˇrevzaty z [5]. Pokud vypoˇc´ıt´ame vzd´alenost d (p, q), je v´ ysledn´ y interval jin´ y neˇz pro podobnost. Mus´ıme tedy d´ale upravit vzorec, abychom z´ıskali hodnotu v intervalu h−1, 1i.
podobnost = 10
1 1 + d (p, q)
lemma – m˚ uˇze b´ yt prvn´ı p´ ad jednotn´eho ˇc´ısla nebo v urˇcit´ ych situac´ıch tak´e kmen slova
11
Anal´yza
Podobnost dokument˚ u
p
q θ
Obr´azek 2.1: Uk´azka vektor˚ u pro v´ ypoˇcet podobnosti
2.4.1
Eukleidovsk´ a vzd´ alenost
Vyuˇz´ıv´a rozd´ılu dvou vektor˚ u. V´ ysledn´a vzd´alenost je reprezentov´ana vzd´alenost´ı koncov´ ych bod˚ u vektoru.
d (p, q) =
2.4.2
qX
(pi − qi )2
V´ aˇ zen´ a suma
Jedna z aplikac´ı v´aˇzen´e sumy (weighted sum) je vyhled´av´an´ı pomoc´ı kl´ıˇcov´ ych slov v dokumentu. Z tˇechto slov je sestaven vektor q a dokument pot´e pˇredstavuje vektor p. V´ ysledn´a podobnost je d´ana souˇctem ˇcetnost´ı slov v dokumentu, kter´e se shoduj´ı se slovy v dotazu. P pi qi d (p, q) = P pi
12
Anal´yza
2.4.3
Podobnost dokument˚ u
Kosinov´ a podobnost
Kosinov´a podobnost (cosine similarity) pˇredstavuje m´ıru podobnosti dvou vektor˚ u, kter´a je z´ısk´ana v´ ypoˇctem kosinu u ´hlu leˇz´ıc´ım mezi tˇemito vektory. ~a · ~b = k~akk~bk · cos θ ~a · ~b P odobnost (a, b) = cos θ = =rn P k~akk~bk
n P
Ai × Bi rn P 2 (Ai ) × (Bi )2 i=1
i=1
i=1
Obecnˇe m˚ uˇze kosinov´a podobnost nab´ yvat hodnot z intervalu h−1, 1i. Hodnota -1 pot´e znaˇc´ı dokumenty sobˇe opaˇcn´e a hodnota +1 znaˇc´ı shodn´e dokumenty. Pokud jsou oba vektory vˇsude kladn´e, v´ ysledn´a hodnota kosinov´e podobnosti by byla v intervalu h0, 1i.
2.4.4
Manhattonsk´ a vzd´ alenost
Poˇc´ıt´a se jako souˇcet pravo´ uhl´ ych krok˚ u mezi body, kter´e urˇcuj´ı vektory p a q.
d (p, q) =
2.4.5
X
|pi − qi |
Cebyˇ sevova vzd´ alenost
Vyjadˇruje maxim´aln´ı rozd´ıl sloˇzek dvou vektor˚ u p a q. d (p, q) = max |pi − qi | Je moˇzn´e vyuˇz´ıt dalˇs´ı metriky pro urˇcen´ı podobnosti vektor˚ u. V´ıce zp˚ usob˚ u m˚ uˇzete vidˇet v [6].
13
Anal´yza
2.5
TF-IDF
TF-IDF
TF-IDF je metoda pro urˇcov´an´ı v´ahy slova. Zkratka se skl´ad´a ze dvou z´akladn´ıch term´ın˚ u, a to Term Frequency (d´ale jen TF) a Inverse Document Frequency (d´ale jen IDF). Vzhledem ke skuteˇcnosti, ˇze kaˇzd´ y dokument je jinak dlouh´ y, nesm´ı doch´azet k nadhodnocov´an´ı delˇs´ıch dokument˚ u, kter´e by mˇely stejnou ˇcetnost dan´eho slova. Vydˇel´ıme tedy ˇcetnost poˇctem slov v dokumentu a v´ ysledkem je hodnota T F (i) = h0, 1i. Obecn´ y vzorec pro v´ ypoˇcet je: ni,j , T Fi,j = P k nk,j P kde ni je vybran´e slovo a k nk je poˇcet vˇsech slov v dan´em dokumentu j. IDF urˇcuje d˚ uleˇzitost slova. Po vypoˇcten´ı TF je kaˇzd´e slovo stejnˇe d˚ uleˇzit´e a nedˇelaj´ı se mezi nimi rozd´ıly. Avˇsak pro tuto ˇca´st v´ ypoˇctu mus´ıme tak´e pˇredej´ıt nadhodnocen´ı slov, jako jsou a“, se“, kter´e najdeme skoro v kaˇz” ” d´em dokumentu, od slova J´agr“, kter´a najdeme jen pˇrev´aˇznˇe ve specifick´ ych ” ˇ dokumentech o hokeji. C´ım se tedy slovo ˇcastˇeji vyskytuje v dokumentech, t´ım je m´enˇe d˚ uleˇzit´e a naopak. IDFi,D = log
|D| , |{j : ti ∈ dj }|
kde |D| je poˇcet vˇsech dokument˚ u a |{j : ti ∈ dj }| je poˇcet dokument˚ u, ve kter´ ych se vyskytuje dan´e slovo. V´ ysledn´e TF-IDF se pot´e vypoˇc´ıt´a vyn´asoben´ım obou pˇredchoz´ıch v´ ysledk˚ u. tf idfi,j = T Fi,j · IDFi,D Hodnota TF-IDF bude vysok´a pro ta slova, kter´a se ˇcasto vyskytuj´ı ve zpracov´avan´em dokumentu, ale v ostatn´ıch dokumentech se vyskytuj´ı minim´alnˇe.
2.6
Shlukov´ an´ı dokument˚ u
Shlukov´an´ı dokument˚ u (tzv. clustering) je ve sv´e podstatˇe dˇelen´ı dokument˚ u do podmnoˇzin, kter´e maj´ı podobn´e t´ema nebo podobn´ y obsah. C´ıl je takov´ y, 14
Anal´yza
Shlukov´an´ı dokument˚ u
ˇze dokumenty ve shluku (clusteru) se mus´ı co nejv´ıce podobat, avˇsak dan´e shluky by se od sebe mˇeli co nejv´ıce liˇsit. Pˇri vytv´aˇren´ı takov´ ychto skupin nezn´ame jejich poˇcet, nem´ame o nich ˇza´dnou pˇredstavu.
2.6.1
Hierarchick´ e clusterov´ an´ı
Hierarchick´e clusterov´an´ı je zaloˇzeno na principu rozkladu. Tato metoda shlukov´an´ı lze zn´azornit bin´arn´ım stromem, kde kaˇzd´ y shluk je jeden uzel, tzv. dendrogramem (viz Obr´azek 2.2). V naˇsem pˇr´ıpadˇe je svisl´ y smˇer ˇcar vzd´alenost mezi shluky a vodorovn´ y smˇer ˇcar stupeˇ n rozkladu shluk˚ u. Podrobnˇejˇs´ı a v´ıce informac´ı naleznete v [9] a [10].
Obr´azek 2.2: Uk´azka dendrogramu pˇrevzata z [8]
Aglomerativn´ı pˇ r´ıstup Aglomerativn´ı shlukov´an´ı zaˇc´ın´a nult´ ym rozkladem, kdy m´ame n jednoprvkov´ ych objekt˚ u (n je poˇcet prvk˚ u shlukov´an´ı). Dalˇs´ım postupem je slouˇcen´ı shluk˚ u, kter´e jsou nejpodobnˇejˇs´ı dle dan´eho krit´eria. Vznikne nov´ y shluk o dvou prvc´ıch a v kaˇzd´em dalˇs´ım kroku z nejpodobnˇejˇs´ıch shluk˚ u niˇzˇs´ıho stupnˇe rozkladu dalˇs´ı nov´ y shluk. Kaˇzd´ ym krokem chceme zvyˇsovat vzd´alenost mezi shluky a konec shlukov´an´ı m˚ uˇze b´ yt na z´akladˇe vzd´alenosti nebo poˇctu shluk˚ u. Aglomerativn´ı shlukov´an´ı se dˇel´ı na z´akladˇe krit´eria, kter´ ym se vyb´ıraj´ı nejpodobnˇejˇs´ı shluky.
15
Anal´yza
Shlukov´an´ı dokument˚ u
Divizn´ı pˇ r´ıstup Diviz´ı pˇr´ıstup je opaˇcn´ y k aglomerativn´ımu pˇr´ıstupu. Nejdˇr´ıve m´ame mnoˇzinu objekt˚ u ke zpracov´an´ı jako jeden shluk o n poloˇzk´ach. Dˇel´ıme tento shluk na dva menˇs´ı, kter´e jsou opˇet v dan´em ˇcase optim´aln´ı ke krit´eriu. Na konci t´eto metody budou vˇsechny shluky jednoprvkov´e. M´a vysokou sloˇzitost (exponenci´aln´ı), je tedy vhodn´ y a provediteln´ y pouze na mal´e mnoˇzstv´ı prvk˚ u.
2.6.2
Nehierarchick´ e clusterov´ an´ı
Nehierarchick´ y pˇr´ıstup rozkl´ad´a mnoˇzinu prvk˚ u do podmnoˇzin dle dan´eho krit´eria. Vybran´e metody nejdˇr´ıve vytvoˇr´ı poˇca´teˇcn´ı rozklad, kter´ y se d´ale jiˇz nedˇel´ı. Tento rozklad pot´e pouze optimalizujeme a upravujeme. Nevytv´aˇr´ıme tedy stromovou strukturu, n´ ybrˇz K shluk˚ u.
K-Means clustering Tento algoritmus patˇr´ı k jednoduch´ ym zp˚ usob˚ um pˇres zadan´ y poˇcet shluk˚ u. Jedn´a se vˇsak pouze o lok´alnˇe optim´aln´ı ˇreˇsen´ı, protoˇze z´avis´ı na poˇca´teˇcn´ıch podm´ınk´ach. V´ yhodou oproti hierarchick´ ym metod´am je fakt, ˇze dok´aˇze pracovat i s vysok´ ym poˇctem dat. Nevytv´aˇr´ı totiˇz matici podobnosti, ale pracuje pˇr´ımo s daty.
Fuzzy C-Means Tato metoda pˇr´ımo neˇr´ık´a do jak´eho shluku patˇr´ı jak´ y objekt, ale pravdˇepodobnosti, s jak´ ymi do jednotliv´ ych shluk˚ u patˇr´ı. Pomoc´ı t´eto metody tedy m˚ uˇzeme poznat, zda-li je do shluku spr´avnˇe zaˇrazen nebo pˇr´ıpad opaˇcn´ y, zda-li shluk spr´avnˇe reprezentuje.
16
3 N´avrh Cel´ y program bude rozdˇelen do dvou hlavn´ıch ˇca´st´ı. Nejdˇr´ıve mus´ım z´ıskat data pro agreg´ator, pot´e data zpracovat.
Systém pro sběr dat
dodává data
Zpracování
Obr´azek 3.1: Z´akladn´ı n´avrh programu
3.1
Syst´ em pro sbˇ er dat
Prvn´ı ˇca´st´ı cel´eho projektu je sbˇer dat z internetov´ ych RSS kan´al˚ u. C´ılem je uloˇzit data ve vhodn´em a dobˇre ˇciteln´em form´atu, aby se d´ale dala snadno zpracovat. Vzhledem k potˇreb´am agreg´atoru nen´ı nutn´e vyuˇz´ıvat vˇsechny vlastnosti dokumentu, kter´e novinov´a zpr´ava nab´ız´ı. D˚ uleˇzit´ ymi vlastnostmi jsou nadpis, odkaz a popis zpr´avy. Dalˇs´ı voliteln´e vlastnosti, jako jsou GUID, autor a jin´e, potˇreba nejsou. Pro u ´plnost je vˇsak dobr´e je tak´e uloˇzit. V´ ystupem tedy bude datab´aze zpr´av ve form´atu .xml.
Obr´azek 3.2: N´avrh syst´emu pro sbˇer dat
17
N´avrh
3.2
Zpracov´an´ı
Zpracov´ an´ı
Druhou ˇca´st´ı je zpracov´an´ı soubor˚ u a vytvoˇren´ı shluk˚ u (cluster˚ u) podobn´ ych dokument˚ u. Data se nejdˇr´ıve mus´ı pˇredzpracovat pro vyˇsˇs´ı pˇresnost, vypoˇc´ıtat podobnost a vytvoˇrit clustery. Pro lepˇs´ı ovladatelnost bude vytvoˇreno grafick´e uˇzivatelsk´e rozhran´ı. Pˇredzpracov´an´ı dokumentu prob´ıh´a v nˇekolika ˇca´stech (viz Obr´azek 3.3): • XML soubor – soubor bude m´ıt jednoznaˇcnˇe urˇcen´ y form´at. Z´akladn´ım elementem je zprava, kter´a obsahuje subelementy jednoznaˇcnˇe popisuj´ıc´ı zpr´avu. Subelementy jsou datum, odkaz, guid, autor, titulek, popis. • Tokenizace – rozdˇelen´ı souboru na jednotliv´a slova (tzv. tokeny). • Stemming – stemming je jednoduˇsˇs´ı na implementaci neˇz lemmatiˇ je vyv´ıjen zace. Na Katedˇre informatiky a v´ ypoˇcetn´ı techniky ZCU stemmer, kter´ y mohu vyuˇz´ıt v m´e bakal´aˇrsk´e pr´aci. V´ıce o tomto projektu naleznete na [7]. • Pˇ r´ıznakov´ y model – pˇr´ıznakov´ y model bude obsahovat hodnoty TFIDF slova. Je to zp˚ usob, kter´ y zhodnot´ı dokumenty l´epe neˇz jen jejich poˇcet, protoˇze je poˇc´ıt´an pˇres vˇsechna testovac´ı data. Do tr´enovac´ıch dat, kde budu poˇc´ıtat IDF slov, nezahrnuji novˇe staˇzen´a data, kter´a se stanou daty testovac´ımi. • Kosinov´ a podobnost – pro sv˚ uj u ´ˇcel jsem si vybral kosinovou podobnost, kter´a vr´at´ı ˇc´ıslo v intervalu h0, 1i, kde vysok´a hodnota znamen´a vyˇsˇs´ı podobnost slov v dokumentech a naopak n´ızk´a hodnota niˇzˇs´ı podobnost dokument˚ u. • Vytvoˇ ren´ı shluku – rozdˇelen´ı dat do shluk˚ u dle podobnosti mezi nimi a hodnotˇe prahu. Pˇri podobnosti pˇresahuj´ıc´ı zadan´ y prah budou dva soubory uzn´any za podobn´e a vloˇzeny do jednoho clusteru.
18
N´avrh
Zpracov´an´ı
XML SOUBOR
TOKENIZACE
STEMMING
VEKTOROVÝ MODEL KOSINOVÁ PODOBNOST VYTVOŘENÍ SHLUKU Obr´azek 3.3: N´avrh posloupnosti zpracov´an´ı dat do cluster˚ u
19
4 Implementace programu Obˇe ˇca´sti implementuji v objektovˇe orientovan´em jazyce Java.
4.1 4.1.1
Syst´ em pro sbˇ er dat V´ yvojov´ e diagramy
V´ yvojov´e diagramy vyuˇzit´e pˇri implementaci syst´emu. Prvn´ı diagram je zobrazen´ı cel´eho diagramu (viz Obr´azek 4.1), do kter´eho pot´e spadaj´ı dva dalˇs´ı diagramy (viz Obr´azky 4.2 a 4.3).
sber dat z internetu
cteni souboru s odkazy na server
Soubor nenalezen
cteni dat ze souboru
cteni zprav z dynamickeho pole
Obr´azek 4.1: V´ yvojov´ y diagram
20
Implementace programu
Syst´em pro sbˇer dat
cteni dat ze souboru
je dalsi radka v souboru
cti zdrojovy kod stranky
Stranka je RSS kanal
uloz zpravy do dynamickeho pole
Stranka neni RSS kanal
chybova hlaska
neni dalsi radka
Obr´azek 4.2: V´ yvojov´ y diagram prohled´av´an´ı souboru
21
Implementace programu
Syst´em pro sbˇer dat
cteni zprav z dynamickeho pole
je dalsi zprava v poli
precti zpravu z pole
existuje zprava na ulozisti
neexistuje zprava na ulozisti
nacti zdrojovy soubor cele zpravy odstran HTML tagy a reklamy vytvor XML soubor a uloz
neni dalsi zprava
Obr´azek 4.3: V´ yvojov´ y diagram proch´azen´ı dynamick´ ym polem
22
Implementace programu
4.1.2
Syst´em pro sbˇer dat
Tˇ r´ıda Feed.java
Pˇrepravka pro uloˇzen´ı d˚ uleˇzit´ ych atribut˚ u o jednotliv´ ych novinov´ ych zpr´av´ach. Atributy jsou titulek, popis, odkaz na celou zpr´avu, autor, datum publikace a GUID identifikaˇcn´ı ˇc´ıslo zpr´avy. Tyto atributy jsou soukrom´e a pˇr´ıstup k nim je pomoc´ı getter˚ u a setter˚ u. D´ale obsahuje dynamick´e pole zpr´av. public static List feeds = new ArrayList (); Dynamick´e pole slouˇz´ı k uloˇzen´ı vˇsech naˇcten´ ych zpr´av a n´asledn´emu zpracov´an´ı.
4.1.3
Tˇ r´ıda Server.java
Pˇrepravka pro uloˇzen´ı d˚ uleˇzit´ ych atribut˚ u jednotliv´ ych RSS server˚ u. Atributy jsou titulek, popis, odkaz na RSS server, copyright, datum posledn´ı u ´pravy a jazyk, ve kter´em je naps´an. Vˇsechny atributy jsou priv´atn´ı a pˇr´ıstup je pomoc´ı getter˚ u a setter˚ u.
4.1.4
Tˇ r´ıda HTML.java
Tˇr´ıda slouˇz´ı k vyjmut´ı textu z k´odu HTML str´anek, resp. odstranˇen´ı HTML znaˇckovac´ıch tag˚ u ze zdrojov´eho k´odu str´anky. Tˇr´ıda vyuˇz´ıv´a projekt BoilerPipe (v´ıce v [4]) pro odstranˇen´ı HTML tag˚ u z textu a vych´az´ı z nˇej. Obsahuje tyto metody: • public HTML(String link) Konstruktor pro vytvoˇren´ı instance tˇr´ıdy. Instance vytvoˇrena, pokud je url str´anky spr´avnˇe zadan´e. • public String deleteTags() Naˇcte zdrojov´ y k´od z webov´e str´anky, odstran´ı HTML znaˇcky a vr´at´ı jej.
23
Implementace programu
4.1.5
Syst´em pro sbˇer dat
Tˇ r´ıda DataRead.java
Tˇr´ıda zpracov´av´a data ze zdrojov´eho k´odu RSS serveru do form´atovan´eho XML souboru v poˇc´ıtaˇci. Pˇri zpracov´an´ı pln´eho textu zpr´avy vyuˇz´ıv´a tˇr´ıdy HTML.java. Pro z´apis do souboru pouˇz´ıv´a tˇr´ıdu XML.java. Obsahuje tyto metody: • public DataRead (String serverURL) Konstruktor pro vytvoˇren´ı instance tˇr´ıdy. Vytvoˇr´ı se, pokud je url serveru spr´avnˇe zadan´e. • private static String convertFileName(Feed feed) Odstran´ı nepodporovan´e znaky z n´azvu souboru. • private static String getValue(String tag, Element element) Nalezne v dan´em elementu p´arovou znaˇcku a vr´at´ı data mezi nimi, pokud p´arov´a znaˇcka nen´ı obsaˇzena v elementu, vrac´ı pr´azdn´ y ˇretˇezec. • public void serverInformation(Document doc) V´ ypis informac´ı o serveru, ze kter´eho stahujeme data. • public void feedInformation(Document doc) Uloˇzen´ı zpr´avy publikovan´e na serveru do dynamick´e struktury. • public void readFeed() Z´ısk´an´ı publikovan´e zpr´avy ze serveru. Pokud nejsme pˇripojeni k internetu, program vyp´ıˇse chybovou hl´aˇsku a stahov´an´ı ukonˇc´ı. • public static void dataToFile() throws IOException Vytvoˇren´ı XML dokument˚ u s pevnˇe danou strukturou (viz 4.2 ) ze zpr´av, kter´e jeˇstˇe neexistuj´ı na disku ve sloˇzce pro stahov´an´ı.
4.1.6
Tˇ r´ıda ServerRead.java
Tˇr´ıda zpracov´av´a textov´ y soubor s odkazy na RSS servery, vyuˇz´ıv´a tˇr´ıdy DataRead.java. Obsahuje tyto metody: •
public ServerRead(String filename) Konstruktor pro vytvoˇren´ı instance tˇr´ıdy. Vstupem je odkaz na soubor odkazuj´ıc´ı na RSS servery. 24
Implementace programu
Syst´em pro sbˇer dat
• private void readServerFeed(String link) Naˇcten´ı zpr´av z jednoho RSS serveru. • public void readServers() Metoda postupnˇe naˇc´ıt´a odkazy na RSS servery, ukl´ad´a do dynamick´e struktury a ukl´ad´a data na u ´loˇziˇstˇe. Pokud nelze zapsat na disk nov´ y soubor XML.
4.1.7
Tˇ r´ıda Download.java
Hlavn´ı tˇr´ıda projektu. Obsahuje tyto metody: •
public static void main(String [] args) . Hlavn´ı metoda projektu.
4.1.8
Tˇ r´ıda XML.java
Tˇr´ıda pro form´atov´an´ı XML dokumentu. Vyuˇz´ıv´a se se standartn´ımi metodami pro z´apis o souboru. Obsahuje tyto metody: • public String header() Sestaven´ı form´atovan´eho ˇretˇezce pro hlaviˇcku XML dokumentu. • public String startElement() Sestaven´ı form´atovan´eho ˇretˇezce pro zaˇca´tek hlavn´ıho elementu XML dokumentu. •
public String endElement() Sestaven´ı form´atovan´eho ˇretˇezce pro konec hlavn´ıho elementu XML dokumentu.
•
public String element(String name, String content) Sestaven´ı form´atovan´eho ˇretˇezce vnitˇrn´ıho elementu XML dokumentu.
4.1.9
Form´ aty vstupu a v´ ystupu
Vstupem do syst´emu je soubor s odkazy na servery, kter´e jsou ve form´atu RSS (viz V´ ypis 4.1). Kaˇzd´ y odkaz mus´ı b´ yt na nov´e ˇr´adce. 25
Implementace programu
Syst´em pro sbˇer dat
V´ ypis 4.1: Uk´azka vstupn´ıho souboru h t t p : // a k t u a l n e . centrum . c z / f e e d s / r s s / domaci / r e g i o n y / p a r d u b i c k y /? photo=1 h t t p : //www. novinky . c z / r s s 2 / vase−zpravy / j i h o c e s k y −k r a j / c e s k e − budejovice /
V´ ystupem programu jsou soubory se zpr´avami strukturovan´e dle urˇcit´ ych pravidel. Soubor se bude nad´ale snadno zpracov´avat, jelikoˇz m´a pevnˇe danou strukturu (viz V´ ypis 4.2). V´ ypis 4.2: Uk´azka v´ ystupn´ıho strukturovan´eho souboru se zpr´avou 1 5 . 1 2 . 2 0 1 3 h t t p : //www. r o z h l a s . c z / z p r a v a / znakarka−baumrtova−s i −z−me−v− dansku−o dvazi −c t v r t o u −m e d a i l i −−1292768 odkaz> g u i d> a u t o r> < t i t u l e k> Znaka ˇr ka Baumrtov´ a s i z ME v D´a nsku odv ´a ˇz ´ı ˇc t v r t o u medaily t i t u l e k>