Miroslav Štolc - Informácie o ľuďoch

    Table of contents
    No headers

    Vyhľadávanie informácií o ľuďoch na internete nie je jednoduché. Najmä v prípade ak existuje viac ľudí s rovnakým menom, čo je dosť bežné. Pre hľadanie týchto informácií sa najčastejšie používajú klasické internetové vyhľadávače ako napríklad Google. Ten však vráti po zadaní dopytu, ktorý predstavuje meno a priezvisko človeka odkazy pre všetkých ľudí s daným menom. Je možné, že medzi desiatimi vrátenými odkazmi bude aj päť rôznych ľudí. A ak by sme pokračovali ďalej, tak možno nájdeme aj ďalších. Chceli by sme vytvoriť projekt, ktorý na základe profilu človeka nájde odkazy na relevantné dokumenty o hľadanom človeku. Hlavnou úlohou bude filtrovať odkazy na zadaného človeka, ktoré našiel Google. Tento filter bude založený na hodnotení odkazov podľa podobnosti k profilu. Profil by mal obsahovať informácie ako škola, zamestnanie, záujmy a podobne.

     

    Existujúce riešenia

    Na hľadanie informácií existujú portály predovšetkým v USA a navyše vyhľadávajú väčšinou iba podľa mena, priezviska a prípadne adresy. Sú to napríklad tieto:

     

    http://people.yahoo.com/, http://pipl.com/

     

    http://www.peoplesearch.net/, http://www.peoplesearch.com/

     

    Našiel som aj vyhľadávač, ktorý je komerčný, ale za to ponúka istú garanciu. Umožňuje vyhľadávať podľa mena, adresy, tel. čísla alebo napríklad aj vyhľadávanie bankových účtov.

     

    http://www.bestpeoplesearch.com/

     

    Na Slovensku je málo, v podstate som ani nenašiel relevantné vyhľadávacie nástroje. Jediná stránka, ktorá vyzerala zaujímavo bola:

     

    http://osobne.stranky.sk/

     

    avšak táto stránka vyhľadáva iba na informáciách zadaných na tej stránke, nie na celom internete.

     

    Asi najzaujímavejšou stránkou na vyhľadávanie informácií o ľuďoch bola:

     

    http://wink.com/

     

    Dopyt obsahuje okrem mena a priezviska človeka aj pole ďalšie, kde môžeme zadať v podstate hocičo, čo o danom človeku vieme. Na moje prekvapenie fungoval tento vyhľadávací nástroj aj na slovenské mená (napr. moje), takže tento vyhľadávač by mohol byť dobrý na porovnávanie s mojim pokusom o vytvorenie nástroja. Tento nástroj používa Google API na vyhľadávanie.

     

    Riešenie

    Obsah Profilu:

     

    • vzdelanie (školy - aktuálne a skončené)

       

    • práca (súčasná aj staršie)

       

    • záujmy (preferovať jednoslovné napr. hokej, turistika, fotografia, ...)

       

    • adresa (súčasná aj staršie)

       

    • rok narodenia

       

    • priatelia

       

    • nick

       

    • mailové adresy

       

    Všetky prvky profilu môžu byť zadané viackrát (samozrejme okrem roku narodenia) a na druhej strane nemusia byť zadané vôbec. V pláne je aj priradenie jednotlivým prvkom profilu istú dôležitosť - relatívny koeficient, ktorý sa zohľadní pri zoraďovaní odkazov.

     

     

    Podobnosť odkazu:

     

    • bodovanie každého odkazu (dokumentu, ktorý je za ním)

       

    • za prvý výskyt v texte 10 bodov, za každý ďalší výskyt +1 bod

       

    • berieme do úvahy aj vzdialenosť, ak bude prvok profilu blízko mena, tak budú body pridané

      . Max. vzdialenosť (MAX) pre pridanie bodov je parametrizovateľná (default 40 znakov). Body sú pridávané podľa vzdialenosti

      body = koef * (MAX - vzdialenost). Koeficient (koef) tohto vzorca je tiež parametrizovateľný (default je 1 / 5).

    • výskyt slova musí byť presný t.j. za slovom nemôže byť ďalšie písmenko alebo číslo, ale špeciálny znak ako medzera, nový riadok, začiatok html tagu < a podobne.

    Predbežne plánujem hodnotiť odkazy typu .htm a .pdf, pre druhé použijem knižnicu http://www.pdfbox.org/. Na nasledujúcom obrázku je predbežný návrh aplikácie. Implementovaná bude v Jave, buď ako jednoduché swing okno alebo ako applet.


    Návrh:

    vi.png

     

    Person - vyhľadávaný človek, obsahuje meno a priezvisko

     

    PersonProfile - profil človeka s údajmi spomenutými v analýze

     

    PageRank - hodnotenie jedného odkazu

     

    ActualSession - údaje o aktuálnom vyhľadávaní

     

    ClientFrame - jednoduché okno, dedí od swing triedy JFrame (v prípade appletu od JApplet)

     

    GoogleRankUtil - pomocná trieda so statickými metódami pre:

     

    • volanie Google Query

       

    • ohodnotenie jednej stránky na základe profilu

       

    • konverziu pdf dokumentu na text

       

       

    Dopyt:

     

    Dopyt predstavuje volanie na službu:

    http://ajax.googleapis.com/ajax/services/search/web?...

    kde bodky predstavujú ďalšie parametre dopytu (reťazec, počet výsledkov). Dokumentácia k použitiu tohto Google API sa nachádzana:

            http://code.google.com/apis/ajaxsearch/documentation/

    Dopyty na Google nebudú robené len ako "Meno Priezvisko", ale aj napr. "Meno.Priezvisko", "M.Priezvisko" a podobne, samozrejme navyššiu váhu budú mať dopyty prvého typu, ale môže sa vyskytnúť aj odkaz, ktorý bude výsledkom dopytu na inú kombináciu mena a priezviska a bude ohodnotený vysoko.

     

    Hore spomenutá služba od Google API vráti textové dáta, ktoré sú štruktúrované, takže ich vieme jednoducho spracovať. Navyše existuje knižnica JSON (http://www.json.org/), ktorá výstup vie parsovať a my dostaneme zoznam objektov typu JSONObject, ktoré predstavujú jednotlivé odkazy.

    Problémy:

     

    Počas implementácie a testovania sa vyskytli nasledovné problémy:

    • Čítanie pdf dokumentov, použili sme knižnicu pdfbox, parsovanie je relatívne časovo náročné, ale mojim cieľom nebolo vytvoriť rýchly, ale spoľahlivý nástroj.

       

    • Problém nastal pri čítaní zdrojov, ktoré sú umiestnené na ftp serveroch. V jave existuje trieda FtpUrlConnection, ale čítanie zdroja v niektorých prípadoch spôsobilo blokovanie vykonávania programu. Riešenie ešte hľadám, možno inú knižnicu alebo jednoducho stanovíme max. čas na načítanie zdroja, pri prekročení linku ignorujeme.

       

    • Problémom pri samotnom vyhľadávaní bolo zadanie iba mesta ako adresy človeka. Toto pri našej stratégii vyhľadávania spôsobuje problémy, lebo napr. pri zadaní veľkého mesta (napr. Bratislava) sa toto mesto môže na stránkach často nachádzať aj keď vôbec nesúvisí s práve hľadaným človekom. Preto ako adresu odporúčame zadať iba ulicu, prípadne ulicu s mestom alebo ak vieme, problém sa nevyskytne ak zadáme dedinu, prípadne malé mesto.

       

    Testovacie dáta

    Program som testoval na nasledujúcich menách. Za menom uvádzam vlastnosti človeka, ktorého hľadáme, pod menom sú menovci, ktorých chceme vylúčiť.

     


    Miroslav Štolc – FIIT STU, informatika, modelárstvo, korešpondenčné semináre (FKS, KMS, KSP)

     

                Hokejista z Popradu

     

    Jana Štolcová – FMFI UK, matematika, fyzika, PIKOFYZ, PIKOMAT, FKS

     

                Automobilová pretekárka z Popradu

     

    Martin Filo – hokejista, dukla Trenčín, Kanada

     

                Fotograf, lekár

     

    Michal Kováč – bývalý prezident SR

     

                Programátor v MS

     

    Peter Novák –

     

    spevák „Šarkan“

     

         Bežné meno na slovensku (napr. aj kamarat horolezec)

    Vyhodnotenie

    Nasledujúca tabuľka obsahuje vyhodnotenie výstupov z projektu, pre 5 mien. Množinou všetkých dokumnetov je prvých 30 odkazov, ktoré vrátil Google. Prvý stĺpec predstavuje počet relevantných dokumentov, druhý je počet dokumentov z nášho programu, tretí stĺpec je veľkosť prieniku predchádzajúcich dvoch. V posledných dvoch stĺpcoch sú známe metriky precision a recall.

    Vyhodnotenie vyhľadávania
    Meno
    R
    I
    RI
    Precision
    Recall
    Miroslav Štolc 6 5 4 0.8 0.67
    Jana Štolcová 11 7 7 1.0 0.64
    Martin Filo 6 8 6 0.75 1.0
    Michal Kováč 23 17 17 1.0 0.74
    Peter Novák 5 4 4 1.0 0.8

     

    Na tomto mieste by som ešte chcel načrtnúť polemiku ohľadom bodovania stránok. Ako je uvedené v predošlích častiach, na bodovanie dokumentu som použil dve "metriky" a to výskyt slova v dokumente a vzdialenosť od hľadaného mena. Tu sa hneď objavý otázka, že v ktorom prípade je dokument relevantnejší: ak je tam viac výskytov kľučových slov alebo ak je ich menej, ale sú bližšie k menu hľadaného človek. Meniť túto "stratégiu" je možné len pred kompiláciou prgramu nastavením koeficientov pre pripočítavanie bodov vzhľadom na vzdialenosť. Presnejšie odhadnutie týchto koeficientov by si vyžadovalo značne väčší objem testovacích dát a testovanie na rovnakých dátach pre rôzne koeficienty. Následne by sme potrebovali akýsi štatistický aparát na korektné vyhodnotenie tohto merania.

     

    Spustenie aplikácie

    Program je jednoduchá java aplikácia, ktorá pozostáva z .jar súboru. Spustenie programu pomocou je možné cez triedu person.ClientFrame, ktorá obsahuje metódu main. Nevyhnutnosťou je nainštalovaná java verzie minimálne 1.5. Programové okno bude vyzerať nasledovne:

     

     

    vi2.PNG

    Všetky polia, vrátane mena a priezviska vypĺňame s diakritikou. Po zadaní údajov a potvrdení tlačidla sa v spodnej časti zobrazia linky zoradené podľa relevantnosti k danému človeku. Linku je možné prekopírovať a otvoriť v prehliadači.

     

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