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

    Včelí focused crawler

    Včelí focused crawler sa skladá z dvoch základných modelov správania sa včiel - správanie sa včely v úli (implementoval Tomáš Jelínek) a správanie sa včely mimo úľa (implementovala Lucia Jastrzembská).Oba modely sú zobrazené na obrázku.

     

    nasModel.jpg

    Model správania sa včiel v úli

    Úľ má 3 základné časti - tančiareň, hľadisko a dispečerňu. Tančiareň slúži na propagovanie nejakého zdroja, hľadisko na pozorovanie propagovaných zdrojov a v dispečerni sa nachádzajú štartovacie stránky z ktorých si pri odchode z dispečerne včely náhodne vyberajú.

    Pri štarte vyhľadávania sa všetky včely nachádzajú v dispečerni, odkiaľ si náhodne vyberú jednu zo štartovacích stránok. Včela sa v tomto momente dostane mimo úľa a jej správanie sa odvíja od modelu správania sa včely mimo úľa. 

    Včela sa po návrate do úľa rozhoduje na základe kvality nájdenej stránky q. Jej ďalšie rozhodovanie je zobrazené na obrázku.

    Model správania sa včiel mimo úľa

    Včela sa pri každom navštívení stránky rozhoduje na základe jej kvality, či sa vráti späť do úľa alebo bude nasledovať niektorý z odkazov. V prípade, že stránka neobsahuje ďalšie odkazy, včela sa na základe kvality stránky vráti buď so skutočnou kvalitou stránky alebo s nulovou kvalitou stránky. Včela si z liniek na stránke vyberá náhodne.

    Výpočet kvality stránok

    Kvalita stránky sa určuje iba na základe výskytu slov na stránke a ich dôležitosti (title, nadpisy). Do úvahy sa neberie linkové prepojenie stránok.

     

    Použité algoritmy

    Použil som algoritmy best-first a do šírky. Dobu vyhľadávania som obmedzil na počet stiahnutí, pretože to je najnáročnejšia operácia pri vyhľadávaní. Počet stiahnutí som obmedzil na 1500. Za výsledok som potom považoval 10 najleších stránok nájdených počas vyhľadávania.

    Best first

    Princíp fungovania:

    Umiestni do prioritnej fronty začiatočné odkazy

    kým fronta nie je prázdna, alebo bol dosiahnutý maximálny počet stiahnutí

    vyber najlepšiu stránku

    vyber z nej všetky odkazy

    každý z nich staihni, a ak ešte neboli a umiestni do prioritnej fronty na príslušné miesto podľa kvality

    Do šírky

    Princíp fungovania:

    Umiestni do fronty začiatočné odkazy

    kým fronta nie je prázdna, alebo bol dosiahnutý maximálny počet stiahnutí

    vyber prvý prvok fronty

    vyber z nej všetky odkazy

    každý z nich staihni, a ak ešte neboli a umiestni na koniec fronty

    Implementácia

    Zadanie som implementoval v jazyku Java.

    Použité existujúce riešenia

    Pri riešení som použil sťahovač, parser a algoritmus na výpočet kvality stránok vytvorený Luciou Jastrzembskou. Tiež som použil jej výsledky pri hľadaní pomocou včelieho úla. Použil som tieto riešenia z toho dôvodu, lebo ak som chcel porovnávať výsledky rôznych algoritmov s tými dosiahnutými Luciou, bolo potrebné, aby bol parser, sťahovač aj algoritmus na výpočet kvality rovnaký.

    Vlastné riešenie

    Implementoval som model správania sa včelieho úla ako konečný stavový automat. Predchádzajúca implementácia, ktorú som vytvoril v rámci bakalárskeho projektu bola robená pomocou vlákien, kde každá včela bola reprezentovaná jedným vláknom. Toto riešenie však neumožňovalo efektývny beh viacerých včiel na bežnom počítači. Súčasná implementácia pracuje v jednej vykonávacej slučke, v ktorej si drží zoznam včiel. Každá z nich sa nachádza v istom stave a v každej iterácii sa na každej včele zavolá metóda performAction, a tá v závislosti od toho, v ktorom stave sa nachádza nejak zareaguje a presunie sa do iného stavu (napr. keď je v stave lietania, stiahne stránku a presunie sa do stavu, že sa práve vrátila do úľa).

    Model správania sa úla je implementovaný ako framework, keďže sa jedná o všeobecný algoritmus a jeho využitie nie je obmedzené iba na vyhľadávanie na Internete. Vyhľadávač na Internete (alebo iné využitie) je potom implementované ako modul do tohto frameworku.

    Algoritmy best-first a do šírky som implementoval tiež ako on-line crawlery, keďže za čas, ktorý som experiementy vykonával sa stránka zrejme stejne nestihla zmeniť, by bolo zbytočné ju najprv sťahovať. Malo to aj tú výhodu, že ak sa niektorý algoritmus dostal z pôvodnej domény na inú, nič mu v tom nebránilo.

    Popis dát

    Ako zdroj dát som použil stránku www.fiit.sk a hľadal som na nej kľúčové slová, tak, ako sú popísané v nasledujúcom vymenovaní aj s popisom, prečo som použil práve tieto. Algoritmy som neobmedzoval v hľadaní iba na túto doménu. Znamenalo to síce nevýhodu pre algoritmus do šírky, ale pre ostatné algoritmy je prirodzenejšie nasledovať dobré (nádejné) linky bez ohľadu na doménu.

    • ACM: veľmi jednoduchý prípad. Už na úvodnej stránke sa toto kľúčové slovo nachádza štyri krát a teda už táto stránka je relevantná. O jedno vnorenie hlbšie sa nachádzajú stránky venované práve tejto téme.

    • Barla: Meno jedného doktoranda na fiit. Podstatne zložitejší problém – na úvodnej stránke sa nenachádza ani raz, nemá ani svoju osobnú stránku. Včely sa v tomto prípade nemajú čoho chytiť a musia hľadať náhodne, kým na niečo nenarazia. Je to však človek, ktorý je autorom veľkého počtu publikácií, vyhral rôzne ceny a teda sa na stránke na rôznych miestach nachádza, takže aj pri náhodnom prehľadávaní ho je možné nájsť.

    • InfoLIB:Ku tomuto zdroju je možné sa dostať cez virtuálna knižnica -> užitočné odkazy -> InfoLIB. Jedná sa teda o hĺbku 3, a vedie ku tomuto odkazu iba jediná cesta a tento odkaz sa nachádza len na tomto mieste na webe fiit (presnejšie neviem o tom, že by sa nachádzal aj inde). Jedná sa o pomerne ťažkú úlohu pre včely, ale aj pre ďalšie dva algoritmy, pretože algoritmus best-first sa nemá čoho chytiť a algoritmus do šírky by musel stiahnuť priliš veľa úrovní.

    • Rozvrh: toto kľúčové slovo sa na stránke FIIT nevyskyuje na úvodnej stránke. Tu sa ale nachádzajú odkazy na stránky iných fakúlt, kde je toto kľúčové slovo častejšie.

    Vyhodnotenie

    V tabuľke 1 je vidieť súhrn výsledkov všetkých troch algoritmov. PK znamená počet kvalitných stránok nájdených daným algoritmom - maximum je 10. KN je kvalitna najlepšieho výsledku – maximum je 1. Počet stiahnutí bol obmedzený na 1500. V prípade včiel je v tabuľke zaznačený priemer z piatich behov.

    Kľúč.slovo / agloritmus

    Včely

    Best-first

    Do šírky

    PK

    KN

    PK

    KN

    PK

    KN

    ACM

    10

    0.94

    10

    0,99

    10

    0,93

    Barla

    2,5

    0,5

    0

    0

    10

    0,76

    InfoLIB

    4,5

    0,29

    0

    0

    1

    0,49

    Rozvrh

    10

    0,91

    10

    0,92

    10

    0,86

    Tabuľka 1: Súhrn výsledkov

    Ako je vidieť v tabuľke 1, algoritmus Best-first nebol schopný nájsť hľadané slová Barla a InfoLIB, teda tie, pri ktorých sa nemal čoho chytiť na začiatku vyhľadávania. V týchto prípadoch si poradil lepšie včelí algorimus. Pri hľadaných slovách ACM a rozvrh, teda tam, kde bolo možné sa nejakého riešenia pomerne rýchlo chytiť dosiahol Best-first o trochu lepšie výsledky, z hľadiska kvality najlepšej nájdenej stránky.

    Pri porovnaní s algoritmom do šírky boli včely schopné nájsť trochu lepšie výsledky v prípadoch, keď sa dalo chytiť nejakého riešenia na začiatku, teda kľúčové slovná ACM a Rozvrh (z hľadiska kvality najlepšieho riešenia). Značne horšie boli v prípade hľadania slova Barla, keď sa hladaný výraz nachádzal na viacerých od seba nezávislých miestach. Tu včely našli iba niekoľko málo z nich, kým hľadanie do šírky dokázalo vyzbierať aspoň 10. Zaujímavé boli aj výsledky pri hľadaní slova InfoLIB. Keďže sa nachádzalo v pomerne veľkej hĺbke, bol pre hľadanie do šírky problém sa dostať až ku nemu a o úroveň hlbšie sa už dostať nestihol. Včely tu boli schopné nájsť viac výsledkov.

    Spustenie, inštalácia a použitie softvéru

    Sú vytvorené dva softvérové balíčky, jeden obsahuje best-first a do šírky, druhý je včelý algoritmus.

    Best-first a do šírky sú v prílohe v súbore bestbreadth.zip. Po rozbalení vznikne adresár, v ktorom bude adresár lib obsahujúci použitý externý parser (Jericho parser) a súbor vyhladavanie.jar, čo je samotný spustiteľný JAR súbor. Nachádza sa tam aj adresár src, ktorý obsahuje zdrojové kódy aplikácie.

    Program sa spúšťa nasledujúco:

    java -jar vyhladavanie.jar <best | breadth> <number of downloading> <search query> <pages>

    kde best je best first, breadth je do šírky, number of downloading je počet stiahutí, kým sa vyhľadávanie zastaví, search query je hľadaný výraz a pages je zoznam stránok, od ktorých sa má vyhľadávanie začať. Napríklad:

    java -jar vyhladavanie.jar 1500 best acm http://www.fiit.sk

    Výstup vyzerá nasledujúco:

    Downloading link: 1 http://www.fiit.sk

    … všetky stiahnutia

    koniec

    quality = 0.9927140255009108 page = http://www.acm.org/about/history downloadingNum = 720

    … 10 nasledujúcich

    Owerall number of downloading = 1500

    Inštalácia a spustenie včelieho vyhľadávania je popísané na stránke Lucii Jastrzembskej.

    Záver

    Implementoval som model správania sa včely v úly a algoritmy best – first a do šírky. Experimentoval som s nimi na stránke www.fiit.sk a výsledky som navzájom porovnal.

     

    Tag page (Edit tags)
    • No tags
    You must login to post a comment.
    Powered by MindTouch Core