Miloš Cibulka - udalosti

    Extrakcia udalostí

     

    Cieľom projektu je vytvoriť program, ktorý dokáže extrahovať potrebné dáta z určitého dátového zdroja. Výsledkom práce na projekte je program, ktorý zvýrazňuje dáta, ktoré používateľ programu potrebuje vedieť a ktoré ho najviac zaujímajú. Konkrétne sa jedná o extrakciu dátumov, názvov a miest konania udalostí, keďže ako dáta sú použité emaily, ktoré pozývajú používateľa na rôzne udalosti. Používateľovi prehľadným spôsobom zobrazuje to najdôležitejšie z jeho emailov a tým mu pomáha rýchlo sa v nich zorientovať, čo je preňho veľmi výhodné ak má veľké množstvo emailov alebo v nich narýchlo hľadá nejakú konkrétnu udalosť. Program taktiež podporuje možnosť pridania udalosti do svojho elektronického kalendára ak vlastní účet spoločnosti Google. Používateľ len zvolí dátum, vyplní potrebné údaje na jeho autentifikáciu a aplikácia vytvorí záznam v jeho kalendári.

     

     

    Popis riešenia

     

    Riešenie sa skladá z jedného programu, vytvorené v prostredí .NET Framework verzie 3.5 pomocou technológie Windows Presentation Foundation vytvoreného pomocou vývojového prostredia Microsoft Visual Studio Team System 2008.

     

                Ako vstupné dáta program používa dátový zdroj dbworld. Keďže sa jedná o výpisy logov z emailového servera, program najprv tento vstup vytriedi od hlavičiek emailov a html tagov použitých v emailoch. Vytvorí si zoznam emailov a ukáže ho používateľovi. Ten si tieto emaily môže prezerať, príp. zvoliť hľadanie údajov v nich. Program vtedy prezrie text emailu a hľadá v ňom pomocou regulárnych výrazov potrebné údaje. Určí typ nájdeného údaju a priradí mu farbu. Následne zvýrazní nájdené údajmi ich farbami. Popis farieb sa nachádza v hornej časti obrazovky.

    Popis extrakcie dát

     

                Ako som už spomínal, hlavnou činnosťou programu je práca s regulárnymi výrazmi. Aplikácia používa štyri typy regulárnych výrazov:

     

    ·         Práca s html tagmi

     

    ·         Práca s dátumami

     

    ·         Práca s mestami

     

    ·         Práca s názvami

     

     

    Práca s html

     

    Výraz pre hľadanie html tagov:

    <[^>]+?> slúži na hľadanie všetkých html tagov. Aplikácia využíva možnosť nahradzovať pomocou regulárnych výrazov a každý html tag, ktorý zodpovedá tomuto výrazu nahradí prázdnym reťazcom.

     

     

    Práca s dátumami

     

    Aplikácia rozlišuje tri typy formátov dátumov:

     

     

    YYYY/MM/DD, MM/DD/YYYY a DD/MM/YYYY

     

     

    Výraz pre rok:

    (19|20)\d\d podporuje všetky roky začínajúce 19 alebo 20.

     

    Výraz pre mesiace:

    0[1-9]|1[012] v číselnej podobe.

     

     

    Výraz pre mesiace slovne:

    (Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?

    |Nov(ember)?|Dec(ember)?) ak je mesiac napísaný slovne.

     

    Výraz pre deň:

    (((0?[1-9]|[12][0-9]|3[01])(st|nd|rd|th)?)|((0?[1-9]|[12][0-9]|3[01])[-](0?[1-9]|[12][0-9]|3[01]))) ošetruje nielen samotný jeden deň ale aj rozsah dní (napr. 19-24) a taktiež berie do úvahy anglické rádové číslovky (napr. 1st).


    Výraz pre oddeľovač:

     

    [-/., ]{1,2} môže byť aj zložený z dvoch oddeľovačov (napr. September, 20-24 2008).

     

    Práca s mestami

     

    Výraz pre hľadanie miest:

    ([A-Z][a-z^0-9]+[\s]*)+[,][\s]*([A-Z][A-Za-z^0-9]+[\s]?)+([0-9]*)? Podporuje formát miest, ktoré sú nasledované štátom (napr. Bratislava, Slovakia). Za názvom môže byť aj číslo v prípade udania PSČ v adrese.

     

    Práca s názvami

     

    Program rozlišuje dva typy názvov: Samostatný nadpis na jednom riadku a viacslovný nadpis uprostred textu.

     

    Výraz pre samostatný nadpis:

    [\n]+[A-Z][A-Za-z0-9/_-]+[\r]+ čiže všetky slová, začínajúce veľkým písmenom, pred ktorými sú len znaky označujúce nový riadok a na konci ktorých je znak pre koniec riadka.

     

     

    Vyhodnotenie

     

    Program samotný má v sebe pridané samohodnotenie nájdených výrazov. V xml súbore má uložené údaje o tom, v ktorom emaily je koľko dátumov, koľko miest a koľko názvov. Pri vyhodnocovaní porovnáva tieto údaje s nájdenými údajmi. Výsledok porovnania pre jednotlivé emaily je možné vidieť v spodnej lište programu, teda koľko údajov bolo nájdených, koľko bolo očakávaných a percentuálne porovnanie týchto dvoch čísel. Celkové hodnotenie pre všetky emaily sa objaví po stlačení tlačidla Zhodnoť.

     

               Aplikácia najlepšie rozoznáva dátumy udalostí, v tejto oblasti má stopercentú úspešnosť. Veľmi dobre je na tom aj pri rozoznávaní názvov, tu ale nastáva problém s priezviskami, pretože tie majú rovnakú štruktúru ako klasické dvojslovné názvy. Kvôli priezviskám preto vznikajú odchýlky od očakávaných čísiel. Taktiež problém nastáva pri mestách, keďže aplikácia si ich občas zamieňa za názov udalosti, v ktorom sa nachádza čiarka.

     

               Program taktiež dokáže vyhodnocovať výsledky extrakcie pomocou presnosti a pokrytia. V ďalšom xml súbore, nazvanom ExpectedStrings.xml, má zoznamy očakávaných reťazcov, ktoré by mal program v emailoch nájsť. Pre každý email potom vygeneruje vyskakovacie okno, ktoré zobrazí tri okná. V prvom sa nachádza zoznam nájdených dátumov. Majú farbu podľa toho, či je tento výstup očakávaný (zelená) alebo nie (červená). V druhom je zoznam miest, tiež s rozlíšenými výstupmi. Taktiež tretí stĺpec, v ktorom sú názvy disponuje týmto rozdelením. V každom stĺpci sa nachádzajú údaje o presnosti a pokrytí označené ako P (precision) a R (recall). Hodnoty nadobúdajú nasledovne:

     

    P = počet správne nájdených / počet všetkých nájdených

    R = počet správne nájdených / počet očakávaných

     

              Hodnotenie dopadlo podobne ako pri hodnotení pomocou percent. Najlepšie program dokáže rozlišovať dátumy, P aj R sú vždy rovné 1. Pri ostatných údajoch sú veľké odchýlky v presnosti. Aplikácia totiž nájde veľa reťazcov, ktoré neočakáva, preto je presnosť veľmi mála pri názvoch a mestách. Napriek nízkej presnosti je ale vysoké pokrytie, čo je známka toho, že aplikácia nájde všetko, čo používateľ potrebuje, ale potrebuje na to viac pokusov.

    Spustenie a inštalácia

     

                Aplikácia nevyžaduje žiadnu špeciálnu inštaláciu, k spusteniu potrebuje .NET Framework 3.0 a vyšší. Pre hodnotenie výsledkov potrebuje v svojom adresári adresár Data a v ňom uložený xml súbor ExpectedResults.

     

    Priložené súbory

     

    ExpectedResults.xml – Ukážka súboru, pomocou ktorého aplikácia vyhodnocuje správnosť nájdených údajov.

     

    ExpectedStrings.xml – Ukážka súboru, pomocou ktorého aplikácia vyhodnocuje správnosť nájdených údajov pre presnosť a pokrytie.


    VINF1.png – Ukážka prostredia aplikácie. Hore vidíme lištu s tlačidlami a s popisom nájdených údajov. Naľavo sa nachádza zoznam emailov. V strede obrazovky je zobrazený aktuálne vybraný email už so zvýraznenými nájdenými údajmi. Vidíme, že aplikácia v ňom našla názov, miesto konania a dátum konania podujatia a ďalšie kľúčové slová podujatia.

     

    VINF2.png – Ukážka práce s emailom. Program umožňuje priamo v texte emailu vyvolať kontextové menu pre každý zvýraznený dátum a dá užívateľovi možnosť pridať tento dátum do jeho Google kalendára.

     

    VINF3.png – Ukážka pridania nového záznamu do Google kalendára. Užívateľ zadá svoje meno a heslo a zvolí si názov a popis udalosti. Názov môže zadať svoj alebo si vybrať zo všetkých názvov, ktoré program v danom emaily našiel.

     

    VINF4.png – Ukážka hodnotenia výsledkov. Percentá uvádzajú pomer očakávaných a nájdených údajov. Odchýlku od očakávaných údajov zistíme odrátaním 100 % od týchto výsledkov.

     

    VINF5.png – Ukážka hodnotenia výsledkov pomocou presnosti a pokrytia. 

    Hodnotenie je prístupné prostredníctvom vyskakovacieho okna v ľavej dolnej lište a zobrazuje stav hodnotenia práve zobrazeného mailu.

    Dbworld – Zbierka 30-40 emailov vybraných z pôvodného súboru dbworld, na ktorých bol program testovaný a pre ktoré bolo vytvorený hodnotiaci xml súbor.

     

    Doc.pdf – Obsah wiki vo formáte pdf.

     

    Udalosti.ppt – Prezentácia programu.

     

    Source.zip - Zdrojový kód a aplikácia.

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