Marek Polák - Informácie o firmách

     

    Dokument opisuje databázový systém firiem, ktoré majú zaregistrovanú doménu a funkčnú webovú stránku. Účelom projektu bolo vytvoriť časť tohto systému zabezpečujúcu jeho automatické napĺňanie a aktualizáciu vo zvolených časových intervaloch.

    Systém po dokončení umožní používateľom vyhľadávať firmy podľa IČO, obchodného mena, web stránky, lokality a iných vstupov. Ako výstup vyhľadávania poskytuje kontaktné informácie firmy z viacerých zdrojov, pre registrovaných používateľov taktiež históriu ich vyhľadávaní.

     

    Analýza problémovej oblasti

    V súčasnosti existujú služby, ktoré ponúkajú podobný druh informácií ako navrhovaný systém, ani jedna z nich neponúka všetky v ucelenej forme. Používateľ je nútený zbierať informácie z viacerých zdrojov, čo ho spomaľuje v práci. Výhodou týchto služieb je, že sú bežne dostupné a môžu preto slúžiť ako významné zdroje dát pre náš systém.

    Medzi existujúce systémy, ktoré fungujú na podobnom princípe, možno zaradiť registre vytvorené a udržiavané štátnymi inštitúciami:

    §         Obchodný register SR:       http://orsr.sk/

    §         Živnostenský register SR: www.zrsr.sk

    Iným druhom sú katalógy firiem, viac alebo menej komerčného rázu:

    §         Európska databanka firiem: www.edb.sk

    §         Univerzálny register: www.ur.sk

    §         B2B vyhľadávač: http://sk.wlw.sk

     

    Analýza vytváraného systému

    Koncepcia navrhovaného systému sa zakladá na bezplatnom poskytovaní užitočných informácií. Používateľovi je umožnené vyhľadávať v databáze firiem podľa ním zadaných kritérií. Neregistrovaný používateľ bude mať prístup k niekoľkým druhom vyhľadávania. Informácie, ktoré vyhľadávanie vráti nebudú kompletné, k dispozícii bude základný balík najdôležitejších. Medzi ne patria: obchodné meno spoločnosti, IČO, DIČ, typ firmy, činnosť a odborové zatriedenie a základné kontaktné informácie zahŕňajúce adresu, telefón a web stránku spoločnosti.

     

    Registráciou používateľ získa výhodu prístupu k všetkým informáciám, ktoré databáza o hľadanej spoločnosti obsahuje. Medzi najdôležitejšie možno zaradiť kontaktné informácie na jednotlivé osoby, oddelenia či pobočky firmy, spolu s telefonickým kontaktom. Jeho vyhľadávania budú archivované, čo zabezpečí jednoduchý prístup k už nájdeným firmám v ľubovoľnom čase.

    Systém má za cieľ po dokončení byť verejne prospešnou službou pre široký okruh používateľov, ktorý výrazne šetrí ich čas.

     

    Technické hľadisko

     

    Z technického hľadiska je systém navrhnutý na klient - server architektúre. Funkčnosť systému je založená na intenzívnom využívaní databázy značnej veľkosti.

     

    Medzi zdroje dát, ktorými bude databáza napĺňaná patrí databáza slovenských domén SK-NIC, obchodný register SR a webové stránky jednotlivých spoločností. Systém využíva zoznam domén na získaný z SK-NIC-u na zistenie obchodného mena a IČa firmy, následne firmu vyhľadá v obchodnom registri a extrahuje údaje o nej. Nakoniec prejde crawlerom web stránky na danej doméne, vyparsuje zaujímavé informácie a všetky získané informácie pridá do databázy.

    Návrh a implementácia

    Projekt je vytvorený v programovacom jazyku Java, v prostredí NetBeans IDE. Ako databáza bolo použité riešenie od firmy Oracle v základnej bezplatnej verzii: „Oracle Database 10g Express Edition“. Návrh a implementácia databázovej časti bola uskutočnená v rámci iného predmetu, pre účely tohto dokumentu budem rozoberať časti súvisiace s vyhľadávaním informácií.

     


    Trieda DomainParser

    Proces získavania údajov začína načítaním súboru domeny.txt, ktorý obsahuje zoznam všetkých registrovaných domén v priestore národnej domény „.sk“. Zo súboru sú pomocou regulárnych výrazov extrahované údaje:

    ·        doména, ID registrátora a IČO držiteľa domény

     

    Regulárne výrazy použité v triede sú:

    ·        ^[\w-]+.sk – doména [reg. doména].sk

    ·        [A-Z\d]{4}-[\d]{4} – kód registrátora skladajúci sa zo 4 hlások, pomlčky a 4 číslic, napr. SWAN-0002

    ·        [\d]{8}$ - 8 miestne IČO držiteľa – v súbore sa nachádzajú aj domény s 9 miestnym neexistujúcim IČO, tieto sú zo spracovania vyradené

    Trieda ORSRcrawler

    Po naplnení databázy identifikačnými číslami firiem a k nim prislúchajúcimi doménami má aplikácia za úlohu v ďalšom kroku získať čo najviac údajov o danej firme. Tento proces možno rozdeliť na 2 časti, pričom na konci každej sa získané dáta zapisujú do databázy:

    1.                 Získanie dát o spoločnosti z „orsr.sk“

    2.                 Získanie kontaktných informácií z domén patriacich spoločnosti

     

    Trieda ORSRcrawler má na starosti 1. časť. Pre jednotlivé IČO vyhľadávaním v obchodnom registri získa linku na stránku so záznamom o firme. Tú načíta a z textovej verzie zbavenej html tagov získa pomocou regulárnych výrazov požadované informácie. Ako html parser textu z web stránky je v celom projekte používaná open-source knižnica HTML Parser 1.6  (http://sourceforge.net/projects/htmlparser/).

                Regulárne výrazy, použité v triede, sú vytvorené špeciálne pre extrakciu údajov z obchodného registra, pri použití v heterogénnom prostredí webu (na rozličných web stránkach) je ich presnosť a účinnosť malá, pri záznamoch na orsr.sk vracajú požadované výsledky.


    Regulárne výrazy:

    ·         Obchodné meno -  ^Obchodné meno:[\s]*([\d\w-. ]*,.*)

     

    ·         Sídlo - ^Sídlo:[\s]*(.*)[\s]*([\w]+) *([\d ]{5,6})

     

    ·         IČO - ^IČO:[\s]*([\d ]{8,10})

     

    ·         Typ - ^Právna forma:[\s]*(.*)

     

    ·         Druh činnosti - ^(.*)[\s]+(.?od:.*)

     

    ·        Osoby v spoločnosti - ([A-Z][\w]{2,3}\.)? *([A-Z][\p{Ll}]+) +([A-Z][\p{L}-]+)([A-Z][\w]{2,3}\.)?( - ([\p{L} ]*))?[\s]+([\p{Lu}].*)[\s]+([\p{Lu}][\p{Ll}][\p{L} -]+)[ |\s]?([\d ]{5,6})? : vracia titul pred menom, krstné meno, priezvisko, pozíciu v spoločnosti, ulicu, mesto a PSČ

    PageParser

    Trieda PageParser má na starosti druhú časť procesu získavania údajov o firme – extrakcia dát z web stránok vlastnených firmou. Je volaná web-spiderom pri prístupe na každú nájdenú stránku na doméne. Spider bol vytvorený využitím open-source knižnice Arachnid (http://sourceforge.net/projects/arachnid/). Knižnicu bolo nutné upraviť, nakoľko nedokázala na stránkach rozpoznať rámce a spracovať ich. Pri testovaní implementácie boli odhalené ďalšie chyby, Arachnid má problém so spracovávaním dynamicky generovaných stránok, ktorých je v súčasnosti na webe väčšina.

     

    Trieda PageParser dostáva na vstup stiahnutý textový obsah stránky, jej úlohou je nájsť v ňom čo najviac relevantných kontaktných informácií. Hľadané sú adresy, osoby, telefónne a emailové kontakty. Vyhľadávanie sa uskutočňuje opäť pomocou regulárnych výrazov, pri hľadaní osôb je využitý vlastnoručne navrhnutý gazeteer slovenských krstných mien. Gazeteer má formu Singleton-u, a je načítaný pri prvom spustení spidera. Slúži na vylúčenie „false positives“ z vyhľadávania osôb.

    Použité regulárne výrazy:

    ·        Adresa – ulica (napr. Prievozská 6/A, Einsteinova 20)

    -                ulica               číslo        / ďalšie číslo (písmená)

     

    -     ([\p{Lu}][\p{L} -]+ +[\d]{1,4}([\d/a-zA-Z]{1,4})?)

     

     

    ·       Adresa - PSČ + mesto alebo mesto + PSČ

     

    -       PSČ je voliteľné, treba testovať prázdnosť polí

     

    -                            PSČ                                       Mesto                                                   PSČ

     

    -          ([\d]{2} *[\d]{3}|[\d]{3} *[\d]{2})? *([\p{Lu}][\p{Ll}][\p{L} -]+)[\s]*([\d]{2} *[\d]{3}|[\d]{3} *[\d]{2})?

     

     

    ·        Tel. číslo - číslo pevná, predvoľba s +, mobil a pred číslom oznam o čísle

     

    -                text pred t. č.           tel. číslo

     

    -          (([\p{L} ]*)[: ]+)?((\+421|0)[()/0-9. -]{9,})

     

     

    ·        Emailová adresa - info + email (všetky domény, nielen obmedzenie na sk, cz...)

     

    -                   text pred emailom                             email. adresa

     

    -          (([\p{L} -]*)[: ]+)?([_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4})

     

     

    ·        Osoba - titul, meno, priezvisko

     

    -                            titul                                  meno                  priezvisko

     

    -          ([B|C|D|I|J|M|P|R][\w]{2,3}\.)?[ ]*([A-Z][\p{L}]+)[ ]+([A-Z][\p{L}-]+)

     

     

    Inštalácia a spustenie

    Predložený projekt je súčasťou väčšieho systému, ktorý momentálne ešte nie je dokončený. Skladá sa z 3 častí, databázovej, časti vyhľadávania a extrakcie údajov a front-end-u. Časť vyhľadávania a extrakcie, ako aj databázová časť sú dokončené, rozpracovaná je vrstva medzi nimi: na napĺňanie a selekciu info. z databázy, ako aj front end, ktorým bude web-portál.

        Priložený archív obsahuje NetBeans projekt v súčasnom stave. Každá z vyššie spomenutých tried je spustiteľná a testovateľná. Výsledky sú zobrazené v konzole.
     

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