Professional Documents
Culture Documents
Matematicko-fyzikální fakulta
DIPLOMOVÁ PRÁCE
2010
Na tomto míst¥ bych cht¥l pod¥kovat svému vedoucímu diplomové práce panu RNDr. Leo
2
Obsah
1 Úvod 6
1.1 Motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Cíle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Související práce 7
3 Pouºité technologie 8
3.1 Parser stránek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.3 SWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1 Gecko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 XULRunner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3 XPCOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.4 JavaXPCOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3.1 Výb¥r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4.1 SOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.2 LVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4.3 Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Ostatní . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 Návrh °e²ení 18
4.1 Vizuální blok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2 Implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2.1 Pozorování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.3 Implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 Problémy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
5 VIPS 34
5.1 Extrakce vizuálního bloku . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 Výsledky 43
6.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7 Záv¥r 47
7.1 Spln¥ní cíl· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8 P°ílohy 49
8.1 Ukázky kongurací . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9 Literatura 55
4
Název práce: Extrakce fakt· z Webu
Autor: Filip Pekárek
Katedra (ústav): Katedra softwarového inºenýrství
Vedoucí diplomové práce: RNDr. Leo Galambo², Ph.D.
e-mail vedoucího: Leo.Galambos@m.cuni.cz
Abstrakt: V p°edloºené práci navrhujeme a testujeme nový postup extrakce fakt· z webu.
P°edloºená metoda bere v úvahu, v£etn¥ DOM stromu webové stránky, také její vizuální
podobu. Základem a první £ástí je extrakce sémantických £ástí stránky pomocí algoritmu
VIPS. Dal²ím krokem je ov¥°ení a p°ípadná úprava získaných dat na základ¥ lokálního
kontextu. Finální £ástí je pomocí získaných a p°ípadn¥ upravených fakt· klasikovat ana-
lyzované webové stránky do p°edem denovaných kategorií. Ur£ování t°íd probíhá pro-
Abstract: In the present work we suggest and test new process of web information ex-
traction. Proposed method consider DOM tree of the web page including it's visual cues.
Basic and the rst part is semantic parts extraction of a page using VIPS algorithm.
Next step is validation and eventual modication of gained information based on the lo-
cal context. Final part is classication of analyzing page into predened classes using got
the classes.
5
1 Úvod
1.1 Motivace
Sou£asný Internet obsahuje nep°eberné, denn¥ rostoucí mnoºství stránek. Podle svých
obsah· se dají °adit do mnoha r·zných kategorií, které se navzájem více £i mén¥ p°e-
krývají. Pat°í sem nap°íklad informativní weby, internetové obchody, servery s r·znými
druhy inzerce, diskuzní fóra, portály poskytující r·zné sluºby a mnoho dal²ích. Jednou
po zadání klí£ových slov do vyhledáva£e musel proklikat n¥kolik nalezených odkaz· nebo
zm¥nit zadaná slova a hledání opakovat, neº na²el skute£n¥ to, co hledal. Je to zp·sobeno
Vezm¥me si nap°íklad klí£ová slova ko²atý strom. Pokud tato slova zadá programá-
tor nebo zahrádká°, budou s velkou pravd¥podobností kaºdý z nich hledat zcela odli²né
informace. Oba v²ak dostanou stejné výsledky a pokud nebudou mít zrovna ²t¥stí, nebo
nezp°esní své dotazy, stráví n¥kolik chvil hledáním toho pro n¥ správného odkazu. Moºnost
ur£it si své role, nebo lépe °e£eno oblast svého zájmu p°ed vlastním hledáním by zp·so-
bilo zp°esn¥ní výsledk·. Tím pádem se uºivateli zkrátí vlastní doba hledání správného
výsledku. Aby takový mechanismus mohl fungovat, pot°eboval by ke své práci existenci
1.2 Cíle
Cílem této práce je pokusit se navrhnout, naimplementovat a otestovat zp·sob, který by
co moºná nejvíce automaticky, bez pot°eby zásahu uºivatele, za°adil konkrétní webovou
stránku do kategorie. Hledaný algoritmus by m¥l krom¥ prosté DOM struktury vyuºívat
také prezenta£ní podobu dokumentu a m¥l by pracovat v n¥kolika krocích. T¥mi jsou
získání a zpracování DOM struktury analyzované stránky, validace získaných dat v rámci
6
2 Související práce
a dále ned¥litelnou jednotku, která ale ne vºdy, reprezentuje jeden sémantický celek.
V¥t²inou obsahuje r·zné £ásti, které se nevztahují k hlavnímu tématu stránky. Nap°íklad
nabídka, dekorativní prvky nebo reklamní panely. Webové stránky £asto obsahují více
na r·zné informa£ní £ásti. [1] B¥hem posledních let se mnoho pozornosti soust°edilo také
na analýzu odkaz·. Jejím základním p°edpokladem je, ºe pokud je odkaz mezi dv¥ma
stránkami, existuje mezi celými stránkami n¥jaký vztah. Ve v¥t²in¥ p°ípad· v²ak odkaz
ze stránky A do stránky B indikuje, ºe pouze m·ºe existovat n¥jaká závislost mezi ur£itou
Nicmén¥ samotný DOM strom stránky není posta£ující k sémantickému d¥lení stránky.
Díky své exibilit¥ mnoho stránek nespl¬uje W3C specikace, coº m·ºe zp·sobit chyby
v DOM strom¥. Nap°íklad to, ºe dva prvky DOM stromu mají spole£ného p°edch·dce
nemusí znamenat, ºe k sob¥ mají sémanticky blíº, neº k jiným prvk·m stromu. [4]
Existuje n¥kolik p°ístup·, jak získat obsahovou strukturu stránky. Mnoho prací bere
v úvahu parametry HTML tag·. Mezi ty d·leºité pat°í nap°íklad <P> (odstavec), <UL>
(list) nebo <TABLE> (tabulka). [23] Jiné algoritmy zaloºené na odkazech uvnit° stánek
pouºívají heuristiku pro rozpoznání jednotlivých záznam· uvnit° stránek. [17] Dal²ím
p°ístupem je FOM (Function-based Object Model), kde kaºdý dál ned¥litelný element
v DOM stromu je nazýván objektem a m·ºe být sou£ástí sloºených objekt·. Funk£ní typ
[10]
Lidské vnímání internetových stránek je £asto jako sloºení n¥kolika r·zných séman-
tických objekt· a ne jako jednoho celku. N¥které výzkumy ukázaly, ºe uºivatelé £asto
o£ekávají ur£ité £ásti stránek dle své funk£nosti (nap°íklad nabídka, reklamní plocha)
V²echny vý²e zmín¥né metody neberou v úvahu vizuální strukturu. Proto je v této
popsán v samostatné kapitole 5 na stran¥ 34. Dále je v této práci pouºita my²lenka lokál-
ního kontextu jednotlivých £ástí stránek. Kone£nou fází je klasikace webových stránek
pomocí neuronových sítí. V²echny £ásti výsledného programu jsou popsány odd¥len¥. Po-
7
3 Pouºité technologie
V této kapitole jsou uvedeny existující nástroje, metody a struktury vyuºívané programem
DataExtraxtor.
stránky je poºadovanou stránku zobrazit a získat její d·leºité vlastnosti. Bylo tedy pot°eba
najít a vybrat technologii, nástroj, který by tento úkol plnil v dostate£né mí°e a poskytoval
pot°ebné rozhraní. V úvahu bylo také pot°eba brát poºadavek, ºe implementace celého
které odpovídá na²im poºadavk·m a pot°ebám. Men²í p°ekáºkou byla p·vodní neznalost
XUL (XML User Interface Language) je XML jazyk od Mozilly pro vývoj funk£n¥
<! DOCTYPE w i n d o w [
<!ENTITY % d t d 1 SYSTEM
" c h r o m e : / / d a t a E x t r a c t o r / l o c a l e / d a t a E x t r a c t o r . d t d ">
%d t d 1 ;
]>
<? x u l − o v e r l a y
h r e f =" c h r o m e : / / d a t a E x t r a c t o r / c o n t e n t /
d a t a E x t r a c t o r O v e r l a y . x u l " ?>
<w i n d o w
x m l n s=" h t t p : / /www . m o z i l l a . o r g / k e y m a s t e r /
i d=" d a t a E x t r a c t o r W i n d o w "
w i d t h=" 6 4 0 "
h e i g h t=" 4 8 0 "
t i t l e ="& d a t a E x t r a c t o r . t i t l e ; "
8
s i z e m o d e=" n o r m a l ">
<h t m l : a p p l e t
i d=" a p p l e t "
a r c h i v e =" j a v a / d a t a E x t r a c t o r . j a r "
c o d e=" D a t a E x t r a c t o r A p p l e t "
h e i g h t=" 0 "
w i d t h=" 0 "
MAYSCRIPT=" y e s ">
</ h t m l : a p p l e t>
</ t o o l b o x>
</ w i n d o w>
Cílem bylo vytvo°it Java aplikaci a zapouzd°it jí pomocí XUL do Firefoxu, který by
byla nová, její pouºití se ukázalo jednoduché a vývoj v ní relativn¥ rychlý. Nedostatkem to-
hoto °e²ení v²ak bylo propojení a £astý p°evod mezi strukturami Java kódu a Javascriptu,
parseru, £i p°ímo webového prohlíºe£e v jazyce Java. B¥hem hledání bylo nalezeno n¥kolik
°e²ení, která po otestování, více £i mén¥, spl¬ovala na²e poºadavky. T¥mito jsou:
• HTML Parser
Jedná se o knihovnu v jazyce Java slouºící k lineárnímu i nesekven£nímu analyzování
otestovaný balík.
• Cobra
Open source Cobra HTML Toolkit obsahuje HTML parser, který m·ºe být pouºit
9
• JTidy
Java verze projektu HTML Tidy umoº¬uje kontrolu syntaxe a zobrazení HTML.
Dá se pouºít jako nástroj pro kontrolu a úpravu HTML obsahujících chyby. Dále
dokumentu pouºitím standardního XML rozhraní. Umí na£íst HTML soubory a v p°í-
pad¥ pot°eby opravit mnoho b¥ºných chyb, které auto°i stránek d¥lají.
• HotSAX
Rychlý, drobný, nevalidující SAX2 analyzátor pro HTML/XML/XHTML. M·ºe být
Kaºdý z vý²e uvedených projekt· bohuºel nemohl být pouºit, protoºe vykazoval n¥-
který z nedostatk·:
Ideálním a vhodným kandidátem se nakonec ukázal nástroj SWT popsaný v dal²í kapitole.
3.1.3 SWT
The Standard Widget Toolkit [16] je open source nástroj v jazyce Java, který posky-
implementace se snaºí pouºívat nativní nástroje kaºdé platformy jak jen to je moºné, £ímº
ního systému.
10
• text (jedno i více °ádkový, stylizovaný)
Práv¥ díky existenci prohlíºe£e, který spl¬uje na²e poºadavky, se komponenty SWT na-
Instance t°ídy Browser implementují webový prohlíºe£. Mimo jiné umoº¬ují uºivateli
razovacího jádra.
import o r g . m o z i l l a . i n t e r f a c e s . nsIDOMDocument ;
// p°istoupí k JavaXPCOM n s I W e b B r o w s e r
nsIWebBrowser wb = ( n s I W e b B r o w s e r ) b r o w s e r . getWebBrowser ( ) ;
// z í s k á DOM dokumentu
nsIDOMDocument d o c u m e n t = wb . getContentDOMWindow ( ) . g e t D o c u m e n t ( ) ;
tace XML, nebo HTML dokumentu. Je to rozhraní zprost°edkující p°ístup, nebo modi-
kaci obsahu, struktury, stylu dokumentu, £i jeho vlastností. Dne²ní denice následovala
p·vodn¥ nejednotné rozhraní, jeº m¥l kaºdý webový prohlíºe£ vlastní a specické. [7] Tato
a nesekven£ní p°ístup. Proto musí implementace pouºívat vnit°ní pam¥´ pro uloºení mi-
DOM pro zobrazení stránek, nicmén¥ scripty Javascriptu ho vyºadují, aby mohly prochá-
R·zné prohlíºe£e pouºívají r·zná renderovací jádra poskytující práv¥ DOM strukturu
stránky. Jedno z konkrétních zobrazovacích jader vyuºívaným na²í aplikací a s ním sou-
11
3.2.1 Gecko
Gecko je název renderovacího jádra vyvinutého projektem Mozilla, které implementuje
W3C DOM standardy. [8] Jeho funkce jsou vyuºívány ke £tení webového obsahu, jako
£i SeaMonkey.
package org . m o z i l l a . i n t e r f a c e s ;
nsIDOMDocumentType getDoctype ( ) ;
nsIDOMDOMImplementation getImplementation ( ) ;
nsIDOMElement getDocumentElement ( ) ;
nsIDOMDocumentFragment createDocumentFragment ( ) ;
nsIDOMProcessingInstruction createProcessingInstruction (
String qualifiedName ) ;
String qualifiedName ) ;
String localName ) ;
3.2.2 XULRunner
XULRunner je b¥hové prost°edí Mozilla, které m·ºe být pouºito pro zavád¥ní XUL a XP-
COM aplikací mezi n¥º pat°í Firefox £i Thunderbird. [22] Poskytuje mechanismus pro in-
libxul, coº je °e²ení, které umoº¬uje vyuºití technologií Mozilla jinými projekty.
12
3.2.3 XPCOM
Jedná se o multiplatformní komponentový objektový model od Mozilly s vlastním de-
3.2.4 JavaXPCOM
Zprost°edkovává komunikaci mezi Java a XPCOM, díky n¥muº m·ºe Java aplikace p°i-
dokumentu. Bylo tedy pot°eba vybrat vhodné atributy dokumentu a nalézt nástroj, který
3.3.1 Výb¥r
Hledané atributy m¥ly nahradit zrakový vjem uºivatele, který by ru£n¥ ur£oval shod-
hosti, rozdíly mezi více r·znými i uvnit° jedné webové stránky. Mezi vybrané a programem
• Velikost
D·leºitá je velikost jednotlivých testovaných men²ích £ástí stránky, respektive její
pom¥r v·£i celkové velikosti stránky. Udává po£et obrazových bod· uvnit° plochy
• Poloha
Kaºdá díl£í £ást stránky m·ºe být ur£ena £ty°mi hranami pravoúhlého £ty°úhelníku.
• Barva pozadí
Je detekována barva pozadí jednotlivých prvk· DOM strom· analyzovaných webo-
vých stránek. Hodnoty jsou bu¤ konkrétní barvy £i klí£ové slovo transparent ur-
• Font textu
Obdobn¥ jako barva pozadí je detekována velikost fontu v obrazových bodech tex-
13
3.3.2 CSS a implementace
Cascading Style Sheets (CSS) je kolekce metod pro grackou úpravu webových stránek.
[6] Kaºdý text má formu, £ímº je my²leno nap°íklad barva a velikost písma, pozadí, za-
rovnání atd., kde CSS je nov¥j²í zp·sob denování t¥chto vlastnosní. Je trochu sloºit¥j²í
neº p·vodní r·zné zp·soby vzniklé b¥hem vývoje jazyka HTML, ale o to uºite£n¥j²í.
Díky CSS je moºné gracké atributy HTML prvk· p°i tvorb¥ stránek nejen deno-
vat, ale pokud to webový prohlíºe£ umoº¬uje, také hodnoty t¥chto vlastností získávat.
P°íkladem je námi pouºité Gecko a konkrétn¥ XPCOM, který obsahuje rozhraní s CSS
import org . m o z i l l a . i n t e r f a c e s . ∗ ;
nsIDOMDocumentView documentView =
( nsIDOMDocumentView ) d o c u m e n t . q u e r y I n t e r f a c e (
nsIDOMDocumentView . NS_IDOMDOCUMENTVIEW_IID ) ;
nsIDOMViewCSS cssView =
( nsIDOMViewCSS ) d o c u m e n t V i e w . g e t D e f a u l t V i e w ( ) . q u e r y I n t e r f a c e (
nsIDOMViewCSS . NS_IDOMVIEWCSS_IID ) ;
// DOM e l e m e n t
nsIDOMElement elem ;
// CSS styl
nsIDOMCSSStyleDeclaration computedStyle ;
// CSS h o d n o t y
nsIDOMCSS2Properties cssProps ;
c o m p u t e d S t y l e = c s s V i e w . g e t C o m p u t e d S t y l e ( elem , "" ) ;
n s I D O M C S S 2 P r o p e r t i e s . NS_IDOMCSS2PROPERTIES_IID ) ;
formálních) neuron·, jejichº obrazem je biologický neuron. Neurony jsou vzájemn¥ pro-
14
Jedná se o ²irokou oblast pouºívanou nejen v informatice. Protoºe v sou£asné dob¥ je
k dispozici mnoho i on-line materiál· s touto problematikou, jsou v této kapitole uvedeny
pouze základní informace o konkrétních technologií, které jsou v této práci pouºity.
3.4.1 SOM
Self -Organizing Maps (Samoorganizující se mapy) £ast¥ji známé po svém stvo°iteli
jako Kohonenovy mapy pat°í mezi základní a nejpopulárn¥j²í neuronové sít¥. P°edstavují
skupinu sítí s u£ením bez u£itele, které ke svému nastavování nepot°ebují ideální vzory.
K u£ení sítí sta£í jen velká skupina reálných signál·, z nichº n¥které mají ur£itou spole£nou
vlastnost nebo naopak zna£né odli²nosti a nemusí k nim být p°i°azeny ºádné ideální u£ící
informace. Ty v jiném typu sítí tzv. u£ení s u£itelem udávají cílový stav, do kterého se
má sí´ svým u£ením dostat. Jejich získání bývá práv¥ nejv¥t²ím problémem.
3.4.2 LVQ
Learning Vector Quantization je ozna£ení pro typ neuronové sít¥. Jedná se o modikaci
Kohonenovy sít¥, která je schopna pracovat s pomocí u£itele. Ve skute£nosti jde o sku-
pinu podobných algoritm· LVQ1, LVQ2, LVQ3 a jejich modikace ur£ených pro denování
t°íd uvnit° prostoru vstupních dat. Tento druh sít¥ p°esn¥ vyhovuje poºadavk·m po-
slední fáze celého procesu fungování programu DataExtractor popsaného v kapitole 4.3
na stran¥ 28.
si uºivatel programu v konguraci denovat kterou z t¥chto t°íd pouºije v£etn¥ hodnot
3.4.3 Weka
Weka je software pro získávání znalostí napsaný v jazyce Java. [19] Dá se spustit jako
samostatná aplikace s grackým rozhraním, nebo jako sou£ást jiného programu, coº byl
Jedná se o nástroj pro práci s r·znými neuronovými sít¥mi ideální pro na²e pouºití.
Jedinou drobnou komplikací byly vý²e zmín¥né algoritmy, které nejsou standardní sou£ástí
programu. e²ením bylo pouºití dal²í knihovny ve form¥ zásuvného modulu do programu
15
<weka>
</ c o m m a n d L i n e>
−S 1.0 −T 0.0 −u n s e t −c l a s s − t e m p o r a r i l y
</ f i l t e r >
< !−− File with training data for neural network . −−>
< t r a i n i n g F i l e > c o n f / weka / e s h o p . a r f f </ t r a i n i n g F i l e >
</ weka>
moºné denovat r·zný po£et posuzovatel·. Na p°edchozím výpise je vid¥t, ºe kaºdý z po-
• Filtr na vstupní data, pokud je pot°eba op¥t pomocí názvu t°ídy, která ho imple-
import weka . c l a s s i f i e r s . C l a s s i f i e r ;
System . a r r a y c o p y ( v a l u e s , 1, options , 0,
C l a s s i f i e r . forName ( v a l u e s [ 0 ] , options );
16
3.5 Ostatní
Následuje vý£et dal²ích zatím nezmín¥ných technologií a knihoven vyuºívaných progra-
mem DataExtractor, které stojí za zmínku a jejich prvotní pouºití není zcela triviální.
U kaºdé z nich je uveden stru£ný popis a p°ípadn¥ odkaz na ukázku uºití. Verze knihoven
v jazyce Java. [2] Podporuje transakce, je velmi jednodu²e pouºitelná ostatními aplikacemi
a svou architekturou podporuje vysoký výkon a soub¥ºnost £tení i zapisování dat. Nabízí
n¥kolik druh· rozhraní a p°ístup· k dat·m. Program DataExtractor vyuºívá prosté uklá-
dání dvojic klí£-hodnota. Dle autor· je bdb-je ideálním nástrojem pro aplikace poºadující
uloºení mimo hranice rela£ní databáze. Pouºití tohoto úloºi²t¥ se opravdu ukázalo jako
tur analyzovaných stránek, protoºe jejich výpo£et je £asov¥ i pam¥´ové náro£ný a zárove¬
jsou opakovan¥ pouºívány v dal²ích £ástech programu. Klí£e i hodnoty jsou ukládány
ve form¥ pole byt·, tudíº v²echny pot°ebné vnit°ní struktury programu mají implemen-
Data jsou uloºena ve dvou tabulkách, protoºe v n¥kterých p°ípadech se nejprve p°istu-
dat·m.
• Základní informace ve tvaru [url ]: [index, rebuild, time ] kde url je adresa analy-
zované stránky, index je klí£ v tabulce s vlastními daty, rebuild je p°íznak, zda data
odpovídají jiº p°estav¥nému vizuálnímu stromu, time je £as uloºení záznamu.
• Vlastní data ve tvaru [index] : [data], kde index je pole osmi byt· a data je pole
byt· r·zné délky obsahující serializovaný vizuální strom. Serialozovány jsou vºdy
základní atributy prvk· stromu, aby se daly op¥t deserializovat, celý strom pouºívat
LOG4J Jedná se o open source projekt mnoha autor· pod zá²titou Apache Software
Foundation. [14] Umoº¬uje p°idání více úrov¬ového logování do program· a jejich ná-
°et¥zce i instance za b¥hu vzniklých výjimek. Pouºití je op¥t velmi jednoduché a skládá
Apache Commons Op¥t projekt pod zá²titou Apache Software Foundation, který
lastí, v²echny v jazyce Java. [5] V programu DataExtraktor je nap°íklad pouºita kompo-
nenta pro zpracování parametr· p°edaných programu z p°íkazové °ádky. Ukázka pouºití
je na stran¥ 50.
17
4 Návrh °e²ení
odpovídá sémantické £ásti stránky z pohledu lidského oka. Ob¥ denice si odpovídají
a jsou popsány v následujících dvou £ástech. Vlastní detekce vizuálních blok· je popsána
v kapitole 5.
Jedním ze vstupních dat algoritmu je DOM strom analyzované webové stránky. List tohoto
stromu, který nem·ºe být dále d¥len je povaºován za základní objekt. Jeden vizuální blok
tvo°ící dle denice elementární prvky výsledné vizuální struktury celé stránky se skládá
z jednoho £i více t¥chto základních objekt·. Z toho plyne d·leºité pozorování, ºe prvky
• Ve výsledné stromové struktu°e vizuálních blok· hodnota potomka není nikdy men²í
V na²í implementaci algoritmu nabývá atribut DoC hodnot od 1 do 10. Protoºe chceme
detekovat dostate£né malé vnit°ní £ásti stránek, námi zvolená hodnota konstanty PDoC
je 9.
4.1.2 Implementace
18
• Základní vnit°ní t°ída Box reprezentuje pravoúhlý £ty°úhelník.
public c l a s s Box {
/∗ ∗ p r a v á hranice £ty°úhelníku ∗/
private i n t right ;
/∗ ∗ velikost £ty°úhelníku ∗/
private i n t size ;
• Dal²í t°ída v hierarchii obsahuje n¥které atributy spole£né s jinou vnit°ní strukturou.
/∗ ∗ D e g r e e of Coherence ( DoC ) ∗/
protected i n t doc = 0;
19
• Nejroz²í°en¥j²í t°ída VisualBlock.
= new V B S i z e C o m p a r a t o r ( ) ;
20
/ ∗ ∗ NN k l a s i f i k o v a n á t°ída ∗/
private double NNClassType = − 1;
/∗ ∗ p r a v d ¥ p o d o b n o s t k l a s i f i k a c e NN ∗/
private double [ ] NNClassDist = null ;
/∗ ∗ tvar ∗/
private i n t shape = − 1;
/∗ ∗ seznam blok· podobné velikosti ∗/
private L i s t <V i s u a l B l o c k > NNSimilarSizeBlocks = null ;
/∗ ∗ seznam blok· s podobnými p ° í m ý m i potomky ∗/
private L i s t <V i s u a l B l o c k > NNSimilarKidsBlocks = null ;
}
°ící sémantickou hierarchickou strukturu stránky. Takto detekované £ásti stránky ov²em
nejsou pro na²e pot°eby dosta£ující, protoºe neberou v úvahu lokální kontext jednotlivých
element·.
Obrázek 1: Vizuální bloky (a) p·vodní detekované algoritmem VIPS (b) upravené dle lo-
kálního kontextu.
21
Lokálním kontextem se rozumí nap°íklad to, ºe název konkrétního produktu zboºí
v katalogu bude také obsaºen v prolinkovaném dokumentu obsahující detailní popis kon-
pozorování je pot°eba detekované bloky zkontrolovat a p°ípadn¥ podle pot°eb upravit, jak
je znázorn¥no na obrázku £íslo 1. Klí£ovou roli v ov¥°ování t¥chto závislostí hrají práv¥
odkazy na stránce. Podmínky, návrhy algoritm· a detaily kone£ného °e²ení jsou popsány
v následujících kapitolách.
4.2.1 Pozorování
Jak jiº bylo zmín¥no vý²e, k hledání závislostí mezi jednotlivými detekovanými bloky
slouºí linky na stránce. B¥hem extrakce vizuálních blok· jsou v²echny odkazy deteko-
vány a vkládány do jedné mnoºiny. Pro na²e ú£ely nejsou v²ak v¥t²inou pot°eba v²echny
linky. Jednotlivé prvky mnoºiny detekovaných link· jsou p°ed svým zpracováním nejprve
• Odkaz musí být v rámci stejné domény jako je doména zpracovávané stránky. e n¥-
které linky sm¥°ují mimo ur£itou doménu v²ak v n¥kterých p°ípadech odhalí aº jejich
• N¥které typy nebo hodnoty link· denovatelné v konguraci jsou povaºovány za ne-
platné. Nap°íklad odkaz tvaru mailto:, nebo odkazy v rámci stejného html doku-
stejným zp·sobem jako stránka p·vodní, tudíº je také p°edloºena algoritmu VIPS a je
zkonstruován strom jejích vizuálních blok·. Nyní je pot°eba oba stromy ur£itým zp·sobem
22
Obrázek 2: Detekované bloky (a) p·vodní stránky (b) stránky odkazované linkem.
Vezm¥me op¥t stejný p°íklad, kdy p·vodní stránka je seznam produkt· a aktuáln¥
Viz. obrázek £íslo 2. Z pozorování b¥hem implementace vyplývá, ºe n¥které £ásti stránky
z·stávají £asto nem¥nné. Typicky to bývají r·zné druhy nabídek £i reklam. Tyto £ásti
stránek jsou pro nás nezajímavé. Proto zde vzniká úkol ony rozdílné £ásti obou strom· vi-
zuálních blok· reprezentujících dané stránky detekovat a dále je zpracovat. Tento problém
se ukázal jako zásadní v celé £ásti ov¥°ování lokálního kontextu blok·, a proto následuje
V²echny detekované stromy mohou mít za listy vizuální bloky odpovídající pouze
• <A> mající bu¤ text, nebo obrázek jako svého potomka a obsahující hodnoty
23
Ostatní prvky stromu bu¤ reprezentují n¥jaký HTML tag, nebo jsou virtuální vizuální
bloky a spojují n¥kolik men²ích prvk· v celek. Problém ur£ení vzájemn¥ r·zných £ástí
dvou stránek komplikuje skute£nost, ºe vizuáln¥ shodné £ásti mohou být v obou stromech
pouze p°ehozené nebo posunuté. I tento p°ípad je pot°eba správn¥ odhalit. V²echny níºe
shodné spole£né prvky, a tudíº po celém pr·chodu z·stanou pouze prvky odli²né. S nimi
• Pokud je nalezena shodnost list· (HTML tag, velikost, obsah), prvek je ode-
brán.
• Pokud shoda není nalezena, pokra£uje hledání v úrovni o jednu vy²²í a niº²í.
Pokud shoda není ani te¤ nalezena, jsou hledány prvky co nejvíce podobné
∗ Pokud shoda nalezena není, je prvek ozna£en jako r·zný a proces de-
Problémem tohoto °e²ení je, ºe pokud by shodné prvky £i £ásti obou strom· byly
v hladinách od sebe r·zných o více jak jednu, nebyly by detekovány. O²et°ení této situace
by jiº dost v¥tvenou implementaci je²t¥ více zkomplikovalo, a proto bylo hledáno jiné
°e²ení.
tu, ºe je pot°eba detekovat v¥t²í shodné kusy, neº samostatné listy. Pokud se totiº n¥jaký
list nachází v obou stránkách, na úpln¥ jiném míst¥ a s jinými sousedy, je detekován
24
chybn¥ jako shodný. Nap°íklad p·vodní stránka obsahuje tabulku produkt· s uvedenou
cenou. Stránka s detailním popisem produktu obsahuje stejnou cenu, ale v úpln¥ jiném
p°ímého mazání se shodné detekované prvky nejprve ozna£ily a aº kdyº byly ozna£eny
I toto °e²ení má v²ak své nedostatky a to konkrétn¥ p°ípad, kdy do jednoho stej-
ného, v¥t²ího bloku na obou stránkách p°ibude jeden men²í r·zný blok. V tomto p°ípad¥
Obrázek 3: Detekované bloky stránky (a) p·vodní (b) odkazované (c) jejich rozdíl.
25
Poslední správn¥ fungující a také implementovaný algoritmus je následující.
listem p·vodního stromu a jeho odpovídajícím listem stromu druhého mohou nastat ná-
sledující vztahy:
vého stromu.
• Poslední p°ípad je, ºe shodný prvek existuje, ale je v·£i p·vodnímu více £í mén¥ po-
sunut. Zde je d·leºitá vlastnost, kterou mají zpracovávané stromy. Výsledné stromy
VIPS algoritmu jsou vºdy upravovány tak, aby ºádný prvek nem¥l pouze jednoho
vlastnost je vyuºita p°i hledání a ov¥°ování shodných prvk·. Výjimku tvo°í odkaz
jinam neº na webovou stránku, nap°íklad na obrázek, kde výsledný strom obsahuje
pouze ko°en a jednoho potomka, vizuální blok odpovídající HTML tagu <IMG>.
Pomocí soused· shodných prvk· nacházejících se v jiných £ástech strom· mohou být
rozpoznány následující p°ípady. Vºdy jde o vztah shodného listu v novém stromu
P°ípad 1 aº 4 odpovídá posunu nebo p°ípadné malé zm¥n¥ uvnit° bloku obsahujícího
hledaný shodný prvek. Pokud byl celý blok pouze posunut, znamená to nalezení
hledaný list obsaºen v bloku p¥ti nejvíce prodávaných produkt·. Na nové stránce
je tento seznam také obsaºen, ale p°ibude p°ed n¥j vizuální blok obsahující seznam
D·leºitý je pro nás pouze p°ípad £íslo 5, který zna£í, ºe shodný list sice existuje, ale
krétního produktu, kde v obou je obsaºen stejný list obsahující HTML TEXT s ce-
nou, ale vºdy s jinými sousedy a také velmi £asto na jiném míst¥ stránky.
atributech:
26
• U list· - velikost a obsah HTML tag·, jeº reprezentují.
toto jméno rovno V), hodnota DoC, protoºe p°idání nebo odebrání potomka toto
£íslo neovlivní. To samé bohuºel neplatí o velikosti bloku, a proto v tomto p°ípad¥
VisualBlock linkPage ) {
if ( isSameDomain ( domain , l i n k )) {
VisualBlock linkPage );
Odkaz na stránce má tvar textu nebo obrázku. P°ítomnost stejného obsahu ve výsled-
ném rozdílovém stromu indikuje existenci lokálního kontextu. Jeho sou£ástí ov²em mohou
být i ostatní sousední prvky v p·vodním stromu, které nejsou odkazy na stejné místo.
• Získá okolní listy aktuáln¥ zpracovávaného odkazu v p·vodní stránce. Testy bylo
okolí denováno jako podstrom prvku v p·vodním stromu, který leºí v polovin¥
listy, jeº je²t¥ nebyly ºádným zp·sobem p°euspo°ádány a zárove¬ bu¤ nejsou od-
kazy, nebo jsou linky sm¥°ující na stejné místo jako aktuáln¥ zpracovávaný odkaz.
Pokud prvek není nalezen, nepat°í do místního kontextu a tím jeho kontrola
kon£í.
Pokud prvek nalezen je, testuje se dále vzájemná poloha ploch, které na stránce
27
∗ Pokud se plochy neprotínají, prvek do kontextu nepat°í a jeho kontrola je
ukon£ena.
odkazu.
chozího zpracování mohly do kontextu zpracovávaných link· p°ibýt nové bloky, £ímº
se zm¥nil rozm¥r plochy kontextu. Zbylé prvky potenciálních soused· jsou se°azeny
podle své vzdálenosti od plochy lokálního kontextu a pokud nyní jiº spl¬ují pod-
mínky, jsou do n¥j p°idány (stanou se sousedy odkazu v p·vodní stránce). Tím
analyzované webové stránky. Pro pot°eby a rozsah této práce byly vybrány dv¥ existující
kategorie, na kterých byl také navrºený algoritmus testován. Z kaºdé kategorii byly vy-
brány vzorky stránek, na jejímº základ¥ byly analyzovány spole£né i pro kaºdou kategorii
specické vlastnosti. Bylo zanalyzováno kolem ²edesáti r·zných stránek z p°ibliºn¥ deseti
vizuální bloky stromu, který je výsledkem p°edchozích dvou £ástí algoritmu. Nejvy²²í
informa£ní hodnotu mají ty vizuální bloky, které nejsou listy a zárove¬ jejich v²echny
potomci listy jsou. Díky p°euspo°ádání v²echny potomci t¥chto prvk· pat°í do stejného
lokálního kontextu a díky vyvaºování celého stromu jsou tyto bloky co moºná nejv¥t²í.
Konkrétní kategorie, testované atributy vizuálních blok· a detaily implementace jsou uve-
blok· a rozpoznávány r·zné prvky, které se vyskytují na v¥t²in¥ stránkách dané katego-
rie. Konkrétní typ testovaných vizuálních blok· a existence specických prvk· na stránce
28
slouºí k ur£ení výsledné kategorie celé stránky. P°i výb¥ru kategorií stránek bylo zohled-
n¥no o£ekávané velké mnoºstí zástupc·. Typy vizuálních blok· detekovaných uvnit° strá-
nek byly denovány tak, aby jejich celkový po£et nebyl p°íli² velký a aby byly vzájemn¥
dost odli²né.
• eshop
Do této kategorie pat°í v²echny internetové obchody s r·zným zam¥°ením.
• informativní weby
Sem °adíme stránky nahrazující denní tisk £i £asopisy, které v ur£itém pravidelném
denované. Bylo proto pot°eba denovat takové vlastnosti t¥chto blok·, na jejímº základ¥
budou mezi sebou porovnávány a zárove¬ budou dostate£n¥ reektovat jejich vizuální
• jméno - odpovídá názvu HTML tagu, který daný blok reprezentuje, nebo má hod-
29
• left - levá horizontální sou°adnice bloku.
• position - £íslo ur£ující polohu bloku na stránce. Plocha stránky je rozd¥lena na de-
v¥t stejných £ástí (t°i °ádky, t°i sloupce) a hodnota udává polohu st°edu bloku
• type - typ bloku, který se odvíjí od druh· jeho potomk· tvo°ící listy a které mohou
být jedním z t¥chto druh·: odkaz, obrázek nebo £istý text. Na základ¥ r·zného po£tu
potomk· a jejich r·zných druh· je denováno t°icet p¥t r·zných typ· blok·.
• similarSize - po£et vizuálních blok· pouºitých ke klasikaci celé stránky, kte°í mají
maximáln¥ o deset procent r·znou velikost neº daný blok.
mající po£et potomk· maximáln¥ o dvacet procent r·zný neº daný blok.
4.3.3 Implementace
V¥t²ina parametr· bloku je aktualizována b¥hem jejich vytvá°ení i následném p°ípadném
upravování. U blok· ozna£ených pro klasikaci stránky jsou dopo£ítány hodnoty zbylých
konkrétní pouºité neuronové sít¥. Tato data byla získána ru£ním ur£ením t°íd v²ech blok·
konkrétní kategorie. Data jsou uloºena v textovém souboru speciálního vlastního formátu
@RELATION eshop
30
@ATTRIBUTE size numeric
@DATA
DIV , 5 , 1 3 0 , 1 3 , 4 7 , 8 3 3 , 1 , 1 1 7 5 , 1 0 8 2 9 , 0 , 8 , 1 , 3 , 2 , 2 , 3
LI , 7 , 7 5 7 , 2 4 , 7 6 1 , 1 5 4 , 2 , 6 6 3 , 3 6 9 6 , 0 , 2 , 1 , 3 5 , 8 , 1 9 , 1
...
První °ádek ur£uje jméno relace, dal²í °ádky za£ínající @ATTRIBUTE denují v p°ed-
chozí £ásti vypsané atributy kaºdého vizuálního bloku v£etn¥ posledního ur£ujícího t°ídu
p°edloºena p°iloºená trénovací data p°ípadn¥ spole£n¥ s denovaným ltrem a sít¥ jsou
• Po extrakci a úprav¥ stromu dle lokálního kontextu jsou vybrány vhodné bloky
pro klasikaci.
• V²echny bloky jsou vloºeny do vnit°ní datové struktury knihovny Weka jako kdyby
• Tato data jsou p°edána v²em instancím neuronových sítí, kde kaºdá z nich ur£í prav-
• Pokud by existovaly dv¥ shodné vít¥zné t°ídy, rozhodne procento po£tu nalezených
shodných prvk·.
31
• Výsledky jsou zobrazeny v záloºce Classify results a uloºeny do textového souboru
s p°íponou dec (DataExtractor Classifycation).
4.4 Problémy
B¥hem návrhu i samotné implementace bylo nutné °e²it n¥kolik mén¥ £i více závaºných
• HTML
Jak jiº bylo zmín¥no v práci, díky rozmanitosti HTML existují stránky, které ne-
spl¬ují W3C standardy. Prvky stránek, které nespl¬ovaly tato doporu£ení, byly sice
detekovány, ale nebylo jich mnoho a £asto se jednalo o drobné £ásti, a proto nezp·-
tagem </HTML> existoval je²t¥ textový prvek. Jeho vizuální atributy nebyly de-
byl.
Dal²ím problémem byly prvky viditelné pouze p°i zapnutém Javascriptu. Nap°íklad
reklamní posuvný panel, který byl viditelný, p°esto zakrytý jinou £ástí stránky.
• Javascript
Prvním problémem byly aktivní prvky na stránkách b¥hem p°estavování vizuálního
stromu. Pokud byl na stránce nap°íklad n¥jaký modální dialog, p°eru²il se celý
b¥hem této fáze programu vypnut. Po jejím skon£ení je Javascript op¥t zapnut, aby
Tyto stránky naopak pot°ebují mít Javascript nutn¥ zapnutý. Je proto moºné je
ciáln¥.
• Omezení server·
Nap°íklad server anonce.cz obsahuje omezení na intenzitu p°ístupu z jedné IP ad-
resy. Proto byla v konguraci denována hodnota, která ur£uje timeout mezi jed-
32
• Lokální kontext
B¥hem kontroly prvk· dle lokálního kontextu bylo pot°eba °e²it problém s vyhle-
dáváním textových °et¥zc·. Byly pot°eba denovat dva typy hledání, na úplnou
odkaz·.
Dal²ím problémem byly malé, £asto opakující se prvky na stránce. Nap°íklad odkaz
£ástí stránek a je vybírán vºdy pouze ten nejbliº²í prvek aktuáln¥ zpracovávaného
odkazu.
• Klasikace
Jednotlivé vnit°ní t°ídy vizuálních blok· byly sice denovány tak, aby byly co nejlépe
vání testovacích dat objevily takové bloky, které nebylo moºné jednozna£n¥ za°adit
33
5 VIPS
VIPS (Vision-based Page Segmentation) algoritmus, jak jiº ze svého názvu napovídá, je
postup, jak analyzovat obsah stránek na základ¥ jejich vizuální podoby. Jedná se o au-
tomatickou shora dol· dekompozici obsahu webové stránky simulující lidské chápání jed-
sémantickou strukturu stránky, kde kaºdý prvek odpovídá vizuálnímu bloku. Jednotlivému
Algoritmus má t°i £ásti. V první detekuje v²echny vhodné vizuální bloky z DOM struk-
tury stránky a její vizuální vlastnosti. V druhé se snaºí najít vizuální separátory, coº jsou
vertikální nebo horizontální úseky na stránce bez detekovaných blok·. T°etí a poslední
Tyto t°i kroky popisují jednu iteraci algoritmu. Celá stránka je v první fázi rozd¥lena
do n¥kolika velkých blok·, které jsou následn¥ stejných zp·sobem dále d¥leny. Algoritmus
postupuje výsledným stromem shora dol· a dokud je nov¥ vzniklý blok moºno dále extra-
34
hovat, je zpracován rekurzivn¥ stejným zp·sobem. Zda je moºno nov¥ vzniklý blok dále
zpracovat ur£ují jeho vlastnosti, mezi které pat°í jeho souvislost ur£ená hodnotou DoC.
V kaºdé iteraci je pouºita odpovídající £ást DOM stromu stránky a její vizuální vlast-
nosti poskytující browser. Nap°íklad HTML tag <BODY> pro celou stránku. Proces
za£íná z ko°ene, prochází v²echny prvky a testuje, zda spl¬ují podmínky pro vytvo°ení
vizuálního bloku. Pokud ne, zpracují se dále stejným zp·sobem jeho d¥ti. Pokud ano, je
na základ¥ vizuálních vlastností spo£ítána jeho DoC hodnota. V²echny detekované bloky
jsou vloºeny do jedné mnoºiny platné pouze v dané iteraci. Mezi v²emi prvky této mno-
ºiny jsou detekovány separátory. Na základ¥ blok·, jeº jednotliví separáto°i odd¥lují, je
kaºdému spo£ítána vlastní váha. Pomocí separátor· a detekovaných blok· mezi nimi je vy-
tvo°eno sémantické rozloºení stránky. V²echny bloky mnoºiny jsou zkontrolovány a pokud
nespl¬ují dané poºadavky, jsou dále zpracovány dal²í shodnou iterací algoritmu. Celkový
v²ech detekovaných blok· je zobrazena výsledná struktura stránky. Jeden z díl£ích stav·
35
5.1 Extrakce vizuálního bloku
Cílem této £ásti algoritmu je detekovat v²echny vizuální bloky v odpovídající £ásti DOM
stromu. Principieln¥ m·ºe kaºdý prvek DOM stromu tvo°it vizuální blok. Ve skute£nosti
v²ak n¥které HTML tagy jako jsou nap°íklad <TABLE> <P> <DIV>
, , slouºí spí²e
vizuální bloky. Díky úpravám ve výsledné struktu°e se ov²em v na²em p°ípad¥ stává, ºe
i takovéto HTML tagy tvo°í blok. P·vodní výpo£et algoritmu to v²ak nijak neovliv¬uje.
Na základ¥ prvku DOM stromu, jeº reprezentuje vizuální blok s jeho vlastnostmi je
ur£ena hodnota atributu DoC. Tento proces znázorn¥ný pod odstavcem je opakován do té
if ( t o D i v i d e ( node ) ) {
} else {
K ur£ení, zda m·ºe být prvek DOM stromu dále rozd¥len, slouºí následující úvahy:
• Vlastnosti DOM prvku - jako jsou HTML tag, barva pozadí, tvar a velikost.
• Vlastnosti d¥tí DOM prvku. Barva jejich pozadí, velikost, po£et a jejich r·znorodost.
Podle HTML specikace jsou prvky DOM stromu klasikovány do dvou kategorií:
• Inline prvek: DOM prvek obsahující textové HTML tagy ovliv¬ující vzhled textu.
Jeho aplikací nemusí vzniknout nový °ádek. Tyto tagy jsou denovány v kongu-
ra£ním souboru.
< d a t a E x t r a c t o r>
< t a g s>
< i n l i n e >B , BIG , CITE , CODE, DEL , DFN , EM, FONT , . . . </ i n l i n e >
</ t a g s>
</ d a t a E x t r a c t o r>
36
• Line-break prvek: obsahuje jiný neº inline HTML tag.
• Validní prvek: viditelný v prohlíºe£i, jeho ²í°ka ani vý²ka nejsou rovny nule, nebo
• Textový prvek: odpovídá £istému textu, neobsahuje ºádný HTML tag. Zpracová-
inline prvek, jehoº d¥ti jsou pouze textové prvky a virtuáln¥ textové prvky.
• HTML tag
na stránce, proto preferujeme rozd¥lení DOM prvku, který tento tag obsahuje
• barva: Pokud barva pozadí jednoho z p°ímých potomk· prvku je jiná neº jeho
vlastní, d¥líme ho a sou£asn¥ barevn¥ odli²ný potomek v této iteraci algoritmu není
dále zpracován.
• vlastní text: Pokud v¥t²ina p°ímých potomk· prvku jsou textové nebo virtuáln¥
textové, snaºíme se ho dále ned¥lit.
• velikost: Denujeme relativní mezní hodnotu prvku (v·£i celé nebo pouze £ásti
stránky) li²ící se pro r·zné HTML tagy. Pokud je relativní velikost prvku men²í
• vlastní pravidla: Pro na²e pot°eby byly nadenovány HTML tagy, na kterých se
Na základ¥ t¥chto poznatk· m·ºeme vytvo°it tabulku heuristik pro posuzování, zda
jednotlivý DOM prvek bude nebo nebude v jednotlivé iteraci algoritmu dále d¥len. Pokud
nebude, je vytvo°en vizuální blok, spo£ítána jeho DoC hodnota a blok vloºen do aktuální
37
íslo Popis pravidla
1 Textový prvek nebude d¥len a hodnota DoC jeho bloku je nastavena na 10.
2 Pokud se nejedná o textový prvek a nemá ºádné potomky, je smazán.
3 Pokud má prvek pouze jednoho validního potomka a není textový, je rozd¥len.
4 Pokud se jedná o ko°en práv¥ zpracovávaného podstromu, je rozd¥len. Výjimku
5 Pokud v²ichni p°ímí potomci prvku jsou textové nebo virtuáln¥ textové
prvky, není d¥len. Pokud je font v²ech potomk· stejný, je hodnota DoC jeho
8 Pokud sou£et velikostí v²ech p°ímých potomk· je v¥t²í neº jeho vlastní
velikost, je rozd¥len.
z hodnot 5 aº 8.
11 Pokud relativní velikost nejv¥t²ího p°ímého potomka prvku je men²í neº mezní
hodnota, není d¥len. DoC nov¥ vzniklého bloku je na základ¥ HTML tagu a
13 Prvek je rozd¥len.
14 Prvek není d¥len. DoC nov¥ vzniklého bloku je na základ¥ HTML tagu a
38
Pro r·zné HTML tagy jsou aplikována r·zná pravidla:
tag \ pravidlo 1 2 3 4 5 6 7 8 9 10 11 12 13 14
textový prvek !
inline prvek ! ! ! !!!! !! !
<TABLE> ! ! ! ! ! !
<TR> ! ! ! !! ! !
<TD> ! ! ! ! !!! !
<P> ! ! ! !!!! !! !
Ostatní tagy ! ! ! ! !! !! !
Tabulka 2: Kontrolování pravidel dle HTML tag·
do jedné mnoºiny. Po dokon£ení extrakce vizuálních blok· p°ichází druhá fáze a tou je
stránky, do kterého nezasahuje ani jeden z vizuálních blok· mnoºiny. Tyto £ásti webové
stránky jsou vhodnými místy pro odd¥lení r·zných sématických £ástí. Separátor je de-
nován dvojicí £ísel ur£ujících za£átek a konec úseku. Dále je ur£ováno, zda se jedná
o horizontální nebo vertikální £ást stránky. Poslední d·leºitá vlastnost separátoru je jeho
váha, která je stanovena na základ¥ velikosti úseku a vlastnostech blok·, jeº daný sepa-
rátor odd¥luje.
prvky. Jeden horizontální a jeden vertikální separátor s rozm¥ry p°es celou oblast
39
• Ve t°etím kroku jsou odstran¥ny £ty°i okrajové separátory aktuální oblasti tvo°ené
• Ve £tvrtém a posledním kroku jsou vybrány pouze horizontální nebo vertikální se-
blok· zbude pouze jeden typ. Pokud se tak nestane, jsou vybrány separátory s ta-
k sémantickému rozd¥lení £ástí stránky, jsou jejich váhy nastaveny hlavn¥ na základ¥
blok·, které od sebe odd¥lují a také dle jejich vlastností. K ur£ení vah jsou pouºívána
následující pravidla:
• ím vy²²í vzdálenost mezi bloky na obou stranách (velikost separátoru), tím vy²²í
jeho váha. Konkrétn¥ se po£áte£ní váha rovná £íslu, ur£ujícího kolikrát se konstanta
krycí, jeho váha se zv¥t²uje. Tyto tagy nejsou zpracovávány jako ostatní tagy, ale
• Pokud je barva pozadí blok· na r·zných stranách separátoru odli²ná, jeho váha je
vy²²í.
separátorem. Konkrétn¥ - pokud velikost fontu bloku nad je men²í neº velikost
kud jsou bloky podobné, nap°íklad oba £isté texty, je jeho váha sníºena.
40
5.3 Konstrukce vizuálního stromu
Poslední fází jedné iterace algoritmu VIPS je vytvo°ení sémantických vizuálních blok·
podle jejich vah od nejmen²í. V²echny vizuální bloky mezi p°ímo sousedícími separátory
stejné váhy tvo°í nový vizuální blok. Stejným zp·sobem pokra£ujeme aº k separátor·m
s nejv¥t²í váhou. DoC nov¥ vzniklých blok· je nejvy²²í váha separátoru zpracovaného
v této iteraci.
váhu jedna a ostatní váhu nula. Nejprve projdeme první dva krajní separátory s váhou
nula a bloky kolem nich vytvo°í nový blok, jeº se stane zárove¬ sousedním blokem se-
parátoru s vahou jedna. Poté zpracujeme dal²í dva krajní separátory s váhou nula, kde
op¥t bloky kolem nich vytvo°í jeden nový blok, který se také stane sousedním separátoru
s váhou jedna. Jelikoº uº nezbývá ºádný dal²í separátor váhy nula, p°istoupí algoritmus
ke zpracování dal²ího separátoru v °ad¥ a tím je poslední zbylý s váhou jedna. Ten uº má
41
v²ak kolem sebe pouze dva nov¥ vzniklé vizuální bloky, které spojí dohromady a vytvo°í
jeden velký.
prázdná. V takovém p°ípad¥ v²echny nalezené vizuální bloky tvo°í jeden velký celek.
Poté jsou zkontrolovány v²echny vizuální bloky, jeº jsou listy. Pokud nejsou dostate£n¥
malé, nespl¬ují podmínky hodnoty DoC, a nebo pravidla ur£í, ºe se mají dále d¥lit, jsou
dále zpracovány dal²í iterací algoritmu a je stejným zp·sobem vytvo°en podstrom vizuáln¥
sémantických blok·. Po detekci v²ech vizuálních blok· je vytvo°en vizuální strom celé
stránky.
Vý²e popsaný VIPS algoritmus kombinuje DOM strukturu stránky a její vizuální
strukturu stránky, která odpovídá lidskému vnímání. Díky p°ímo£arému postupu shora
dol· DOM stromem p°i zpracování je také algoritmus velmi ú£inný a rychlý. Výsledky
42
6 Výsledky
6.1 Software
• Li²ta s tla£ítky a polem pro zadávání URL, která obsahuje zásadní tla£ítka pro ovlá-
dání celého programu.
• Okno integrovaného prohlíºe£e, kde jsou stránky a detekované vizuální bloky zob-
razovány.
sledky klasikace.
43
Javascriptu v okn¥ prohlíºe£e a ten bohuºel ne na v²ech testovaných stránkách funguje
ºeného DVD. Na n¥m jsou také uvedy základní návod, inicializa£ní a spou²t¥cí skripty
programu.
práci prob¥hlo pomocí klasikace padesáti r·zných webových stránek kaºdé kategorie.
vybrané detekované vizuální bloky. Kaºdý z denovaných posuzovatel· tyto bloky za-
Úsp¥²nost dosaºená v jakémkoli úkolu klasikace a £as u£ení sít¥, ve kterém jsou
hodnota,
u£ení.
Nejlep²í výsledky byly dosaºeny se sítí typu LVQ3 s úsp¥²ností 64 a 72 procent pro katego-
rii eshop a informa£ní. Následují pouºité nastavení sít¥ a ukázka procentuální úsp¥²nosti
n¥kterých z testovaných sítí. Detailní tabulka konkrétních hodnot nejlep²ích výsledk· je
uvedena na stran¥ 50. Selhání ostatních sítí, jak je vid¥t na obrázku 9, bylo pravd¥podobn¥
-T 0.0 -unset-class-temporarily
44
Obrázek 9: Ukázka výsledky test· t°í typ· sítí se stejnými parametry
Na dosaºené výsledky m¥ly z velké £ásti vliv trénovací data, která byla pro ú£ely
testování získána. Jejich hodnoty jsou uvedeny na následujících dvou obrázcích. Je na nich
vid¥t, ºe rozloºení hodnot v¥t²iny atribut· je u obou t°íd velmi podobné. Zajímavé je
nap°íklad to, ºe v kategorii eshop nebyl detekován ani jeden blok ur£ený ke klasikaci,
který by m¥l tvar £tverce a trochu více rovnom¥rn¥j²í zastoupení r·zných HTML tag·.
45
Obrázek 11: Rozloºení trénovacích dat pro informa£ní kategorii
46
7 Záv¥r
fakt· z webových stránek s pouºitím specických vlastností. V první £ásti procesu imple-
mentovaný algoritmus VIPS vyuºívá DOM strukturu a vizuální podobu dokumentu, na je-
jímº základ¥ detekuje vnit°ní vizuální bloky. V dal²í £ásti je na základ¥ lokálního kontextu
ální strom aktuáln¥ analyzované stránky. V poslední fázi jsou získaná data p°edloºena
Problém klasikace je velmi ²iroký a sloºitý. Neexistuje p°esný vzorec ur£ení konkrét-
ního typu sít¥ a jejích parametr· dle problému, který by m¥la °e²it. Zárove¬ neexistuje
p°esná tabulka s výsledky, jaké by jednotlivé sít¥ m¥ly dosahovat. Vºdy je tedy ponecháno
na °e²iteli konkrétního problému nalezení optimální sít¥ a jejího nastavení. Proto i v na-
²em p°ípad¥ byly stejné testy provedeny na zhruba dvaceti r·zných typech sítí s r·znými
inicializa£ními parametry.
slibn¥, o padesát procent úsp¥²n¥j²í neº ostatní, se projevila sí´ typu LVQ3. Díky ní se
poda°ilo pom¥rn¥ úsp¥²n¥ odhadovat kategorie testovaných stránek, coº bylo primárním
• Sou£asný internet nabízí stránky mnoha kategorií. Dalo by se pokra£ovat bu¤ v na-
vrºeném postupu, analyzovat a denovat vnit°ní typy dal²ích t°íd a ur£it pro n¥
• Za úvahu a dal²í práci by také stála my²lenka zm¥nit jeden ze základních p°edpo-
uvedeno v [24].
47
• P°estoºe konkrétní pouºité typy neuronových sítí p°edstavující posuzovatele jsou
nejvhodn¥j²í pro ú£el klasikace, dosáhlo se pr·m¥rné úsp¥²nosti lehce pod sedm-
²ení.
vyuºíval stejné úloºi²t¥. Vzájemným spojením t¥chto t°í technologií by vznikl velmi
48
8 P°ílohy
t°ídy, kde chceme logovat a pak uº jen sta£í volat metody této prom¥nné.
public c l a s s V i s u a l B l o c k extends I t e m {
s t a t i c f i n a l L o g g e r LOG = L o g g e r . g e t L o g g e r ( V i s u a l B l o c k . c l a s s ) ;
...
novat r·zné výstupy logování (konzole, soubor) a pro kaºdou t°ídu zvlá²´ hladina
výpis·.
</ l a y o u t>
</ a p p e n d e r>
</ l o g g e r>
</ l o g g e r>
< r o o t>
49
<p r i o r i t y value =" d e b u g " />
</ r o o t>
</ l o g 4 j : c o n f i g u r a t i o n >
Apache Commons
System . e x i t ( 0 ) ;
eshop info
czechcomputer.cz 67 76
czechcomputer.cz/product.jsp?artno=78246 65 73
alza.cz 63 73
alza.cz/gracke-karty/dle-vyuziti/ kancelarske/18851958.htm 71 69
alza.cz/sapphire-hd-4350-256mb-d112974.htm 84 83
bike-eshop.cz 71 70
bike-eshop.cz/modely-2016/horske-kolo-mongoose-tyax-comp-disc-red-2009 68 75
bike-eshop.cz/modely-2024 64 70
interlink.tsbohemia.cz/?cls=spresenttrees&strid=7934 69 65
interlink.tsbohemia.cz/?cls=stoitem&stiid=87392 67 81
50
barbone.cz/index.asp?t=PC&dealer= &strsort=ZCDXYU
64 74
&str=0&sort=1&vyrobce=&vypis=2&pg= &sklad=-1000
barbone.cz/index.asp?stiid=79831&strsort=ZCD3HF&str=0&tit=FLASH
65 72
DISK%2016GB%20Kingston%20DataTraveler%20100%20Black
nakupnicentrum.cz/hodinky/boccia-titanium 60 73
nakupnicentrum.cz/hodinky/dunlop-ight-dun42-light-blue.html 60 72
nakupnicentrum.cz 60 70
tenis-eshop.cz 64 62
tenis-eshop.cz/nahravaci-stroje/jhl-tns-3-d 65 63
tenis-eshop.cz/tenisove-rakety 63 62
baby-eshop.cz 68 67
baby-eshop.cz/hraci-deky-1 65 64
baby-eshop.cz/hraci-deky/deka-s-hrazdou-chytracek-taf-toys-1 66 65
tness-eshop.cz 69 65
tness-eshop.cz/tekute-spalovace-tuku/l-carnitin-tness-25000-1-1-zdarma 73 70
tness-eshop.cz/kreatin 70 62
aukro.cz/item1120274142_original _pioneer_cd_menic_renault.html 65 80
aukro.cz/20387_bila_technika.html 56 95
aukro.cz/showcat.php?id=8528 57 67
kontaktni-cocky-levne.cz/detail-41-1-day-acuvue.html 70 74
kontaktni-cocky-levne.cz/k-7-ciba-vision.html 65 59
kontaktni-cocky-levne.cz/kontaktni-cocky-4-obchodni-podminky.html 68 60
ceskatelevize.cz/eshop 61 59
ceskatelevize.cz/eshop/cd/detske 69 57
ceskatelevize.cz/eshop/99-maxipes-k-divoke-sny-maxipsa-ka.html 65 60
prozdravi.cz 53 52
prozdravi.cz/cinska-medicina 55 51
prozdravi.cz/emperor-star-emperor-s-formula-120-tbl.html 53 57
obchod-adidas.cz 56 43
obchod-adidas.cz/basketbal/c-4 53 48
obchod-adidas.cz/pro-model-08-team-c/d-142783-c-4 53 48
eshop.petr-cech.cz 64 48
eshop.petr-cech.cz/mice-7 66 54
eshop.petr-cech.cz/mice-7/mice-adidas/mic-adidas-nale-madrid-capitano-mini.html 60 57
alkohol-tester.cz 59 57
alkohol-tester.cz/alkohol-tester-al-9000c 63 59
alkohol-tester.cz/alkoholtester/detektory-alkoholu-prehled 56 54
eroticcity.cz/e-shop 59 54
51
eroticcity.cz/e-shop/zdravi-a-krasa 53 60
eroticcity.cz/e-shop/masazni-prostredek-warmup-strawberry-548.html 62 51
shop-playboy.cz 50 56
shop-playboy.cz/shop-playboy/eshop/8-1-Ksiltovky/0/5/19-Ksiltovka-Playboy 52 51
Tabulka 3: Výsledky test· stránek kategorie eshop
eshop info
idnes.cz 58 62
zpravy.idnes.cz 59 63
zpravy.idnes.cz/nejde-vam-o-trest-ale-o-muj-majetek-a-duverne-informace-vzkazal-cechum-
56 61
pitr-15z-/krimi.asp?c=A100730_120024_krimi_js
root.cz 59 61
root.cz/zpravicky 56 60
root.cz/clanky/recenze-tablet-smartq-v7-se-tremi-operacnimi-systemy/ 62 63
sedmicka.cz 52 61
sedmicka.cz/zdar-nad-sazavou/clanek?id=198820 51 59
sedmicka.cz/zdar-nad-sazavou/rubrika/sport 51 60
magistrat.praha-mesto.cz 51 60
kultura.praha-mesto.cz 50 60
sport.cz 58 61
fotbal.sport.cz/fotbal/ostatni/172782-beckham-se-zminil-o-legu-a-prodej-stavebnice-stoupl-
54 57
o-663-procent.html
fotbal.sport.cz/forbal 58 59
aktualne.centrum.cz 53 55
aktualne.centrum.cz/domaci/zivot-v-cesku/clanek.phtml?id=672445 55 53
aktualne.centrum.cz/kultura/ 54 58
lidovky.cz 56 57
byznys.lidovky.cz/ve-varech-sidi-polovina-baru-a-restauraci-hotely-uz-berou-jenom-eura-
59 54
11y-/moje-penize.asp?c=A100709_100517_moje-penize_nev
lidovky.cz/ln_kultura.asp 56 53
astro.cz/clanek 57 54
astro.cz/autor/71 63 50
novinky.cz 49 57
novinky.cz/kariera/ 49 56
52
novinky.cz/kariera/205075-europass-pomaha-zajemcum-o-praci-a-studium-v-zahranici-uz-
63 64
pet-let.html
blisty.cz/ 66 68
blisty.cz/2010/7/9/art53406.html 62 51
chrudimsky.denik.cz 51 55
denik.cz/ze_sveta/agenti-vymeneni-spionazni-skandal-skoncil20100709.html 49 56
denik.cz/ekonomika/ 51 52
ihned.cz/ 49 52
domaci.ihned.cz/c1-45354830-vadi-nevadi-odbornici-diskutuji-o-toleranci-jednoho-piva-pred-
48 54
jizdou
ekonomika.ihned.cz/ 51 52
pcworld.cz/ 51 53
pcworld.cz/internet 49 52
pcworld.cz/internet/tip-jak-co-nejlepe-ochranit-svou-rodinu-na-internetu-11322 49 52
lupa.cz/ 53 50
lupa.cz/clanky/google-chrome-zrychluje-vyvojovy-cyklus/ 53 54
letectvi.cz/letectvi 55 46
letectvi.cz/letectvi/Topic8.html 53 47
e-brno.eu/ 52 49
pardubice.cz/ 55 52
pardubice.cz/zpravodaj/na-pondln-bruslen-v-pardubicch-pijte-v-modrm/1142752129/ 53 54
ordinace.cz/ 49 50
ordinace.cz/clanek/pripravte-svou-kuzi-na-slunicko/ 55 54
bagry.cz/ 56 46
bagry.cz/cze/clanky/fotoreportaze/historicke_jadro_brna_opet_kulisami
52 46
_pro_stavebni_stroje_tentokrat_jostova_a_okoli
diit.cz/ 51 52
diit.cz/clanek/test-samsung-nx10-zrcadlovka-bez-zrcatka/36639/ 51 53
reex.cz/ 50 51
reex.cz/clanek/pisete-nam/38017/reakce-repka-neni-sam-kdo-ma-blikance.html 66 79
Tabulka 4: Výsledky test· stránek informa£ní kategorie
53
8.3 P°iloºený digitální materiál
DVD s diplomovou prací v pdf, spustitelnou aplikací, zdrojovými kódy a dokumentací je
Obsah DVD
Adresá° Popis
JavaDoc programu
kongurace £i instalace
54
9 Literatura
[1] Adelberg B. Nodose: A tool for semiautomatically extracting structured and semis-
[3] Deng Cai, Shipeng Yu, Ji-Rong Wen, and Wei-Ying Ma. Vips: a Vision-based Page
[10] Chen J, Zhou B, Shi J, Zhang H J, and Wu Q. Function-based Object Model Towards
[13] Bernard M L. Criteria for optimal web design (designing for usability). 2002.
55
[23] Diao Y, Lu H, Chen S, and Tian Z. Towardlearningbased Web Query Processing.
[24] Yanhong Zhai and Bing Liu. Extracting Web Data Using Instance-Based Learning.
2006.
56