ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ EXTRAKCE HLAVN´IHO TEXTU Z WEBOVYCH ˚ DOKUMENTU
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2014
´ DANIEL MROZEK
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
´ EXTRAKCE HLAVN´IHO TEXTU Z WEBOVYCH ˚ DOKUMENTU MAIN TEXT EXTRACTION FROM WEB DOCUMENTS
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
´ DANIEL MROZEK
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2014
Ing. VLADIM´IR BART´IK, Ph.D.,
Abstrakt Tato pr´ ace se zab´ yv´ a extrakc´ı hlavn´ıho textu z webov´ ych dokument˚ u ve form´atu HTML. Jsou zde pops´ any jiˇz pouˇzit´e metody a jejich rozdˇelen´ı. Praktick´a ˇc´ast se pak zab´ yv´ a n´avrhem algoritmu pro detekci hlavn´ıho textu v HTML str´ank´ach zaloˇzen´em na anal´ yze pˇredevˇs´ım textov´ ych rys˚ u str´ anky v kombinaci s vlastnostmi zaloˇzen´ ych na pozici v dokumentu. V´ ysledn´ a klasifikace je ˇreˇsena pomoc´ı v´ıcevrstv´e perceptonov´e s´ıtˇe. Je zde rovnˇeˇz pops´ana implementace navrhnut´eho algoritmu, postup pˇri testov´an´ı a prezentace zjiˇstˇen´ ych v´ ysledk˚ u.
Abstract This thesis deals with the main text extraction from the web documents in HTML format. It describes some methods that are already used and their separation. The goal of the practical part is to propose an algorithm for main text detection in HTML pages using primarily text features in combination with position features. Block classification is solved by multilayer perceptron. It also describes implementation of the proposed algorithm, the testing procedure and presentation of the obtained results.
Kl´ıˇ cov´ a slova extrakce, dolov´ an´ı, hlavn´ı obsah, textov´e rysy, HTML, MLP, umˇel´a neuronov´a s´ıt’
Keywords extraction, mining, main text, text features, HTML, MLP, artificial neural network
Citace Daniel Mr´ ozek: Extrakce hlavn´ıho textu z webov´ ych dokument˚ u, bakal´ aˇrsk´ a pr´ ace, Brno, FIT VUT v Brnˇe, 2014
Extrakce hlavn´ıho textu z webov´ ych dokument˚ u Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana . . . ....................... Daniel Mr´ozek 31. ˇcervence 2014
Podˇ ekov´ an´ı Dˇekuji vedouc´ımu pr´ ace Ing. Vladim´ırovi Bart´ıkovi, Ph.D. za trpˇelivost a vstˇr´ıcnost. Dˇekuji tak´e sv´ ym bl´ızk´ ym a pˇr´ atel˚ um za podporu.
c Daniel Mr´
ozek, 2014. Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
3
2 Existuj´ıc´ı n´ astroje, pˇ r´ıstupy a neuronov´ e s´ıtˇ e 2.1 Dolov´ an´ı textu . . . . . . . . . . . . . . . . . . . . . . . 2.2 Rozdˇelen´ı metod . . . . . . . . . . . . . . . . . . . . . . 2.3 Metody zaloˇzen´e na vizu´aln´ıch vlastnostech dokumentu 2.4 Metody pracuj´ıc´ı na u ´rovn´ı DOM . . . . . . . . . . . . . 2.5 Umˇel´ a neuronov´ a s´ıt’ . . . . . . . . . . . . . . . . . . . . 3 N´ avrh algoritmu 3.1 Pˇredzpracov´ an´ı dokumentu 3.2 Anal´ yza dokumentu . . . . 3.3 Klasifikace blok˚ u . . . . . . 3.4 N´ asledn´ a anal´ yza . . . . . . 3.5 Rozhran´ı programu . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
4 4 4 5 7 10
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
12 12 13 14 15 16
4 Implementace 4.1 Znaˇckovac´ı jazyky pro tvorbu webov´ ych dokument˚ u 4.2 Programovac´ı jazyk Ruby . . . . . . . . . . . . . . . 4.3 Pouˇzit´e gemy . . . . . . . . . . . . . . . . . . . . . . 4.4 Kostra programu . . . . . . . . . . . . . . . . . . . . 4.5 Z´ akladn´ı modul . . . . . . . . . . . . . . . . . . . . . 4.6 Konfigurace a HTTP klient . . . . . . . . . . . . . . 4.7 Vstup programu . . . . . . . . . . . . . . . . . . . . 4.8 Pˇredzpracov´ an´ı dokumentu . . . . . . . . . . . . . . 4.9 Kolekce blok˚ u . . . . . . . . . . . . . . . . . . . . . . 4.10 Z´ akladn´ı blok . . . . . . . . . . . . . . . . . . . . . . 4.11 Vlastnosti bloku . . . . . . . . . . . . . . . . . . . . 4.12 Implementace anal´ yzy dokumentu . . . . . . . . . . 4.13 N´ asledn´ a anal´ yza . . . . . . . . . . . . . . . . . . . . 4.14 Hlavn´ı tˇr´ıda . . . . . . . . . . . . . . . . . . . . . . . 4.15 Pˇr´ıkazov´ y ˇr´ adek . . . . . . . . . . . . . . . . . . . . . 4.16 Webov´e rozhran´ı . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
17 17 17 18 19 19 20 20 21 21 21 22 22 24 24 25 25
5 Testov´ an´ı a vyhodnocen´ı 5.1 Tr´enovac´ı mnoˇzina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Experimenty s nastaven´ım neuronov´e s´ıtˇe . . . . . . . . . . . . . . . . . . . 5.3 V´ ysledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 26 26 29
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
1
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
5.4
Porovn´ an´ı s existuj´ıc´ımi algoritmy . . . . . . . . . . . . . . . . . . . . . . .
31
6 Z´ avˇ er
36
A Obsah CD
40
2
Kapitola 1
´ Uvod Na internetu se nach´ az´ı nepˇrebern´e mnoˇzstv´ı informac´ı, vˇetˇsinou ve formˇe HTML str´anek. Ty vˇsak neobsahuj´ı pouze uˇziteˇcn´ y obsah, ale rovnˇeˇz r˚ uzn´e navigaˇcn´ı prvky, odkazy, reklamy apod. Pro efektivn´ı anal´ yzu takov´ ychto dokument˚ u je potˇreba zn´at hlavn´ı obsah. ˇ ek jej od neuˇziteˇcn´ Clovˇ ych informac´ı jednoduˇse rozliˇs´ı, poˇc´ıtaˇc ne. Proto je potˇreba m´ıt k dispozici n´ astroj, program, kter´ y je schopen plnˇe samostatnˇe rozliˇsit co je hlavn´ı obsah a co je generick´ y obsah. Z´ısk´ an´ı pouze hlavn´ıho obsahu m´a pak nesporn´e v´ yhody pˇri anal´ yze dokument˚ u, hled´ an´ı duplicit a pˇrin´aˇs´ı menˇs´ı datovou n´aroˇcnost. C´ılem t´eto pr´ ace je navrhnout program pro extrakci hlavn´ıho textu z webov´ ych dokument˚ u a implementovat jej. Souˇcasn´a ˇreˇsen´ı nejsou ˇcasto plnˇe vyhovuj´ıc´ı, zejm´ena z d˚ uvodu jejich zamˇeˇren´ı na konkr´etn´ı obor nebo jazyk. Proto se v t´eto pr´aci budeme snaˇzit navrhnout program, kter´ y bude univerz´aln´ı a nebude jazykovˇe ani oborovˇe specifick´ y. Program bude vyuˇz´ıvat pˇr´ıstupy z jiˇz zn´ am´ ych ˇreˇsen´ı a vz´ajemnˇe je kombinovat, d´ıky ˇcemuˇz by mˇel dosahovat podobn´ ych, v ide´ aln´ım pˇr´ıpadˇe lepˇs´ıch v´ ysledk˚ u a nemˇel by b´ yt v d˚ usledku zamˇeˇren pouze na jednu oblast. Program m˚ uˇze b´ yt pak pouˇzit jako souˇc´ast vˇetˇs´ıch syst´emu pˇredevˇs´ım v oblasti dolov´ an´ı dat a anal´ yzy dokument˚ u. Pr´ace je rozdˇelena n´ asleduj´ıc´ım zp˚ usobem. V kapitole 2 budou probr´any r˚ uzn´e postupy vyuˇz´ıvan´e pˇri detekci hlavn´ıho obsahu, pˇriˇcemˇz bude kladen d˚ uraz na metody zaloˇzen´e na DOM (objektov´ y model dokumentu). Rovnˇeˇz zde bude uvedena nezbytn´a teorie pro pochopen´ı n´ asledn´e implementace. Kapitola 3 obsahuje n´avrh syst´emu pro extrakci hlavn´ıho obsahu a porovn´ av´ a jej s dalˇs´ımi, jiˇz implementovan´ ymi syst´emy. V 4. kapitole bude pops´ana jiˇz samotn´ a implementace syst´emu v jazyce Ruby. Kapitola 5 popisuje pr˚ ubˇeh testov´ an´ı a porovn´ an´ı s nˇekter´ ymi jiˇz existuj´ıc´ımi ˇreˇsen´ımi. V 6. kapitole, tedy z´avˇeru, se nal´ez´ a ohl´ednut´ı za v´ ysledky a jsou pops´any dalˇs´ı moˇznosti rozˇs´ıˇren´ı.
3
Kapitola 2
Existuj´ıc´ı n´ astroje, pˇ r´ıstupy a neuronov´ e s´ıtˇ e Tato kapitola pojedn´ av´ a o studi´ıch souvisej´ıc´ıch s touto prac´ı. Zahrnuje rovnˇeˇz rozdˇelen´ı metod na z´ akladˇe toho na jak´e u ´rovn´ı pˇristupuj´ı k dokumentu.
2.1
Dolov´ an´ı textu
Extrakce hlavn´ıho textu spad´ a do oblasti tak zvan´eho dolov´an´ı textu. Dolov´ an´ı textu lze definovat jako intenzivn´ı proces s vyuˇzit´ım znalost´ı kdy uˇzivatel interaguje s kolekc´ı dokument˚ u za pouˇzit´ı sady n´astroj˚ u pro anal´ yzu. Analogicky k dolov´ an´ı dat, pˇri dolov´ an´ı textu se snaˇz´ıme z´ıskat uˇziteˇcn´e informace z datov´ ych zdroj˚ u pomoc´ı zkoum´ an´ı a identifikace zn´ am´ ych vzor˚ u v nestrukturovan´ ych datech.[5]
2.2
Rozdˇ elen´ı metod
Metody pro rozpozn´ av´ an´ı hlavn´ıho textu lze rozdˇelit nˇekolika zp˚ usoby. Kohlsch¨ utter et al. [6] dˇel´ı metody na ty, kter´e analyzuj´ı dokument na z´akladˇe vizu´aln´ıch vlastnost´ı dokumentu a metody, kter´e prov´ adˇej´ı anal´ yzu na u ´rovni DOM. D´ale je moˇzno rozdˇelit metody podle toho, jak´ ym zp˚ usobem funguje dan´ y algoritmus, a to bud’ algoritmy funguj´ıc´ı na principu heuristik bez strojov´eho uˇcen´ı a algoritmy, kter´e vyuˇz´ıvaj´ı strojov´e uˇcen´ı.
2.2.1
Principy bez strojov´ eho uˇ cen´ı
Tyto algoritmy pracuj´ı na z´ akladˇe vˇetˇsinou jednoduch´e heuristiky, popˇr´ıpadˇe nˇekolika heuristik. Pro spr´ avnou funkci nevyˇzaduj´ı ˇz´adn´e vstupn´ı znalosti ani tr´enovac´ı mnoˇzinu. Z valn´e vˇetˇsiny je v´ ysledek zpracov´ an´ı pomoc´ı heuristiky porovn´an v˚ uˇci urˇcit´emu prahu a na z´akladˇe v´ ysledku je rozhodnuto o tom, do kter´e mnoˇziny dan´ y blok n´aleˇz´ı. Aˇckoliv tyto metody patˇr´ı k jednoduˇsˇs´ım metod´am, pˇri spr´avn´em nastaven´ı a po ˇr´adn´em otestov´ an´ı m˚ uˇzou dosahovat velmi dobr´ ych v´ ysledk˚ u. D´ıky jednoduchosti je lze ˇradit vˇetˇsinou tak´e mezi velmi efektivn´ı ˇreˇsen´ı a ˇcasovˇe nen´aroˇcn´e. Jejich hlavn´ı nev´ yhodou je zamˇeˇren´ı na urˇcitou oblast, nepˇresn´e v´ ysledky v pˇr´ıpadˇe nestandardn´ıch dokument˚ u a sloˇzit´e, ˇcasto nemoˇzn´e zmˇeny v pˇr´ıpadˇe, ˇze se chceme zamˇeˇrit na jinou oblast. Metody, patˇr´ıc´ı do t´eto skupiny budou pops´ any n´ıˇze.
4
2.2.2
Principy vyuˇ z´ıvaj´ıc´ı strojov´ e uˇ cen´ı
Metody spadaj´ıc´ı do t´eto kategorie vyˇzaduj´ı urˇcit´e vstupn´ı znalosti resp. tr´enovac´ı mnoˇzinu pro spr´ avnou funkcionalitu. Na rozd´ıl od metod z pˇredchoz´ı kapitoly, kter´e nevyˇzaduj´ı pˇred pouˇzit´ım ˇz´ adn´e dalˇs´ı nastaven´ı ani testov´an´ı, u tˇechto metod je to nezbytn´e. Pro hlavn´ı anal´ yzu je v tomto pˇr´ıpadˇe vyuˇzito r˚ uzn´ ych klasifik´ator˚ u. Takov´ ymto klasifik´atorem m˚ uˇze b´ yt Bayesovsk´ y klasifik´ator, neuronov´a s´ıt’ a dalˇs´ı. Pˇred pouˇzit´ım mus´ı b´ yt klasifik´ ator spr´ avnˇe nastaven, ˇcehoˇz je doc´ıleno d˚ ukladn´ ym testov´an´ım a experimentov´an´ım s jednotliv´ ymi nastaven´ımi. Tento postup je ˇcasto velmi zdlouhav´ y a n´aroˇcn´ y na zdroje, coˇz tyto metody ˇrad´ı k metod´ am sloˇzitˇejˇs´ım. Aby mohly b´ yt provedeny experimenty, je potˇreba m´ıt k dispozici relevantn´ı a dostateˇcnˇe obs´ahlou mnoˇzinu vstupn´ıch resp. tr´enovac´ıch dat. V´ yhodou tˇechto algoritm˚ u je, ˇze pouhou zmˇenou nastaven´ı klasifik´atoru, popˇr. zmˇenou tr´enovac´ı mnoˇziny, m˚ uˇzeme pokr´ yt jinou oblast. Tyto metody si ˇcasto dok´aˇz´ı velmi dobˇre poradit i s nestandardn´ımi a ˇspatnˇe strukturovan´ ymi dokumenty. Hlavn´ı nev´ yhodou je jejich sloˇzitost a nutnost z´ıskan´ı tr´enovac´ı mnoˇziny dat a n´asledn´e tr´enov´an´ı klasifik´atoru. Na obr´ azku n´ıˇze (2.1) je zobrazen princip fungov´an´ı metod zaloˇzen´ ych na strojov´em uˇcen´ı. Pˇreruˇsovan´e ˇc´ ary charakterizuj´ı ˇc´ast, kdy je prov´adˇeno strojov´e uˇcen´ı, pln´e ˇc´ary pak zobrazuj´ı pr˚ ubˇeh, kdy je klasifik´ ator pouˇz´ıv´an jiˇz v praxi pro anal´ yzu dokumentu.
Obr´ azek 2.1: Metody se strojov´ ym uˇcen´ım
2.3
Metody zaloˇ zen´ e na vizu´ aln´ıch vlastnostech dokumentu
Metody zaloˇzen´e na vizu´ aln´ıch vlastnostech dokumentu vˇetˇsinou dˇel´ı dokument do menˇs´ıch logick´ ych celk˚ u na z´ akladˇe r˚ uzn´ ych mezer a oddˇelovaˇc˚ u a jednotliv´e celky pot´e analyzuj´ı. V´ yhodou tˇechto metod je, ˇze pˇri pouˇzit´ı relativnˇe jednoduch´eho algoritmu je moˇzno z´ıskat kvalitn´ı a dostateˇcnˇe pˇresn´e v´ ysledky. Hlavn´ı nev´ yhoda spoˇc´ıv´a v mnoˇzstv´ı informac´ı, kter´e je potˇreba zn´ at. Kromˇe HTML mus´ı b´ yt k dispozici rovnˇeˇz informace definuj´ıc´ı vzhled str´ anek, napˇr´ıklad CSS (kask´adov´e styly). Tyto informace znaˇcnˇe navyˇsuj´ı objem dat nutn´ y k anal´ yze. Aby str´ anka mohla b´ yt analyzov´ana na z´akladˇe vzhledu, je vˇetˇsinou nutn´e dokument, vˇcetnˇe pˇripojen´ ych styl˚ u, interpretovat. Tato operace je ˇcasto dosti v´ ypoˇcetnˇe n´aroˇcn´ a a pomal´ a. Nejpalˇcivˇejˇs´ım probl´emem u algoritm˚ u tohoto typu je, jak danou str´anku pohodlnˇe a v r´amci moˇznost´ı efektivnˇe renderovat. K tomuto u ´ˇcelu existuj´ı r˚ uzn´e n´astroje. Jedn´ım z nich je napˇr´ıklad CSSBox1 vyv´ıjen´ y na Fakultˇe informaˇcn´ıch technologi´ı VUT v Brnˇe2 . Program je naps´ an v jazyce Java a poskytuje pˇrehledn´e a jednoduch´e aplikaˇcn´ı rozhran´ı 1 2
http://cssbox.sourceforge.net/ http://www.fit.vutbr.cz/
5
pro vykreslov´ an´ı a pr´ aci s webov´ ymi dokumenty. Existuj´ı i dalˇs´ı n´astroje, napˇr. Selenium3 a dalˇs´ı.
2.3.1
Metody bez strojov´ eho uˇ cen´ı
Cai et al. [3] rozdˇeluje webov´ y dokument na jak´esi z´akladn´ı objekty. Jeden nebo v´ıce objekt˚ u pak tvoˇr´ı logick´e celky - bloky. Uzly v modelu zaloˇzen´em na vizu´aln´ıch vlastnostech nemusej´ı nutnˇe odpov´ıdat uzl˚ um v objektov´em modelu dokumentu. To je zp˚ usobeno t´ım, ˇze s´emantika dokumentu nen´ı pops´ana pouze pomoc´ı jazyka HTML, ale rovnˇeˇz pomoc´ı kask´ adov´ ych styl˚ u. Cai et al. [3] popisuje webov´ y dokument jako blok, skl´adaj´ıc´ı se z koneˇcn´e mnoˇziny nepˇrekr´ yvaj´ıc´ıch se podˇr´ızen´ ych blok˚ u, kter´e maj´ı opˇet vlastnosti rodiˇcovsk´eho bloku. Tyto bloky jsou oddˇeleny koneˇcnou mnoˇzinou jak vertik´aln´ıch tak horizont´aln´ıch oddˇelovaˇc˚ u. Kaˇzd´ y blok m´a nav´ıc informaci o vztaz´ıch mezi kaˇzd´ ymi dvˇema bloky, ze kter´ ych se skl´ ad´ a. Kaˇzd´emu oddˇelovaˇci je rovnˇeˇz pˇriˇrazena v´aha. Algoritmus zkoum´ a oddˇelovaˇce od nejmenˇs´ı v´ahy po nejvˇetˇs´ı a bloky mezi tˇemito oddˇelovaˇci spojuje a tvoˇr´ı bloky nov´e. Takto pokraˇcuje dokud nenaraz´ı na oddˇelovaˇc s nejvyˇsˇs´ı v´ahou. Pˇri vytvoˇren´ı nov´eho bloku je kontrolov´ ana spr´avn´a zrnitost. Pokud blok neodpov´ıd´a poˇzadavk˚ um, vrac´ı se algoritmus o krok zpˇet aby vytvoˇril vnitˇrn´ı obsah bloku. V´ ystupem algoritmu je dokument rozdˇelen´ y podle jeho vizu´aln´ıch vlastnost´ı na jednotliv´e bloky. Burget [2] ve sv´e pr´ aci popisuje algoritmus, kter´ y pracuje ve 4 kroc´ıch. Nejprve vykresl´ı dokument, kter´ y je pot´e rozdˇelen do blok˚ u. V t´eto kl´ıˇcov´e f´azi jsou urˇceny logick´e segmenty, kter´e mohou b´ yt uvaˇzov´ any jako samostatn´e. N´aslednˇe je urˇceno fin´aln´ı poˇrad´ı jednotliv´ ych celk˚ u a je generov´ an jednoduch´ y HTML k´od. Pro vykreslen´ı str´anky je vyuˇz´ıv´ an jiˇz zmiˇ novan´ y n´ astroj CSSBox [?]. V´ ystupem prvn´ı f´aze je strom blok˚ u, kdy je blokem rozumˇen obd´eln´ıkov´ y u ´tvar, kter´ y nen´ı skryt´ y. Ve f´az´ı segmentace jsou nal´ez´any logick´e celky. Samotn´ y proces sest´ av´ a ze 3 f´az´ı. Detekce jednotv´arn´ ych oblast´ı, kdy oblast tvoˇr´ı soused´ıc´ı bloky s konzistentn´ım stylem. Dalˇs´ı f´azi je detekce nadpis˚ u na z´akladˇe vlastnosti fontu. Posledn´ı f´ azi tohoto kroku je detekce logick´ ych celk˚ u, kter´e se skl´adaj´ı z v´ıce blok˚ u. Jako v´ ychoz´ı bod se vyuˇz´ıvaj´ı detekovan´e nadpisy. V´ ysledkem tohoto kroku je strom vizu´aln´ıch oblast´ı a informac´ı o nich. Na rozd´ıl od HTML k´odu je tato reprezentace mnohem bliˇzˇs´ı lidsk´emu vn´ıman´ı dokumentu. V kroku n´asleduj´ıc´ım se algoritmus snaˇz´ı pˇresunout d˚ uleˇzit´e oblasti k zaˇc´ atk˚ u dokumentu. Poˇrad´ı zb´ yvaj´ıc´ıch ˇc´asti se snaˇz´ı zachovat, aby nebyla naruˇsena konzistence obsahu. Na konec je vytvoˇren jednoduch´ y HTML k´od skl´adaj´ıc´ı se v podstatˇe pouze z element˚ u
pro kaˇzd´ y logick´ y celek a pro textov´e bloky, kter´ ym je rovnˇeˇz pˇriˇrazen odpov´ıdaj´ıc´ı styl. Experiment´aln´ı v´ ysledky ukazuj´ı, ˇze algoritmus funguje spolehlivˇe pro vˇetˇsinu testovan´ ych str´anek.
2.3.2
Metody se strojov´ ym uˇ cen´ım
Kunc a Burget [7] ve sv´em pˇr´ıspˇevku popisuj´ı zp˚ usob klasifikace dokument˚ u na z´akladˇe jejich vizu´ aln´ıch rys˚ u. V prvn´ım kroku prov´ad´ı rekonstrukci v´ ysledn´e podoby dokumentu. Tento krok vyˇzaduje kompletn´ı renderov´an´ı str´anky, kter´e m˚ uˇze b´ yt dosti n´aroˇcn´e. Pot´e jsou pro kaˇzdou oblast ze z´ıskan´e hierarchick´e struktury urˇceny jejich v´ yznamn´e vizu´aln´ı rysy a na z´ akladˇe tˇech jsou oblasti spojov´any do vˇetˇs´ıch celk˚ u. Nakonec jsou pro kaˇzd´ y celek vypoˇc´ıt´ any r˚ uzn´e vizu´ aln´ı atributy a na z´akladˇe tˇech je provedena anal´ yza. Zmiˇ novan´ ymi vlastnostmi jsou pr˚ umˇern´ a velikost p´ısma, pˇrevaˇzuj´ıc´ı v´aha p´ısma, pˇrevaˇzuj´ıc´ı styl p´ısma (sklonˇen´e nebo norm´ aln´ı), poˇcet oblast´ı v okol´ı, poˇcet znak˚ u textu, poˇcet ˇc´ıslic, mal´ ych 3
http://docs.seleniumhq.org/
6
a velk´ ych p´ısmen abecedy a mezer v textu, svˇetelnost textu a pozad´ı, a nakonec kontrast. Na z´akladˇe vypoˇcten´ ych atribut˚ u je pak moˇzn´e detekovat napˇr´ıklad text ˇcl´anku, protoˇze jak je v pr´ aci pops´ ano, tento text je vˇetˇsinou vˇetˇs´ı neˇz je pr˚ umˇern´a velikost textu v dokumentu a obsahuje delˇs´ı, souvisl´ y text. Pro klasifikaci byl vyuˇzit volnˇe dostupn´ y n´astroj Weka. i kdyˇz tato pr´ ace nesouvis´ı pˇr´ımo s extrakc´ı hlavn´ıho textu z dokumentu, lze vˇetˇsinu poznatk˚ u a popisovan´ y postup vyuˇz´ıt i pˇri ˇreˇsen´ı tohoto probl´emu.
Obr´ azek 2.2: Postup pˇri detekci hlavn´ıho obsahu na z´akladˇe vizu´aln´ıch vlastnost´ı
2.4
Metody pracuj´ıc´ı na u ´ rovn´ı DOM
Tyto metody vyˇzaduj´ı pro anal´ yzu pouze zdrojov´ y k´od dokumentu ve form´atu HTML nebo XML resp. jejich objektov´ y model dokumentu. Dalˇs´ı informace o str´ance, jako jsou kask´adov´e styly nebo soubory se skripty, nejsou vyˇzadov´any. Dokument je na z´akladˇe r˚ uzn´ ych vlastnost´ı textu, struktury a dalˇs´ıch ukazatel˚ u analyzov´an a na z´akladˇe tˇechto ukazatel˚ u je detekov´ an hlavn´ı obsah. Existuje v´ıce zp˚ usob˚ u jak tyto metody vyuˇz´ıt v praxi a jak je implementovat. Pˇred nˇekolika lety, byla extrakce textu pomˇernˇe jednoduch´a. Webov´e dokumenty nebyly pˇr´ıliˇs komplexn´ı a struktura str´anky byla tvoˇrena vˇetˇsinou pomoc´ı tabulky. Napˇr´ıklad McKeown et al. [8] popisuje zp˚ usob jak´ ym z´ısk´avaj´ı hlavn´ı obsah p´ar slovy. Pokud vybran´ a buˇ nka tabulky obsahuje po odstranˇen´ı znaˇcek a odkaz˚ u v´ıce znak˚ u neˇz je nastaven´ y pr´ ah, je toto povaˇzov´ ano za hlavn´ı obsah. V dneˇsn´ı dobˇe je vˇsak situace jin´a. Struktura HTML je sloˇzitˇejˇs´ı, tabulkov´e rozvrˇzen´ı je zˇr´ıdkakdy pouˇz´ıv´ ano a neˇz´ adouc´ı prvky, jako je napˇr´ıklad reklama, se ˇcasto vyskytuj´ı i mezi textem.
7
2.4.1
Metody bez strojov´ eho uˇ cen´ı
Kohlsch¨ utter et al. [6] pˇredstavuje postup pro detekci generick´eho obsahu, tud´ıˇz rozdˇelen´ı dokumentu na generick´ y obsah a hlavn´ı text, zaloˇzen´ y na z´akladn´ıch vlastnostech textu. Nejprve je dokument rozdˇelen do atomick´ ych blok˚ u a pot´e jsou pro kaˇzd´ y blok zjiˇstˇeny jeho vlastnosti. Bˇehem dˇelen´ı dokumentu na atomick´e bloky, je obsah nˇekter´ ych znaˇcek pˇr´ımo odstraˇ nov´ an, jelikoˇz je dopˇredu jasn´e, ˇze tyto znaˇcky neobsahuj´ı hlavn´ı obsah. Jedin´e znaˇcky, kter´e jsou v bloc´ıch ponech´any jsou odkazy. Pot´e jsou bloky analyzov´any pˇredevˇs´ım podle dvou vlastnost´ı, poˇctu slov a hustoty odkaz˚ u. V´ ysledky ukazuj´ı, ˇze i pomoc´ı takto jednoduch´eho ˇreˇsen´ı lze dosahovat velmi pˇresn´ ych v´ ysledk˚ u. Algoritmus implementovan´ y na z´akladˇe t´eto studie nese n´ azev boilerpipe. V z´akladn´ım extraktoru je pro anal´ yzu vyuˇzit rozhodovac´ı strom, zaloˇzen´ y ve v´ ysledku pouze na hustotˇe odkaz˚ u a poˇctu slov, jak pro aktu´aln´ı blok, tak pro pˇredchoz´ı a n´asleduj´ıc´ı. i pˇresto, ˇze pˇri implementaci bylo vyuˇzito n´astroje Weka, ˇrad´ım tento algoritmus mezi metody bez strojov´eho uˇcen´ı, jelikoˇz ve fin´ ale je pouˇzit hotov´ y rozhodovac´ı strom. N´astroj Weka byl pouˇzit pouze pro zjiˇstˇen´ı ide´aln´ıch prah˚ u. Vieira et al. [13] popisuje postup liˇs´ıc´ı se od pˇredchoz´ıch. Detekci a odstraˇ nov´an´ı generick´eho obsahu prov´ ad´ı na z´ akladˇe znalosti v´ıce podobn´ ych str´anek. i kdyˇz se na prvn´ı pohled m˚ uˇze zd´ at, ˇze toto ˇreˇsen´ı je neefektivn´ı, kv˚ uli nutnosti stahov´an´ı v´ıce str´anek, nen´ı tomu tak. Alespoˇ n ne v pˇr´ıpadˇe, kdy je analyzov´ano v´ıce dokument˚ u z jedn´e dom´eny. V tomto pˇr´ıpadˇe je nev´ yhoda nutnosti v´ıce str´anek eliminov´ana, jelikoˇz bychom je museli tak ˇci onak z´ıskat. z v´ ysledku je vidˇet, ˇze tato metoda dosahuje velmi uspokojiv´ ych v´ ysledk˚ u a je aplikovateln´ a na t´emˇeˇr jak´ ykoliv dokument, nez´avisle na oboru. Nutnost´ı je vˇsak m´ıt alespoˇ n dva dokumenty se stejnou nebo alespoˇ n podobnou strukturou. Pomik´ alek a jeho jusText [10] vyuˇz´ıv´a jednoduch´e heuristiky pro detekci. Vych´ az´ı z pˇredpoklad˚ u, ˇze kr´ atk´e bloky obsahuj´ıc´ı odkaz jsou t´emˇeˇr vˇzdy generick´ ym obsahem a tot´eˇz tvrd´ı o bloc´ıch obsahuj´ıc´ıch velk´e mnoˇzstv´ı odkaz˚ u. D´ale tvrd´ı, ˇze dlouh´e bloky obsahuj´ıc´ı gramatick´ y text jsou vˇetˇsinou hlavn´ım obsahem, a naopak jin´e dlouh´e bloky jsou t´emˇeˇr vˇzdy generick´ ym obsahem. Nakonec jeˇstˇe zav´ad´ı tvrzen´ı, kter´e ˇr´ık´a, ˇze bloky obsahuj´ıc´ı hlavn´ı text vˇetˇsinou tvoˇr´ı shluky, coˇz znamen´a, ˇze blok s generick´ ym obsahem je ˇcasto obklopen jin´ ymi bloky s generick´ ym obsahem a analogicky pro hlavn´ı obsah. Jeho algoritmus se skl´ ad´ a ze 3 hlavn´ıch ˇc´asti. Postupnˇe jsou to preprocessing, bezkontextov´ a anal´ yza a kontextov´ a anal´ yza. V prvn´ı ˇc´asti zbavuje dokument zbyteˇcn´ ych znaˇcek. Bˇehem bezkontextov´e anal´ yzy rozdˇeluje jednotliv´e bloky do n´asleduj´ıc´ıch tˇr´ıd: • ˇspatn´e - generick´ y obsah • dobr´e - hlavn´ı obsah • kr´ atk´e - nelze rozhodnout, pˇr´ıliˇs kr´atk´ y blok • t´emˇeˇr dobr´e - na pomez´ı mezi dobr´ ymi a kr´atkymi Toto rozdˇelen´ı je prov´ adˇeno pomoc´ı vyhodnocen´ı tˇr´ı vlastnost´ı, a to hustoty odkaz˚ u, poˇctu stopslov a poˇctu slov v bloku. V posledn´ı f´azi je za pomoc´ı kontextov´e anal´ yzy rozhodnuto zda jednotliv´e kr´ atk´e a t´emˇeˇr dobr´e bloky jsou dobr´e popˇr. ˇspatn´e. T´emˇeˇr dobr´e bloky soused´ıc´ı s alespoˇ n jedn´e strany s dobr´ ym blokem, je vyhodnocen takt´eˇz jako dobr´ y. Kr´atk´e bloky soused´ıc´ı z obou stran s dobr´ ymi nebo t´emˇeˇr dobr´ ymi jsou oznaˇceny jako dobr´e, zb´ yvaj´ıc´ı jako ˇspatn´e. Je d˚ uleˇzit´e uv´est, ˇze jako soused´ıc´ı bloky v t´eto anal´ yze ignoruj´ı bloky kr´ atk´e. Z´ aroveˇ n pokud se posloupnost kr´atk´ ych nebo t´emˇeˇr dobr´ ych blok˚ u objevuje na zaˇc´ atku nebo na konci dokumentu, jsou tyto bloky ihned oznaˇceny jako ˇspatn´e. 8
Evert [4] popisuje sv˚ uj algoritmus pod jm´enem NCleaner. NCleaner m´a dvˇe z´akladn´ı u ´rovnˇe zpracov´ an´ı. Prvn´ı f´ aze m´ a za u ´kol pˇripravit dokument na dalˇs´ı anal´ yzu. Jsou bˇehem n´ı pomoc´ı regul´ arn´ıch v´ yraz˚ u odstraˇ nov´any neˇz´adouc´ı znaˇcky vˇcetnˇe jejich obsahu (obr´azky, koment´ aˇre a skripty), pot´e je dokument zkonvertov´an na ˇcistˇe textov´ y. D´ale jsou odmaz´any lehce detekovateln´e prvky generick´eho obsahu, napˇr. ty, kter´e obsahuj´ı mnoho znak˚ u |. Druhou f´ az´ı je samotn´e j´ adro algoritmu, sest´avaj´ıc´ı z dvou samostatn´ ych znakov´ ych ngram [14] jazykov´ ych model˚ u, jeden pro ”spr´avn´ y”a druh´ y pro ”ˇspatn´ y”text. Tyto modely jsou pouˇzity na kaˇzdou ˇc´ ast dokumentu a pokud model pro ˇspatn´ y text vypoˇc´ıt´a vˇetˇs´ı pravdˇepodobnost, je tato ˇc´ ast povaˇzov´ana za generick´ y obsah a tud´ıˇz odstranˇena. 4 Z existuj´ıc´ıch n´ astroj˚ u jeˇstˇe zm´ın´ım Readability . Tento n´astroj byl ze zaˇc´atk˚ u pouze jednoduch´ ym algoritmem naprogramovan´ ym v Javascriptu, postupnˇe byl vˇsak pˇretvoˇren na kompletn´ı platformu pro extrakci hlavn´ıho textu ˇcl´anku a usnadnˇen´ı ˇcten´ı. K extrakci vyuˇz´ıv´ a jednoduch´ ych heuristik, kdy ohodnocuje bloky pozitivnˇe ˇci negativnˇe na z´akladˇe r˚ uzn´ ych textov´ ych vlastnost´ı a vlastnost´ı na u ´rovn´ı znaˇcek ˇci jejich atribut˚ u. V´ ysledn´e sk´ ore jednotliv´ ych blok˚ u jsou porovn´ any v˚ uˇci urˇcit´emu prahu a na z´akladˇe v´ ysledku je rozhodnuto zda blok vyhovuje hlavn´ımu textu ˇci ne.
2.4.2
Metody se strojov´ ym uˇ cen´ım
Pasternack et al. [9] popisuje metodu zamˇeˇrenou na dokumenty se ˇcl´anky, kter´a je schopna se vypoˇr´ adat i s dokumenty, kter´e nejsou tvoˇren´e pomoc´ı tabulek. Probl´em rozdˇeluje do dvou ˇc´ asti. Detekce zda str´ anka obsahuje ˇcl´anek a zjiˇstˇen´ı kde pˇresnˇe ˇcl´anek zaˇc´ın´a a kde konˇc´ı. V ˇc´ asti druh´e navrhuje odstranit ze ˇcl´anku reklamy a jin´e neˇz´adouc´ı prvky. Pro tento u ´kon popisuje jednoduchou heuristiku, kter´a nejdˇr´ıve odstran´ı obsah uvnitˇr vˇsech znaˇcek <iframe> a
a pot´e odstran´ı obsah vˇsech znaˇcek , obsahuj´ıc´ıch znaˇcky odkaz (
), <iframe>, , , <embed>, nebo . Pˇri implementaci byl pouˇzit naivn´ı bayesovsk´ y klasifik´ator [15] pracuj´ıc´ı na z´akladˇe pouze dvou jev˚ u: trigramy a nejbliˇzˇs´ı neuzavˇren´ a znaˇcka. Vstupem pro klasifik´ator jsou pouze dvˇe z´akladn´ı vlastnosti, a to trigramy a posledn´ı neuzavˇren´ y element. Byly zkouˇseny rovnˇeˇz dalˇs´ı vlastnosti jako bigramy, unigramy a posledn´ı dva neuzavˇren´e elementy, nicm´enˇe experiment´alnˇe bylo zjiˇstˇeno, ˇze na pˇresnost algoritmu to nem´a ˇz´adn´ y vliv. Pro strojov´e uˇcen´ı byl zvoleno uˇcen´ı s uˇcitelem a kombinovan´e uˇcen´ı, pˇriˇcemˇz druh´e zmiˇ novan´e pod´avalo lepˇs´ı v´ ysledky. Kombinovan´e uˇcen´ı spoˇc´ıvalo v nauˇcen´ı na tr´enovac´ı mnoˇzinˇe, predikce extrakce z neanotovan´ ych dokument˚ u a iterace, kdy byly nalezeny d˚ uleˇzit´e v´ahy v mnoˇzinˇe vybran´ ych dokument˚ u, natr´enovan´ı nov´eho Bayessovsk´eho klasifik´atoru pomoc´ı trigram˚ u a predikce nov´e extrakce pro dalˇs´ı dokumenty. V´ ysledky experiment˚ u jasnˇe dokazuj´ı velice dobrou pˇresnost algoritmu. Sch¨ afer [11] ve sv´e pr´ aci popisuje algoritmus vyuˇz´ıvaj´ıc´ı MLP (Multilayer Perceptrons) coˇz je v´ıcevrstv´ a umˇel´ a neuronov´a s´ıt’. Pro klasifikaci vyuˇz´ıv´a mnoho r˚ uzn´ ych vlastnost´ı. Vlastnosti spojen´e se znaˇckami jako jsou napˇr. pomˇer znaˇcek v bloku a typ obaluj´ıc´ı znaˇcky (<article>, apod.). Vlastnosti souvisej´ıc´ı s odkazy (poˇcet emailov´ ych adres v bloku), d´elka textu a jeho pozice v r´ amci dokumentu. D´ale vyuˇz´ıv´a vlastnosti na u ´rovn´ı jednotliv´ ych znak˚ u. Hodnot´ı pomˇer interpunkˇcn´ıch znam´enek, velk´ ych p´ısmen, ˇc´ısel, znak˚ u abecedy a koneˇcnˇe v´ yskyt copyright znaku. Posledn´ı dvˇe vlastnosti, kter´e vyuˇz´ıv´a ke klasifikaci, jsou lingvistick´e (pr˚ umˇern´ a d´elka vˇety, jejich poˇcet a posledn´ı znak vˇety) a vlastnosti t´ ykaj´ıc´ı se cel´eho dokumentu (typ dokumentu - doctype a proporce znaˇcek). Vˇsechny tyto vlastnosti jsou vyj´ adˇreny jako normalizovan´e sk´ore v rozmez´ı od −1 resp. 0 po 1. Toto je 4
https://www.readability.com/
9
rozmez´ı hodnot nutn´e pro vstup MLP. Jako tr´enovac´ı algoritmus byl v tomto pˇr´ıpadˇe pouˇzit algoritmus RPROP. Tr´enovac´ı mnoˇzina sest´avala z jednotliv´ ych blok˚ u, kdy ˇspatn´e bloky byly oznaˇceny hodnotou −0, 1 a spr´avn´e hodnotou 1. Experiment´aln´ı v´ ysledky ukazuj´ı, ˇze algoritmus funguje velmi dobˇre. Spousta et al. [12] prezentuje ve sv´e pr´aci pˇr´ıstup zaloˇzen´ y na CRF (Conditional random field). Je to statistick´ a metoda ˇcasto vyuˇz´ıvan´a pˇri rozpozn´avan´ı vzor˚ u a strojov´em uˇcen´ı, a v´ ystupem je strukturovan´a predikce. Samotn´ y proces extrakce sest´av´a z nˇekolika krok˚ u. Nejdˇr´ıve jsou dokumenty filtrov´any na z´akladˇe jednoduch´eho ngram klasifik´atoru, a nevyhovuj´ıc´ı jsou zahozeny. Pot´e prob´ıh´a standardizace dokument˚ u a v´ ystupem jsou validn´ı dokumenty, kter´e jsou n´ aslednˇe vyˇciˇstˇeny od nepotˇrebn´ ych znaˇcek (skripty, styly, objekty atd.). N´ aslednˇe prob´ıh´ a identifikace textov´ ych blok˚ u, pro kter´e jsou v n´asleduj´ıc´ım kroku z´ısk´ any jejich vlastnosti. Pˇredposledn´ım krokem je uˇcen´ı klasifik´atoru s uˇcitelem, kdy tr´enovac´ı mnoˇzina obsahuje bloky manu´alnˇe oznaˇcen´e jako hlaviˇcka, text a ostatn´ı. Po nauˇcen´ı klasifik´ atoru je jiˇz moˇzno extrahovat hlavn´ı text, kdy jsou v dokumentu ponech´any pouze bloky oznaˇcen´e jako hlaviˇcka nebo text a ostatn´ı jsou zahozeny. Vlastnostmi, na kter´ ych je klasifikace zaloˇzena, jsou vlastnosti zaloˇzen´e na znaˇck´ach (typ bloku), vlastnosti zaloˇzen´e na obsahu (absolutn´ı a relativn´ı poˇcty slov, znak˚ u, duplik´at˚ u apod.) a vlastnosti zaloˇzen´e na cel´em dokumentu (pozice, poˇcet slov, vˇet apod.).
2.5
Umˇ el´ a neuronov´ a s´ıt’
Umˇel´a neuronov´ a s´ıt’ je syst´em, zaloˇzen´ y na fungov´an´ı biologick´ ych neuronov´ ych s´ıt´ı. [1] S´ıt’ tvoˇr´ı vz´ ajemnˇe propojen´e neurony tak, ˇze v´ ystup neuronu je vstupem neuron˚ u jin´ ych. Kaˇzd´a s´ıt’ mus´ı obsahovat vstupn´ı vrstvu, v´ ystupn´ı a libovoln´ y poˇcet vrstev skryt´ ych. Pomoc´ı neuronov´ ych s´ıt´ı lze ˇreˇsit mnoho r˚ uzn´ ych probl´em˚ u, zejm´ena pak ty, kter´e by byly ˇreˇsiteln´e velmi obt´ıˇznˇe pomoc´ı klasick´eho line´arn´ıho programu, popˇr´ıpadˇe by nebyly ˇreˇsiteln´e v˚ ubec. Mezi takov´eto probl´emy patˇr´ı napˇr´ıklad rozpozn´avan´ı obrazu nebo ˇreˇci. Dalˇs´ı v´ yhodou je, ˇze v pˇr´ıpadˇe selh´an´ı neuronu, s´ıt’ m˚ uˇze bez probl´emu pokraˇcovat d´ıky jej´ı paraleln´ı povaze. Umˇel´ a neuronov´a s´ıt’ je pomˇernˇe jednoduˇse implementovateln´a a m˚ uˇze ’ b´ yt vyuˇzita ve vˇetˇsinˇe aplikac´ı. Mezi hlavn´ı nev´ yhody patˇr´ı nutnost neuronovou s´ıt nauˇcit. Jednak je tˇreba m´ıt k dispozici vhodnou a pomˇernˇe velkou mnoˇzinu tr´enovac´ıch dat a jednak je uˇcen´ı v´ ypoˇcetnˇe n´ aroˇcn´e. Existuj´ı dva z´ akladn´ı modely pro uˇcen´ı umˇel´e neuronov´e s´ıtˇe: uˇcen´ı s uˇcitelem a uˇcen´ı bez uˇcitele. V prvn´ım pˇr´ıpadˇe je s´ıti pˇredloˇzen vstup i poˇzadovan´ y v´ ystup. S´ıt’ vˇzdy vyhodnot´ı vstup a sv˚ uj v´ ystup porovn´a s poˇzadovan´ ym. Pokud se v´ ystup liˇs´ı, je provedena korekce vah popˇr. prah˚ u neuron˚ u a proces je opakov´an, dokud nedos´ahneme n´ami stanoven´e minim´ aln´ı chyby. V pˇr´ıpadˇe uˇcen´ı bez uˇcitele nen´ı pˇredem zn´am v´ ystup. Rozdˇelen´ı vzor˚ u do skupin je ˇcistˇe v reˇzii neuronov´e s´ıtˇe. Kaˇzd´ y jednotliv´ y neuron v s´ıti obsahuje aktivaˇcn´ı funkci. Tyto funkce mohou b´ yt bin´arn´ı nebo spojit´e, v z´ avislosti na povaze neuronov´e s´ıtˇe. Aktivaˇcn´ı funkce urˇcuj´ı zda neuron bude na z´ akladˇe vstupu aktivov´ an nebo z˚ ustane v pasivn´ım m´odu. Nastaven´ı spr´avn´ ych aktivaˇcn´ıch funkc´ı je stˇeˇzejn´ı pro z´ısk´an´ı pˇresn´ ych v´ ysledk˚ u.
2.5.1
V´ıcevrstv´ a dopˇ redn´ a neuronov´ a s´ıt’
V´ıcevrstv´e dopˇredn´e s´ıtˇe odstraˇ nuj´ı oproti jednovrstv´ ym dopˇredn´ ym neuronov´ ym s´ıt´ım (perceptron˚ um) nˇekter´ a omezen´ı. Pro uˇcen´ı takov´ ychto s´ıti se vˇetˇsinou pouˇz´ıv´a metoda
10
zpˇetn´eho ˇs´ıˇren´ı (backpropagation) a jej´ı variace nebo tak´e algoritmus Rprop (resilient backpropagation). U obou tˇechto algoritm˚ u se jedn´a o uˇcen´ı s uˇcitelem. Metoda zpˇetn´eho ˇs´ıˇren´ı funguje ve tˇrech f´ az´ıch, ˇs´ıˇren´ı sign´alu smˇerem dopˇredu, zpˇetn´e ˇs´ıˇren´ı chyby a v posledn´ı f´ azi jsou aktualizov´ any v´ ahy neuron˚ u. V´ıcevrstv´ y perceptron je moˇzn´e pouˇz´ıt v mnoha oblastech a dosahuje velmi dobr´ ych v´ ysledk˚ u, v pˇr´ıpadˇe, ˇze je pouˇzita kvalitn´ı mnoˇzina tr´enovac´ıch dat. z pˇredchoz´ıho tedy vypl´ yv´ a, ˇze je vhodn´e jej pouˇz´ıt i pˇri extrakci hlavn´ıho textu z webov´ ych dokument˚ u.
11
Kapitola 3
N´ avrh algoritmu V t´eto pr´ aci se zab´ yv´ am extrakci hlavn´ıho textu z webov´ ych dokument˚ u zaloˇzen´e na textov´ ych rysech. Pro tento pˇr´ıstup jsem se rozhodl pˇredevˇs´ım proto, ˇze algoritmy zaloˇzen´e na t´eto metodˇe dosahuj´ı velmi dobr´ ych v´ ysledk˚ u pˇri zachov´an´ı efektivity i pˇri mal´e n´aroˇcnosti na v´ ypoˇcetn´ı v´ ykon. Na n´ asleduj´ıc´ıch ˇr´adc´ıch bude postupnˇe pops´an n´avrh tohoto algoritmu, od pˇredzpracov´ an´ı p˚ uvodn´ıho dokumentu, pˇres n´aslednou anal´ yzu aˇz po samotnou extrakci hlavn´ıho textu a vizualizaci v´ ysledk˚ u. J´adro programu, tedy samotn´a anal´ yza, bude vyuˇz´ıvat umˇelou v´ıcevrstvou neuronovou s´ıt’. Na obr´azku 3.1 je zobrazen n´avrh programu a rozdˇelen´ı na jednotliv´e ˇc´ asti a vstupy resp. v´ ystupy jednotliv´ ych ˇc´ast´ı.
Obr´ azek 3.1: N´avrh programu - jednotliv´e ˇc´asti
3.1
Pˇ redzpracov´ an´ı dokumentu
Aby mohl b´ yt webov´ y dokument potaˇzmo HTML str´anka d´ale analyzov´an a mohlo doj´ıt k extrakci hlavn´ıho textu, je tˇreba jej nejdˇr´ıve dostat do podoby, se kterou bude moci algoritmus d´ ale pracovat. Pro tento u ´ˇcel bude slouˇzit jak´ ysi preprocesor, jehoˇz vstupem bude webov´ y dokument ve form´ atu HTML a v´ ystupem bude posloupnost objekt˚ u, kter´e budeme naz´ yvat z´ akladn´ımi bloky.
12
V prvn´ı f´ azi preprocesor dostane na vstupu HTML str´anku, kterou pomoc´ı nˇekter´eho z dostupn´ ych syntaktick´ ych analyz´ator˚ u jazyka HTML pˇrevede na DOM. Pot´e z dokumentu odstran´ı znaˇcky, o kter´ ych v´ıme, ˇze urˇcitˇe nemohou obsahovat hlavn´ı obsah. Nejdˇr´ıve bude tedy odstranˇena cel´ a znaˇcka , pˇriˇcemˇz budou uloˇzen´e nˇekter´e uˇziteˇcn´e informace, kter´e tato znaˇcka m˚ uˇze obsahovat. Takovouto informaci m˚ uˇze obsahovat napˇr´ıklad
, kterou m˚ uˇzeme vyuˇz´ıt pˇri n´asledn´e anal´ yze. N´aslednˇe se odstran´ı znaˇcky jako jsou <script>, <style>, a dalˇs´ı s podobn´ ym s´emantick´ ym v´ yznamem. Posledn´ım u ´konem v t´eto ˇc´ asti je jiˇz pomˇernˇe zredukovan´ y DOM pˇrev´est do vnitˇrn´ı reprezentace, tedy posloupnosti z´akladn´ıch blok˚ u, ve stejn´em poˇrad´ı, jako se nal´ezaj´ı v DOM. Bˇehem tohoto pˇrevodu budou jeˇstˇe z DOM odstranˇeny veˇsker´e ˇr´adkov´e znaˇcky (napˇr. <span>, <strong>) a budou nahrazeny pouze jejich obsahem. Urˇcit´e znaˇcky, jako napˇr´ıklad odkazy, budou poˇc´ıt´ any a pˇriˇrazov´any jako vlastnosti z´akladn´ıch blok˚ u a pozdˇeji vyuˇzity pro anal´ yzu. Z´ akladn´ım blokem tedy budou ve v´ ysledku blokov´e znaˇcky obsahuj´ıc´ı text. Z´akladn´ım blokem je vˇzdy blokov´ y HTML element, kter´ y neobsahuje ˇz´adn´e dalˇs´ı blokov´e elementy. V´ yjimku tvoˇr´ı elementy, kter´e obsahuj´ı jak samotn´ y text, tak blokov´e znaˇcky. V tomto pˇr´ıpadˇe bude text obalen do nov´e znaˇcky, stejn´e jako obaluj´ıc´ı, a bude z nˇej vytvoˇren z´akladn´ı blok v z´ avislosti, kde se text nach´az´ı. Blokov´e elementy neobsahuj´ıc´ı text budou automaticky ignorov´ any. Takt´eˇz budou ignorov´any elementy obsahuj´ıc´ı pouze b´ıl´e znaky, a posloupnosti v´ıce neˇz jednoho b´ıl´eho znaku budou nahrazeny b´ıl´ ym znakem jedn´ım.
3.2
Anal´ yza dokumentu
T´ato ˇc´ ast algoritmu bude m´ıt za u ´kol anal´ yzu jednotliv´ ych blok˚ u a pozdˇeji na z´akladˇe t´eto anal´ yzy detekovat a extrahovat hlavn´ı obsah dokumentu. Pˇri detekci jsem se rozhodl vyuˇz´ıt mnoho r˚ uzn´ ych vlastnost´ı zaloˇzen´ ych jak na textov´ ych rysech, tak i na z´akladˇe vlastnost´ı samotn´ ych blok˚ u, jako je napˇr´ıklad jejich pozice v posloupnosti a vlastnosti pˇredchoz´ıho a n´asleduj´ıc´ıho bloku.
3.2.1
Textov´ e rysy
Stˇeˇzejn´ı roli pˇri rozhodov´ an´ı, zda blok obsahuje ˇci neobsahuje hlavn´ı text, jsou textov´e rysy. V t´eto f´ azi anal´ yzy budeme zkoumat nˇekter´e z nich pro kaˇzd´ y z´akladn´ı blok samostatnˇe. Vypoˇc´ıt´ any budou parametry jako pr˚ umˇern´a d´elka slov, pr˚ umˇern´a d´elka vˇety, poˇcty vˇet v bloku, poˇcet slov, poˇcet p´ısmen, poˇcet slov zaˇc´ınaj´ıc´ıch velk´ ym p´ısmenem a poˇcet slov vys´azen´ ych pouze verz´ alkami. Vˇsechny hodnoty mus´ı b´ yt pˇred vstupem do klasifik´atoru, tedy neuronov´e s´ıtˇe normalizov´any a upraveny tak, aby byly v intervalu < 0, 1 >. Vˇsechny poˇcty jsou upraveny podle 1 vzorce vstup = pocet . Tedy pod´ıl poˇctu dan´e vlastnosti v bloku v˚ uˇci maxim´aln´ımu nalezen´emu poˇctu v dokumentu. U pr˚ umˇern´ ych d´elek bude situace podobn´a a bude se poˇc´ıtat analogicky.
3.2.2
Speci´ aln´ı znaky
Jako dalˇs´ı ukazatel pˇri klasifikaci bude poˇcet v´ yskytu r˚ uzn´ ych speci´aln´ıch znak˚ u a slov v bloku. Speci´ aln´ı znaky budou v programu implicitnˇe nastaveny. Napˇr´ıklad blok obsahuj´ıc´ı c nen´ı vˇetˇsinou hlavn´ım obsahem ale patiˇckou. Navigaˇcn´ı prvky str´anky zase ˇcasto znak ’ ’ obsahuj´ı znak ’|’. Tyto znaky a ˇrada jin´ ych budou v t´eto f´azi spoˇc´ıt´any a poˇcty uloˇzeny jako atributy blok˚ u.
13
Vstupem do neuronov´e s´ıtˇe je pak pouze pˇr´ıznak tedy hodnota 0 resp. 1 coˇz odpov´ıd´ a v´ yznamu obsahuje resp. neobsahuje dan´ y speci´aln´ı znak.
3.2.3
Hustotn´ı rysy
V t´eto f´ azi jsou jiˇz zn´ amy z´ akladn´ı ukazatel´e a poˇcty a z nich budou vypoˇc´ıt´any dalˇs´ı. Jednou z d˚ uleˇzit´ ych vlastnost´ı je hustota odkaz˚ u v˚ uˇci poˇctu slov popˇr´ıpadˇe hustota vˇet obsahuj´ıc´ıch odkaz oproti vˇet´ am bez odkazu. Dalˇs´ı ukazatele zaloˇzen´e na hustotˇe, kter´e budou poˇc´ıt´ any je pomˇer slov vys´ azen´ ych verz´alkami oproti slov˚ um obsahuj´ıc´ı mal´e p´ısmena, hustota speci´ aln´ıch znak˚ u, hustota slov obsahuj´ıc´ı v´ıce znak˚ u neˇzli je pr˚ umˇern´a d´elka slov v bloku. Koneˇcnˇe bude vypoˇc´ıt´ ana i hustota nˇekter´ ych znaˇcek v bloku v˚ uˇci textu. vyskytu vlastnosti Jelikoˇz hustota je poˇc´ıt´ ana podle vzorce vstup = pocet celkovy , tedy pod´ıl poˇctu pocet poˇc´ıtan´e vlastnosti (napˇr. odkaz˚ u) v˚ uˇci celkov´emu poˇctu (napˇr. slov), nen´ı nutno hodnoty d´ale upravovat, protoˇze v´ ysledkem je vˇzdy hodnota z poˇzadovan´eho intervalu. V pˇr´ıpadˇe, ˇze se ve jmenovateli objev´ı 0, je v´ ysledkem 1.
3.2.4
Vnoˇ ren´ eˇ r´ adkov´ e elementy
Pˇri anal´ yze budeme br´ at ohled tak´e na to, jak´e ˇr´adkov´e elementy z´akladn´ı blok obsahoval. Napˇr´ıklad pozitivn´ım zp˚ usobem budeme hodnotit bloky se znaˇckami jako jsou , a dalˇs´ı. Hodnoty pro vstup do klasifik´atoru jsou v tomto pˇr´ıpadˇe normalizov´any stejnˇe jako poˇcty u textov´ ych rys˚ u.
3.2.5
Pozice v dokumentu
Pˇri zkoum´ an´ı webov´ ych dokument˚ u jsem zjistil, ˇze ve vˇetˇsinˇe pˇr´ıpad˚ u jsou webov´e dokumenty strukturovan´e podobn´ ym zp˚ usobem. Na zaˇc´atku se nal´ez´a hlaviˇcka n´asledov´ana hlavn´ım obsahem a r˚ uzn´ ymi dalˇs´ımi bloky a na konci se nal´ez´a patiˇcka. Proto budou z´akladn´ı bloky na okraj´ıch posloupnosti hodnoceny negativnˇe, kdeˇzto naopak bloky bl´ıˇze stˇredu pozitivnˇe. Na vstup neuronov´e s´ıtˇe je v tomto pˇr´ıpadˇe pˇrivedena relativn´ı pozice v dokumentu, index bloku kter´a je vypoˇc´ıt´ ana podle vzorce pozicerelativni = celkovy pocet bloku
3.2.6
Atributy znaˇ cek
Pˇri d˚ ukladnˇejˇs´ım pohledu na HTML str´anky nal´ezaj´ıc´ı se na internetu jsem zjistil, ˇze ˇcasto lze ˇc´asti str´ anky rozpoznat na z´ akladˇe hodnot atribut˚ u znaˇcek. Napˇr´ıklad velice obl´ıben´ ym pravidlem je oznaˇcovat hlaviˇcku, obsah a patiˇcku pomoc´ı atribut˚ u id nebo class s hodnotami header, content, footer. Tyto a dalˇs´ı ukazatele zaloˇzen´e na podobn´em principu budou v navrhovan´em algoritmu vyuˇzity. V tomto pˇr´ıpadˇe jsou opˇet na vstup klasifik´atoru pˇrivedeno pouze pˇr´ıznaky, tedy hodnoty 0 nebo 1, zda blok nebo nˇekter´ y z jeho rodiˇc˚ u obsahuje pozitivnˇe hodnocenou tˇr´ıdu.
3.3
Klasifikace blok˚ u
V pˇredchoz´ıch odstavc´ıch byla pops´ana vˇetˇsina vlastnost´ı, na z´akladˇe kter´ ych budeme prov´adˇet v t´eto ˇc´ asti klasifikaci jednotliv´ ych blok˚ u.
14
Pro samotnou klasifikaci jednotliv´ ych blok˚ u bude vyuˇzita umˇel´a dopˇredn´a v´ıcevrstv´ a ’ ’ neuronov´ a s´ıt . S´ıt bude m´ıt vstupn´ı vrstvu, v´ ystupn´ı vrstvu s jedn´ım neuronem a tˇri skryt´e vrstvy. Na vstup budou pˇrivedeny hodnoty vlastnost´ı vypoˇc´ıtan´ ych v pˇredchoz´ıch kroc´ıch, nejdˇr´ıve vˇsak budou tyto hodnoty normalizov´any. Na vstupu budou rovnˇeˇz vlastnosti pˇredchoz´ıho a n´ asleduj´ıc´ıho bloku. Poˇcet neuron˚ u v jednotliv´ ych skryt´ ych vrstv´ ach nelze dopˇredu urˇcit, a proto budou spr´avn´e poˇcty urˇceny na z´akladˇe d˚ ukladn´eho testov´an´ı. Rovnˇeˇz aktivaˇcn´ı funkce neuron˚ u ve vrstv´ach a strmost tˇechto funkc´ı bude tˇreba urˇcit aˇz pˇri implementaci. Jako nejlepˇs´ı uˇc´ıc´ı algoritmus se jev´ı v tomto pˇr´ıpadˇe metoda pruˇzn´eho zpˇetn´eho ˇs´ıˇren´ı chyby (resilient backpropagation, Rprop). Budou vˇsak odzkouˇseny i alternativn´ı uˇc´ıc´ı algoritmy. Kritickou u ´lohou bude spr´ avn´e nastaven´ı hraniˇcn´ıch hodnot. V´ ystupem neuronov´e s´ıtˇe bude ˇc´ıslo v rozmez´ı < −1, 1 > a je tˇreba nastavit pr´ah, kdy se m´a s blokem zach´azet jako s blokem obsahuj´ıc´ım hlavn´ı text, blokem obsahuj´ıc´ım ˇsablonu a kdy bude blok povaˇzov´ an za t´emˇeˇr spr´ avn´ y. Tyto prahy budou v programu nastaveny implicitnˇe, pravdˇepodobnˇe ale poskytnu moˇznost je explicitnˇe pˇrenastavit.
3.4
N´ asledn´ a anal´ yza
Tato ˇc´ ast programu bude m´ıt za u ´kol ˇc´asteˇcnˇe eliminovat chybovost neuronov´e s´ıtˇe. Jelikoˇz se webov´e dokumenty vˇetˇsinou dosti liˇs´ı, m˚ uˇze doj´ıt pˇri klasifikaci i k znaˇcn´e chybovosti. Vˇetˇsinou se jedn´ a o ˇspatn´e vyhodnocen´ı hlavn´ıho nadpisu, blok z dlouh´ ym textem v patiˇcce m˚ uˇze b´ yt oznaˇcen jako hlavn´ı text popˇr. kr´atk´ y text v r´amci hlavn´ıho obsahu m˚ uˇze b´ yt oznaˇcen za nevyhovuj´ıc´ı. Vˇetˇsinu tˇechto nedostatk˚ u se budu snaˇzit v t´eto f´azi eliminovat pomoc´ı r˚ uzn´ ych heuristik. Tuto ˇc´ast bude moˇzno explicitnˇe zak´azat.
3.4.1
Spoleˇ cn´ e nadˇ razen´ e znaˇ cky
Pˇri klasifikaci bude rovnˇeˇz br´ an ohled na nadˇrazen´e elementy. D´a se totiˇz pˇredpokl´adat, ˇze hlavn´ı obsah bude oddˇelen od generick´eho obsahu, tzn. bude obalen stejnou znaˇckou. Tato znaˇcka vˇsak m˚ uˇze b´ yt nˇekolik u ´rovn´ı nad z´akladn´ım blokem. Proto bude nutn´e porovn´avat u z´akladn´ıch blok˚ u cesty k nadˇrazen´ ym element˚ um a tyto porovn´avat. Kaˇzd´ y z´akladn´ı blok bude m´ıt ve v´ ysledku uloˇzenou informaci o tom, se kter´ ymi jin´ ymi bloky m´a spoleˇcn´e nadˇrazen´e elementy. Zjistil jsem, ˇze tento ukazatel ve znaˇcn´e m´ıˇre pˇrisp´ıv´a k zpˇresnˇen´ı klasifikace u tˇeˇzko rozhodnuteln´ ych blok˚ u.
3.4.2
Vlastnosti sousedn´ıch blok˚ u
Za pˇredpokladu, ˇze hlavn´ı obsah tvoˇr´ı souvisl´ y text, lze u tˇeˇzko rozhodnuteln´ ych blok˚ u hodnotit i vlastnosti jejich soused˚ u, a to n´asledovn´ ym zp˚ usobem. Blok je povaˇzov´an za hlavn´ı obsah pokud se v jeho bl´ızk´em okol´ı nal´ezaj´ı z obou stran bloky s hlavn´ım obsahem nebo se blok nal´ez´ a bl´ızko zaˇc´ atku a n´asleduj´ıc´ı blok je hlavn´ım obsah nebo analogicky pro blok nal´ezaj´ıc´ı se ke konci dokumentu. V opaˇcn´em pˇr´ıpadˇe je blok povaˇzov´an sp´ıˇse za generick´ y obsah. Z´ aroveˇ n bude zach´azeno ponˇekud rozd´ıln´ ym zp˚ usobem s r˚ uzn´ ymi typy blok˚ u. Napˇr´ıklad pro nadpis budou pravidla jin´a neˇz je tomu napˇr´ıklad u poloˇzky seznamu.
3.4.3
Detekce zaˇ c´ atku hlavn´ıho obsahu
D˚ uleˇzit´ y ukazatel, kter´ y m˚ uˇze znaˇcnˇe pˇrispˇet ke znaˇcn´emu zv´ yˇsen´ı pˇresnosti algoritmu, je detekce, kde hlavn´ı obsah zaˇc´ın´ a. K tomu n´am m˚ uˇze pomoci obsah elementu v 15
, protoˇze b´ yv´ a dobr´ ym zvykem, ˇze tato znaˇcka obsahuje alespoˇ n jako podˇretˇezec nadpis hlavn´ıho obsahu. Pokud pˇredpokl´ad´ame, ˇze nadpis je obsaˇzen ve znaˇcce popˇr. , pak lze pomˇernˇe jednoduch´ ym postupem nal´ezt zaˇc´atek hlavn´ıho textu. V pˇr´ıpadˇe, ˇze takov´ yto nadpis byl nalezen, budou bloky nad nadpisem oznaˇceny za generick´ y obsah.
3.5
Rozhran´ı programu
Program bude vytvoˇren jako knihovna, s rozhran´ım pro pˇr´ıkazov´ y ˇr´adek a bude rovnˇeˇz obsahovat jednoduch´e webov´e rozhran´ı.
3.5.1
V´ ystup programu
V´ ystupem programu bude kolekce jednotliv´ ych z´akladn´ıch blok˚ u. Pomoc´ı metod, kter´e bude m´ıt blok implementov´ an, bude moˇzno pˇristoupit k vypoˇc´ıtan´ ym vlastnostem, zjistit zda je blok hlavn´ım obsahem ˇci generick´ ym obsahem atd.
3.5.2
Knihovna
Aby byla zaruˇcena univerz´ alnost, jednoduch´a instalace a moˇzn´a integrace do jin´ ych syst´emu, bude program distribuov´ an jako knihovna. Knihovnu bude pak moˇzno pouˇz´ıt v jak´emkoliv syst´emu napsan´em ve stejn´em jazyce a d´ale pracovat s v´ ystupem.
3.5.3
Webov´ e rozhran´ı a vizualizace v´ ysledk˚ u
Webov´e rozhran´ı bude jednoduch´e a uˇzivatelsky pˇr´ıvˇetiv´e. Bude obsahovat pouze z´akladn´ı funkˇcnost, zad´ an´ı URL str´ anky, ze kter´e se m´a extrahovat text, v´ ypis vˇsech blok˚ u, v´ ypis blok˚ u pouze z hlavn´ım obsahem a moˇznost zak´azat ˇci povolit n´aslednou anal´ yzu. Ke kaˇzd´emu bloku bude kromˇe textu zobrazeno jeho v´ ysledn´e hodnocen´ı a typ elementu.
3.5.4
Pˇ r´ıkazov´ yˇ r´ adek
Program bude moˇzno spustit rovnˇeˇz pˇr´ımo z pˇr´ıkazov´e ˇr´adky, kdy na z´akladˇe URL popˇr. cesty k souboru bude extrahov´ an hlavn´ı text z dokumentu a n´aslednˇe zaps´an do zadan´eho souboru nebo na standardn´ı v´ ystup.
16
Kapitola 4
Implementace V t´eto kapitole popisuji samotnou implementaci syst´emu. V samotn´em u ´vodu kapitoly jsou shrnuty ve zkratce technologie pouˇz´ıvan´e pro tvorbu webov´ ych dokument˚ u, implementaˇcn´ı jazyk a pouˇzit´e gemy (knihovny).
4.1
Znaˇ ckovac´ı jazyky pro tvorbu webov´ ych dokument˚ u
Pro tvorbu webov´ ych dokument˚ u se ve vˇetˇsinˇe pˇr´ıpad˚ u vyuˇz´ıv´a znaˇckovac´ıho jazyka HTML (HyperText Markup Language). V souˇcasn´e dobˇe pˇrevaˇzuj´ı dokumenty vytvoˇren´e za pomoc´ı HTML ve verzi 4.011 nebo v HTML52 . Vytv´aˇren´ı standard˚ u pro HTML m´a na starosti konsorcium W3C3 . i kdyˇz je HTML5 v souˇcasnosti st´ale ve st´adiu n´avrhu a schv´alen by mˇel b´ yt aˇz pˇr´ıˇst´ım rokem, je jiˇz naprosto bˇeˇznˇe vyuˇz´ıv´an. Oproti pˇredchoz´ım verz´ım jiˇz nen´ı z´avisl´ y na SGML (Standard Generalized Markup Language), pˇrid´av´a nov´e znaˇcky a nˇekter´e zastaral´e odstraˇ nuje. Pro vytv´ aˇren´ı webov´ ych dokument˚ u lze kromˇe jazyka HTML vyuˇz´ıt tak´e XML (Extensible Markup Language), coˇz je obecn´ y znaˇckovac´ı jazyk a vych´az´ı z jazyka SGML. Stejnˇe jako HTML je standardizov´an a spravov´an konsorciem W3C4 . Jelikoˇz se zdrojov´ ym k´ odem ve znaˇckovac´ıch jazyc´ıch nen´ı moˇzn´e pracovat pˇr´ımo, je tˇreba je nejdˇr´ıve interpretovat a t´ım z´ıskat reprezentaci dokumentu v DOM (Document Object Model, objektov´ y model dokumentu). Dokument v t´eto struktuˇre n´am pak umoˇzn ˇuje jeho modifikaci, ˇcten´ı a prohled´ av´an´ı.
4.2
Programovac´ı jazyk Ruby
Ruby je interpretovan´ y skriptovac´ı programovac´ı jazyk. D´ıky sv´e jednoduch´e syntaxi je pomˇernˇe snadn´ y k nauˇcen´ı, pˇresto vˇsak dostateˇcnˇe v´ ykonn´ y, aby dok´azal konkurovat zn´amˇejˇs´ım jazyk˚ um jako je Python a Perl [16]. Ruby5 je plnˇe objektov´ ym jazykem, coˇz znamen´a, ˇze vˇse je objekt. Existuje nˇekolik r˚ uzn´ ych interpret˚ u Ruby, liˇs´ıc´ıch se zejm´ena v jazyce, ve kter´em jsou implementov´any a zda obsahuj´ı nebo neobsahuj´ı GIL (Global Interpreter Lock, glob´aln´ı z´amek interpretu). 1
http://www.w3.org/TR/REC-html40/ http://www.w3.org/TR/html5/ 3 http://www.w3.org/ 4 http://www.w3.org/ 5 https://www.ruby-lang.org/ 2
17
GIL zaruˇcuje, ˇze souˇcasnˇe m˚ uˇze vykon´avat pr´aci pouze jedno vl´akno. P˚ uvodn´ı, a dnes pravdˇepodobnˇe nejrozˇs´ıˇrenˇejˇs´ı interpret jazyka Ruby pod n´azvem MRI (Matz’s Ruby Interpreter) GIL obsahuje. Tento jazyk jsem zvolil pro implementaci syst´emu v r´amci t´eto pr´ace zejm´ena pro pohodln´ y a rychl´ y v´ yvoj. Rovnˇeˇz komunita kolem tohoto jazyka je pomˇernˇe rozs´ahl´a a dostupnost r˚ uzn´ ych knihoven je obˇs´ırn´ a. Z´aroveˇ n v ruby podobn´ y syst´em nen´ı zat´ım implementov´an nebo nen´ı rozˇs´ıˇren. Ruby je st´ale aktivnˇe vyv´ıjeno a d´ıky velk´emu z´ajmu ze strany v´ yvoj´aˇr˚ u nic nenaznaˇcuje tomu, ˇze by v bl´ızk´e budoucnosti tomu mˇelo b´ yt jinak. Tyto d˚ uvody pˇredurˇcuj´ı Ruby jako vhodn´ y jazyk pro implementaci tohoto syst´emu. Knihovny jsou v Ruby distribuov´any pomoc´ı tzv. gem˚ u. Instalace prob´ıh´a jednoduˇse pomoc´ı pˇr´ıkazu gem install NAME, vˇse ostatn´ı, od staˇzen´ı aˇz po instalaci vˇcetnˇe dokumentaci jiˇz probˇehne automaticky. Ruby je souˇcasnˇe ve verzi 2, nicm´enˇe st´ale hojnˇe vyuˇz´ıvan´a je rovnˇeˇz verze 1.9.3, popˇr. starˇs´ı 1.9.2. J´ a se zamˇeˇr´ım prim´arnˇe na v´ yvoj pro verzi >= 2.0.0, nebudu vˇsak pouˇz´ıvat konstrukce moˇzn´e pouze v t´eto verzi, tud´ıˇz program by nemˇel m´ıt probl´em i s niˇzˇs´ı verz´ı Ruby. Ruby jako takov´e neposkytuje jmenn´e prostory, lze je vˇsak nahradit modulem, kter´ y neimplementuje ˇz´ adnou funkcionalitu, pouze obaluje dan´e tˇr´ıdy nebo moduly. Toto se v praxi hojnˇe vyuˇz´ıv´ a a bude rovnˇeˇz pouˇzito v t´eto pr´aci. V´ yhodou tohoto ˇreˇsen´ı je eliminace konflikt˚ u mezi n´ azvy tˇr´ıd pˇri pouˇzit´ı gemu v syst´emu.
4.3
Pouˇ zit´ e gemy
N´ıˇze pop´ıˇsu stˇeˇzejn´ı gemy pˇri v´ yvoji programu. Podp˚ urn´e gemy zde neuv´ad´ım, jelikoˇz se jedn´a vˇetˇsinou pouze o r˚ uzn´ a vylepˇsen´ı nebo z´avislosti gemu jin´ ych.
4.3.1
Syntaktick´ y analyz´ ator Nokogiri
Nokogiri6 je nejpouˇz´ıvanˇejˇs´ım syntaktick´ ym analyz´atorem pro XML a HTML v Ruby. Obsahuje pˇrehledn´e rozhran´ı, pˇr´ıstup k element˚ um pomoc´ı r˚ uzn´ ych z´apisu jako je XPath nebo CSS notace, je flexibiln´ı a porad´ı si i s nevalidn´ımi ˇci poˇskozen´ ymi dokumenty. Umoˇzn ˇuje veˇskerou manipulac´ı s DOM, ˇcten´ı, z´apis nebo modifikaci jiˇz existuj´ıc´ıch element˚ u.
4.3.2
Umˇ el´ a neuronov´ a s´ıt’ RubyFann
RubyFann7 je gem, kter´ y umoˇzn ˇuje pouˇz´ıt pˇr´ımo v Ruby volnˇe ˇs´ıˇrenou knihovnu FANN (Fast Artificial Neural Network)8 , implementovanou v jazyce C. Tato knihovna zvl´ad´a jak plnˇe propojen´e tak pouze ˇc´ asteˇcnˇe propojen´e neuronov´e s´ıtˇe. Knihovna dovoluje pomˇernˇe rozs´ahl´e a podrobn´e nastaven´ı. Pro uˇcen´ı lze vyuˇz´ıt ˇctyˇr r˚ uzn´ ych variac´ı metody zpˇetn´eho ˇs´ıˇren´ı chyby, mezi jin´ ymi podporuje i algoritmus RProp. Aktivaˇcn´ı funkci i jej´ı strmost lze jednoduˇse nastavit pro kaˇzdou vrstvu zvl´aˇst’, pro vˇsechny skryt´e vrstvy najednou a v pˇr´ıpadˇe potˇreby lze nastavit aktivaˇcn´ı funkci pro kaˇzd´ y neuron zvl´aˇst’. Pˇri uˇcen´ı je potˇreba zvolit maxim´ aln´ı poˇcet epoch, po kolika epoch´ach se m´a vypsat na v´ ystup aktu´aln´ı stav uˇcen´ı a poˇzadovanou chybu. Tr´enovac´ı data mohou b´ yt pˇredan´e pˇr´ımo funkci nebo je lze naˇc´ıst 6
http://nokogiri.org/ http://ruby-fann.rubyforge.org/RubyFann.html 8 http://leenissen.dk/fann/wp/ 7
18
z pˇripraven´eho souboru. Natr´enovanou s´ıt’ lze jednoduˇse uloˇzit do souboru pro pozdˇejˇs´ı pouˇzit´ı, kdy je s´ıt’ naˇctena pˇr´ımo ze souboru a nen´ı tˇreba nov´eho uˇcen´ı.
4.3.3
Dom´ enovˇ e specifick´ y jazyk Sinatra
Sinatra9 je intern´ı dom´enovˇe specifick´ y jazyk napsan´ y v Ruby, urˇcen pro tvoˇren´ı mal´ ych webov´ ych aplikac´ı v Ruby. Umoˇzn ˇuje jednoduch´ ym zp˚ usobem definovat cesty URL, a definovat jejich chov´ an´ı. Sinatra je navrˇzen´a tak, aby z´apis cesty a chov´an´ı byl co nejjednoduˇsˇs´ı a nejkratˇs´ı, viz. Zdrojov´ y k´ od 4.1 # app . r b require ” sinatra ” g e t ” / ” do ” Ahoj s v e t e ! ” end Zdrojov´ y k´ od 4.1: Pˇr´ıklad aplikace ”Ahoj svete”v Sinatˇre
4.3.4
Verzovac´ı syst´ em Git
Git10 je jeden z nejzn´ amˇejˇs´ıch a nejrozˇs´ıˇrenˇejˇs´ıch distribuovan´ ych syst´emu spr´avy verz´ı. Pˇri v´ yvoji jej pouˇz´ıv´ am pro udrˇzov´an´ı verz´ı k´odu. Git byl p˚ uvodnˇe vytvoˇren Linusem Torvaldsem a byl urˇcen pro v´ yvoj j´adra Linuxu. Pozdˇeji se vˇsak d´ıky sv´e univerz´alnosti a dobr´e pouˇzitelnosti masivnˇe rozˇs´ıˇril a dnes jej pouˇz´ıv´a mnoho dalˇs´ıch velk´ ych i mal´ ych projekt˚ u. Jedn´ a se o svobodn´ y software.
4.4
Kostra programu
Pˇred samotnou implementac´ı programu jsem si vytvoˇril z´akladn´ı kostru programu. Kostra obsahuje pouze nezbytn´e adres´ aˇre a soubory. Z´akladem kaˇzd´e modern´ı aplikace v Ruby je soubor Gemfile, ve kter´em definujeme gemy, kter´e bude aplikace vyuˇz´ıvat. Standardn´ı gemy, kter´e obsahuje jazyk Ruby, nen´ı tˇreba uv´adˇet, uv´ad´ı se pouze gemy tˇret´ıch stran. Definice pomocn´ ych u ´loh, kter´e jsou spouˇstˇeny pˇr´ımo z pˇr´ıkazov´e ˇr´adky jsou obsaˇzeny v souboru Rakefile. Jelikoˇz jsem jiˇz od zaˇc´atku poˇc´ıtal se ˇs´ıˇren´ım programu v podobˇe gemu, veˇsker´ y k´ od potˇrebn´ y k fungov´an´ı aplikace je um´ıstˇen v adres´aˇri lib. Program jsem nazval Textractor, tud´ıˇz jsem vytvoˇril jeˇstˇe v adres´aˇri lib soubor textractor.rb, kter´ y bude obsahovat potˇrebn´e pˇr´ıkazy pro pˇripojen´ı potˇrebn´ ych gem˚ u a tak´e z´akladn´ı modul Textractor, kter´ y je v tomto kontextu pouˇzit jako jmenn´ y prostor, protoˇze klasick´e jmenn´e prostory v Ruby neexistuj´ı. Po vytvoˇren´ı kostry jsem udˇelal inicializaˇcn´ı commit do Gitu. Commity jsem prov´ adˇel d´ ale vˇzdy, kdyˇz byla pˇrid´ana nov´a funkˇcnost, popˇr. opraven´a chyba.
4.5
Z´ akladn´ı modul
Z´akladn´ım modulem aplikace, jak uˇz bylo zm´ınˇeno v´ yˇse je modul Textractor. Tento modul obsahuje pouze konstanty, d´ıky kter´ ym budu pozdˇeji rozliˇsovat zda se jedn´a o element 9 10
http://www.sinatrarb.com http://git-scm.com
19
blokov´ y nebo ˇr´ adkov´ y. Nˇekter´e ve skuteˇcnosti blokov´e elementy jsem pˇreˇradil k ˇr´adkov´ ym a opaˇcnˇe, zejm´ena kv˚ uli tomu, ˇze se vˇetˇsinou ve skuteˇcnosti pouˇz´ıvaj´ı v jin´em kontextu neˇz byly p˚ uvodnˇe navrhnuty. D´ ale modul obsahuje tˇr´ıdy HTTPClient, Configuration, Preprocessor, Analyser, PostAnalyser, Block, BlockFeatures, BlockCollection a App. Jak jednotliv´e tˇr´ıdy mezi sebou interaguj´ı je moˇzn´e vidˇet na Obr´azku 4.1.
Obr´ azek 4.1: Diagram tˇr´ıd a vztah˚ u mezi nimi
4.6
Konfigurace a HTTP klient
Tˇr´ıda Configuration implementuje naˇc´ıt´an´ı konfiguraˇcn´ıho souboru z adres´aˇre config a poskytuje pˇr´ıstup k poloˇzk´ am konfigurace. Pˇresto, ˇze v jazyce Ruby neexistuj´ı statick´e tˇr´ıdy jak je zn´ ame tˇreba z C++, tato tˇr´ıda je takto myˇslena. Pro pˇr´ıstup ke konfiguraci obsahuje pouze tˇr´ıdn´ı metody, tud´ıˇz nen´ı potˇreba jej´ı instanciace. Naˇcten´ y konfiguraˇcn´ı soubor je uloˇzen do tˇr´ıdn´ı promˇenn´e, je tedy naˇcten pouze jednou. Pro staˇzen´ı dokumentu z internetu slouˇz´ı objekt tˇr´ıdy HTTPClient, kter´ y obaluje rozhran´ı gemu curb, coˇz je gem poskytuj´ıc´ı vazbu na knihovnu libcurl.
4.7
Vstup programu
Vstupem aplikace m˚ uˇze b´ yt bud’ soubor nebo URL adresa webov´eho dokumentu, kter´ y m´a b´ yt analyzov´ an. Pokud je jako vstup uveden soubor pak je otevˇren pro ˇcten´ı a d´ ale zpracov´ av´ an, pokud je na vstupu URL, je str´anka nejdˇr´ıve staˇzena s vyuˇzit´ım instance tˇr´ıdy HTTPClient. V t´eto chv´ıli jsou data pˇripraven´a k anal´ yze a jsou pˇred´ana tˇr´ıdˇe Preprocess k pˇredzpracov´ an´ı. Vstup programu je pˇred´av´an bˇehem vytv´aˇren´ı nov´e instance tˇr´ıdy App.
20
4.8
Pˇ redzpracov´ an´ı dokumentu
Tento proces zastˇreˇsuje tˇr´ıda Preprocess, kter´a na vstupu obdrˇz´ı webov´ y dokument ve form´atu HTML popˇr. XML. V´ ystupem je pak kolekce neboli pole z´akladn´ıch blok˚ u pˇripraven´ ych k dalˇs´ı anal´ yze. Tˇr´ıda m´ a pouze dvˇe veˇrejn´e metody. Metoda new jako parametr vyˇzaduje webov´ y dokument ve formˇe ˇretˇezce. Metoda druh´a, perform, jiˇz spouˇst´ı samotn´e pˇredzpracov´an´ı a jej´ı n´avratovou hodnotou je poˇzadov´ ana kolekce blok˚ u. Pˇredzpracov´ an´ı prob´ıh´ a n´ asleduj´ıc´ım zp˚ usobem. Jiˇz pˇri vytvoˇren´ı instance je webov´ y dokument zpracov´ an pomoc´ı Nokogiri a je uloˇzen pouze objektov´ y model dokumentu. Pˇri zavol´an´ı metody perform je nejdˇr´ıve z´ısk´an z dokumentu obsah elementu title pomoc´ı metody get title a jeho obsah je uloˇzen pro dalˇs´ı pouˇzit´ı. N´aslednˇe metoda remove head z dokumentu odstran´ı cel´ y element head resp. nahrad´ı promˇennou s dokumentem obsahem elementu body. Nyn´ı jsou odstranˇeny zbyteˇcn´e elementy, konkr´etnˇe: koment´aˇre, script, noscript, object, video, style, canvas, iframe, svg, embed. Odstraˇ nov´an´ı element˚ u prob´ıh´ a pomoc´ı metody remove tags, kter´e pomoc´ı parametru pˇred´am n´azev elementu, kter´ y je tˇreba odstranit. N´ aslednˇe je na z´akladˇe takto zredukovan´eho dokumentu vytvoˇrena kolekce blok˚ u. Rozdˇelen´ı na bloky m´a plnˇe ve sv´e reˇzii objekt tˇr´ıdy BlockCollection, jej´ıˇz chov´an´ı bude pops´ ano n´ıˇze. Pot´e jsou pomoc´ı metod remove blank blocks! a remove whitespaces! z kolekce odstranˇeny pr´azdn´e bloky resp. bloky obsahuj´ıc´ı pouze b´ıl´e znaky a posloupnosti dvou a v´ıce b´ıl´ ych znak˚ u v bloc´ıch jsou nahrazeny b´ıl´ ym znakem jedn´ım. Nakonec kaˇzd´emu bloku nastav´ım jeho pozici v r´amci kolekce. T´ımto pˇredzpracov´ an´ı konˇc´ı.
4.9
Kolekce blok˚ u
Kolekce blok˚ u je instanc´ı tˇr´ıdy BlockCollection, kter´a dˇed´ı od tˇr´ıdy standardn´ı tˇr´ıdy Array, a jej´ı chov´ an´ı rozˇsiˇruje o dalˇs´ı metody a nˇekter´e z metod redefinuje. Konstruktor vyˇzaduje na vstupu jeden povinn´ y a jeden voliteln´ y parametr, jmenovitˇe: pˇredzpracovan´ y objektov´ y model dokumentu a n´ azev (title). V r´amci instanciace tˇr´ıdy je prvn´ı z parametr˚ u zkonvertov´ an na pole z´ akladn´ıch blok˚ u ˇcili jednotliv´e instance tˇr´ıdy Block. Konvertov´ an´ı prov´ ad´ı metoda convert. Metoda rekurzivnˇe proch´az´ı DOMem. Pro kaˇzd´ y je pomoc´ı metody terminal node? zjiˇstˇeno, zda aktu´aln´ı element obsahuje nˇejak´e dalˇs´ı blokov´e elementy. V pˇr´ıpadˇe negativn´ıho vyhodnocen´ı metoda vol´a sama sebe a zanoˇruje se d´ale. V opaˇcn´em pˇr´ıpadˇe je na z´akladˇe elementu vytvoˇren nov´ y z´akladn´ı blok, vloˇzen do kolekce a metoda se vynoˇruje zpˇet. Objekt si nav´ıc pˇri vytvoˇren´ı uloˇz´ı pro dalˇs´ı pouˇzit´ı hodnotu parametru title.
4.10
Z´ akladn´ı blok
Nejrozs´ ahlejˇs´ı a stˇeˇzejn´ı tˇr´ıdou cel´eho programu je Block. Kaˇzd´a instance t´eto tˇr´ıdy obsahuje instanˇcn´ı promˇenn´e pro origin´aln´ı element z objektov´eho modelu dokumentu, vyextrahovan´ y a upraven´ y text pro potˇreby programu, n´azev rodiˇce, cestu k elementu v r´amci dokumentu v XPath reprezentaci, atributy class a id vˇsech element˚ u nadˇrazen´ ych, odkaz na celou kolekci bloku aby mohl z´ıskat informace o sv´ ych sousedech, pozici v r´amci kolekce. Kaˇzd´ y objekt obsahuje rovnˇeˇz podp˚ urn´e promˇenn´e a metody pro dalˇs´ı zpracov´an´ı. Do instanˇcn´ı promˇenn´e nn score bude uloˇzen v´ ysledek z klasifikace pomoc´ı neuronov´e
21
s´ıtˇe a promˇenn´ a score bude m´ıt fin´aln´ı hodnotu po n´asledn´e anal´ yze. Pro vˇsechny v´ yˇse zmiˇ novan´e promˇenn´e jsou dostupn´e metody pro ˇcten´ı hodnot a pro nˇekter´e rovnˇeˇz zapisovaˇce. Pro anal´ yzu a n´ aslednou anal´ yzu jsou rovnˇeˇz pˇripraveny metody good? a bad? a analogicky stejn´e metody s pˇredponou nn . Metody jako headline?, paragraph? apod. jsou urˇceny pro zjiˇst’ov´ an´ı typu bloku. Metoda features slouˇz´ı pro z´ıskan´ı vlastnost´ı bloku a jej´ı n´avratovou hodnotou je instance tˇr´ıdy BlockFeatures. Metody features data a data for neural slouˇz´ı k z´ıskan´ı vstup˚ u pro neuronovou s´ıt’. Prvn´ı jmenovan´ a vrac´ı normalizovan´e vlastnosti aktu´aln´ıho bloku, ˇcili vˇsechny hodnoty jsou v rozmez´ı < 0, 1 >, kdeˇzto druh´a metoda vrac´ı i hodnoty pro pˇredchoz´ı a n´asleduj´ıc´ı blok. V´ ystupy tˇechto metod jsou uloˇzeny do instanˇcn´ıch promˇenn´ ych, aby pˇri dalˇs´ım vol´ ani nemusely b´ yt poˇc´ıt´ any znovu.
4.11
Vlastnosti bloku
Pro z´ısk´ an´ı a kalkulaci vlastnost´ı bloku vyuˇz´ıv´am tˇr´ıdu BlockFeatures. Samotn´a tˇr´ıda sest´av´a z nˇekolika z´ akladn´ıch metod pro z´ıskan´ı slov, vˇet a odkaz˚ u. Do tˇr´ıdy jsou vˇsak pˇripojeny jednotliv´e moduly neboli mixiny, kter´e implementuj´ı pomoc´ı zm´ınˇen´ ych z´akladn´ıch metod dalˇs´ı propoˇcty. Moduly se postupnˇe jmenuj´ı n´asledovnˇe Counts, Averages, Densities, NestedElements a SpecialChars. Dle m´eho n´azoru je jiˇz z jejich n´azvu jasn´e jejich urˇcen´ı a nen´ı potˇreba je d´ ale popisovat. Tato tˇr´ıda obsahuje nav´ıc instanˇcn´ı metodu good parent class?, kter´a zkoum´a tˇr´ıdy a identifik´ atory nadˇrazen´ ych element˚ u, a v pˇr´ıpadˇe nalezen´ı vhodn´e hodnoty vrac´ı true jinak false. Tato metoda je d˚ uleˇzit´a bˇehem n´asledn´e anal´ yzy, kter´a bude teprve pops´ana.
4.12
Implementace anal´ yzy dokumentu
Postup pro hlavn´ı anal´ yzu dokumentu je implementov´an ve tˇr´ıdˇe Analyser. Konstruktor akceptuje pouze jeden parametr block collection, ve kter´em pˇred´ame objektu kolekci blok˚ u. Dalˇs´ı a posledn´ı veˇrejnou metodou je perform, podobnˇe jako u tˇr´ıdy Preprocess. Tato metoda pomoc´ı neuronov´e s´ıtˇe vyhodnot´ı kaˇzd´ y jeden blok a nastav´ı mu nn score. Pˇred samotn´ ym vyhodnocen´ım se kontroluje zda neuronov´a s´ıt’ jiˇz byla inicializov´ana. V kladn´em pˇr´ıpadˇe se pˇristupuje ihned ke klasifikaci, naopak pokud s´ıt’ jeˇstˇe neexistuje je vol´ana metoda train network, kter´a m´a za u ´kol s´ıt’ vytvoˇrit a uloˇzit do tˇr´ıdn´ı promˇenn´e pro pozdˇejˇs´ı vyuˇzit´ı. Po vytvoˇren´ı s´ıtˇe je s´ıt’ uloˇzena do souboru, aby mohla b´ yt pˇr´ıˇstˇe ’ naˇctena bez uˇcen´ı. Pokud vˇsak ˇz´adn´a s´ıt zat´ım vytvoˇrena nebyla, je tˇreba vytvoˇrit zcela novou s´ıt’ a prov´est uˇcen´ı. S´ıt’ je vytvoˇrena i uˇcena prostˇrednictv´ım gemu RubyFann. Vstupn´ı vrstva neuronov´e s´ıtˇe obsahuje 78 neuron˚ u a v´ ystupn´ı vrstva neuron pouze jeden. Na vstup jsou pˇrivedeny n´ asleduj´ıc´ı hodnoty: • Poˇcet p´ısmen • Poˇcet slov • Poˇcet slov zaˇc´ınaj´ıc´ıch velk´ ym p´ısmenem • Poˇcet slov vys´ azen´ ych verz´ alkami • Poˇcet vˇet • Hustota ˇc´ısel 22
• Hustota mezer • Poˇcet odkaz˚ u • Poˇcet svisl´ ych ˇcar • Poˇcet obr´ azk˚ u • Poˇcet ”pozitivnˇe hodnocen´ ych”ˇr´adkov´ ych element˚ u (napˇr. cite) c • Zda obsahuje speci´ aln´ı znak ’ ’ • Zda obsahuje znaky ’<’ nebo ’>’ • Pr˚ umˇern´ a d´elka slov • Pr˚ umˇern´ a d´elka vˇet • Hustota obr´ azk˚ u v˚ uˇci textu • Hustota svisl´ ych ˇcar • Hustota odkaz˚ u • Hustota slov vys´ azen´ ych verz´alkami • Hustota dlouh´ ych slov • Hustota kr´ atk´ ych slov • Zda nˇekter´ y z nadˇrazen´ ych element˚ u obsahuje ”pozitivnˇe hodnocenou”tˇr´ıdu ˇci identifik´ ator • Zda je to nadpis • Zda je to element type • Zda je to prvek seznamu • Relativn´ı pozice v dokumentu Vˇsechny tyto hodnoty jsou nav´ıc pomoc´ı metody normalize for neural normalizov´any do intervalu < 0, 1 >. Pro kaˇzd´ y element jsou tyto hodnoty pos´ıl´any tˇrikr´at. Pro pˇredchoz´ı blok, aktu´ aln´ı blok a n´ asleduj´ıc´ı. Aby s´ıt’ pod´ avala korektn´ı v´ ysledky a byla co nejpˇresnˇejˇs´ı, musel jsem nejdˇr´ıve naj´ıt vhodn´e nastaven´ı aktivaˇcn´ıch funkc´ı a jejich strmosti, vhodn´ y uˇc´ıc´ı algoritmus, vhodn´ y poˇcet skryt´ ych vrstev a poˇcty neuron˚ u v jednotliv´ ych vrstv´ach. Mnou nalezeny optim´aln´ı parametry s´ıtˇe jsou uvedeny v Tabulce 4.1. Informace o tom, jak jsem naˇsel vhodn´e nastaven´ı budou uvedeny v nˇekter´e z n´asleduj´ıc´ıch kapitol. V´ ystupem t´eto anal´ yzy je kolekce blok˚ u, kdy kaˇzd´ y blok jiˇz obsahuje svoje hodnocen´ı na z´akladˇe v´ ystupn´ı hodnoty z neuronov´e s´ıtˇe. Tyto hodnoty jsou n´aslednˇe porovn´any v˚ uˇci implicitnˇe nastaven´ ym prah˚ um a na z´akladˇe v´ ysledku jsou bloky rozdˇeleny do tˇr´ı tˇr´ıd: spr´avn´e bloky, t´emˇeˇr spr´ avn´e a ˇspatn´e.
23
Vlastnost Poˇcet neuron˚ u ve vstupn´ı vrstvˇe Poˇcet skryt´ ych vrstev Poˇcet neuron˚ u v 1. skryt´e vrstvˇe Aktivaˇcn´ı funkce v 1. skryt´e vrstvˇe Strmost aktivaˇcn´ı funkce v 1. skryt´e vrstvˇe Poˇcet neuron˚ u v 2. skryt´e vrstvˇe Aktivaˇcn´ı funkce v 2. skryt´e vrstvˇe Strmost aktivaˇcn´ı funkce v 2. skryt´e vrstvˇe Poˇcet neuron˚ u v 3. skryt´e vrstvˇe Aktivaˇcn´ı funkce v 3. skryt´e vrstvˇe Strmost aktivaˇcn´ı funkce v 3. skryt´e vrstvˇe Poˇcet neuron˚ u ve v´ ystupn´ı vrstvˇe Aktivaˇcn´ı funkce ve v´ ystupn´ı vrstvˇe Strmost aktivaˇcn´ı funkce ve v´ ystupn´ı vrstvˇe
Typ/Hodnota 78 3 39 Sigmoid stepwise 0.65 19 Gaussian symmetric 0.75 9 Gaussian symmetric 0.75 1 Linear piece symmetric 0.8
Tabulka 4.1: Nastaven´ı neuronov´e s´ıtˇe
4.13
N´ asledn´ a anal´ yza
V t´eto ˇc´ asti se snaˇz´ım eliminovat chybovost neuronov´e s´ıtˇe. Urˇcit´e bloky v r´amci hlavn´ıho textu totiˇz m˚ uˇzou m´ıt vlastnosti generick´eho obsahu. Takov´ ymi bloky jsou zpravidla kr´atk´e bloky obsahuj´ıc´ı velk´e mnoˇzstv´ı odkaz˚ u, nadpisy niˇzˇs´ı u ´rovnˇe apod. N´asledn´ a anal´ yza je implementov´ana ve tˇr´ıdˇe PostAnalyser a stejnˇe jako vˇetˇsina implementovan´ ych tˇr´ıd obsahuje pouze dvˇe veˇrejn´e metody new a perform. Prvn´ı algoritmus n´ asledn´e anal´ yzy je implementov´an v metodˇe main text start a snaˇz´ı se nal´ezt zaˇc´ atek hlavn´ıho textu, ˇcili startovac´ı hlavn´ı nadpis na z´akladˇe podobnosti s n´azvem str´anky. Pokud je takov´ y nadpis nalezen, algoritmus mu nastav´ı sk´ore 1.0 a vˇsechny elementy pˇred n´ım ve vzd´ alenosti alespoˇ n tˇr´ı blok˚ u jsou oznaˇceny jako ˇspatn´e, tedy je jim nastaveno sk´ ore 0. Dalˇs´ı metoda, common path, zkoum´a spoleˇcn´e nadˇrazen´e elementy. Pokud alespoˇ n tˇri bloky vyhodnoceny jako spr´ avn´e maj´ı nadˇrazen´ y prvek se stejnou cestou, pak vˇsechny bloky v kolekci se stejnou vlastnost´ı jsou oznaˇceny jako spr´avn´e. Pˇredposledn´ı metodou je metoda alone blocks, kter´a proch´az´ı bloky odzadu a v pˇr´ıpadˇe, ˇze nalezne blok, pˇred kter´ ym nejd´ale 5 blok˚ u se nenach´az´ı ˇz´adn´ y spr´avn´ y blok, je oznaˇcen za ˇspatn´ y. Tento algoritmus konˇc´ı ve chv´ıl´ı kdy nalezne spr´avn´ y blok, kter´ y nelze oznaˇcit na z´akladˇe pˇredchoz´ıho tvrzen´ı za ˇspatn´ y. Ve fin´ ale je vyuˇzita metoda block neighbours, kter´a zkoum´a okol´ı aktu´aln´ıho bloku a na z´ akladˇe okoln´ıch blok˚ u rozhoduje o spr´avnosti t´emˇeˇr spr´avn´ ych blok˚ u. Napˇr´ıklad nadpis je oznaˇcen za spr´ avn´ y v pˇr´ıpadˇe, ˇze v okol´ı 3 blok˚ u obˇema smˇery se nal´ez´a spr´avn´ y nebo t´emˇeˇr spr´ avn´ y blok, nebo pokud se maxim´alnˇe 3 bloky pod vyskytuje spr´avn´ y blok.
4.14
Hlavn´ı tˇ r´ıda
Tˇr´ıda App propojuje vˇsechny v´ yˇse uveden´e tˇr´ıdy dohromady. Postupnˇe tvoˇr´ı instance kaˇzd´e z nich a prov´ ad´ı extrakci od pˇredzpracov´an´ı aˇz po samotnou extrakci. Konstruktor vyˇzaduje
24
jako parametr cestu k souboru s dokumentem nebo adresu URL. Metody preprocess, analyse a post analyse prov´ ad´ı jednotliv´e u ´kony. Tyto metody jsou veˇrejn´e a vˇsechny vrac´ı kolekci blok˚ u ve stavu odpov´ıdaj´ıc´ımu dan´emu u ´konu. Metoda perform provede vˇsechny operace najednou a vrac´ı jiˇz klasifikovanou kolekci blok˚ u. Pokud je program pˇripojen do jin´eho syst´emu jako gem, lze extrakce doc´ılit napˇr´ıklad takto: Textractor::App.new(’/path/to/doc.html’).perform. V´ ystupem pak bude instance tˇr´ıdy BlockCollection, s vlastnostmi pole a pro kaˇzd´ y blok obsaˇzen v kolekci budou dostupn´e vˇsechny jeho vlastnosti, sk´ore atd.
4.15
Pˇ r´ıkazov´ yˇ r´ adek
Rozhran´ı pro ovl´ adan´ı z pˇr´ıkazov´e ˇr´adky je implementov´ano v adres´aˇri bin v souboru textractor ve tˇr´ıdˇe TextractorCLI pomoc´ı gemu Thor. Pˇr´ıklady pouˇzit´ı lze naj´ıt ve Zdrojov´em k´ odu 4.2. t e x t r a c t o r go ! URL OR FILE [−P b o o l ] t e x t r a c t o r h e l p [COMMAND] textractor server
# Extrakce t e x t u ze stranky # Napoveda # S p u s t i webove r o z h r a n i
Zdrojov´ y k´ od 4.2: Pˇr´ıklady pr´ace z programem v pˇr´ıkazov´e ˇr´adce
Obr´ azek 4.2: Webov´e rozhran´ı programu
4.16
Webov´ e rozhran´ı
V r´amci programu jsem implementoval jednoduch´e webov´e rozhran´ı za pouˇzit´ı gemu sinatra. Toto rozhran´ı je implementov´ ano v r´amci modulu Server. Uk´azka webov´eho rozhran´ı je na na Obr´ azku 4.2, kde m˚ uˇzeme vidˇet v´ ysledek zpracov´an´ı str´anky. Jednotliv´a zaˇskrt´avac´ı tlaˇc´ıtka n´ am dovoluj´ı zapnout resp. vypnout n´aslednou anal´ yzu a zobrazit ˇc´ı skr´ yt nevyhovuj´ıc´ı bloky. V tabulce jsou pak informace o jednotliv´ ych bloc´ıch, kdy prvn´ı sloupec urˇcuje v´ ysledn´e ohodnocen´ı bloku, v n´ asleduj´ıc´ım sloupci je informace o typu bloku a v posledn´ım je jiˇz samotn´ y obsah bloku. V pˇr´ıpadˇe, ˇze zaˇskrtneme nezobrazov´an´ı nevyhovuj´ıc´ıch blok˚ u, vid´ıme v podstatˇe pouze hlavn´ı obsah. 25
Kapitola 5
Testov´ an´ı a vyhodnocen´ı V t´eto ˇc´ asti popisuji pr˚ ubˇeh testov´an´ı a porovn´av´am v´ ysledky oproti jin´ ym, jiˇz existuj´ıc´ım ˇreˇsen´ım. Hlavn´ım u ´kolem bˇehem testov´an´ı bylo naj´ıt odpov´ıdaj´ıc´ı nastaven´ı neuronov´e s´ıtˇe.
5.1
Tr´ enovac´ı mnoˇ zina
Abych byl schopen dostateˇcnˇe otestovat a naj´ıt spr´avn´e nastaven´ı neuronov´e s´ıtˇe, musel jsem nejdˇr´ıve z´ıskat dostateˇcnˇe obs´ahlou mnoˇzinu dat pro uˇcen´ı. Do tr´enovac´ı mnoˇziny jsem zahrnul nejzn´amˇejˇs´ı ˇcesk´e zpravodajsk´e servery, n´ahodnˇe vybran´e ˇcesk´e blogy a str´ anky z wikipedie. Vˇsechny webov´e dokumenty byly z´ısk´av´any ruˇcnˇe pomoc´ı webov´eho prohl´ıˇzeˇce a n´ aslednˇe uloˇzeny pro dalˇs´ı zpracov´an´ı. Tr´enovac´ı mnoˇzina obsahuje celkem 4519 blok˚ u z 34 str´anek. Podrobn´ y pˇrehled pouˇzit´ ych str´anek lze vidˇet v tabulce 5.1. Ve vˇsech pˇr´ıpadech byly pouˇzity ˇcl´anky z uveden´ ych web˚ u. Str´anky pouˇzit´e pro vytvoˇren´ı tr´enovac´ı mnoˇziny lze rovnˇeˇz naj´ıt na pˇriloˇzen´em CD. Abych nemusel soubor s tr´enovac´ı mnoˇzinou generovat manu´alnˇe, vytvoˇril jsem tˇr´ıdu TrainUtils v r´ amci modulu Train. Instanˇcn´ı metoda tˇr´ıdy pˇrij´ım´a jako argument cestu k adres´ aˇri s dokumenty pro tr´enov´an´ı. Pot´e str´anky dˇel´ı na bloky a ke kaˇzd´emu bloku se dot´aˇze zda je blok spr´ avn´ y. Takto pokraˇcuje dokud nenaraz´ı na konec adres´aˇre. Tr´enovac´ı data ukl´ ad´ a do souboru, tyto pak budou vyuˇzity pˇri tr´enov´an´ı s´ıtˇe. Metoda z´aroveˇ n ukl´ad´ a do vedlejˇs´ıho souboru otisky jednotliv´ ych blok˚ u a zda je blok spr´avn´ y. Pˇri dalˇs´ım uˇcen´ı tedy nen´ı nutn´e hodnotit jiˇz zn´ am´e bloky. Pro kaˇzd´ y dokument jsou tedy ruˇcnˇe anotov´any vˇsechny bloky a z´aroveˇ n je generov´ an soubor ve form´ atu, kter´ y je vyˇzadov´an knihovnou FANN. Tento soubor je pak naˇcten a na z´akladˇe informac´ı obsaˇzen´ ych v nˇem je s´ıt’ tr´enov´ana.
5.2
Experimenty s nastaven´ım neuronov´ e s´ıtˇ e
V t´eto f´ azi testov´ an´ı jsou jiˇz k dispozici tr´enovac´ı data a je tedy moˇzn´e experimentovat s nastaven´ım s´ıtˇe a naj´ıt tak vhodn´e hodnoty jednotliv´ ych parametr˚ u neuronov´e s´ıtˇe. Z´aroveˇ n jsem na z´ akladˇe v´ ysledku a experiment˚ u opravoval pˇr´ıpadn´e chyby a nepˇresnosti v implementaci, zejm´ena pak optimalizoval n´aslednou anal´ yzu. V prvn´ı iteraci testov´ an´ı jsem pouˇzil pouze 26 vstup˚ u, nebyly tedy pouˇzity data ze sousedn´ıch blok˚ u a neuronov´ a s´ıt’ byla ponech´ana ve v´ ychoz´ım nastaven´ı, tedy na hodnoty, kter´e jsou nastaveny knihovnou FANN. Tato knihovna m´a k dispozici na v´ ybˇer ze ˇctyˇr r˚ uzn´ ych uˇc´ıc´ıch algoritm˚ u: 26
Zdroj idnes.cz blesk.cz blog.komart.cz blogs.technet.com ctsport.cz digitalniekonomika.cz itbiz.cz lidovky.cz moravskoslezsky.denik.cz novinky.cz sport.cz trail-busters.com wikipedie.cz
Str´ anky 2 1 1 1 1 2 1 1 1 1 1 1 2
Zdroj blog.idnes.cz blog.filosof.biz blog.nic.cz ct24.cz denikreferendum.cz g.cz jenpromuze.cz mozkyinternetu.cz mywindows.cz sip.denik.cz super.cz tyinternety.cz zive.cz
Str´ anky 1 1 1 3 1 1 1 1 1 1 2 1 2
Tabulka 5.1: Tr´enovac´ı mnoˇzina • Incremental - klasick´ a implementace algoritmu zpˇetn´eho ˇs´ıˇren´ı chyby. V´ahy jsou aktualizov´ any mnohokr´ at bˇehem jedn´e epochy. Urˇcit´e probl´emy se t´ımto algoritmem tr´enuj´ı velmi rychle, na druhou stranu u urˇcit´ ych probl´emu je tr´enov´an´ı velmi pomal´e aˇz nemoˇzn´e. • Batch - klasick´ y algoritmus zpˇetn´eho ˇs´ıˇren´ı chyby. V tomto pˇr´ıpadˇe jsou v´ahy aktualizov´ any na z´ akladˇe stˇredn´ı kvadratick´e odchylky po vyˇcerp´an´ı cel´e tr´enovac´ı mnoˇziny. Jelikoˇz, na rozd´ıl od pˇredchoz´ıho algoritmu, doch´az´ı k pˇresnˇejˇs´ımu v´ ypoˇctu chyby, urˇcit´e probl´emy mohou dosahovat lepˇs´ıch v´ ysledk˚ u. Tr´enovan´ı je pomalejˇs´ı neˇz v pˇr´ıpadˇe pˇredchoz´ıho. • Rprop - pokroˇcilejˇs´ı forma pˇredchoz´ıho algoritmu. Je velmi obecn´ y, pouˇziteln´ y pro vˇetˇsinu ˇreˇsen´ ych probl´emu. Je adaptivn´ı, a proto nen´ı moˇzn´e explicitnˇe urˇcit tempo uˇcen´ı. • Quickprop - podobnˇe jako Rprop, je to pokroˇcilejˇs´ı forma Batch algoritmu. V tomto pˇr´ıpadˇe lze explicitnˇe nastavit tempo uˇcen´ı. Velmi efektivn´ı pro mnoho probl´em˚ u, nicm´enˇe u nˇekter´ ych probl´emu m˚ uˇze selh´avat. Pˇri prvn´ım testu jsem pouˇzil s´ıt’ s jednou skrytou vrstvou s 26 neurony. Jiˇz na prvn´ı pohled se vˇsak zd´ alo toto nastaven´ı nevyhovuj´ıc´ı a po nˇekolika testech jsem skonˇcil s 13 neurony ve skryt´e vrstvˇe. Hlavn´ım c´ılem v t´eto f´azi bylo zjiˇstˇen´ı moˇznosti nastaven´ı s´ıtˇe, jak jednotliv´ a nastaven´ı ovlivˇ nuj´ı v´ ysledky a zejm´ena vyzkouˇsen´ı vˇsech tr´enovac´ıch algoritm˚ u. V´ yhodou takto jednoduch´e neuronov´e s´ıtˇe je rychlost tr´enov´an´ı, lze tedy bez probl´emu testovat velk´e mnoˇzstv´ı r˚ uzn´ ych kombinac´ı nastaven´ı. Nejdˇr´ıve jsem zkouˇsel tr´enovac´ı algoritmy. Algoritmy Batch a Quickprop se uk´azaly jako naprosto nepouˇziteln´e pro testov´an´ı. Tr´enov´ an´ı velmi pomal´e, i po nˇekolika des´ıtk´ach tis´ıc epoch byla chyba pˇr´ıliˇs vysok´a. Nejlepˇs´ı v´ ysledky jsem z´ısk´ aval pomoc´ı algoritmu Rprop, pˇriˇcemˇz Incremental pod´aval tak´e zaj´ımav´e v´ ysledky. Vhodnost tr´enovac´ıho algoritmu jsem hodnotil zejm´ena podle v´ ysledn´e chyby po 15000 epoch´ ach, kdy tr´enov´an´ı jsem prov´adˇel vˇzdy v 5 cyklech a do u ´vahy jsem
27
bral nejlepˇs´ı v´ ysledek. Srovn´ an´ı nejmenˇs´ı dosaˇzen´e chyby lze vidˇet v tabulce 5.2. Pro testov´an´ı jsem tedy zvolil jako v´ ychoz´ı algoritmus Rprop. Vhodnost tohoto algoritmu bude pak jeˇstˇe pˇrehodnocena po nalezen´ı ide´aln´ıho nastaven´ı neuronov´e s´ıtˇe. Jak se dalo jiˇz na zaˇc´atku pˇredpokl´ adat, takto jednoduch´a s´ıt’ pod´avala velmi zmaten´e v´ ysledky. V nˇekolika m´alo pˇr´ıpadech detekovala bloky spr´avnˇe, vˇetˇsinou vˇsak naopak. Nejvˇetˇs´ım probl´emem v t´eto konfiguraci bylo pˇr´ıliˇs jednoznaˇcn´e ohodnocen´ı blok˚ u, kdy se hodnoty t´emˇeˇr vˇzdy ’ vyskytovaly v podobˇe 0 nebo 1. Jak jiˇz jsem zmiˇ noval, s´ıt detekovala bloky zmatenˇe a jednoznaˇcn´e ohodnocen´ı je naprosto nevyhovuj´ıc´ı pro dalˇs´ı zpracov´an´ı. Algoritmus Incremental Batch Rprop Quickprop
Poˇ cet epoch 15000 15000 15000 15000
Nejmenˇ s´ı dosaˇ zen´ a chyba 0, 01279 0, 03651 0, 01025 0, 03429
Tabulka 5.2: Dosaˇzen´e chyby pro r˚ uzn´e uˇc´ıc´ı algoritmy V dalˇs´ı f´ az´ı jsem pˇrid´ aval postupnˇe dalˇs´ı skryt´e vrstvy a experimentoval jsem s r˚ uzn´ ym poˇctem neuron˚ u v jednotliv´ ych vrstv´ach. Jiˇz pˇri dvou skryt´ ych vrstv´ach bylo viditeln´e zlepˇsen´ı, zejm´ena se zmenˇsovala v´ ysledn´a chyba bˇehem uˇcen´ı s´ıtˇe. Po nˇekolika des´ıtk´ ach test˚ u jsem zvolil nastaven´ı se tˇremi skryt´ ymi vrstvami s poˇctem neuron˚ u postupnˇe 13, 7, 4. Je d˚ uleˇzit´e zm´ınit, ˇze ostatn´ı nastaven´ı bylo st´ale ponech´ano na v´ ychoz´ıch hodnot´ach, tedy sigmoid´ aln´ı skokov´ a aktivaˇcn´ı funkce se strmost´ı 0, 5. Takto nastavena neuronov´ a s´ıt’ pod´ avala jiˇz podstatnˇe uspokojivˇejˇs´ı v´ ysledky, zejm´ena pak nebylo ohodnocen´ı jiˇz tak jednoznaˇcn´e, a bloky bylo moˇzno dˇelit do v´ıce tˇr´ıd, tedy na vyhovuj´ıc´ı, t´emˇeˇr vyhovuj´ıc´ı a nevyhovuj´ıc´ı, coˇz je nezbytn´e pro dalˇs´ı zpracov´an´ı, zejm´ena pro n´aslednou anal´ yzu. D´ale jsem se snaˇzil naj´ıt vhodnˇejˇs´ı aktivaˇcn´ı funkce jednotliv´ ych vrstev neˇzli je v´ ychoz´ı, tedy sigmoid´ aln´ı skokov´ a. Knihovna FANN poskytuje mnoho r˚ uzn´ ych aktivaˇcn´ıch funkc´ı. Jiˇz na zaˇc´ atku se vˇsak uk´ azalo, ˇze pro ˇreˇsen´ı m´eho probl´emu jsou pouˇziteln´e pouze 3, a to sigmoid´ aln´ı symetrick´ a skokov´ a aktivaˇcn´ı funkce, symetrick´a Gaussova aktivaˇcn´ı funkce a symetrick´ a saturovan´ a line´ arn´ı aktivaˇcn´ı funkce. Vhodnost jednotliv´ ych funkc´ı byla opˇet vyhodnocena na z´ akladˇe chyby pˇri uˇcen´ı dosaˇzen´e po 3000 epoch´ach, pˇri pouˇzit´ı algoritmu Rprop. Nejlepˇs´ı v´ ysledky byly dosaˇzeny pˇri n´asleduj´ıc´ım nastaven´ı: sigmoid´aln´ı symetrick´ a skokov´ a aktivaˇcn´ı funkce pro 1. skrytou vrstvu, symetrick´a Gaussova aktivaˇcn´ı funkce pro 2. a 3. skrytou vrstvu a symetrick´a line´arn´ı aktivaˇcn´ı funkce pro v´ ystupn´ı vrstvu. V dalˇs´ı f´ az´ı jsem upravoval jeˇstˇe strmost dan´ ych aktivaˇcn´ıch funkc´ı. D˚ uvodem proˇc bylo potˇreba upravit strmost je zejm´ena metoda, pomoc´ı kter´e normalizuji hodnoty do intervalu < 0, 1 >. Jelikoˇz tato normalizace vˇetˇsinou vrac´ı hodnoty z intervalu < 0; 0, 3 >, je tˇreba strmost aktivaˇcn´ıch funkc´ı zv´ yˇsit. R˚ uzn´ ym posouv´an´ım strmost´ı ve skryt´ ych vrstv´ ach a v´ ystupn´ı vrstvˇe jsem doˇsel k n´ asleduj´ıc´ımu nastaven´ı, postupnˇe pro prvn´ı skrytou vrstvu aˇz vrstvu v´ ystupn´ı, 0, 65, 0, 75, 0, 75, 0, 8. V t´eto konfiguraci neuronov´ a s´ıt’ dosahovala jiˇz velmi dobr´ ych v´ ysledk˚ u, ale st´ale nebyly v´ ysledky dostaˇcuj´ıc´ı. Napadlo mˇe tedy pˇridat na vstup i vlastnosti okoln´ıch blok˚ u a otestovat zda se detekce zlepˇs´ı. Poˇcet vstup˚ u byl tedy nav´ yˇsen na 78 a na vstup se zaˇcaly pˇriv´adˇet i vlastnosti pˇredchoz´ıho i n´ asleduj´ıc´ıho bloku. Jelikoˇz v pˇredchoz´ıch experimentech jsem jiˇz urˇcil ide´ aln´ı poˇcet skryt´ ych vrstev, ponechal jsem tedy toto nastaven´ı, s podobn´ ymi parametry, ˇcili v n´ asleduj´ıc´ı vrstvˇe vˇzdy poloviˇcn´ı poˇcet neuron˚ u neˇz ve vrstvˇe pˇredchoz´ı, coˇz ve v´ ysledk˚ u d´ av´ a 39, 19 a 9 neuron˚ u v jednotliv´ ych skryt´ ych vrstv´ach. S poˇctem neuron˚ u 28
jsem experimentoval, uk´ azalo se vˇsak, ˇze p˚ uvodn´ı nastaven´ı je opravdu vhodn´e. Strmost aktivaˇcn´ıch funkc´ı a jejich typ byl rovnˇeˇz ponech´an z pˇredchoz´ı f´aze testov´an´ı. Protoˇze rapidnˇe vzrostl poˇcet vstup˚ u, odrazilo se to i na dobˇe tr´enov´an´ı, kter´e bylo nyn´ı o mnoho pomalejˇs´ı. V´ ysledn´ a chyba pˇri tr´enov´ an´ı vˇsak byla o jeden ˇr´ad niˇzˇs´ı neˇz v pˇr´ıpadˇe 26 vstup˚ u. Rovnˇeˇz re´aln´e v´ ysledky zaˇcaly b´ yt jiˇz velmi uspokojiv´e a v mnoha pˇr´ıpadech byly bloky detekov´any spr´avnˇe anebo bylo ohodnocen´ı na hranici. Probl´em ˇcin´ı zejm´ena nadpisy v r´amci ˇcl´anku, kter´e jsou ˇcasto vyhodnocov´ any, stejnˇe jako v pˇr´ıpadech pˇredchoz´ıch, nespr´avnˇe. Tento neduh nicm´enˇe ve vˇetˇsinˇe pˇr´ıpad˚ u odstraˇ nuje n´asledn´a anal´ yza, kter´a ohodnocen´ı koriguje na z´akladˇe okoln´ıch blok˚ u, kter´e jsou vyhodnoceny spr´avnˇe. V grafu 5.1 je moˇzno vidˇet pr˚ ubˇeh uˇcen´ı neuronov´e s´ıtˇe s 26 vstupy a 78 vstupy ve fin´aln´ım nastaven´ı. Jak je vidˇet, s´ıt’ s 78 vstupy, kdy jsou br´any do u ´vahy i okoln´ı bloky, se uˇc´ı podstatnˇe rychleji a v´ ysledn´ a chyba je mnohem menˇs´ı. V´ ysledn´e nastaven´ı neuronov´e s´ıtˇe, kter´ a je pouˇzita pˇri n´ asledn´em vyhodnocen´ı, je zn´azornˇeno v tabulce 4.1.
Obr´ azek 5.1: Pr˚ ubˇeh uˇcen´ı neuronov´e s´ıtˇe pro 26 vstup˚ u a 78 vstup˚ u
5.3
V´ ysledky
V t´eto ˇc´ asti budou pops´ any v´ ysledky algoritmu. Bude zde vyhodnocena u ´spˇeˇsnost detekov´an´ı spr´ avn´ ych resp. ˇspatn´ ych blok˚ u a u ´spˇeˇsnost detekov´an´ı zaˇc´atku a konce hlavn´ıho obsahu. Zamˇeˇr´ım se hlavnˇe na pˇredn´ı ˇcesk´e zpravodajsk´e servery, zahrnu vˇsak i nˇekter´e z´ajmov´e weby a zahraniˇcn´ı zpravodajsk´e port´aly a jin´e. Porovn´ an´ı jsem prov´ adˇel manu´alnˇe. z kaˇzd´eho webu resp. port´alu jsem z´ıskal vˇetˇsinou alespoˇ n dvˇe str´ anky s ˇcl´ ankem, extrahoval hlavn´ı text pomoc´ı mnou vytvoˇren´eho programu a manu´ alnˇe porovnal s oˇcek´ avan´ ym v´ ystupem. V´ ysledky jsem zanesl do tabulek. Tabulka 5.3 ukazuje v´ ysledky pro 33 webov´ ych dokument˚ u. V prvn´ım sloupci je vˇzdy uveden zdroj, ze kter´eho byl dokument s ˇcl´ankem z´ısk´an, v n´asleduj´ıc´ı sloupec urˇcuje celkov´ y poˇcet blok˚ u na str´ ance. D´ ale je uveden celkov´ y poˇcet blok˚ u, kter´e neuronov´a s´ıt’ detekovala jako bloky hlavn´ıho obsahu. Dalˇs´ı dva sloupce postupnˇe urˇcuj´ı, kolik z blok˚ u oznaˇcen´ ych za spr´avn´e je detekov´ ano nespr´ avnˇe a kolik blok˚ u nebylo nalezeno. V nˇekter´ ych pˇr´ıpadech jsou v z´ avorce uvedeny detaily ohlednˇe nespr´avnˇe urˇcen´ ych blok˚ u resp. nenalezen´ ych blok˚ u. Jak je vidˇet, vˇetˇsinou jsou chybnˇe oznaˇceny bloky jako spr´avn´e v pˇr´ıpadˇe, ˇze se jedn´ a o popisky k fotografi´ım v r´ amci hlavn´ıho obsahu, popˇr´ıpadˇe urˇcit´e doplˇ nuj´ıc´ı texty, nepatˇr´ıc´ı k hlavn´ımu obsahu nicm´enˇe ˇcasto souvisej´ıc´ı. V´ ysledky rovnˇeˇz ukazuj´ı, ˇze se ˇcasto chybnˇe interpretuj´ı bloky, kter´e jsou poloˇzkami seznamu a neobsahuj´ı mnoho textu, a jsou ˇcasto 29
Port´ al ct24.cz ct24.cz ct24.cz ctsport.cz ctsport.cz idnes.cz idnes.cz lidovky.cz lidovky.cz sport.cz sport.cz ihned.cz ihned.cz novinky.cz novinky.cz denik.cz denik.cz ceskenoviny.cz ceskenoviny.cz super.cz super.cz extra.cz extra.cz digitalniekonomika.cz blog.respekt.ihned.cz blog.respekt.ihned.cz blog.scuk.cz blog.tomashajzler.com cnn.com cnn.com reuters.com blogs.afp.com
CB 155 130 147 121 130 262 277 452 437 125 109 159 159 104 93 173 151 125 121 44 37 71 68 26 86 89 27 109 297 342 268 147
DB 20 8 12 6 10 8 11 20 17 11 7 9 12 17 11 24 6 6 11 5 6 11 6 7 12 7 12 12 10 10 10 26
NDB 1 0 2 1 3 3 2 (1H, 1F) 8 (2H, 1F, 1IN) 3 (2IN) 6 (6F) 2 (2F) 5 (2H) 6 (2H,1IN) 4 (1F,2IN) 5 (2F) 0 0 2 (1F) 6 (1F) 1 (1F) 2 (1F) 6 (3F, 2H) 3 (3F) 1 0 1 2 8 2 2 1 11 (9F)
NB 5 (4LI) 0 5 (3LI) 1 1 1 2 0 3 0 0 8 7 1 0 0 1 4 2 0 0 1 2 0 1 1 7 1 13 36 9 1
Z ok ok ok ok ok -1 -1 ok ok ok ok -1 -1 ok -1 ok +1 +1 +1 -1 -1 -1 ok ok +1 +1 -2 -1 ok ok -1 ok
Tabulka 5.3: V´ ysledky dosaˇzen´e bez pouˇzit´ı n´asledn´e anal´ yzy CB DB NDB NB z K F H IN LI
Celkem blok˚ u na str´ance Poˇcet blok˚ u oznaˇcen´ ych programem za spr´avn´e Poˇcet ˇspatnˇe oznaˇcen´ ych blok˚ u za spr´avn´e Poˇcet spr´avn´ ych blok˚ u, kter´e nebyly nalezeny Spr´ avnˇe detekov´an zaˇc´atek obsahu Spr´ avnˇe detekov´an konec obsahu Popisek fotografie v r´amci obsahu Nadpis Vedlejˇs´ı text v r´amci obsahu Poloˇzka seznamu
30
K ok ok -1 -1 -2 -2 ok -6 -2 ok ok -4 -4 -1 -2 ok ok +3 -5 ok -1 -5 -2 -1 ok -1 +6 -8 +13 +20 +2 -3
chybnˇe oznaˇceny za bloky nevyhovuj´ıc´ı i kdyˇz k hlavn´ımu obsahu patˇr´ı. Toto je zp˚ usobeno t´ım, ˇze obdobn´e poloˇzky jsou vˇetˇsinou pouˇz´ıv´any pro vytv´aˇren´ı menu na str´ance. Posledn´ı dva sloupce urˇcuj´ı zda byl spr´ avnˇe detekov´an zaˇc´atek resp. konec hlavn´ıho obsahu. Z´aporn´e ˇc´ıslo urˇcuje, kolik blok˚ u bylo oznaˇcen´ ych nespr´avnˇe jako vyhovuj´ıc´ı pˇred zaˇc´atkem resp. koncem hlavn´ıho obsahu. Kladn´e ˇc´ıslo naopak urˇcuje, kolik blok˚ u pˇred koncem hlavn´ıho obashu chybˇelo, to znamen´ a, ˇze byly nespr´avnˇe oznaˇceny za bloky nevyhovuj´ıc´ı. Nutno podotknout, ˇze v´ ysledky, pops´ any v´ yˇse, jsou v´ ysledky z´ıskan´e pouze pomoc´ı neuronov´e s´ıtˇe, bez pouˇzit´ı n´asledn´e anal´ yzy. Tabulka 5.4 zobrazuje v´ ysledky, kter´ ych bylo dosaˇzeno pˇri pouˇzit´ı neuronov´e s´ıtˇe spolu s n´aslednou anal´ yzou. Tabulka je ve stejn´em form´atu jako pˇredchoz´ı. z tabulky je na prvn´ı pohled jist´e, ˇze n´ asledn´ a anal´ yza velmi u ´spˇeˇsnˇe eliminuje chybovost neuronov´e s´ıtˇe. Ve vˇetˇsinˇe pˇr´ıpad˚ uu ´spˇeˇsnˇe odstraˇ nuje nespr´avnˇe oznaˇcen´e bloky za hlavn´ım obsahem. Probl´em nast´av´ a vˇsak ve chv´ıli, kdy neuronov´a s´ıt’ nespr´avnˇe urˇc´ı celou posloupnost blok˚ u jako spr´avn´e, v tom pˇr´ıpadˇe se st´ av´ a, ˇze n´asledn´a anal´ yza v´ ysledek jeˇstˇe zhorˇs´ı. Naˇstˇest´ı k tomuto jevu pˇr´ıliˇs ˇcasto nedoch´ az´ı. z v´ ysledku je rovnˇeˇz patrn´e, ˇze d´ıky n´asledn´e anal´ yze je ˇcasto dodateˇcnˇe urˇcen zaˇc´ atek obsahu a tak´e jsou oznaˇceny za spr´avn´e bloky v r´amci hlavn´ıho obsahu. Vˇetˇsinou se jedn´a o bloky obsahuj´ıc´ı velmi kr´atk´ y text, pˇr´ıliˇs mnoho odkaz˚ u apod., kter´e jsou ˇcasto vyhodnoceny neuronovou s´ıt´ı jako bloky nevyhovuj´ıc´ı.
5.4 5.4.1
Porovn´ an´ı s existuj´ıc´ımi algoritmy jusText
V porovn´ an´ı s algoritmem jusText program dosahuje podobn´ ych v´ ysledk˚ u. D´a se ˇr´ıci, ˇze program, kter´ y jsem implementoval si l´epe porad´ı s dokumenty se sloˇzitˇejˇs´ı strukturou. Na druhou stranu jusText dosahuje pˇresnˇejˇs´ıch v´ ysledk˚ u pokud je hlavn´ı text pˇri sobˇe. Pomik´ alk˚ uv algoritmus sp´ıˇse ohodnot´ı spr´avn´ y blok za ˇspatn´ y, opaˇcnˇe m´alokdy, coˇz je pˇresnˇe opaˇcn´ y pˇr´ıpad neˇzli v pˇr´ıpadˇe m´eho programu. Ot´azkou z˚ ust´av´a, kter´ y z pˇr´ıpad˚ u je vhodnˇejˇs´ı. Dle m´eho n´ azoru lze chybnˇe oznaˇcen´e dobr´e bloky pomoc´ı dalˇs´ıch heuristik dodateˇcnˇe odstranit, opaˇcnˇe je to jiˇz sloˇzitˇejˇs´ı, protoˇze ˇspatn´ ych blok˚ u je v dokumentu zpravidla nˇekolikan´ asobnˇe v´ıce neˇz–li spr´avn´ ych. V tabulce 5.5 m˚ uˇzeme vidˇet porovn´ an´ı jusText s mou implementac´ı. Sloupce oznaˇcen´e jako ”´ uspˇeˇsn´e”ud´avaj´ı pomˇer blok˚ u, kter´e byly detekov´ any spr´ avnˇe jako vyhovuj´ıc´ı v˚ uˇci vˇsem vyhovuj´ıc´ım blok˚ um v dokumentu. Sloupec ”ne´ uspˇeˇsn´e”naopak ud´ av´ a pomˇer chybnˇe oznaˇcen´ ych blok˚ u za vyhovuj´ıc´ı v˚ uˇci vˇsem vyhovuj´ıc´ım blok˚ um na str´ ance. Z tabulky je patrn´e, ˇze co se u ´spˇeˇsnost´ı t´ yˇce, jsou algoritmy ˇ srovnateln´e. Casto se st´ av´ a, ˇze tam kde jusText m´ırnˇe selh´av´a, m˚ uj program dosahuje lepˇs´ıch v´ ysledk˚ u a opaˇcnˇe. Hodnoty ve sloupci ud´avaj´ıc´ı chybn´e urˇcen´ı blok˚ u m˚ uˇzou b´ yt vˇsak matouc´ı. Jak jiˇz bylo zm´ınˇeno v´ yˇse, ˇcasto se v tomto pˇr´ıpadˇe jedn´a o popisky k fotografi´ım ˇci urˇcit´ y doplˇ nuj´ıc´ı text a je v tomto pˇr´ıpadˇe sporn´e, zda tyto bloky do hlavn´ıho obsahu patˇr´ı nebo ne. V tomto porovn´an´ı jsem je za hlavn´ı text nepovaˇzoval a takov´eto bloky jsem bral jako chybnˇe vyhodnocen´e.
5.4.2
boilerpipe
Jelikoˇz jsem se v r´ amci hodnocen´ı v´ ysledk˚ u zamˇeˇril zejm´ena na ˇcesk´e webov´e str´anky a nikoliv anglick´e, bylo porovn´ an´ı s boilerpipe dosti sloˇzit´e. U tohoto algoritmu je na prvn´ı pohled vidˇet, ˇze je optimalizov´ an zejm´ena na pr´avˇe anglicky psan´e weby. Pˇri extrakci z ˇcesk´ ych str´anek se ˇcasto st´ avalo ˇze byl chybnˇe detekov´an konec hlavn´ıho obsahu a do v´ ysledku se
31
Str´ anka ct24.cz ct24.cz ct24.cz ctsport.cz ctsport.cz idnes.cz idnes.cz lidovky.cz lidovky.cz sport.cz sport.cz ihned.cz ihned.cz novinky.cz novinky.cz denik.cz denik.cz ceskenoviny.cz ceskenoviny.cz super.cz super.cz extra.cz extra.cz digitalniekonomika.cz blog.respekt.ihned.cz blog.respekt.ihned.cz blog.scuk.cz blog.tomashajzler.com cnn.com cnn.com reuters.com blogs.afp.com
CB 155 130 147 121 130 262 277 452 437 125 109 159 159 104 93 173 151 125 121 44 37 71 68 26 86 89 27 109 297 342 268 147
DB 21 8 13 5 8 11 12 24 18 14 7 5 15 17 9 25 7 10 15 5 5 9 5 8 13 7 16 10 25 51 20 28
NDB 1 0 0 0 0 5 (1F) 1 (1F) 12 (3H, 2F, 1IN) 1 (1IN) 9 (8F) 2 (2F) 1 (1H) 3 (1H, 2IN) 3 (1F, 2IN) 3 (2F) 1 (1F) 0 2 (2F) 8 (1F, 1H) 1 (1F) 1 (1F) 3 (3F) 2 (2F) 2 0 0 0 5 4 (4IN) 7 (4F, 3IN) 1 12 (9F)
NB 4 (4LI) 0 3 (3LI) 1 0 0 0 0 0 0 0 8 1 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0
Tabulka 5.4: V´ ysledky dosaˇzen´e s pouˇzit´ım n´asledn´e anal´ yzy CB DB NDB NB z K F H IN LI
Celkem blok˚ u na str´ance Poˇcet blok˚ u oznaˇcen´ ych programem za spr´avn´e Poˇcet ˇspatnˇe oznaˇcen´ ych blok˚ u za spr´avn´e Poˇcet spr´avn´ ych blok˚ u, kter´e nebyly nalezeny Spr´ avnˇe detekov´an zaˇc´atek obsahu Spr´ avnˇe detekov´an konec obsahu Popisek fotografie v r´amci obsahu Nadpis Vedlejˇs´ı text v r´amci obsahu Poloˇzka seznamu
32
Z ok ok ok ok ok ok ok ok ok ok ok ok ok ok -1 ok ok ok ok -1 ok ok -1 ok ok ok ok ok ok ok ok ok
K ok ok ok ok ok -3 ok -9 ok ok ok -1 -1 ok ok ok ok ok -7 ok -1 -3 -2 -2 ok ok ok -5 -4 -4 ok -3
Zdroj ct24.cz ct24.cz ct24.cz ctsport.cz ctsport.cz idnes.cz idnes.cz lidovky.cz lidovky.cz sport.cz sport.cz ihned.cz ihned.cz novinky.cz novinky.cz denik.cz denik.cz ceskenoviny.cz ceskenoviny.cz super.cz super.cz extra.cz extra.cz digitalniekonomika.cz blog.respekt.ihned.cz blog.respekt.ihned.cz blog.scuk.cz blog.tomashajzler.com cnn.com cnn.com reuters.com blogs.afp.com
Textractor ´ eˇ Uspˇ sn´ e 83.33% 100.0% 81.25% 83.33% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 33.33% 92.31% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 60.0% 100.0% 100.0% 100.0% 88.89% 100.0% 100.0% 100.0% 100.0% 100.0%
Textractor Ne´ uspˇ eˇ sn´ e 4.17% 0.0% 0.0% 0.0% 0.0% 83.33% 9.09% 100.0% 5.88% 180.0% 40.0% 8.33% 23.08% 21.43% 50.0% 4.17% 0.0% 25.0% 114.29% 25.0% 25.0% 50.0% 40.0% 33.33% 0.0% 0.0% 0.0% 100.0% 19.05% 15.91% 5.26% 75.0%
JusText ´ eˇ Uspˇ sn´ e 100.0% 100.0% 75.0% 100.0% 100.0% 100.0% 100.0% 100.0% 88.24% 100.0% 100.0% 91.67% 92.31% 100.0% 66.67% 100.0% 100.0% 100.0% 100.0% 100.0% 75.0% 66.67% 40.0% 100.0% 92.31% 71.43% 88.89% 100.0% 90.48% 90.91% 94.74% 100.0%
Tabulka 5.5: Porovn´an´ı s JusText
33
JusText Ne´ uspˇ eˇ sn´ e 16.67% 75.0% 31.25% 100.0% 87.5% 16.67% 18.18% 41.67% 17.65% 80.0% 40.0% 8.33% 7.69% 14.29% 0.0% 4.17% 0.0% 12.5% 14.29% 0.0% 0.0% 16.67% 0.0% 0.0% 0.0% 0.0% 5.56% 0.0% 285.71% 136.36% 0.0% 68.75%
tak dost´ avaly naprosto nerelevantn´ı bloky. V tˇechto pˇr´ıpadech boilerpipe za m´ ym ˇreˇsen´ım znaˇcnˇe zaost´ aval a pod´ aval dosti neuspokojiv´e v´ ysledky. Vyzkouˇsel jsem rovnˇeˇz nˇekolik cizojazyˇcn´ ych str´ anek, kdy byla situace uˇz jin´a a algoritmus dosahoval velmi dobr´ ych v´ ysledk˚ u, kdy se mu daˇrilo extrahovat vˇetˇsinou pˇresnˇe cel´ y hlavn´ı obsah a hlavnˇe bez ˇz´adn´ ych chybnˇe vyhodnocen´ ych blok˚ u. Boilerpipe poskytuje veˇrejnˇe pˇr´ıstupn´e webov´e API, kter´e je bohuˇzel ˇcasto pˇret´ıˇzen´e a nepouˇziteln´e, testov´an´ı bylo proto velmi obt´ıˇzn´e a zdlouhav´e, soustˇredil jsem se tedy proto hlavnˇe na porovn´an´ı s jusText a Readability.
5.4.3
Readability
Readability je kompletn´ı platforma pro jednoduch´e ˇcten´ı ˇcl´ank˚ u, pˇredpokl´adal jsem tedy jiˇz pˇredem, ˇze bude dosahovat velmi dobr´ ych v´ ysledk˚ u. Toto tvrzen´ı se i bˇehem testov´ an´ı potvrdilo jak je vidˇet v tabulce 5.6. Do tabulky jsem nezahrnul ne´ uspˇeˇsnou detekci blok˚ u, a to z jednoduch´eho d˚ uvodu. Zat´ımco j´a v m´em ˇreˇsen´ı povaˇzuji popisky k fotografi´ım a vedlejˇs´ı text jako nevyhovuj´ıc´ı, Readability se naopak snaˇz´ı tyto data z´amˇernˇe z´ısk´avat. Porovn´ an´ı by bylo tedy nepr˚ ukazn´e. Nicm´enˇe napˇr´ıklad v pˇr´ıpadˇe str´anek ct24.cz n´astroj Readability chybnˇe detekoval konec obsahu a do obsahu se tak dostal i text formul´aˇr˚ u. D´ale se u nˇekter´ ych dokument˚ u dost´aval do v´ ysledku koment´aˇr. Ve v´ ysledku se vˇsak d´ a ˇr´ıci, ˇze je tento algoritmus v mnoha pˇr´ıpadech pˇresnˇejˇs´ı neˇzli m˚ uj, zejm´ena co se chybn´eho detekov´ an´ı spr´ avn´ ych blok˚ u t´ yˇce. Rozd´ıly nejsou vˇsak nijak markantn´ı, a pomoc´ı pˇrid´ an´ı dalˇs´ıch heuristik do n´ asledn´e anal´ yzy by se daly tyto nedostatky z mnou implementovan´eho programu odstranit.
34
Zdroj ct24.cz ct24.cz ct24.cz ctsport.cz ctsport.cz idnes.cz idnes.cz lidovky.cz lidovky.cz sport.cz sport.cz ihned.cz ihned.cz novinky.cz novinky.cz denik.cz denik.cz ceskenoviny.cz ceskenoviny.cz super.cz super.cz extra.cz extra.cz digitalniekonomika.cz blog.respekt.ihned.cz blog.respekt.ihned.cz blog.scuk.cz blog.tomashajzler.com cnn.com cnn.com reuters.com blogs.afp.com
Textractor ´ eˇ Uspˇ sn´ e 83.33% 100.0% 81.25% 83.33% 100.0% 100.0% 109.09% 100.0% 100.0% 100.0% 100.0% 33.33% 92.31% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 60.0% 100.0% 100.0% 100.0% 88.89% 100.0% 100.0% 100.0% 100.0% 100.0%
Readability ´ eˇ Uspˇ sn´ e 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 100.0% 91.67% 92.31% 92.86% 83.33% 104.17% 100.0% 87.5% 85.71% 75.0% 75.0% 100.0% 0.0% 100.0% 100.0% 85.71% 100.0% 100.0% 95.24% 95.45% 94.74% 87.5%
Tabulka 5.6: Porovn´an´ı s Readability
35
Kapitola 6
Z´ avˇ er C´ılem t´eto pr´ ace bylo vytvoˇrit univerz´aln´ı program pro extrakci hlavn´ıho textu z webov´ ych dokument˚ u. Na zaˇc´ atku byl ˇcten´ aˇr sezn´amen s existuj´ıc´ımi ˇreˇsen´ımi a moˇzn´ ymi metodami pro extrakci textu. V z´ avˇeru prvn´ı kapitoly byly struˇcnˇe pops´any neuronov´e s´ıtˇe. V dalˇs´ıch kapitol´ ach jiˇz byl pops´ an n´ avrh samotn´a implementace, kter´e pˇredch´azel struˇcn´ yu ´vod do pouˇzit´ ych technologi´ı a knihoven. Program byl vyv´ıjen prim´ arnˇe pro Ruby 2.0.0, nemˇel by vˇsak b´ yt probl´em ani s niˇzˇs´ımi verzemi. V´ yvoj prob´ıhal prim´ arnˇe na syst´emu OS X, d´ıky multiplatformn´ı povaze jazyka Ruby bude vˇsak moˇzno vyuˇz´ıvat program i na alternativn´ıch operaˇcn´ıch syst´emech. V pr´ aci je n´ azornˇe uk´ az´ ano, ˇze dopˇredn´e v´ıcevrstv´e umˇel´e neuronov´e s´ıtˇe jsou vhodn´ ym n´astrojem pˇri extrakci hlavn´ıho textu a pod´avaj´ı velice dobr´e v´ ysledky. V pr˚ ubˇehu realizace jsem si uvˇedomil, ˇze jsem mohl urˇcit´e vlastnosti vynechat a naopak nˇekter´e pˇridat. Hlavn´ım d˚ uvodem pro vynech´ an´ı vlastnost´ı je pak velik´a podobnost s vlastnostmi jin´ ymi, jako pˇr´ıklad uvedu poˇcet dlouh´ ych slov v bloku a hustotu tˇechto slov. i pˇres tyto nedostatky se mi podaˇrilo vytvoˇrit dobˇre pouˇziteln´ y n´astroj pro extrakci hlavn´ıho textu, kter´ y v jazyce Ruby zat´ım chybˇel. D˚ uleˇzit´ ym poznatkem je, ˇze i pˇresto, ˇze tr´enovac´ı mnoˇzina sest´avala z pouze ˇcesk´ ych webov´ ych dokument˚ u, program dosahoval velice uspokojiv´ ych v´ ysledk˚ u i v pˇr´ıpadˇe cizojazyˇcn´ ych str´ anek. Na z´ akladˇe t´eto skuteˇcnosti lze vysledovat, ˇze vˇetˇsina str´anek obsahuj´ıc´ıch ˇcl´ anek, m´ a podobnou strukturu a mnou vytvoˇren´ y program je tedy jazykovˇe nez´avisl´ y. I kdyˇz v´ ysledky klasifikace neuronov´e s´ıtˇe byly uspokojiv´e, d´ıky t´eto pr´ace jsem si ovˇeˇril, ˇze je vhodn´e prov´est po klasifikaci urˇcitou korekci v´ ysledk˚ u, kterou v tomto pˇr´ıpadˇe zajiˇst’uje n´asledn´ a anal´ yza. Do budoucna bych chtˇel zkusit nauˇcit neuronovou s´ıt’ na rozd´ıln´ ych datech, aby bylo dosaˇzeno dobr´ ych v´ ysledk˚ u i v pˇr´ıpadech extrakce produkt˚ u z internetov´ ych obchod˚ u nebo anal´ yze hlavn´ıch str´ anek web˚ u. V tomto pˇr´ıpadˇe by vˇsak bylo nutn´e upravit znaˇcn´ ym zp˚ usobem i n´ aslednou anal´ yzu. V r´amci dalˇs´ı pr´ace na programu bych se rovnˇeˇz snaˇzil d´ale experimentovat se vstupy s´ıtˇe. V pˇr´ıpadˇe dalˇs´ı pr´ace bych v kaˇzd´em pˇr´ıpadˇe rozˇs´ıˇril i mnoˇzstv´ı tr´enovac´ıch dat na v´ıce r˚ uzn´ ych jazyk˚ u. Zaj´ımav´ ym rozˇs´ıˇren´ım by mohlo b´ yt i poskytnut´ı webov´eho API. Dle m´eho n´ azoru byly c´ıle pr´ ace z vˇetˇsiny naplnˇeny, coˇz dokl´adaj´ı i pˇredchoz´ı tvrzen´ı. V urˇcit´ ych smˇerech se nepodaˇrilo dos´ahnout vytyˇcen´ ych c´ıl˚ u, na druhou stranu byl vytvoˇren pouˇziteln´ y program, lehce rozˇsiˇriteln´ y s moˇznost´ı jednoduch´e integrace do jin´ ych syst´emu. Aˇckoliv jsem v ran´e f´ azi nepoˇc´ıtal s pouˇzit´ım neuronov´e s´ıtˇe pro klasifikaci, ve v´ ysledk˚ u se toto rozhodnut´ı uk´ azalo jako velmi spr´avn´e. 36
37
Literatura [1] Introduction to Neural Networks [online]. 2014, [cit. 2014-05-23]. URL http://www.learnartificialneuralnetworks.com/ introduction-to-neural-networks.html [2] Burget, R.: Automatic Web Document Restructuring Based on Visual Information Analysis. In Advances in Intelligent Web Mastering - 2, Proceedings of the 6th Atlantic Web Intelligence Conference - AWIC’2009, Advances in Intelligent and Soft Computing , Vol. 67, Springer Verlag, 2010, ISBN 978-3-642-10686-6, s. 61–70. URL http://www.fit.vutbr.cz/research/view_pub.php?id=9027 [3] Cai, D.; Yu, S.; Wen, J.-R.; aj.: VIPS: a Vision-based Page Segmentation Algorithm. Technick´ a zpr´ ava, Microsoft (MSR-TR-2003-79), November 2003. [4] Evert, S.: A Lightweight and Efficient Tool for Cleaning Web Pages. In Proceedings of the Sixth International Conference on Language Resources and Evaluation (LREC’08), Marrakech, Morocco: European Language Resources Association (ELRA), may 2008, ISBN 2-9517408-4-0, http://www.lrec-conf.org/proceedings/lrec2008/. [5] Feldman, R.; Sanger, J.: The Text Mining Handbook: Advanced Approaches in Analyzing Unstructured Data. ITPro collection, Cambridge University Press, 2006, ISBN 9781139457835. URL http://books.google.cz/books?id=3PcEoz48RBcC [6] Kohlsch¨ utter, C.; Fankhauser, P.; Nejdl, W.: Boilerplate detection using shallow text features. In WSDM, editace B. D. Davison; T. Suel; N. Craswell; B. Liu, ACM, 2010, ISBN 978-1-60558-889-6, s. 441–450. [7] Kunc, M.; Burget, R.: Klasifikace prvk˚ u dokumentu na z´akladˇe vizu´aln´ıch rys˚ u. In Znalosti 2008, Vydavatel’stvo STU, 2008, ISBN 978-80-227-2827-0, s. 347–350. URL http://www.fit.vutbr.cz/research/view_pub.php.cs?id=8564 [8] McKeown, K. R.; Barzilay, R.; Evans, D.; aj.: Tracking and Summarizing News on a Daily Basis with Columbia’s Newsblaster. 2002. [9] Pasternack, J.; Roth, D.: Extracting Article Text from the Web with Maximum Subsequence Segmentation. In Proceedings of the 18th International Conference on World Wide Web, WWW ’09, New York, NY, USA: ACM, 2009, ISBN 978-1-60558-487-4, s. 971–980, doi:10.1145/1526709.1526840. URL http://doi.acm.org/10.1145/1526709.1526840
38
[10] Pomik´ alek, J.: Removing Boilerplate and Duplicate Content from Web Corpora [online]. Disertaˇcn´ı pr´ ace, Masarykova univerzita, Fakulta informatiky, 2011 [cit. 2014-01-05]. URL http://is.muni.cz/th/45523/fi_d/ [11] Sch¨fer, R.: Efficient High-precision Boilerplate Detection Using Multi-Layer Perceptrons. 2014, [cit. 2014-01-05] Submitted to LREC 2014. URL https://hpsg.fu-berlin.de/{~}rsling/downloads/pubs/Schaefer_ LREC2014-submitted_BoilerplateDetectionMLP.pdf [12] Spousta, M.; Marek, M.; Pecina, P.: Victor: the Web-Page Cleaning Tool. In Proceedings of the 4th Web as Corpus Workshop, LREC, 2008. [13] Vieira, K.; da Silva, A. S.; Pinto, N.; aj.: A Fast and Robust Method for Web Page Template Detection and Removal. In Proceedings of the 15th ACM International Conference on Information and Knowledge Management, CIKM ’06, New York, NY, USA: ACM, 2006, ISBN 1-59593-433-2, s. 258–267, doi:10.1145/1183614.1183654. URL http://doi.acm.org/10.1145/1183614.1183654 [14] Wikipedia: N-gram [online]. 2013, [cit. 2014-01-05]. URL http://en.wikipedia.org/w/index.php?title=N-gram&oldid=583934400 [15] Wikipedia: Naive Bayes classifier [online]. 2013, [cit. 2014-01-05]. URL http://en.wikipedia.org/w/index.php?title=Naive_Bayes_ classifier&oldid=584046958 [16] Wikipedia: Ruby [online]. 2013, [cit. 2014-07-31]. URL http://cs.wikipedia.org/w/index.php?title=Ruby_(programovac%C3%AD_ jazyk)&oldid=11580983
39
Pˇ r´ıloha A
Obsah CD • adres´ aˇr textractor obsahuj´ıc´ı zdrojov´ y text programu • soubor thesis.pdf obsahuj´ıc´ı text pr´ace
40