Michal Kajaba - Extrakcia diskusií k článkom denníka SME

    This page has no content. Enrich Vyhľadávanie informácií by contributing.

     

    Motivácia

    V súčasnej dobe rozvoja masovokomunikačných servrov a spravodajcov, čoraz viac a častejšie, prezentujú ľudia svoje názory prostredníctvom diskusií k článkom, blogom a podobne. Ako príklad si môžeme vziať denník SME (www.sme.sk). Poskytuje články a spravodajstvo z celého sveta. Ku každému článku môže používateľ vyjadriť svoj názor v diskusií k článku. Tieto príspevky obsahujú názov príspevku, samotný obsah, čas pridania príspevku, hodnotenie príspevku inými prispievateľmi a meno autora príspevku a tieto príspevky môžu byť ako reakcia na iné príspevky a tak vytvárať akúsi stromovú štruktúru diskusie.

     

    Pre prevádzkovateľov takýchto portálov môže byť analýza diskusií veľmi cenným zdrojom informácií. Je možné zistiť, ktoré témy sú najdiskutovanejšie, ktoré témy a ktoré názory obsahujú vysoký rating hodnotenia príspevku a tým pádom vytypovať „dôležitých členov“ diskusnej komunity. Niekedy je rovnako žiadúce čítať vecnú diskusiu, bez rušivých vtipov a nadávok, ktoré su nižšie hodnotené ako príspevky, ktoré nesú názor a sú vecné.

     

    Preto sa tento projekt zameriava hlavne na vyhľadanie článkov s diskusiami, extrakciu dát z diskusií, uloženie týchto údajov a následné vyhľadávanie na základe rôznych kritérií pomocou programovacieho jazyka Java.

    Prehľad súčasných riešení

    Súčasné riešenia sa dá rozdeliť na tri skupiny:

    1. Špecifické prehľadávače disksusných fór, kde diskusné fóra sú zväčša podobného typu a vyhľadávač tieto fóra drží v zozname, ktorý postupne indexuje a prehľadáva.
    2. Úzkoprofilové indexovače a vyhľadávače diskusných fór pre špecifické stránky, kde je nutné uchovávať nie celkom bežné údaje a parametre. Špecifické vyhľadávače by neboli schopné pokryť ich rozmanitosť.
    3. Širokospektrálne vyhľadávače, ktoré dynamicky vyhľadávajú diskusné skupiny, blogy a iné a tieto indexujú a sú schopné v nich vyhľadávať.

    http://www.boardtracker.com

    Vyhľadávač a indexovač diskusií manualne zadaných diskusných skupín. Obsahuje pomorne rozsiahlu databázu skupín, ktoré su postavené prevažne na troch diskusných enginoch.

    http://www.omgili.com/

     Vyhľadávač a indexovač dynamických diskusných skupín, ktorých adresy získava crawlerovaním iných stránok. Asi najlepší produkt zo všetkých svojho druhu.

    Riešenie

    V prvom rade bolo potrebné vytvoriť crwaler, ktorý bude zbierať dáta z diskusií z online denníka SME a zároveň po získaní údajov tieto údaje indexovať. Ďalším krokom je vytvorenie frontendu, ktorý bude naindexované údaje vyhľadávať na základe rozličných kritérií ( počet príspevkov, celkové hodnotenia príspevkov, hĺbka diskusného stromu a podobne).

    Riešenie bude implementované v Jave (JRE 1.5) a indexovanie a vyhľadávanie bude pomocou Lucene.

    Crawler

    Crawler ma za úlohu vytiahnuť zo stránky, kde prebieha diskusia potrebné údaje ako meno prispievateľa, hodnotenie jeho príspevku, obsah, dátum a na aký príspevok reagoval. Tieto informácie trebalo získať rozparsovaním html stránky s diskusiou, nakoľko tieto dáta nie sú v žiadnej inej forme dostupné.

    Prvým problémom bolo získanie url adresy diskusie, keďže sa adresa samotného článku líšila od adresy diskusie k článku. Avšak poznáme adresu stránky, ktorá obsahuje aj odkaz na diskusiu a adresa článku je:

    http://www.sme.sk/c/4109370/

    Pričom číslo v tejto adrese určuje číslo článku. Na tejto adrese sa nachádza celý článok spolu s odkazom na diskusiu. Práve tento odkaz bolo potrebné vyextrahovať.

    Na extrakciu informácií z html stránok bola použitá knižnicaHTMLParser v jave, ktorá disponuje vyhľadávacími nástrojmi a nástrojmi na samotnú extrakciu presne tých častí html textu, ktoré sú potrebné. Štruktúra html stránky diskusie umožňovala odfiltrovať nepotrebné časti stránky (menu, reklamy a pod.) a zameriať sa výlučne na časť s diskusiou. Samotné príspevky boli umiestnené do div elementov a označené atribútom class, čiže nebol problém zadefinovať a oddeliť jednotlivé príspevky. Problém sa vyskytol s extrakciou hodnotenia, keďže tento údaj nie je textový, číselný, ale je grafický a to zobrazením posuvníka na lište od -5 do +5. Ak je posuvník na hodnote 0 je tento príspevok hodnotený neutrálne. Žiaľ, príspevok neobsahuje koľko ľúdí hlasovalo, čiže tento fakt môže prispieť k zkresleniu výsledku. Po každom príspevku nastáva fáza indexácie, kde sa naindexujú získané položky. Jednotným identifikátorom je linka na článok, ku ktorému sa diskusia, príspevok viaže.

    Problém sa vyskytol so stránkovaním diskusií. Keďže niektoré témy mali rozsiahle diskusie, SME tieto diskusie rozdeľuje na stránky. Tieto stránky maju tvar

     http://www.sme.sk/diskusie/1376678/1...eutanaziu.html

    kde pred názvom článku figuruje poradie strany k diskusií.

    Kontrola existencie ďalšej strany bola jednoduchá: Ak pokus o získanie stránky bol neúspešný, ďaľšia strana neexistovala a tým pádom extrakcia diskusie skončila.

    Crawler sa spúšťa v prostredí java ako jar s prepínačmi:

    • -s         ID článku, od ktorého sa uskutočňuje sťahovanie a indexácia
    • -e         ID článku, pri ktorom sa sťahovanie a indexácia končí
    • -t         Interval (v sekundách) medzi sťahovaniami a indexáciami jednotlivých diskususií kvôli zaťaženiu stroja a linky

    java -jar crawler.jar -s 1000 -e 2000 -t 8

     Výsledky crawlingu sa indexujú a rovnako aj ukladaju do xml formátu (v prílohe tohto dokumentu)

    Vyhľadávač

    Nižšie je základný obrázok vyhľadávača, ktorý po zadaní kľúčového slova ho vyhľadá v naindexovaných diskusných prispevkoch. Zobrazené stlpce je možné usporiadavať a tým pádom je možné zobraziť príspevky, ktoré sú vyššie hodnotené a tým pádom sú zmysluplné.

     

     screen (1).JPG

     

    Vyhľadávač sa spúšťa ako Java jar aplikácia príkazom:

    java -jar search.jar

    Vyhľadávač má funkcie:

    • hľanie frázy (phrase)
    • hľadanie wildcard slova (vyhľad*)
    • hľadanie fuzzy (podobnosť slov: karol=>parol)

    Okrem týchto funkcií hľadania je možné vyhľadávať v jednotlivých poliach rovnako s použitím spomínaných funkcií:

    • v príspevku (message)
    • autora príspevku (user)
    • podľa hodnotenia inými používateľmi (rating)
    • a podľa názvu článku (article)

     

    Vyhľadávač prideľuje vyhľadanému záznamu hodnotu "score", ktorá vyjadruje mieru podobnosti, účinnosti. Vyhľadávač umožňuje zobraziť aj počet príspevkov od jednotlivých autorov pomocou tlačítka "najväčší prispievatelia" a tým pádom posunúť prehľad diskusií o krok ďalej. Vyhľadávač zoraďuje výsledky podľa ohodnotenia príspevku avšak tabuľka umožňuje triedenie podľa jednotlivých stĺpcov v rámci JAVA ovládacích prvkov.

    Testovanie

    Testovanie prebehlo priamo na diskusných príspevkoch denníka SME, na približne 500 vyextrahovaných a naindexovaných diskusiách. Program spoľahlivo diskusie extrahuje, indexuje a vyhľadáva v nich na základe všetkých vyššie uvedených parametrov a funkcií.

    Zhodnotenie

    Program je spoľahlivý a jasne demonštruje silu vyhľadávania a analýzy diskusií  k článkom denníka SME. Keďže tieto diskusie nie sú indexované inými vyhľadávačmi (yahoo, google, omgili) nie je možné priamo porovnať výsledky s inými širokospektrálnymi vyhľadávačmi a ani s vyhľadávačom na portály SME.sk. Navyše ani jeden s existujúcich vyhľadávačov nezohľadňuje hodnotenie príspevku iným používateľom.

     

    Nasledujúci graf porovnáva desať najlepších výsledkov vyhľadávania slova "dzurinda". Porovnáva hodnoty lucene score a SME score. Z grafu je vidieť, že tieto hodnoty sú vo veľkej miere úplne odlišné a dokonca ani nemaju rovnaké klesanie, stúpanie na danom intervale desiatich výsledkov.

    vyhodnotenie.JPG

     

    Použité zdroje

    1. Apache Lucene dokumentácia, dostpuné online 1.12.2008 na http://lucene.apache.org/java/docs/
    2. Omgili vyhľadávač, dostupné online 1.12.2008 na http://www.omgili.com/
    Tag page (Edit tags)
    • No tags
    You must login to post a comment.
    Powered by MindTouch Core