Upload
hoangdat
View
222
Download
4
Embed Size (px)
Citation preview
Slovenska technicka univerzita v Bratislave
Fakulta informatiky a informacnych technologiı
FIIT-5212-64389
Martin Liptak
AUTOMATIZOVANE CISTENIE VEREJNYCH DAT
Bakalarska praca
Maj 2012
Veduci prace: Ing. Jan Suchal
Studijny program: Informatika
Studijny odbor: 9.2.1 Informatika
Ustav informatiky a softveroveho inzinierstva, FIIT STU v Bratislave
Anotacia
Slovenska technicka univerzita v Bratislave
FAKULTA INFORMATIKY A INFORMACNYCH TECHNOLOGII
Studijny program: Informatika
Autor: Martin Liptak
Bakalarska praca: Automatizovane cistenie verejnych dat
Veduci bakalarskej prace: Ing. Jan Suchal
Maj 2012
Mnohe statne institucie maju povinnost’ zverejnovat’ udaje na webe. Kym rozne registre
a vestnıky su dolezite pre spravnu obchodnu komunikaciu, d’alsie udaje umoznuju verejnu
kontrolu fungovania statnych instituciı. Napriek tomu, ze tieto udaje su verejne dostupne
na webe, ich format a struktura je casto nevhodny pre strojove spracovanie. Nasim ciel’om
je vycistit’ tieto udaje, aby sme umoznili ich d’alsie strojove spracovanie.
Po stiahnutı udajov z roznych verejnych webovych zdrojov (naprıklad obchodny regis-
ter, zivnostensky register, Statisticky urad, Ministerstvo spravodlivosti, centralny regis-
ter zmluv) v roznych formatoch (html, pdf, xls), parsovanım extrahujeme strukturovane
udaje do vhodneho formatu (relacna databaza). Nasledne vyvinieme metodu zalozenu na
strojovom ucenı pre vycistenie tychto udajov od preklepov a d’alsıch nejednoznacnostı
(rozne tituly, zmena adresy). Metodu overıme porovnanım s baseline algoritmom a rucne
oznacenymi datami.
Verıme, ze vysledok nasej prace aspon v malej miere pomoze organizaciam ako Aliancia
Fair-play alebo Transparency International v usilı o zvysenie transparentnosti na Sloven-
sku.
Annotation
Slovak University of Technology Bratislava
FACULTY OF INFORMATICS AND INFORMATION TECHNOLOGIES
Degree Course: Informatics
Author: Martin Liptak
Bachelor Thesis: Automated public data refining
Supervisor: Ing. Jan Suchal
May 2012
Many government institutions are legally obliged to share some data on the web. While
various registers and bulletins are essential for proper business communication, another
data enables public oversight over our government. Although this data is publicly avai-
lable on the Internet, its format and structure is often unsuitable for machine processing.
Our goal is to refine this data to make further processing possible. After downloading raw
data from various public web sources (Business Register, The Trade Register, Statistical
Office, Ministry of Justice, Central register of contracts, etc.) in different formats (html,
pdf, xls), we extract structured data using parsing into a common format (relational data-
base). Then we develop a machine learning-based method for cleaning off typos and other
disambiguities (varying academic degrees, change of address). We evaluate our method
using both baseline algorithm and manually labeled data.
We believe, that results of our work help at least in a small extent organizations like Fair
Play Alliance or Transparency International in their effort to increase transparency in
Slovakia.
Tuto pracu venujem vsetkym, ktorı sa usiluju o zlepsenie transparentnosti statnych
instituciı na Slovensku.
i
ii
Obsah
Uvod 1
1 Zdroje verejnych dat 3
1.1 Statisticky register organizaciı . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Obchodny register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Zivnostensky register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Obchodny vestnık . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Centralny register zmluv . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 eGovZmluvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Grantovy system Ministerstva kultury SR . . . . . . . . . . . . . . . . . . 6
1.8 Vestnık verejneho obstaravania . . . . . . . . . . . . . . . . . . . . . . . . 6
1.9 Centralny register dokumentov verejneho
obstaravania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10 Ustredny portal verejnej spravy . . . . . . . . . . . . . . . . . . . . . . . . 7
1.11 Registre a evidencie Ministerstva vnutra . . . . . . . . . . . . . . . . . . . 7
1.12 Zoznamy dlznıkov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.13 Slovenska obchodna inspekcia . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.14 Kataster SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.15 Slovensky pozemkovy fond . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.16 SK-NIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.17 Narodna rada Slovenskej republiky . . . . . . . . . . . . . . . . . . . . . . 9
2 Analyza sucasnych aplikaciı 11
2.1 Aliancia Fair-play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1 Datanest.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Znasichdani.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.3 Datanest na mape . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.4 Politikaopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.5 Poslanecke kancelarie . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Transparency International . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1 Tender.sme.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
iii
2.2.2 Otvorena samosprava . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3 Statna podpora kultury a sportu . . . . . . . . . . . . . . . . . . . 13
2.3 Opendata.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Dalsie projekty na Slovensku . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 Foaf.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Itlis.eu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Vizualny obchodny register . . . . . . . . . . . . . . . . . . . . . . 15
2.4.4 Otvorenezmluvy.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.5 Dotankoch.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.6 Naseobce.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.7 Statistiky-domen.sk . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.8 Odkazprestarostu.sk . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Dalsie projekty v zahranicı . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Sunlight Foundation . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 MySociety.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.3 Scraperwiki.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.4 Google Refine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Analyza sucasnych prıstupov 19
3.1 Normalizacia kl’ucov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Podobnost’ kl’ucov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1 Jaccardov koeficient podobnosti . . . . . . . . . . . . . . . . . . . . 21
3.2.2 Podobnost’ slov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.3 Podobnost’ N-gramov . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.4 Levenshteinova vzdialenost’ . . . . . . . . . . . . . . . . . . . . . . . 22
3.2.5 Damerau-Levenshteinova vzdialenost’ . . . . . . . . . . . . . . . . . 23
3.2.6 Hammingova vzdialenost’ . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.7 Jaro vzdialenost’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.8 Jaro-winkler vzdialenost’ . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.9 PPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.10 Soundex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Vzt’ahy medzi entitami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 Blokove metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 Strojove ucenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.6 Integracne systemy dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Fuzzy databazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 St’ahovanie dat 29
4.1 St’ahovacı framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.1 Navrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
iv
4.1.2 Implementacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Zivnostensky register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3 Obchodny vestnık . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 SK-NIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.5 Grantovy system Ministerstva kultury . . . . . . . . . . . . . . . . . . . . 36
4.6 Registre a evidencie Ministerstva vnutra . . . . . . . . . . . . . . . . . . . 37
4.7 Zhodnotenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5 Cistenie dat 41
5.1 Vyhodnocovacı framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.1.1 Navrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.2 Implementacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Experiment 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.2 Vzorka dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.3 Vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2.4 Vysledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Experiment 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.2 Vzorka dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.3 Vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.4 Vysledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Zhodnotenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Zaver 57
Literatura 58
A Prıspevok na IIT.SRC 63
B Poster na IIT.SRC 71
C Ocenenie IIT.SRC 75
D Technicka dokumentacia 79
D.1 Instalacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
D.2 St’ahovanie dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
D.3 Pridanie st’ahovaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
D.3.1 Testy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
D.4 Pomocne API pre st’ahovace . . . . . . . . . . . . . . . . . . . . . . . . . . 82
D.4.1 Modul Datafine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
v
D.4.2 Modul Datafine::Jobs::Download . . . . . . . . . . . . . . . . . . . 83
E Obsah CD 85
vi
Zoznam obrazkov
2.2.1 Prehl’ad dodavatel’ov pre statnu spravu za rok 2011 . . . . . . . . . . . . . 13
2.4.1 Podrobnosti osoby JUDr. Robert Kalinak . . . . . . . . . . . . . . . . . . . 14
2.4.2 Podrobnosti o hlasovania poslanca Jana Slotu . . . . . . . . . . . . . . . . 16
2.4.3 Rozdelenie firiem podl’a castı Slovenska . . . . . . . . . . . . . . . . . . . . 17
2.4.4 Pocet domen podl’a registratora . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.5 Podnet pre samospravu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1 Architektura st’ahovania dat . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.2 Diagram tried modulu Ives . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.1 Diagram tried vyhodnocovacieho frameworku . . . . . . . . . . . . . . . . . 42
5.1.2 Diagram tried modelov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2.1 Krivka ucenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Krivka ucenia logistickej regresie . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.2 Krivka ucenia SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
vii
viii
Uvod
Mnohe statne institucie maju zakonnu povinnost’ zverejnovat’ najdolezitejsie udaje v suvislosti
so svojou cinnost’ou. Niektore udaje su dolezite pre spravne fungovanie spolocnosti, naprıklad
udaje o firmach, zivnostnıkoch, organizaciach, dlznıkoch alebo verejne obstaravania. Tieto
udaje su zo svojej podstaty verejne a dostupne vsetkym. Dalsie udaje su nevyhnutne pre
kontrolu statnych instituciı verejnost’ou, naprıklad povinne zverejnovane zmluvy.
Zakon vsak malokedy upravuje formu zverejnenie tychto dat. Tieto rozhodnutia boli
ponechane v rukach prıslusneho uradu alebo realizatora informacneho systemu, ktory sa
stara o zverejnovanie. Niekedy je forma dokonca zamerne nevhodna pre strojove spraco-
vanie - naprıklad zmluvy zverejnene ako naskenovane obrazky so zaciernenou cenou alebo
identifikaciou stran. Spracovanie takychto dat je vyrazne obmedzene. Ostatne formy dat
sa s mensou alebo vacsou namahou stiahnut’ a spracovat’ daju.
Vel’akrat aj ked’ je forma zverejnenia dat pre automatizovane spracovanie prijatel’na,
samotne data obsahuju preklepy a nejednoznacnosti, ktore je potrebne nejakym sposobom
riesit’. Naprıklad firma moze zmenit’ meno a nie je jasne, ci ide o rovnaky subjekt alebo
niekto moze mat’ preklep v mene a nie je jasne, ci ide o tu istu osobu. Hlavnym ciel’om
tejto prace je navrh a overenie metod pre odstranovanie nejednoznacnostı a preklepov vo
verejnych datach a ich nasledna lepsia integracia.
1
2
Kapitola 1
Zdroje verejnych dat
V tejto kapitole spozname vybrane webove zdroje verejnych dat, prıpadne zhodnotıme
vhodnost’ formy zverejnenia pre d’alsie automaticke spracovanie.
Tieto zdroje su poskytovane statnymi instituciami. Mnohe su nevyhnutne pre spravne
fungovanie statu (naprıklad firmy mozu zist’ovat’ ci firma, v ktorej maju ulozene pohl’adavky,
je v konkurze). Dalsie zverejnene udaje su dolezite pre kontrolu statnych instituciı (po-
vinne zverejnovane zmluvy).
Tiez by som chcel vyzdvihnut’ sucasnu snahu vlady o zvysenie transparentnosti na Slo-
vensku. Bola zalozena Iniciatıva pre otvorene vladnutie a tiez bol v diskusii s verejnost’ou
vytvoreny Akcny plan Iniciatıvy pre otvorene vladnutie [32]. Vysledky uz su viditel’ne
a obcas na ne upozornım, aby som ukazal, ze sa veci pomaly zlepsuju.
1.1 Statisticky register organizaciı
Statisticky register organizaciı obsahuje udaje o vsetkych registrovanych organizaciach
(firmy, obcianske zdruzenia, neziskove organizacie, politicke strany, ...) a podnikatel’skych
subjektoch (naprıklad zivnostnıci) v SR. Prevadzkovatel’om registra je Statisticky urad
Slovenskej republiky. Zaznamy maju len informatıvny charakter a je prvotne urceny pre
ucely statnej statistiky. Register poskytuje
• ICO
• obchodne meno
• pravnu formu
• datum vzniku
• datum zaniku
• adresu sıdla
3
• statisticke cıselnıky ako predmet podnikania alebo vel’kost’ organizacie
Pre nas ide o najspol’ahlivejsı zdroj zakladnych informaciı o organizaciach a podnika-
tel’skych subjektoch. Ak sa o nejakej organizacii potrebujeme dozvediet’ viac, treba vyuzit’
obchodny register, zivnostensky register alebo registre a evidencie ministerstva vnutra.
http://www.statistics.sk/pls/wregis/dotaz
1.2 Obchodny register
Do obchodneho registra sa zapisuju spolocnosti, druzstva a ine pravnicke osoby, o ktorych
to ustanovuje prıslusny zakon. Fyzicke osoby (napr. zivnostnıci) mozu byt’ do obchodneho
registra zapısane na vlastnu ziadost’ (preto sa v obchodnom registri vacsinou nenachadzaju).
Vypis z obchodneho registra obsahuje
• meno spolocnosti
• ICO
• pravnu formu
• predmety podnikania
• udaje o spolocnıkoch a ich vkladoch
• udaje o organoch spolocnosti (konatelia, dozorna rada, ...).
Vypis moze byt’ uplny alebo aktualny. Uplny vypis obsahuje aj udaje z minulosti, ktore
dnes nemusia platit’. Na obchodnom registri su najzaujımavejsie udaje o spolocnıkoch
a organoch spolocnosti, ked’ze odhal’uju prepojenia medzi l’ud’mi a firmami.
http://www.orsr.sk
1.3 Zivnostensky register
Zivnostensky register obsahuje informacie o podnikatel’skych subjektoch (firmy a zivnostnıci).
K zakladnym udajom ako ICO, obchodne meno a sıdlo, ktore sa daju najst’ aj v statistickom
registri organizaciı, pridava
• meno a adresu statutarneho organu subjektu
• predmety podnikania
• adresy prevadzkarnı pre jednotlive predmety podnikania
Tieto udaje nie su pre nas az tak zaujımave a aj kvoli problemovemu st’ahovaniu (ktoremu
sa budeme venovat’ v casti St’ahovanie dat) s nimi d’alej nepracujeme.
http://www.zrsr.sk/
4
1.4 Obchodny vestnık
Obchodny vestnık je zabezpecovany Ministerstvom spravodlivosti SR. Vo forme PDF su
pravidelne zverejnovane nestrukturovane textove informacie o
• novych zapisoch v obchodnom registri
• konkurzoch
• vyrovnaniach
• drazbach
• a d’alsie oznamenia
Parser pre obchodny vestnık, ktory som vytvoril v juni 2011, pracoval s PDF, kde zakladne
udaje parsoval z registra na konci dokumentu a spracovanie d’alsıch udajov bolo na hra-
nici s extrakciou udajov z vol’neho textu. Zaciatkom roku 2012 bol register prıstupny
priamo na stranke vo formate HTML a jednotlive zaznamy v PDF vestnıku boli doplnene
tabul’kami s”metainformaciami”, takze uz nebolo potrebne prechadzat’ cely text. Minis-
terstvo spravodlivosti je v sucasnosti prıkladom institucie so snahou o zvysenie transpa-
rentnosti a ul’ahcenie prıstupu k informaciam.
https://portal.justice.sk/PortalApp/ObchodnyVestnik/Web/Zoznam.aspx
1.5 Centralny register zmluv
V centralnom registri zmluv (CRZ) su zverejnene zmluvy, ktore uzatvorili povinne osoby
ministerstvo, ostatny ustredny organ statnej spravy, verejnopravna institucia a nimi
zriadena rozpoctova organizacia alebo prıspevkova organizacia). Zmluvy sa daju stia-
hnut’ vo formate PDF a k vacsine su priamo na stranke ponuknute “metainformacie”
ako dodavatel’, objednavatel’ a cena (netreba ich parsovat’ z PDF, co by vzhl’adom na
nestrukturovany textovy charakter PDF dokumentov nebolo jednoduche). Prevadzkovatel’om
CRZ je Urad vlady SR. CRZ zverejnuje zmluvy od 1.1.2011 a je vysledkom snahy o zvysenie
transparentnosti vlady.
http://www.crz.gov.sk
1.6 eGovZmluvy
eGovZmluvy je komercne riesenie, ktore vzniklo este pred CRZ. Umoznuje samospravam,
skolam a prıpadne inym statnym instituciam povinne zverejnovanie dokumentov. Zmluvy
su tiez oznacene”metainformaciamo” ako predmet, objednavatel’, dodavatel’ alebo cena.
Vysledky vyhl’adavanie je mozne stiahnut’ vo formate CSV, co umoznuje lepsı prıstup
5
k st’ahovaniu a aktualizacii udajov.
http://zmluvy.egov.sk
1.7 Grantovy system Ministerstva kultury SR
Ministerstvo kultury zverejnuje ziadosti o kulturne dotacie. Pri kazdej ziadosti zverejnı
udaje o
• ziadatel’ovi (meno, adresa, ICO)
• projekte (nazov, popis)
• pozadovanej dotacii
• schvalenej dotacii
Schvalena dotacia moze byt’ nizsia ako pozadovana alebo nemusı byt’ ziadna v prıpade
odmietnutia projektu. Casto je pozadovana dotacia nevyplnena alebo 0, pricom nie je
jasne, ako tento udaj interpretovat’. Dotacie su zverejnovane od roku 2007.
http://registerkultury.gov.sk/granty2011
1.8 Vestnık verejneho obstaravania
Vestnık verejneho obstaravania vychadza pravidelne raz za 2 - 4 dni a obsahuje oznamenia
o
• vyhlasenı verejneho obstaravania
• vysledku verejneho obstaravania
• zrusenı verejneho obstaravania
• a d’alsie oznamenia.
Je v posobnosti Uradu pre verejne obstaravanie. Vsetky data su na rozdiel od obchodneho
vestnıka vo formate HTML. Vyzvy je okrem toho mozne stiahnut’ aj vo formate XML, kde
sa okrem vnoreneho HTML s celym oznamenım nachadzaju aj niektore”metainformacie”
ako miesto uskutocnenia alebo obstaravatel’.
http://e-vestnik.sk
6
1.9 Centralny register dokumentov verejneho
obstaravania
Urad pre verejne obstaravanie v zaujme zvysenia transparentnosti vytvoril centralny re-
gister verejneho obstaravania. Pri obstaravaniach su zverejnene aj firmy, ktore sa o dane
obstaravanie zaujımali. Udaje su strukturovane a daju sa stiahnut’.
http://crdvo.uvo.gov.sk
1.10 Ustredny portal verejnej spravy
Ciel’om ustredneho portalu verejnej spravy pre pouzıvatel’a je integrovat’ informacie, ktore
by inak boli roztrusene po weboch jednotlivych rezortov a statnych instituciı. Zamerom
portalu je nasmerovanie pouzıvatel’a na pouzitie konkretnej elektronickej sluzby verejnej
spravy, kde najde informacie, ktore hl’ada. Pre nas je zaujımavy zoznam obcı s
• menom
• adresou obecneho alebo mestskeho uradu
• menom starostu alebo primatora
• popisom
• erbom
a statnych instituciı SR s
• nazvom
• adresou
• kontaktom (telefon, e-mail)
http://portal.gov.sk
1.11 Registre a evidencie Ministerstva vnutra
Ministerstvo vnutra SR poskytuje registre
• obcianskych zdruzenı
• zdruzenı obcı
• neziskovych organizaciı
7
• nadaciı
• politickych stran
• a d’alsıch organizaciı
Je mozne zobrazit’ zoznam vsetkych organizaciı danej kategorie alebo v nom vyhl’adavat’.
Udaje o organizaciach su zobrazene vo forme vypisu, ktoreho struktura sa mierne lısi
v zavislosti od kategorie. Niektore kategorie ponukaju aj uplny vypis podobne ako v ob-
chodnom registri. Vypisy obsahuju udaje ako
• nazov organizacie
• sıdlo
• datum vzniku
• datum zaniku alebo zrusenia
• zakladatelia organizacie (meno a adresa)
• osoby opravnene konat’ v mene organizacie (meno a adresa)
• oblasti cinnosti
Registre a evidencie MV SR su vel’mi spol’ahlivym zdrojom pre zist’ovanie udajov o vyssie
vymenovanych druhoch organizaciı. Zverejnenie mien a adries osob s urcitou formou ucasti
v organizacii umoznuje zist’ovanie prepojenı medzi l’ud’mi a organizaciami podobne ako
v obchodnom registri.
http://portal.ives.sk/registre/
1.12 Zoznamy dlznıkov
Socialna poist’ovna a zdravotne poist’ovne (VSZP, Dovera, Union) zverejnuju raz mesacne
zoznamy dlznıkov. Danove riaditel’stvo zverejnuje rocne dlznıkov, danove ul’avy a odpus-
tene dane.
1.13 Slovenska obchodna inspekcia
Slovenska obchodna inspekcia pravidelne zverejnuje rozhodnutia (naprıklad o udelenı po-
kuty) pre zabezpecenie ochrany spotrebitel’a na vnutornom trhu SR.
http://www.soi.sk
8
1.14 Kataster SR
Katastralny portal umoznuje prıstup k udajom katastra nehnutel’nostı. Bohuzial’ kvoli
viacerym prekazkam su udaje asi nestiahnutel’ne.
https://www.katasterportal.sk
1.15 Slovensky pozemkovy fond
Zmluvy zverejnovane slovenskym pozemkovym fondom su casto vo forme naskenovanych
PDF so zaciernenymi sumami. Kvoli tymto prekazkam su udaje bohuzial’ takmer nestia-
hnutel’ne.
http://www.pozfond.sk/zverejnenie zmluv/zmluva hladaj.aspx
1.16 SK-NIC
Firma SK-NIC, a.s. zastresuje slovensku narodnu domenu (top level domain). Kazdy den
zverejnuje aktualny zoznam domen v DNS zone spolu s ich
• registratorom
• drzitel’om
• stavom
• datumom platnosti stavu
• nazvami domenovych serverov
Registratori domeny su organizacie, ktore maju prıstup do systemu SK-NIC a mozu elek-
tronicky zaregistrovat’ domenu. Drzitelia su osoby alebo organizacie, ktore registraciou svo-
jich domen poveria registratora, ale maju pravne zarucene vlastnıctvo domeny. Drzitelia
a registratori maju svoje SK-NIC ID. Domena moze byt’ v roznych stavoch v zavislosti
od stadia registracie alebo zaplatenia rocneho poplatku. Domena po vyprsanı uz nie je
v DNS zone, ale este mesiac stale nie je vol’na (nie je mozne ju zaregistrovat’).
http://www.sk-nic.sk
1.17 Narodna rada Slovenskej republiky
Narodna rada Slovenskej republiky (NRSR) na svojom webe zverejnuje udaje o
• cinnosti parlamentu
• poslancoch
9
• kancelariach
• asistentoch
• ucasti poslancov na schodzach.
Tiez su zverejnovane prepisy rozprav v parlamente. Zverejnovanie takychto udajov je
nevyhnutne pre cinnost’ demokracie v kazdom state.
http://www.nrsr.sk
10
Kapitola 2
Analyza sucasnych aplikaciı
V tejto kapitole rozoberieme vybrane existujuce riesenia aplikaciı vyuzıvajuce verejne data
na Slovensku alebo v zahranicı. Spomeniem aj niekol’ko aplikaciı, ktore data zverejnene
statnymi instituciami sıce nevyuzıvaju, ale zbieraju data od obcanov a su nevyhnut-
nou sucast’ou otvoreneho vladnutia (open government). Napısem nieco aj o organizaciach
Aliancia Fair-play a Transparency International, pretoze zastresuju vel’a takychto projek-
tov.
2.1 Aliancia Fair-play
Aliancia Fair-play je obcianske zdruzenie, ktoreho ciel’om je poukazovat’ na necestne
spravanie sa politikov a navrhovanie riesenı, ako vniest’ do verejneho zivota viac slusnosti
a poctivosti. Zakladom ich cinnosti je skumanie a hl’adanie podozrivych vecı vo verejnych
datach, na ktore nasledne prostrednıctvom mediı upozornuju verejnost’. Maju pod sebou
viac webovych stranok, kde prezentuju svoje vysledky alebo umoznuju ostatnym zapojit’
sa do samotneho skumania dat. Aliancia kazdorocne organizuje Hack Day, ktoreho ciel’om
je vytvorit’ aplikacie pre podporu otvoreneho vladnutia na Slovensku.
http://fair-play.sk
2.1.1 Datanest.sk
Datanest Aliancie Fair-play umoznuje prezerat’ data pozbierane z viacerych verejnych
zdrojov. Data su zobrazene v prehl’adnych tabul’kach, pouzıvatel’ moze zorad’ovat’ podl’a
roznych kriteriı, vyhl’adavat’ a pridavat’ komentare (ak najde nieco zaujımave). Data je
mozne stiahnut’ vo formate CSV. Datanest poskytuje API pre pouzitie v d’alsıch ap-
likaciach, ktore by chceli pracovat’ s verejnymi datami.
http://datanest.fair-play.sk
11
2.1.2 Znasichdani.sk
Znasichdani.sk je aplikacia postavena na Datanest API. Stranka po zadanı mena osoby
najde firmy, v ktorych dana osoba figuruje a zobrazı prehl’ad zakaziek tychto firiem na
verejnych obstaravaniach. Aplikacia zıskala v roku 2011 prve miesto v celoeuropskej sut’azi
Open Data Challenge.
http://znasichdani.sk/
2.1.3 Datanest na mape
Datanest na mape je d’alsım projektom postavenym na datach z Datanestu. Ciel’om
stranky je vizualizovat’ data o statnych instituciach a podnikoch alebo firmach s dlhom
na mape a poskytnut’ obcanom informacie, co sa nachadza a deje v ich okolı. Obcan ma
lepsı prehl’ad o lokalnych zalezitostiach vo svojom okolı.
http://mmm.ii.fmph.uniba.sk/afp/
2.1.4 Politikaopen
Zamerom projektu Politikaopen je odhalit’ vsetko podstatne o majetku, zavazkoch a vazbach
politika do takej hlbky, aby mohol obcan politika ucinne kontrolovat’. Udaje pridavaju
politici sami, cım davaju najavo, ze hraju otvorenu a ferovu hru. Aliancia Fair-play sa
nestara o kontrolu udajov zadanych politikom, je na obcanovi, aby si na zaklade pravdi-
vosti a uplnosti udajov urobil o politikovi obraz.
http://www.politikaopen.sk/
2.1.5 Poslanecke kancelarie
Projekt monitoruje pocty a umiestnenie kancelariı poslancov Narodnej rady SR. Stranka
zobrazuje prehl’adne statistiky a grafy. Data su st’ahovane zo stranky NRSR.
http://kancelarie.fair-play.sk/index.php
2.2 Transparency International
Transparency International je neziskova organizacia, ktora funguje v priblizne 90 krajinach
sveta. Jej ciel’om je boj s korupciou zvysenım transparentnosti a znızenım byrokracie.
http://www.transparency.sk/
2.2.1 Tender.sme.sk
Ciel’om projektu je zvysenie transparentnosti vo verejnych obstaravaniach sprıstupnenım
a sprehl’adnenım dat zıskanych z vestnıka verejneho obstaravania. Okrem skumania jed-
12
notlivych zmluv stranka ponuka prehl’adne statistiky obstaravatel’ov a objednavatel’ov
a vel’a zaujımavych grafov (obrazok 2.2.1). Povodne islo o projekt Transparency Interna-
tional, teraz projekt funguje aj pod zastitou portalu sme.sk.
http://tender.sme.sk
Obr. 2.2.1: Prehl’ad dodavatel’ov pre statnu spravu za rok 2011
2.2.2 Otvorena samosprava
Ciel’om projektu Otvorena samosprava je hodnotenie otvorenosti a transparentnosti sa-
mosprav. Stranka projektu ukazuje hodnotenia jednotlivych subjektov, zobrazuje rebrıcky
a umoznuje porovnat’ vybrane samospravy. Projekt okrem samosprav takisto hodnotı
vyssie uzemne celky.
http://samosprava.transparency.sk/
2.2.3 Statna podpora kultury a sportu
Projekt sa usiluje o zvysenie transparentnosti v kulture a sporte. Data su zozbierane
z viacerych verejnych zdrojov (medzi nimi aj Grantovy system MK SR) a zobrazene
v prehl’adnej forme tabuliek a grafov s moznost’ou pridavania komentarov od pouzıvatel’ov.
http://granty.transparency.sk
2.3 Opendata.sk
Opendata je skupina l’udı, ktorej ciel’om je otvorena verejna sprava. Ich planom je za-
definovat’ formaty a open-source technologiu, aby institucie mohli efektıvne poskytovat’
data. Data budu d’alej ponuknute verejnosti alebo tretım stranam, ktore mozu na nich
postavit’ aplikacie. Pri uvahach o sposobe poskytovania dat okrem beznej formy tabuliek
a zaznamov (ako naprıklad Datanest) rozmysl’aju naprıklad aj nad ontologiami. Projekt
13
je v stadiu navrhu a vyberu technologiı.
http://opendata.sk
2.4 Dalsie projekty na Slovensku
2.4.1 Foaf.sk
Foaf.sk je socialna siet’ slovenskych firiem a podnikatel’ov. Je ich mozne prehl’adavat’ po-
hodlnejsie ako na stranke obchodneho registra (obrazok 2.4.1) a objavovat’ vzt’ahy medzi
nimi (zist’ovat’ ktore firmy a osoby maju k sebe blızko). Udaje pochadzaju z obchodneho
registra SR, danoveho uradu SR, vseobecnej zdravotnej poist’ovne a vestnıka verejneho
obstaravania.
Nazov FOAF pochadza z anglickeho akronymu Friend of a Friend a odkazuje na fe-
nomen sietı maleho sveta. Siet’ vzt’ahov medzi firmami podobne ako ine siete v skutocnom
svete (vzt’ahy medzi l’ud’mi, vedecke citacie, www) vykazuje vlastnosti siete maleho sveta.
Naprıklad vel’mi casto su rovnakı l’udia spolu vo viacerych firmach - vytvaraju sa zhluky.
[1]
http://foaf.sk
Obr. 2.4.1: Podrobnosti osoby JUDr. Robert Kalinak
14
2.4.2 Itlis.eu
Projekt itlis.eu st’ahuje informacie z orsr.sk a analyzuje prepojenia medzi osobami a orga-
nizaciami. Vyhl’adavanie okrem mien reaguje aj na adresy subjektov. Stranka umoznuje
zobrazit’ prehl’adne grafy vzt’ahov osob s organizaciami a takisto vzt’ahov kontroly medzi
organizaciami. Projekt je o nieco mladsı ako foaf.sk a nie je zatial’ az tak znamy.
http://itlis.eu
2.4.3 Vizualny obchodny register
Vizualny obchodny register umoznuje interaktıvne prezerat’ vzt’ahy z Obchodneho registra
SR. Projekt funguje aj v Ceskej republike.
http://vorsr.sk
2.4.4 Otvorenezmluvy.sk
Otvorenezmluvy.sk je investigatıvny projekt Aliancie Fair-play a Transparency Internti-
onal Slovensko. Ciel’om projektu je pomoct’ obcanom posudit’ vyhodnost’ zmluv uzavretych
statom alebo statnymi instituciami umoznenım vyhl’adavania, hodnotenia a komentova-
nia zverejnenych zmluv. Zverejnene zmluvy su st’ahovane z centralneho registra zmluv
a portalu eGovZmluvy. Prostrednıctvom automatizovanych analyz je pouzıvatel’ upozor-
neny na zmluvy hodne preskumania (naprıklad zmluvy s vysokou cenou alebo formalnymi
chybami).
http://otvorenezmluvy.sk/
2.4.5 Dotankoch.sk
Projekt spracuva data zo stranky NRSR a zobrazuje statistiky a rebrıcky o dochadzke,
hlasovaniach a d’alsıch verejnych udajoch o poslancoch v parlamente (obrazok 2.4.2). Web
obsahuje aj prepisy rozprav v parlamente a umoznuje v nich vyhl’adavat’.
http://dotankoch.sk/
2.4.6 Naseobce.sk
Projekt cerpa informacie zo Statistickeho uradu SR a Ustredneho portalu verejnej spravy.
Zobrazuje vsetky dostupne informacie o obciach a mestach, trendy poctu obyvatel’ov
a poctu zalozenych firiem a informacie o firmach v danej lokalite (obrazok 2.4.3).
http://naseobce.sk/
15
Obr. 2.4.2: Podrobnosti o hlasovania poslanca Jana Slotu
2.4.7 Statistiky-domen.sk
Projekt denne st’ahuje data o slovenskych domenach a zobrazuje statistiky o nazve alebo
stave domeny. Kazdy den uklada pocty domen najvyznamnejsıch registratorov a zobrazuje
trendy od maja 2011 (obrazok 2.4.4) a predikcie (jednoducha linearna regresia trendov na
1 rok dopredu).
http://statistiky-domen.sk/
2.4.8 Odkazprestarostu.sk
Odkazprestarostu.sk nepracuje priamo s verejnymi datami. Stranka umoznuje pouzıvatel’om
zadavat’ podnety na problemy vo svojom okolı, ktorymi by sa mali prıslusne samospravy
zaoberat’. Podnety su prostrednıctvom stranky komunikovane so zodpovednymi zamest-
nancami samosprav a riesenie je pod dohl’adom navstevnıkov stranky (obrazok 2.4.5).
http://www.odkazprestarostu.sk/
16
Obr. 2.4.3: Rozdelenie firiem podl’a castı Slovenska
Obr. 2.4.4: Pocet domen podl’a registratora
Obr. 2.4.5: Podnet pre samospravu
17
2.5 Dalsie projekty v zahranicı
USA a Vel’ka Britania ponukaju centralizovane portaly s vladnymi datami. Existuje vel’a
riesenı, ktore tieto data vyuzıvaju alebo podporuju otvorene vladnutie (open government),
co je celosvetovy trend zvysovanie transparentnosti a vacsieho zapajanie obcanov do fun-
govania vladnych instituciı. Verejne data su tiez vyuzıvane na ekonomicke a sociologicke
vyskumy [38].
2.5.1 Sunlight Foundation
Organizacia Sunlight Foundation je neziskova organizacia, ktorej zamerom je vyuzıvat’
silu Internetu pre podporu procesov zvysovania transparentnosti. Toto poslanie realizuju
rozdel’ovanım financnych prostriedkov zıskanych od darcov naprıklad na webove projekty
sprıstupnujuce verejne data alebo prednasky o otvorenej vlade.
http://sunlightfoundation.com/about/
2.5.2 MySociety.org
Spolocnost’ MySociety zastresuje viac projektov, ktore nepracuju priamo s verejnymi
datami, ale poskytuju obcanom lepsie moznost’ komunikacie so samospravami, vladnymi
instituciami alebo volenymi zastupcami parlamente. Projekty funguju vo Vel’kej Britanii,
ale podobne zamerane projekty existuju aj v inych krajinach. Naprıklad u nas funguje
vyssie spomenuty Odkazprestarostu.sk (cast’ 2.4.8).
http://mysociety.org
2.5.3 Scraperwiki.com
Scraperwiki je nastroj, ktory chce sprıstupnit’ data roztrusene po celom webe v roznych
formatoch na jednom mieste a v jednotnom formate. Dobrovol’ne sa zapojenı vyvojari
vytvaraju na stranke scrapery (parsery) pre rozne zdroje verejnych dat. Ziadatelia mozu
tieto data priamo pouzıvat’ alebo poziadat’ o vytvorenie scrapera pre d’alsı zdroj.
http://scraperwiki.com
2.5.4 Google Refine
Nastroj Google Refine zjednodusuje pracu l’ud’om, ktorı sa snazia manualne integrovat’
data. S datami pracuje na urovni tabuliek. Umoznuje jednoduchu normalizaciu hodnot
v stlpcoch, ale pozna aj zlozitejsie metriky ako N-gramy alebo Levenshteinova vzdialenost’.
Zaznamy su nasledne zhlukovane, cım sa odstrania z tabul’ky duplicity. Vykonane upravy
je mozne ulozit’ vo forme skriptu a d’alsie tabul’ky spracovat’ automaticky.
http://code.google.com/p/google-refine/
18
Kapitola 3
Analyza sucasnych prıstupov
Vacsina aplikaciı z predchadzajucej kapitoly si musı poradit’ s problemom nespol’ahlivosti
(preklepov a nejednoznacnostı) vo verejnych datach. Data mozu byt’ jednoducho stiahnu-
tel’ne a strukturovane, ale stale mozu byt’ nespol’ahlive. Data je potrebne vycistit’ od pre-
klepov a nejednoznacnostı hlavne kvoli ich d’alsej integracii. Problem integracie dat okrem
statnych instituciı (tu sa stava, ze data su nespol’ahlive zamerne) existuje aj v sukromnych
spolocnostiach, kde sa pracuje s vel’kymi databazami (naprıklad zakaznıkov).
Integracia dat vyzaduje spravne spojenie dat z roznych zdrojov na zaklade urciteho
kl’uca (v nasom prıpade moze ıst’ o ICO firmy alebo meno osoby). V kl’uci moze byt’
preklep alebo v roznych zdrojoch moze byt’ kl’uc zapısany inak (meno s titulom alebo bez
titulu,”Meno Priezvisko” alebo
”Priezvisko, Meno”). Metody riesenia tohto problemu
su postavene na normalizacii kl’ucov a porovnavanı podobnosti ret’azcov (kl’ucov) ako N-
gramova alebo Levenshteinova vzdialenost’. Dalsım problemom integracie dat su duplicity
a nejednoznacne data z roznych zdrojov, kedy treba rozhodnut’, ktore data su vhodnejsie
(aktualnejsie) na pouzitie. Tu sa pouzıvaju heuristiky zalozene na relaciach.
Potreba integracia dat je asi tak stara ako samotne data. I. Fellegi a A. Sunter v clanku
Record Linkage (1969) polozili teoreticky ramec pre vypoctove riesenie problemu ro-
zoznavanie zaznamov v dvoch suboroch, ktore reprezentuju jednu osobu, objekt alebo
udalost’ [14]. Novsım prehl’adom sucasneho stavu integracie dat alebo spajania zaznamov
je praca W.Winklera [47]. Gu a kolektıv tiez ponukaju prehl’ad sucasneho stavu spajania
zaznamov (alebo integracie dat). Rozoberaju metody a ako ich vyhodnocovat’. Pridavaju
prehl’ad sucasneho softveru pre integrovanie databaz a naznacuju eticke a pravne problemy
s integraciou dat [18].
V tejto kapitole preberieme existujuce bezne pouzıvane metody integracie dat. Zoznamime
sa aj s niekol’kymi novymi komplikovanejsımi metodami, ktore mozu mat’ v mnohych
prıpadoch lepsie vysledky.
19
3.1 Normalizacia kl’ucov
Pred pouzitım zlozitejsıch metod je vhodne porovnavane kl’uce urcitymi metodami norma-
lizovat’ (alebo predspracovat’). Vel’akrat po normalizacii stacı na integraciu dat obycajna
zhodnost’ ret’azcov (mozeme vykonat’ JOIN v prıpade, ak ide o datach v relacnej databaze).
V prıpade, ze pouzitım konkretnej metody normalizacie neznızime hodnotu dat pre d’alsie
spracovanie, je vhodne normalizaciu vykonat’ uz parserom pred ulozenım zaznamu do da-
tabazy. Naprıklad pri parsovanı ICO si vsimneme, ze niektore cıslice su v niektorych
zaznamoch oddelene medzerami. Medzery odstranime, hodnota zaznamu pre d’alsie spra-
covanie sa nijakym sposobom nezmenı a d’alej na spajanie podl’a daneho pol’a stacı pouzit’
obycajny JOIN. Najskor niekol’ko zakladnych metod:
• zmena vel’kosti vsetkych pısmen na male
• odstranenie bielych znakov na zaciatku a konci ret’azca
• nahradenie viacerych bielych znakov za sebou jednou medzerou
• odstranenie interpunkcie a riadiacich znakov
• nahradenie znakov s diakritikou prıslusnymi znakmi bez diakritiky
Vyber konkretnych metod zavisı od spracovavanej databazy. Za normalizaciu mozeme
povazovat’ aj nasledujuce prıklady:
• Ak normalizujeme pole s adresou bydliska, preusporiadame jednotlive casti, aby
bola kazda z porovnavanych adries v jednotnom formate.
• Ak normalizujeme pole s adresou bydliska, rozbijeme casti adresy do samostatnych
polı. Neskor mozeme pri porovnavanı roznym poliam nastavit’ rozne vahy. Naprıklad
ak sa v niektorych adresach nachadza navyse mestska cast’, moze byt’ extrahovana
do samostatneho pol’a, ktore nebude pri porovnavanı zohl’adnene.
• Ak normalizujeme pole s menom, mozeme extrahovat’ akademicke tituly do samos-
tatneho pol’a. Neskor s nimi mozeme pracovat’ inym sposobom alebo ich nemusıme
vyuzit’ pri porovnavanı vobec.
3.2 Podobnost’ kl’ucov
Ak sa po normalizacii kl’ucov nachadzaju v datach preklepy alebo vymenene slova, obycajna
zhodnost’ ret’azcov nie je dostacujuca. Je potrebne pouzit’ niektoru z metrık porovnavania
ret’azcov. Problem sa casto nazyva aj fuzzy porovnavanie ret’azcov, pretoze vysledok nie
je logicka hodnota (ci su ret’azce zhodne alebo nie), ale miera ich podobnosti. Opakom po-
dobnosti ret’azcov je vzdialenost’ ret’azcov, ktora urcuje, do akej miery su ret’azce odlisne.
20
W. Cohen a kolektıv vytvorili toolkit pre porovnavanie mien, ktory ul’ahcı pracu exper-
tovi na konkretnu databazu. Toolkit ponuka metody ako Levenshteinova vzdialenost’, TF-
IDF, Jaro, Monge-Elkan, Jensen-Shannon a d’alsie. Metody boli otestovane na niekol’kych
datasetoch. Navrhnuty toolkit implementovali v Jave a bol zverejneny ako Open Source.[8]
V tejto casti sa sustredıme len na niektore zo spomınanych metod. Vybornym uvodom
do problematiky podobnosti ret’azcov su webove zdroje [16] a [34]. Niektore metody
spomına aj referat [17].
3.2.1 Jaccardov koeficient podobnosti
Pri zist’ovanı podobnosti ret’azcov budeme casto potrebovat’ zistit’ mieru podobnosti mnozın,
ktore boli danou metodou z ret’azca vygenerovane. Urcenie podobnosti mnozın nam umoznı
vzorec znamy ako Jaccardov koeficient podobnosti. Vysledok porovnania dvoch mnozın sa
vypocıta ako pomer poctu prvkov prieniku tychto mnozın a poctu prvkov ich zjednotenia
(vzorec 3.2.1). Jaccardov koeficient vychadza v intervale <0,1> podl’a podobnosti mnozın
(0 ak nemaju spolocne nic, 1 ak su rovnake).
J(A,B) =|A ∩B||A ∪B|
(3.2.1)
3.2.2 Podobnost’ slov
Metoda spocıva v rozdelenı ret’azca na jednotlive slova podl’a bielych znakov. Potom
sa slova zotriedia podl’a abecedy a odstrania sa duplikaty, cım zıskame mnoziny slov
porovnavanych ret’azcov. Vysledkom je Jaccardov koeficient podobnosti tychto mnozın.
Metoda je vhodna v prıpade porovnavania dat zlozenych z viacerych slov, kde problemom
su slova navyse v jednom zo zaznamov (moze ıst’ naprıklad o adresu, kde je navyse mestska
cast’ alebo supisne cıslo). Preklepy v slovach metoda neodhalı.
3.2.3 Podobnost’ N-gramov
Metoda je podobna metode podobnosti slov, ale ret’azce nie su rozdelene podl’a bielych
znakov, ale podl’a skupın N znakov. Ret’azec”martinus” sa pri 3-gramovom porovnavanı
rozdelı na”mar”,
”art”,
”rti”,
”tin”,
”inu” a
”nus”. Niekedy sa na zaciatok alebo ko-
niec ret’azca pridavaju medzery. Na vysledne mnoziny sa aplikuje Jaccardov koeficient
podobnosti.
Ak je N prılis vel’ke, metoda nema ziadnu vyhodu oproti tej predchadzajucej. Ak
ma N hodnotu 1 alebo 2, najdeme viac podobnych ret’azcov, ale tiez vel’a false positives
(uplne inych ret’azcov oznacenych za podobne, pretoze maju podobne zlozenie pısmen).
Najcastejsie pouzıvanou hodnotou N je 3.
21
Databazove systemy a vyhl’adavacie stroje ponukaju moznost’ vytvorenia indexu pre
N-gramy (PostgreSQL, elasticsearch). Nasledne fuzzy vyhl’adavanie pomocou N-gramov
je podstatne urychlene. Aj ked’ nepouzıvame databazu, vygenerovane mnoziny N-gramov
nie je zlozite ulozit’ spolu s datami a vyuzıvat’ ich neskor. Ak by vel’kost’ ulozenych mnozın
N-gramov prılis narastla (co sa pri porovnavanı dlhsıch ret’azcov urcite stane), mozeme
pouzit’ techniku minhashing. Minhashing dokaze tieto mnoziny zredukovat’ na mensı pocet
prvkov pri zachovanı podobneho alebo rovnakeho Jaccardovho koeficientu podobnosti.
Metoda na rozdiel od predchadzajucej odhalı preklepy v slovach a prave na tento ucel
sa najcastejsie pouzıva. [28]
3.2.4 Levenshteinova vzdialenost’
Metoda (tiez nazyvana vzdialenost’ uprav alebo edit distance) meria minimalny pocet
potrebnych uprav pre zmenu jedneho ret’azca na druhy. Upravami su vlozenie znaku
(insertion), nahradenie znaku (substitution) a vymazanie znaku (removal). Jednotlive
operacie mozu byt’ ohodnotene vahou podl’a vyznamu pre ciel’ovu oblast’ pouzitia.
Vypocet Levenshteinovej vzdialenosti vyuzıva princıpy dynamickeho programovania.
Postupnym vyplnenım matice s vzdialenost’ami vsetkych prefixov dvoch porovnavanych
ret’azcov zıskame v rohu matice vzdialenost’ tychto ret’azcov (tabul’ka 3.2.1). Inicializacia
a sposob vyplnania polı je opısany v zdroji [43]. Algoritmus je tiez dobre vysvetleny v on-
line kurze Natural Language Processing profesora Dan Jurafsky na Stanford University
[25].
S a t u r d a y0 1 2 3 4 5 6 7 8
S 1 0 1 2 3 4 5 6 7u 2 1 1 2 2 3 4 5 6n 3 2 2 2 3 3 4 5 6d 4 3 3 3 3 4 3 4 5a 5 4 3 4 4 4 4 3 4y 6 5 4 4 5 5 5 4 3
Tabul’ka 3.2.1: Prıklad matice vzdialenosti uprav (zo zdroja [43])
Moznost’ vytvorenia indexu pre Levenshteinovu vzdialenost’ je v databazovych systemoch
zriedkava, ponuka ju naprıklad vyhl’adavacı stroj Lucene [30]. Takisto postup pre rucne
vytvorenie indexu nie je taky trivialny ako pri N-gramoch. Daju sa pouzit’ naprıklad
Levenshteinove automaty [27, 24].
Vzdialenost’ uprav sa pouzıva pri cistenı dat alebo v systemoch kontroly pravopisu. Ok-
rem toho ma vyuzitie aj pri hl’adanı spolocnych sekvenciı DNA alebo skumanı podobnosti
jazykov v lingvistike [33].
22
3.2.5 Damerau-Levenshteinova vzdialenost’
Metoda pridava k Levenshteinovej vzdialenosti operaciu vymeny znakov (transposition),
ktora sa casto vyskytuje v preklepoch. Vymena znakov je ohodnotena len jednou upravou
namiesto vymazania a vlozenia. [40]
3.2.6 Hammingova vzdialenost’
Hammingova vzdialenost’ urcuje pocet pozıciı znakov, kde sa porovnavane ret’azce lısia.
Dala by sa oznacit’ za specialny prıpad Levenshteinovej vzdialenosti iba s jednou upravou
- substituciou. Metoda sa hodı na porovnavanie ret’azcov rovnakej dlzky, ale pre rozdielne
dlhych ret’azcoch su jej vysledky vel’mi nepresne. [41]
3.2.7 Jaro vzdialenost’
Jaro vzdialenost’ je vel’mi vhodna pre porovnavanie kratkych ret’azcov ako meno osoby.
Vyhodou metriky oproti Levenshteinovej vzdialenosti je, ze v porovnanı je zahrnuta aj
dlzka ret’azcov (zamena pısmena v kratsom slove je vyznamnejsia ako rovnaky preklep
v dlhsom slove). Vzorec 3.2.2 ukazuje vypocet Jaro vzdialenosti.
dj =1
3
(m
|s1|+
m
|s2|+
m− t
m
)(3.2.2)
• |s1| a |s2| su dlzky porovnavanych ret’azcov.
• m je pocet zhodnych znakov, ktorych vzdialenost’ v porovnavanych ret’azcoch je
najviac⌊max(|s1|,|s2|)
2
⌋− 1.
• t je pocet vymen znakov (transpositions).
Metrika ma sıce zauzıvany nazov vzdialenost’, ale vysledkom je podobnost’ porovnavanych
ret’azcov v intervale <0, 1>. [42]
3.2.8 Jaro-winkler vzdialenost’
Metoda Jaro-Winkler k Jaro pridava zvyhodnenie prvych znakov. To ma vel’ky vyznam
naprıklad pri porovnavanı mien, pretoze pravdepodobnost’ preklepu na prvych miestach
slova alebo v krstnom mene je nizsia ako v nasledujucich znakoch mena. Pri nespravne
nastavenych parametroch Jaro-Winkler, moze byt’ vysledok vacsı ako 1, ale spravidla je
vysledna hodnota v intervale <0, 1>. [42, 17]
23
3.2.9 PPM
Metoda PPM (Prediction by Partial Matching) vychadza z predpokladu, ze ked’ po-
rovnavane ret’azce A a B su podobne, kompresia A a kompresia A + B (spojenie ret’azcov
A a B) by mala mat’ priblizne rovnaky vysledok (idealne jeden bit na indikaciu redundant-
nej informacie). Na druhej strane pri odlisnych ret’azcoch A a B by vysledok kompresie
A + B mal byt’ podstatne dlhsı ako vysledok kompresie A. PPM je kompresnym algorit-
mom, ktory bol pouzity v Google Refine. [16]
3.2.10 Soundex
Algoritmus Soundex dokaze zakodovat’ slovo podl’a jeho vyslovnosti povodne v anglickom
jazyku. Kod je pre slova, ktore sa rovnako alebo podobne vyslovuju rovnaky. Pouzıva sa
na sparovanie zaznamov, ktore mozu byt’ syntakticky odlisne kvoli nespravnemu zapisu.
Variant D-M Soundex dokaze pracovat’ aj so slovanskymi jazykmi.[45]
3.3 Vzt’ahy medzi entitami
Pri integracii dat vacsinou nestacı porovnavanie dat iba z jednej tabul’ky. Je potrebne
zahrnut’ vsetky d’alsie relacie (vzt’ahy medzi entitami), ktore mame k dispozıcii. Naprıklad
pri zist’ovanı, ci dva zaznamy s rovnakym menom a odlisnymi adresami z databazy l’udı
a ich firiem reprezentuju prest’ahovanu osobu alebo dvoch menovcov, je jedinym sposobom
zahrnutie udajov z tabuliek firiem a vyskytov tychto l’udı vo firmach do porovnavania.
Mozno zistıme, ze obidva zaznamy figuruju v jednej firme, vtedy je pravdepodobne, ze
ide o jednu osobu, ktora zmenila miesto trvaleho bydliska.
Heuristiky zalozene na relaciach medzi entitami su zakladom cistenia dat na socialnej
sieti slovenskych firiem foaf.sk [35]. Duplicita mnohych entıt sa bez skumania vzt’ahov
medzi nimi iba na zaklade ich vlastnostı (podobnost’ alebo zhodnost’ atributov po norma-
lizacii) neda odhalit’.
D. Kalshnikov a S. Mehrotra ukazuju dolezitost’ zahrnutia relaciı. Na rozdiel od tradicneho
prıstupu, kedy sa pri rozlisovanı entıt pouzıvaju iba vlastnosti tychto entıt (moze ıst’
o zhodnost’ alebo podobnost’ vybranych atributov), navrhuju pouzitie vzt’ahov medzi en-
titami. Najskor pouziju prıstup zalozeny na vlastnostiach entıt pre rychly vyber kan-
didatov. Potom su pouzite techniky prace s grafmi na objavenie a analyzu vzt’ahov, ktore
existuju medzi tymito kandidatmi a entitami s referenciami. Na 2 datovych vzorkach zo
skutocneho sveta ukazali vyrazne zlepsenie vysledkov. [26]
24
3.4 Blokove metody
Standardna blokova metoda vytvorı zhluky zaznamov na zaklade spolocneho kl’uca. Moze
ıst’ o spolocne pole alebo viac polı. Dalsie porovnavanie zaznamov sa vykonava len v ramci
danych blokov. Ked’ su bloky vel’ke (naprıklad rozdelıme zaznamy podl’a pol’a pohlavie),
blokova metoda zmensı pocet porovnavanych zaznamov iba niekol’konasobne (dvojnasobne
pri kl’uci pohlavie), pretoze zaznamy v roznych blokoch neporovnavame. Ked’ su bloky
prılis male (pole ICO), zaznamy su zaradene do blokov pravdepodobne nespravne a stratı
sa zmysel d’alsieho porovnavania. Data su bez porovnavania vycistene (zatriedene v blo-
koch vel’kosti 1), ale chybu v ICO nemame ako odhalit’.
Metoda utriedeneho okolia (sorted neighbourhood method) predtriedi zaznamy podl’a
urcenych kl’ucov. Nasledne porovnania sa vykonavaju v ramci pohybliveho okna (sliding
window). Vd’aka predtriedeniu je mozne porovnavat’ iba niekol’ko najblizsıch zaznamov
(radovo v desiatkach oproti porovnaniu so vsetkymi ostatnymi zaznamami, ktorych moze
byt’ aj milion). Pocet najblizsıch zaznamov je urceny vel’kost’ou okna. Je vyhodnejsie
vykonat’ viac predtriedenı podl’a roznych kl’ucov s mensou vel’kost’ou okna ako jedno pred-
triedenie s porovnavanım vo vel’kom okne. [3, 13]
Prıkladom blokovych metod je praca M. Hernandeza a S. Stolfu. Ich ciel’om bolo vy-
vinutie metody na odstranenie duplikatov z vel’kej databazy (100 milionov az miliarda
zaznamov) v rozumnom case (niekol’ko dnı). Trivialny sposob je spojit’ data do jedneho
ret’azca, tieto ret’azce zotriedit’ a nasledne odstranit’ duplikaty. Pri heterogennej scheme
databazy alebo zapise dat tento prıstup nie je dostacujuci. Databazy pozbierane z via-
cerych zdrojov casto obsahuju kl’uce, ktore su odlisne v roznych datasetoch alebo maju
chyby naprıklad kvoli preklepom.
Majme databazovu tabul’ku s datami, ktore treba vycistit’. Metoda pozostava z nasle-
dujucich faz.
1. Vytvorenie kl’ucov. Z kazdeho zaznamu zıskame kl’uce extrakciou a spojenım re-
levantnych stlpcov alebo castı stlpcov. Relevantna cast’ mozu byt’ naprıklad prve 3
pısmena, pretoze v nich je pravdepodobnost’ preklepu nizsia. Tiez mozeme vybrat’
iba krstne meno (a spojit’ ho naprıklad s adresou a rodnym cıslom), pretoze preklepy
su pravdepodobnejsie v priezviskach.
2. Utriedenie dat. Zaznamy predbezne utriedime podl’a kl’ucov z predchadzajucej
fazy.
3. Zlucenie. Cez utriedene zaznamy prechadzame oknom s pevnou dlzkou. Pri vstupe
noveho zaznamu do okna, ho porovname so vsetkymi ostatnymi zaznamami, ktore sa
v okne nachadzaju. Rozhodovanie, ci su zaznamy zhodne, nechame na sadu pravidiel
specialne navrhnutych pre skumanu databazu, ktora na zaklade podobnosti (fuzzy
porovnavanie ret’azcov) alebo zhodnosti viacerych polı urcı vysledok.
25
Fazu triedenia a zlucenia opakujeme viackrat vzdy s inym kl’ucom pri triedenı (naprıklad
ak je v prvom kl’uci chyba, druhy moze zaradit’ zaznam spravne). Po kazdom prechode
mozeme na data aplikovat’ tranzitıvny uzaver (ak je A podobne s B a B je podobne s C,
potom aj A je podobne s C). Princıp je, ze zdlhave porovnavanie zaznamu vykoname
na obmedzeny pocet zaznamov v okne zvolenej vel’kosti a nie na vsetky zaznamy. To je
mozne vd’aka rychlej faze triedenia, ktora usporiada potencialne zhodne zaznamy dokopy.
Vyvinuta metoda bola najskor testovana na vygenerovanych databazach, potom na
realnych datach. [21]
3.5 Strojove ucenie
Vsetky sposoby cistenia dat, ktore sme si doteraz ukazali, vyzadovali manualne vytvorenie
pravidiel (normalizacie, heuristiky) a nastavenie parametrov porovnavacıch algoritmov.
V sucasnosti je vyvıjane nemale usilie pre automatizovane sposoby, ktore by nevyzadovali
casovo narocne ladenie pre kazda novu databazu a ich pouzitie by bolo v ramci moznostı
univerzalne pre akykol’vek druh dat.
M. Bilenko a R. Mooney navrhli pouzit’ algoritmy strojoveho ucenia s ucitel’om, ktore
dokazu tieto parametre natrenovat’. Uciacemu sa algoritmu su poskytnute trenovacie
zaznamy (vzorky) aj s ohodnotenım (ci je alebo nie je duplikat).
Autori pouzili novy typ Levenshteinovej vzdialenosti s affine gaps. Affine gaps su za
sebou nasledujuce sekvencie nezhodnych znakov. Povolenım affine gaps sa znızi penalizacia
vzorky pri vlozenı alebo odstranenı celych podret’azcov (co naprıklad zlepsı rozpoznavanie
skratiek). Parametre upravuju penalizaciu za affine gap, ktora zavisı na obsiahnutych
znakoch a ich pozıciach. Rozne znaky hraju rozne role v rozlicnych oblastiach pouzitia.
Naprıklad zmena cısla v adrese je vyznamna, ked’ze zmenı cıslo domu, ale zmena znaku
v krstnom mene vacsinou neznamena inu osobu, ale preklep.
Optimalizacny algoritmus (expectation maximization) natrenuje co najlepsie para-
metre pre affine gaps jednotlivych polı vzorky. Po vypocıtanı optimalnych parametrov
podobnostı jednotlivych polı je pouzity SVM (support vector machine) klasifikator na
rozhodnutie, ci dany zaznam je duplikat alebo nie.
Metoda bola otestovana na 6 skutocnych datasetoch. [4]
W. Cohen a M. Richman vyvinuli adaptıvnu a skalovatel’nu techniku, ktora vyuzıva
logisticku regresiu. Vahy su natrenovane pre konkretnu domenu z oznacenej vzorky dat.
Technika je porovnavana s dvoma baseline neadaptıvnymi technikami, ktore prekonava
a je takmer taka dobra ako tretia - najlepsia baselina technika. [9]
S. Tejeda a kolektıv vyvinuli system, ktory pouzıva ucenie decision tree learners pre
vytvorenie pravidiel mapovania zaznamov. Sucast’ou pravidiel su hranice transformacnych
funkciı, ktore su tiez naucene. Transformacnymi funkciami su zhodnost’, stemming (po-
rovnanie korenov slov), soundex a skratka. Zaujımave je prave osetrenie skratiek, ktore
26
sa da porovnavat’ s l’udskym chapanım skratiek (na rozdiel od porovnania N-gramami
alebo Levenshteinovou vzdialenost’ou) - naprıklad slovo konciace bodkou je oznacene ako
zhodne, ak su znaky pred bodkou prefixom d’alsieho porovnavaneho slova (M. - Martin),
podmnozinou porovnavaneho slova (Blvd - Boulevard) alebo pozostava zo zaciatocnych
pısmen slov (CPK - Californa Pizza Kitchen). [36]
O. Hassanzadeh a kol. pouzili strojove ucenie bez ucitel’a. Navrhli testovacı frame-
work s ciel’om zistit’, ktore prekazky stoja pred vyvinutım skutocne skalovatel’neho a uni-
verzalneho riesenia pre integraciu dat. V clanku vyuzıvaju framework na vyhodnoteniu
zhlukovacıch algoritmov. Vysledky ich vyskumu ukazuju, ze niektore zhlukovacie algo-
ritmy, o ktorych sa nikdy v suvislosti s integraciou dat neuvazovalo, maju v tejto oblasti
vel’mi dobre vysledky. [20]
3.6 Integracne systemy dat
Integracne systemy dat (DIS) poskytuju jednotny prıstup k viacerym zdrojovym da-
tabazam. Poziadavka na DIS (alebo sprostredkovana poziadavka) je prelozena na poziadavky
na zdrojove databazy, vykonana a vysledky su opat’ prelozene do jednotneho rozhrania.
Napriek vyznamnemu pokroku vo vyvoji automatickych systemov na zjednotenie schem,
dnesny proces tvorby DIS je vykonavany rucne, co je casovo narocne a nachylne na chyby.
A. Doan a R. McCann navrhuju kolaboratıvny prıstup pre zjednodusenie tohto problemu.
Zakladna myslienka je, ze DIS ma konecnu mnozinu parametrov, ktore musia byt’
nastavene. Na zaciatku mozu byt’ inicializovane nahodne alebo pouzitım automatickeho
systemu. Nasledne system kladie viacerym pouzıvatel’om otazky, na zaklade ktorych upra-
vuje parametre a postupne konverguje k ziadanym vysledkom. Pri kladenı otazok existuje
viac sposobov.
• Nutena odozva. Pouzıvatel’ pocas prace so systemom musı odpovedat’ na otazky.
• Dobrovol’na odozva s kratkodobou odmenou. Ked’ pouzıvatel’ zada do systemu
poziadavku, je mu vratena odpoved’. Pritom je upozorneny, ze ak ma zaujem o d’alsie
informacie, moze odpovedat’ na otazku. Ked’ na otazku odpovie, dostane sa
k pozadovanym informaciam.
• Dobrovol’na odozva s dlhodobou odmenou. Pouzıvatel’ za odpovede na otazky
zıskava dlhodobe vyhody a moznosti prıstupu k informaciam v systeme.
Pouzıvatelia su na zaklade svojich akciı vahovanı podl’a dovery, aku k nim mame (ochrana
pred zakernymi pouzıvatel’mi). System upravuje parametre na zaklade odpovedı od via-
cerych pouzıvatel’ov, pricom berie do uvahy aj ich vahy. [10]
A. Fuxman a R. Miller navrhuju lepsı sposob prace s nekonzistentnymi datam v in-
tegracnych systemoch dat. Tradicne DIS pouzıvaju rucne vytvorene procedury pre vy-
27
riesenie nekonzistencie medzi jednotlivymi zdrojmi na strane zdrojov dat (co nemusı byt’
vzdy mozne) alebo ako medzivrstva medzi DIS a zdrojmi dat. Autori navrhuju riesit’
nekonzistencie na strane DIS pri vykonavanı dotazu (query time) bez zmien zdrojovych
databaz. [15]
3.7 Fuzzy databazy
Pre integraciu dat je zaujımavy koncept fuzzy databazovych systemov. V tejto oblasti
bolo vykonane vel’ke mnozstvo vyskumu [37, 23, 19]. Avsak sme nenasli skoro ziadne
siroko pouzıvane implementacie. Existujuce implementacie funguju iba ako medzivrstva
pouzıvatel’a a relacneho databazoveho systemu, ktora sıce o nieco zvysi pohodlie pouzıvatel’a,
ale pridava vlastnu vykonnostnu zat’az na dotazovanie databazy.
S. Chauduri v [7] navrhol specialny typ JOIN operatora pre relacne databazy, ktory
neporovnava zaznamy exaktne, ale vyuzıva fuzzy porovnavanie ret’azcov (metriky podob-
nosti) a umoznı vyriesenie zakladnej integracie dat az pocas dotazovania databazy.
Koncepty v tejto casti su sıce zaujımave, ale z dovodu nedostatocnosti na riesenie
pokrocilejsıch integracnych problemov a nadbytocnej vykonnostnej zat’aze nie su siroko
pouzıvane.
28
Kapitola 4
St’ahovanie dat
St’ahovanie dat z webovych zdrojov nie je tak priamociare, ako by sa mohlo zdat’. Ciel’om
st’ahovacov je data stiahnut’ a upravit’ do strukturovanej formy, v ktorej mozu byt’ ulozene
do relacnej databazy.
Pri st’ahovanı mozu nastat’ viacere problemy. Najjednoduchsie je, ak zdrojova sluzba
dodrziava standardne konvencie o bezstavovosti webu (rovnaka URL vzdy vrati rovnake
data) a nevyzaduje Javascript. Vtedy stacı HTTP metodou GET pristupit’ na spravnu
URL so spravnymi parametrami (naprıklad skusat’ ID zaznamov vo vzdialenej sluzbe)
a ulozit’ odpoved’. Dokonca nie je problem odsimulovat’ odoslanie formulara (naprıklad
vyhl’adavacieho) zavolanım HTTP metody POST a pridanım spravnych parametrov. Ak
stranka vyzaduje prihlasenie, da sa odsimulovat’ prihlasenie, ulozit’ cookie a poslat’ ho pri
kazdom d’alsom poziadavku. Niektore stranky ale nedodrziavaju konvencie bezne na webe
(ide hlavne o ASP stranky, problem sa tyka aj niektorych webov postavenych na Jave).
Pri stiahnutı stranky metodou GET ani pri simulovanı odoslania formulara cez POST
sa k datam nedostaneme, nepomoze ani prenos cookie. Stranka bez podpory Javascriptu
(pri jednoduchom st’ahovanı iba stiahneme kod a Javascript neinterpretujeme) nezobrazı
ziadne data alebo nedovolı odoslat’ formular. Vtedy treba pouzit’ javascriptom vybaveny
bezhlavy (headless) prehliadac, ktory sa sprava ako bezny webovy prehliadac, umoznı
nastavenie URL, zadanie vstupov do formulara a prechadzanie zobrazenych vysledkov po
nacıtanı a vykonanı Javascriptu. Niektore webove sluzby mozu vyzadovat’ zadanie captchy,
vtedy automatizovane st’ahovanie je takmer nemozne. Niekedy je pocet poziadavkov za
sekundu obmedzeny casovacom (timeout) na strane servera. Pri niekol’kych zaznamoch
spomalenie potrebou interpretacie javascriptu, captchou alebo casovacom nie je problem,
ale ak je zaznamov niekol’ko 10 tisıc, moze ıst’ o vaznu prekazku.
Dalsım problemom je roznorodost’ formatov a slaba strukturovanost’ dat. Najcastejsım
formatom je HTML, ale niekedy su data ulozene ako vol’ny text v PDF alebo ako naske-
novane obrazky dokumentov. Vel’mi zriedka sa nachadzaju v strojovo spracovatel’nom
formate ako CSV (comma-separated values) alebo XML. Preto je potrebne data po stia-
hnutı parsovanım alebo OCR previest’ do strukturovanej formy. V CSV a XML je to
29
najjednoduchsie. V HTML mozu existovat’ pomocky v podobe rozumne napısaneho kodu,
ale casto je HTML len o nieco malo lepsie ako nestrukturovany text. V PDF sa vacsinou
nachadza iba nestrukturovany text, s ktorym sa vel’mi t’azko pracuje. Naskenovane obrazky
dokumentov treba previest’ cez OCR a d’alej pracovat’ s nestrukturovanym textom.
V d’alsom texte rozpısem nas st’ahovacı framework a ake problemy sa vyskytli pri
tvorbe niektorych vybranych st’ahovacov.
4.1 St’ahovacı framework
Pre potreby vytvarania st’ahovacov a ich spust’ania sme vytvorili st’ahovacı framework. Na
navrhovany framework sme na zaciatku nemali vel’ke poziadavky, pretoze jeho jedinym
ciel’om bolo poskytnut’ nam data vyuzitel’ne pri skumanı metod cistenia dat.
• Vnutorne API pre pohodlne vytvaranie st’ahovacov, ktore stiahnu udaje z weboveho
zdroja.
• Vnutorne API pre pohodlne vytvaranie parserov, ktore zo stiahnutych suborov ex-
trahuju strukturovane informacie a ulozia ich do databazy.
Neskor sme pridali d’alsie poziadavky pre zlepsenie vyuzitel’nosti frameworku a umoznenie
jeho skutocneho nasadenia ako zaklad pre nejaku aplikaciu alebo sluzbu poskytujucu
verejne data v lepsej forme ako povodne webove zdroje.
• Umoznenie paralelneho spust’ania st’ahovacov pre zvysenie vykonu.
• Pri zlyhanı st’ahovania umoznit’ spustit’ st’ahovanie znova.
• Ukladanie vsetkych stiahnutych suborov v povodnej podobe do uloziska na disku.
• Umoznenie periodickeho spust’ania st’ahovacov, pricom udaje v databaze a subory
v ulozisku sa aktualizuju.
Architekturu frameworku navrhol veduci bakalarskej prace Jan Suchal. Ja s Ondrejom
Proksom, ktory pracuje na rovnakej teme, sme sa zamerali na implementaciu st’ahovacov
a parserov pre co najviac webovych zdrojov. V casti navrh opısem architekturu systemu
a v casti implementacia opısem pouzite technologie.
4.1.1 Navrh
St’ahovanie je znazornene na obrazku 4.1.1. Zakladom je rad uloh (task queue), do ktoreho
sa zarad’uju poziadavky na stiahnutie jednotlivych URL prıslusnym st’ahovacom. Naprıklad
je spustena uloha na stiahnutie prvej casti obchodneho vestnıka. PDF subor je stiahnuty
a ulozeny do nasho uloziska suborov pre prıpad potreby povodneho zdroja v buducnosti.
30
Uloha zavola parser, ktory zo stiahnuteho suboru zıska potrebne udaje. Nakoniec uloha
zaradı na st’ahovanie URL s nasledujucim primarny m kl’ucom. Po skoncenı ulohy je z radu
vybrata tato d’alsia uloha. Ulohy z radu vybera a spust’a worker. Ked’ je workerov spus-
tenych viac, vtedy mozeme hovorit’ o paralelnom st’ahovanı. Ide hlavne o prıpad st’ahovania
roznych zdrojov naraz, kedy nie sme obmedzenı priepustnost’ou jedneho zdroja.
Obr. 4.1.1: Architektura st’ahovania dat
Ulohy su spust’ane pravidelne s frekvenciou aktualizacie zdroja. Preto musia byt’ aj na-
programovane tak, aby dokazali aktualizovat’ zmenene zaznamy a stiahnut’ nove zaznamy
bez potreby zdlhaveho st’ahovania vsetkych zaznamov od zaciatku. St’ahovac obchodneho
vestnıka naprıklad zacne st’ahovanie od poslednej hodnoty primarneho kl’uca. Uz vy-
dane vestnıky sa neaktualizuju, preto sa aktualizaciou stiahnutych vestnıkov zaoberat’
nemusıme.
31
Obr. 4.1.2: Diagram tried modulu Ives
Obrazok 4.1.2 ukazuje navrh tried pre st’ahovace a parsery zdroja Registre a evidencie
Ministerstva vnutra. Modul Datafine poskytuje vnutorne API pre st’ahovanie a uklada-
nie suborov. Kazdy webovy zdroj ma svoj vlastny modul (pre Registre a evidencie MV
je to Ives). V module sa nachadzaju databazove modely (oznacene poznamkou Model).
V Registroch a evidenciach MV sa nachadza viac typov organizaciı. Preto model Organi-
32
zation je abstraktny a dedia z neho modely konkretnych typov organizaciı. V podmodule
Jobs su ulohy, ktore vyuzıvaju vnutorne API z modulu Datafine. Uloha moze zaradit’ do
fronty inu ulohu alebo pouzit’ parser z podmodulu Parsers na zıskanie strukturovanych
dat zo stiahnuteho HTML kodu (alebo ineho formatu). Parsery vytvaraju a aktualizuju
databazove modely.
4.1.2 Implementacia
System staviame na webovom frameworku Ruby on Rails. Ruby je vysoko-urovnovy prog-
ramovacı jazyk, ktory svojou strucnou syntaxou a premyslenym objektovym modelom
vyrazne zvysuje produktivitu programatora. Ruby on Rails vhodnym vyuzitım moznostı
Ruby a praktickym navrhom vyrazne urychl’uje vyvoj webovych aplikaciı. Ruby on Rails je
zalozeny na princıpe REST a ma zabudovanu podporu pre XML a JSON, co ich predurcuje
k tvorbe aplikaciı poskytujucich API, co by sme v buducnosti mohli vyuzit’ v prıpade, ze
by sme chceli data poskytnut’ d’alej inym aplikaciam.
Pri st’ahovanı z malej casti pouzıvame aj platformu Java. V Jave existuje vel’a vybornych
kniznıc (viac ako v Ruby) a jednu cez projekt JRuby (implementacia Ruby na Java VM)
pouzıvame v st’ahovaci.
Ako databazovy server pouzıvame PostgreSQL, co je najpokrocilejsia open-source
relacna databaza. V PostgreSQL mame ovel’a vacsie moznosti prace s datami ako v MySQL
(prıkladom su trigramove indexy). Dalo by sa uvazovat’ aj o pouzitı nerelacnej databazy
(CouchDB, MongoDB), vtedy by sa s datami pracovalo cez map-reduce paradigmu a nie
relacnu. Data by rovnako mohli byt’ reprezentovane vo forme ontologiı. Kvoli charakteru
nasich dat a jednoduchej integracii s Ruby on Rails cez ORM (object-relational mapper)
sme sa rozhodli ostat’ pri relacnej databaze PostgreSQL.
Pri vyvoji sme pouzili vyvoj riadeny testami (TDD) na urovni unit testov nasich
st’ahovacov, parserov a modelov. Pısanie testov pred samotnym kodom vo vacsine prıpadov
nebola vel’ka zat’az (len pri Zivnostenskom registri s vel’mi komplikovanym sposobom
st’ahovania by narocnost’ pısania testu prevazila vyhody TDD) a prinieslo vyhody vo forme
pohodlnejsieho vyvoja (automaticke otestovanie, ci prave dokoncena funkcnost’ funguje
spravne bez nutnosti kontrolovat’ vypisy alebo medzivysledky) a vyssej spol’ahlivosti (pri
neskorsom refaktorovanı kodu sme mali istotu, ze nepokazıme nieco, co funguje).
Ako tım vyvojarov (traja) sme samozrejme pouzıvali system pre spravu zdrojoveho
kodu (SCM). Zvolili sme Git a jeho fakultny hosting.
Problemy pri implementacii st’ahovacov podrobnejsie rozoberam v d’alsıch castiach
tejto kapitoly. Dodatok D obsahuje technicku dokumentaciu pre pouzitie a d’alsı vyvoj
st’ahovacieho frameworku.
33
4.2 Zivnostensky register
Tento zdroj verejnych dat pouzıva technologiu ASP viewstate, ktora nedodrziava bez-
stavovy charakter standardnych webovych aplikaciı. K udajom o zivnostnıkoch sa neda
dostat’ priamym zadanım URL, ale iba cez vysledky vyhl’adavania. Pouzitım formulara na
stranke na systematicke vyhl’adavanie roznych kombinaciı pısmen kdekol’vek v mene sa da
dostat’ ku vsetkym strankam. Maximalny pocet vratenych vysledkov je z nam neznameho
dovodu obmedzeny na 500. Preto treba poziadavku zakazdym spresnovat’, aby sme sa
dostali aj k strankam, ktore sa do povodnych 500 vysledkov nezmestili. Tento prıstup je
vel’mi pomaly a okrem toho je t’azke zarucit’, aby boli stiahnute vsetky stranky.
Nasledujuce udaje po stiahnutı stranok vyparsujeme a ulozıme do databazy:
• Obvodny urad
• Cıslo zivnostenskeho registra
• Obchodne meno
• ICO
• Sıdlo
• Statutarne organy
– Meno
– Adresa
• Predmety podnikania
– Nazov
Zivnostensky register oproti jednoducho stiahnutel’nemu statistickom registri organizaciı
pridava len niekol’ko udajov o statutarnom organe, predmetoch podnikania a prevadzkarniach.
Tieto udaje nie su pre nas az tak zaujımave ako naprıklad udaje o firmach v obchod-
nom registri a vzhl’adom na problemy, ktore sa pri st’ahovanı vyskytli, sa st’ahovanım
zivnostenskeho registra nebudeme d’alej zaoberat’.
4.3 Obchodny vestnık
Obchodny vestnık je zverejnovany na stranke Ministerstva spravodlivosti SR vo formate
PDF. Jednotlive vydania st’ahujeme skusanım primarnych kl’ucov ich databazy v pa-
rametri URL a ukladame do nasho uloziska pre prıpad potreby povodneho zdroja dat
v buducnosti.
34
Vzhl’adom na format vestnıka bolo narocnejsie vyvinut’ parser. Na nom sme zacali
pracovat’ v juni 2011. Z dokumentov sme extrahovali cisty text a rozdelili sme ich na
jednotlive zaznamy s nadpisom a obsahom. Z nadpisu bolo mozne zistit’ nazov firmy, ktorej
sa zaznam tykal a typ zaznamu (novy zaznam obchodneho registra, konkurz, drazba,
...). Obsahom bol vol’ny text, ktory blizsie specifikoval charakter prıslusneho oznamenia
alebo rozhodnutia. Problem bol, ze aj ked’ sme naprıklad vedeli, ze o firme sa pıse v casti
o konkurzoch, nemohli sme s istotou povedat’, ci je dana firma v konkurze alebo sa konkurz
na firmu zrusil. Jedinou moznost’ou zistenia tejto skutocnosti bola interpretacia vol’neho
textu, co je vedecky problem sam o sebe.
Dnes v marci 2012 po opatreniach na zvysenie transparentnosti Ministerstva Spra-
vodlivosti SR je situacia lepsia. Zaznamy z dokumentov nie je potrebne extrahovat’. Na
stranke sa pri kazdom novsom vestnıku zobrazı aj jeho obsah s nadpismi (nazov firmy
a typ zaznamu) a prıslusne casti vestnıka sa daju stiahnut’ samostatne. Problem extrakcie
informacie z vol’neho texty je vo vel’kej miere ul’ahceny doplnenım tabul’ky s metadatami
na zaciatok kazdej casti vestnıka. V tabul’ke sa uvadza meno a ICO firmy, ktorej sa dany
zaznam tyka a d’alsie uzitocne informacie.
Udaje o konkurzoch firiem sa daju naprıklad pouzit’ na stranke foaf.sk, kde maju
pouzıvatelia o taketo informacie vel’ky zaujem.
4.4 SK-NIC
Udaje o domenach su zverejnovane v CSV subore, ktory priamo stiahneme, rozbalıme
(pretoze je komprimovany pomocou gz kompresie) a naimportujeme do databazy (tuto
moznost’ ponuka PostgreSQL aj MySQL). Tento sposob zverejnenia je oproti sposobom
ostatnych zdrojov verejnych dat vel’mi spol’ahlivy a programatorovi na strane aplikacie,
ktora s datami potrebuje pracovat’ vyznamne zjednodusı implementaciu automatizovaneho
st’ahovania. CSV subor obsahuje tieto polia:
• Meno domeny
• SK-NIC kl’uc registratora
• SK-NIC kl’uc drzitel’a
• ICO drzitel’a
• Stav domeny
• Datum platnosti stavu domeny
• Domenove servery - ns1, ns2, ns3, ns4
• Platny system SK-NIC pravidiel pre domenu (NEW alebo OLD)
35
Zıskanie zoznamu SK-NIC registratorov je zalezitost’ou vyparsovania jednej stranky, kde
su vsetky tieto udaje v tabul’ke. V zozname sa nachadzaju nasledujuce udaje:
• SK-NIC kl’uc registratora
• Nazov spolocnosti
• Ulica
• Mesto
• Telefon
Zoznam drzitel’ov je tiez mozne stiahnut’ vyhl’adavanım podl’a ID drzitel’a, ale vyhl’adavanie
po stiahnutı viacerych drzitel’ov zacne byt’ vyrazne pomalsie, co robı st’ahovanie informaciı
o drzitel’och neprakticke. Preto sa SK-NIC drzitel’mi nebudeme d’alej zaoberat’.
Tieto udaje su zaujımave pre stranku statistiky-domen.sk, ktora ich vizualizuje prehl’adnymi
grafmi a vyuzıva na zist’ovanie d’alsıch zaujımavych faktov.
4.5 Grantovy system Ministerstva kultury
Web pozostava z viacerych stranok, pricom kazda zobrazuje granty, o ktore bolo poziadane
v urcitom roku (od 2007). Na strankach je predvolene zobrazeny len prvy podprogram
ziadosti (celkovy pocet podprogramov ziadosti je okolo 30). Pre zıskanie d’alsıch by bolo
potrebne simulovat’ POST formulara s postupnym vyberanım jednotlivych podprogra-
mov. My sme vymysleli sposob, ako st’ahovanie grantov zjednodusit’. Pri zadanı prazdnej
hodnoty do vyberu podprogramu (ktora v pouzıvatel’skom rozhranı stranky dostupna nie
je), sa zobrazia vsetky granty v danom roku. Avsak nacıtanie vsetkych grantov naraz bolo
pomale a dokonca sme narazili na casovy limit nasho st’ahovaca, ktory sme museli zvysit’.
Ak by st’ahovanie grantov bolo v buducnosti nespol’ahlive, mozeme pouzit’ standardnu
cestu a t’ahat’ granty po jednotlivych programoch.
Zo stiahnutych stranok parsujeme jednotlive granty (dotacie) ulozene v tabul’ke.
O dotaciach mame nasledujuce informacie:
• Rok
• Meno (spolocnosti, fyzickej osoby)
• Okres
• Kraj
• ICO
36
• Cıslo ziadosti
• Datum zmluvy (pre pridelene projekty)
• Popis projektu
• Podprogram
• Vyska ziadanej dotacie aj s menou (SK alebo EURO)
• Vyska pridelenej dotacie aj s menou (SK alebo EURO)
Pri parsovanı pouzıvame niektore zakladne metody pre normalizaciu dat. Z ICO od-
stranujeme medzery, aby sa neskor mohli zaznamy v databaze spajat’ s d’alsımi tabul’kami.
Z vysky dotacie odstranujeme medzery a bodky oddel’ujuce trojice cıslic. Do databazy
ku kazdej sume ukladame menu v normalizovanom tvare sk alebo euro. Niektore vysky
ziadanej dotacie su 0 alebo neuvedene (NULL). Nie je nam jasne, ako tento udaj inter-
pretovat’. V prıpade vysky pridelenej dotacie ide pravdepodobne o neschvalenie projektu.
Tieto udaje sme po stiahnutı a vyparsovanı poslali ako CSV export Aliancii Fair-play,
pretoze o ne mala zaujem.
4.6 Registre a evidencie Ministerstva vnutra
Web poskytuje viacere zoznamy organizaciı podl’a ich typu. Organizacie je mozne vyhl’adavat’.
Kazda organizacia ma svoju stranku s jedinecnou URL (naprıklad stranky vypisov zivnostenskeho
registra jedinecnu URL nemaju, co robı ich st’ahovanie obtiaznym). Pri st’ahovanı sme
vyuzili moznost’ skusania primarnych kl’ucov v databaze aplikacie, cım sa dali pohodlne
stiahnut’ vsetky vypisy.
Pri parsovanı vypisu sme zıskali nasledujuce udaje:
• Typ organizacie
• Nazov organizacie
• Adresa sıdla
• ICO
• Predmet cinnosti
• Datum vzniku
• Datum vstupu do likvidacie
• Datum zaniku
37
• Zapojene osoby
– Osoba
∗ Meno
∗ Adresa
∗ ICO
– Od
– Do
– Funkcia
• Nazvy organizacie (predchadzajuce nazvy v prıpade premenovania)
Vypisy sa pre jednotlive typy organizaciı mierne lısili. Rozdiely neboli vel’ke, preto sme
vytvorili pre vsetky vypisy iba jeden zlozitejsı parser, ktory si s miernymi odlisnost’ami
v nazvoch polı a sposobe ich zapisu dokazal poradit’. Parser okrem modelu organizaciı
pracuje aj s modelom osob a prepojovacım modelom vyskytov osob v organizaciach. Na
tomto zaklade by sa dala vytvorit’ podobna siet’ ako foaf.sk, ale namiesto firiem zamerana
na organizacie. Medzi osobami je vel’a duplikatov podobne ako v osobach na foaf.sk.
4.7 Zhodnotenie
Nas st’ahovacı framework obsahuje nasledujuce st’ahovace (v zatvorke je uvedeny autor
daneho st’ahovaca).
• Centralny register zmluv (Jan Suchal)
• Statisticky register organizaciı (Ondrej Proksa)
• Ustredny portal verejnej spravy (Ondrej Proksa)
• Verejne obstaravania (Ondrej Proksa)
• Dlznıci Socialnej Poist’ovne (Ondrej Proksa)
• Dlznıci zdravotnej poist’ovne Dovera (Ondrej Proksa)
• Dlznıci zdravotnej poist’ovne Union (Ondrej Proksa)
• Dlznıci Vseobecnej zdravotnej poist’ovne (Ondrej Proksa)
• Domeny a osoby SK-NIC (Martin Liptak)
• Obchodny vestnık (Martin Liptak)
38
• Grantovy system Ministerstva Kultury (Martin Liptak)
• Zivnostensky register (Martin Liptak)
• Registre a evidencie Ministerstva vnutra (Martin Liptak)
Hlavnym ucelom bolo stiahnut’ co najviac dat, s ktorymi mozeme experimentovat’ v d’alsej
casti prace pri ich cistenı.
39
40
Kapitola 5
Cistenie dat
Aj stiahnute a strukturovane data casto obsahuju preklepy, duplikaty a d’alsie nejed-
noznacnosti. Tieto problemy je potrebne vyriesit’ pred ich d’alsım spracovanım. Trivialnymi
sposobmi su normalizacia kl’ucov, zist’ovanie podobnosti kl’ucov a zapojenie viacerych
relaciı, ktore boli opısane v kapitole 3. My sa zameriame na pouzitie strojoveho ucenia.
Vsetky trivialne sposoby pouzijeme ako zaklad, ale ich parametre a vahy budu nastavene
automaticky ucenım zo vzorky, ktoru systemu poskytneme. Pojde teda o strojove ucenie
s ucitel’om (supervised machine learning). [29, 2]
Najskor rozpısem nas vyhodnocovacı framework. Zvysok kapitoly sa budeme venovat’
vykonanymi experimentmi.
5.1 Vyhodnocovacı framework
Algoritmom strojoveho ucenie, ktory sme pouzili v prvom experimente je logisticka re-
gresia [44]. Vstupom pre algoritmus je pouzıvatel’om vybrata oznacena vzorka dat (data
set). Vzorka obsahuje viac prıkladov a kazdy prıklad je vektorom vlastnostı (features).
Naprıklad pri porovnavanı dvoch osob mozu byt’ vlastnost’ami Levenshteinova vzdialenost’
mena a Levenshteinova vzdialenost’ adresy. Oznacenie (label) je informacia, ci porovnavane
osoby su v skutocnosti duplikat alebo nie. Algoritmus natrenuje vahy jednotlivych vlast-
nostı tak, aby na zaklade nich bolo mozne predikovat’ neoznacene prıklady s co najmensou
chybovost’ou. Takyto algoritmus sa kvoli binarnemu vystupu (ci je vzorka duplikat alebo
nie) oznacuje aj ako klasifikator.
V druhom experimente sme vyskusali aj Support Vector Machine (SVM) klasifikator
[46]. SVM klasifikator ma vacsinou lepsie vysledky, vd’aka hl’adaniu maximalneho okraja
(maximum margin) pri rozdel’ovanı vstupnych dat v priestore (cım sa vyhne prehnanemu
prisposobeniu sa vstupnym datam znamemu ako overfitting). Vyhodou SVM su tiez
tzv. kernelove funkcie, ktore umoznia hl’adat’ zlozitejsie suvislosti v datach. Zakladny
linearny kernel pracuje podobne ako logisticka regresia (az na lepsie vysledky vd’aka ma-
ximalnemu okraju). My sme pouzili RBF (radial-based function kernel) alebo gaussovsky
41
kernel (Gaussian kernel), ktory nevyzaduje, aby sa dali vstupne data linearne rozdelit’.
Nevyhodou SVM s RBF kernelom je, ze neumoznuje jednoducho zıskat’ vahy vstupnych
vlastnostı, pretoze vstupne data boli transformovane kernelovou funkciou.
Pre lepsie pochopenie logistickej regresie a SVM je vhodnym zdrojom on-line kurz na
Stanford University od profesora Andrew Ng [2].
5.1.1 Navrh
Obr. 5.1.1: Diagram tried vyhodnocovacieho frameworku
Pri navrhu vyhodnocovacieho frameworku sme mysleli hlavne na jeho znovu-pouzitel’nost’
v obidvoch testoch a pri roznych konfiguraciach v ramci experimentov. Obrazok 5.1.1
ukazuje diagram tried. Vykonanie experimentu prebieha v piatich krokoch.
1. Implementacia SampleListLoader (FoafSampleListLoader alebo IvesSampleListLo-
ader v zavislosti od experimentu) nacıta vzorku dat z CSV suboru do modelov
Sample a Person.
42
2. Vzorky su rozdelene na trenovaciu a testovaciu cast’ a su z nich extrahovane vlast-
nosti implementaciou FeatureExtractor (v zavislosti od sady vlastnostı).
3. Implementacia klasifikatora je natrenovana na trenovacej vzorke.
4. Implementacia klasifikatora je pouzita na predikciu testovacıch prıkladov.
5. Vysledok predikcie je porovnany s oznacenım testovacıch prıkladov.
Obrazok 5.1.2 obsahuje diagram tried modelov. Pri hl’adanı duplikatov porovnavame
osoby medzi sebou. Preto prıklad pre klasifikator (trieda Sample) obsahuje 2 osoby,
oznacenie (spravny vysledok ich porovnania) a zoznam heuristık (naprıklad ci sa dane
2 osoby vyskytuju v spolocnej organizacii). Osoba (trieda Person) obsahuje vsetky do-
stupne udaje o osobe (meno, adresa) aj s novymi udajmi po normalizacii (meno bez
titulov, zoznam titulov, ulica, supisne cıslo, cıslo domu, PSC, mesto, mestska cast’). Praca
s modelmi je podrobne opısane v castiach Vzorka dat popisu jednotlivych experimentov
5.2.2 a 5.3.2 v tejto kapitole.
Obr. 5.1.2: Diagram tried modelov
5.1.2 Implementacia
Vyhodnocovacı framework sme povodne implementovali v jazyku Ruby, ale vyhodnotenia,
ktore sme potrebovali casto vykonavat’ s roznymi parametrami, boli vel’mi pomale (okolo
30 minut). Uzkym hrdlom bolo pocıtanie Levenshteinovej vzdialenosti pre vel’ke mnozstvo
vzoriek. Preto sme vyhodnocovacı framework prepısali do jazyka Java, cım sa vykonavanie
vyhodnotenia vyznamne zrychlilo (okolo 40 sekund). Pre logisticku regresiu sme pouzili
kniznicu liblinear [12, 39], pre SVM kniznicu libsvm [5, 22, 6].
K vyhodnocovaciemu frameworku nepripajame d’alsiu technicku dokumentaciu. Jeho
ucelom bolo vykonanie experimentov a jeho d’alsie pouzitie je malo pravdepodobne (iba
v prıpade, ze by niekto chcel v experimentoch pokracovat’).
43
5.2 Experiment 1
Algoritmus sme vyskusali na datach z Obchodneho registra SR, ktore boli sprostredkovane
projektom foaf.sk. Databaza obsahuje firmy, osoby a vyskyty osob vo firmach. Problemom
je, ze medzi osobami je vel’ke mnozstvo duplikatov. Preto nie je jednoduche spol’ahlivo
zistit’, kto posobı v akej firme. Vznikaju situacie, ked’ naprıklad osoba, ktora posobı v 10
firmach, je evidovana ako 3 osoby s mensım poctom firiem, pretoze pri zakladanı prvej
firmy este nemala titul a neskor zmenila adresu trvaleho bydliska. Opacna situacia, ked’
2 osoby s rovnakym menom a podobnou adresou su menovci a susedia a su zaradene do
spolocnych firiem je z etickeho hl’adiska horsia, pretoze niekomu mozu byt’ prisudzovane
prıjmy na obstaravaniach alebo dlhy firiem, s ktorymi nema nic spolocne.
Experiment 1 bol opısany v prıspevku na IIT.SRC (dodatok A).
5.2.1 Metodologia
Na foaf.sk uz funguje sada heuristık, ktore detekuju duplikaty. Pouzili sme jej vystup ako
oznacenie pre trenovanie nasho systemu a na vysledne meranie metrık presnost’ (precision),
pokrytie (recall) a F1.
Vysledky systemu pri porovnanı s baseline mozeme zaradit’ do 4 tried.
• True positives. Spravne detekovane duplikaty. Pocet prıkladov, ktore boli systemom
oznacene ako duplikaty a a aj podl’a baseline su duplikatmi.
• True negatives. Spravne detekovane ne-duplikaty. Pocet prıkladov, ktore neboli
systemom oznacene ako duplikaty a ani podl’a baseline duplikatmi nie su.
• False positives. Nespravne detekovane duplikaty. Pocet prıkladov, ktore boli systemom
oznacene ako duplikaty, ale podl’a baseline duplikatmi nie su.
• False negatives. Nespravne detekovane ne-duplikaty. Pocet prıkladov, ktore neboli
systemom oznacene ako duplikaty, ale podla baseline duplikatmi su.
Presnost’ (vzorec 5.2.1) reprezentuje systemom detekovane duplikaty, ktore su duplikaty aj
podl’a baseline. Presnost’ je znızena prıtomnost’ou false positives. Pokrytie (vzorec 5.2.2) re-
prezentuje duplikaty podl’a baseline, ktore boli detekovane systemom. Pokrytie je znızene
prıtomnost’ou false negatives.
P =true positives
true positives + false positives(5.2.1)
R =true positives
true positives + false negatives(5.2.2)
Obidve metriky by mali byt’ co najvyssie. Pritom musia byt’ aj rozumne vyvazene (ak
by nasa metoda kazdej vzorke predikovala, ze je duplikat, pokrytie by bolo 100 %, ale
44
presnost’ by sa blızila k 0). S tymto nam pomoze metrika F1 (vzorec 5.2.3), ktora rozumne
kombinuje presnost’ aj pokrytie.
F1 = 2P .R
P + R(5.2.3)
5.2.2 Vzorka dat
Vybrali sme 4 298 z 569 999 osob, ktore sa vyskytovali v Obchodnom registri SR v juni
2011. Do vyberu sa dostali hlavne zaznamy s vacsım mnozstvom duplikatov, ale pre
vyvazenie sme tiez pridali vel’a individualnych zaznamov. Nase prıklady su vsetky mozne
dvojice vybratych zaznamov. Vynechali sme rovnake dvojice s vymenenım poradım a pri-
dali dvojice s rovnakymi osobami. Preto mame 4298*(4298 + 1)/2 = 9238551 vzoriek.
Kazdy prıklad pozostava z dvoch zaznamov a kazdy zaznam poskytuje pole meno a ad-
resa (obrazok 5.1.2; ale v tomto experimente este nebola vyvinuta normalizacia adresy
a heuristiky). Z mien sme extrahovali akademicke tituly, aby sme ich mohli porovnavat’
samostatne. 80 % vzoriek bolo pouzitych ako trenovacia vzorka a 20 % ako testovacia
vzorka pre vyhodnotenie presnosti a pokrytia.
5.2.3 Vlastnosti
Pouzili sme nasledujuce vlastnosti pre kazdy z prıkladov:
• Oznacenie. Vlastnost’ zhodna s oznacenım vzorky pre otestovanie nasho vyhodno-
covacieho frameworku. 1 pre duplikat, 0 pre ne-duplikat.
• Zhodnost’1 mien. Tato vlastnost’ je 1, ked’ su porovnavane mena zhodne, inak 0.
• Zhodnost’ adries. Tato vlastnost’ je 1, ked’ su porovnavane adresy zhodne, inak 0.
• Levenshteinova vzdialenost’2 mien. Tato vlastnost’ reprezentuje Levenshteinovu
vzdialenost’ porovnavanych mien.
• Levenshteinova vzdialenost’ adries. Tato vlastnost’ reprezentuje Levenshteinovu
vzdialenost’ porovnavanych adries.
• N-gramova podobnost’3 mien. Tato vlastnost’ reprezentuje N-gramovu podob-
nost’ porovnavanych mien.
• N-gramova podobnost’ adries. Tato vlastnost’ reprezentuje N-gramovu podob-
nost’ porovnavanych adries.
1Bezna zhodnost’ ret’azcov znak po znaku.2Kapitola 3.2.4.3Kapitola3.2.3.
45
• Kombinacia akademickych titulov. Vytvorili sme N ∗ (N + 1)/2 vlastnostı pre
vsetky dvojice N akademickych titulov, ktore sa vyskytovali v menach vzorky. Pre
danu vzorku su kombinacie titulov, ktore sa vyskytuju v porovnavanych menach 1,
vsetky ostatne 0. Predpoklad je, ze niektore tituly nie su medzi sebou kompatibilne.
Naprıklad dve osoby s rovnakym menom, ktore sa lısia iba v tom, ze jedna ma titul
Ing. a druha MUDr., pravdepodobne nie su duplikaty. Naopak v prıpade, keby jedna
z osob bola Ing. a druha Bc., pravdepodobne ide o duplikat.
• Disjunkcia akademickych titulov. Vytvorili sme N vlastnostı pre kazdy z aka-
demickych titulov, ktore sa vyskytovali v menach vzorky. Pre danu vzorku a dany
titul je tato vlastnost’ 1, ked’ sa titul vyskytuje v prave jednom mene vzorky. Ked’
sa titul nevyskytuje v ziadnom alebo sa vyskytuje v obidvoch, je tato vlastnost’
0. Predpoklad je, ze prıtomnost’ niektorych titulov (naprıklad ml. a st., ktore sıce
akademickymi titulmi nie su, ale pracujeme s nimi podobnym sposobom) v jednom
zazname a ich neprıtomnost’ v druhom naznacuje, ze porovnavane vzorky nie su
duplikaty.
5.2.4 Vysledky
Tabul’ka 5.2.1 ukazuje dopad pouzitia roznych sad vlastnostı na vykon predikcie testovacej
vzorky.
Tabul’ka 5.2.1: Vykon predikcie testovacıch vzoriek pri pouzitı roznych sad vlastnostı. Ar-gument metriky mena je meno bez titulov, argument mena + tituly je povodny atribut ajs titulmi. Skratky: zhodnost’ (=), Levenshteinova vzdialenost’ (L), N-gramova podobnost’
(nG), false positives (FP), false negatives (FN).
Sada vlastnostı FP FN Presnost’ Pokrytie F1 skore=(oznacenia) 0 0 1 1 1=(mena), =(adresy) 142 13 0.8777 0.9874 0.9293L(mena), L(adresy) 326 3 0.8782 0.9923 0.93182G(mena), 2G(adresy) 142 13 0.8777 0.9874 0.92933G(mena), 3G(adresy) 142 13 0.8777 0.9874 0.92934G(mena), 4G(adresy) 142 13 0.8777 0.9874 0.92935G(mena), 5G(adresy) 142 13 0.8777 0.9874 0.92936G(mena), 6G(adresy) 142 13 0.8777 0.9874 0.92932G(mena + tituly), 2G(adresy) 138 40 0.8779 0.9612 0.91773G(mena + tituly), 3G(adresy) 138 46 0.8772 0.9554 0.91474G(mena + tituly), 4G(adresy) 136 50 0.8784 0.9516 0.91355G(mena + tituly), 5G(adresy) 135 53 0.8788 0.9486 0.91246G(mena + tituly), 6G(adresy) 135 54 0.8787 0.9477 0.9119L(mena), L(adresy), kombinacie titulov 135 39 0.8803 0.9622 0.9194L(mena), L(adresy), disjunkcie titulov 135 23 0.882 0.9777 0.9274
46
Celkovo vysoka F1 metrika je sposobena povahou pouzitych prıkladov. Ked’ze su kar-
tezianskym sucinom samostatnych zaznamov, vacsina z nich nie su duplikatmi (naprıklad
John Doe je porovnany s John Doe, John Doa a Ing. John Doe a su najdene 3 duplikaty,
ale d’alsie 2 miliony porovnanı duplikatmi nie su). Z toho dovodu sa cısla daju porovnavat’
az na vyssıch miestach za desatinnou ciarkou alebo ako absolutne pocty chybne urcenych
prıkladov false positives a false negatives.
Vysledkom jednoduchej zhodnosti mena a adresy je 142 false positives a 13 false ne-
gatives. False positives su sposobene zaznamami so zhodnym menom aj adresou, ktore
neboli oznacene ako duplikaty baseline detekciou. To moze byt’ vysvetlene neprıtomnost’ou
d’alsıch atributov ako meno a adresa vo vzorke alebo, co je pravdepodobnejsie, chybami
v baseline detekcii duplikatov. False negatives su vacsinou chyby, ktore neboli detekovane.
Levenshteinova vzdialenost’ znızila pocet false negatives, pretoze akceptuje ret’azce
s preklepom. Avsak vyznamne zvysila pocet false positives, pretoze jednoduche operacie
uprav nemusia dostatocne rozlısit’ medzi preklepom a podobnym hlaskovanım (Martin
Liptak oproti Martin Luptak). Tato sada vlastnostı tiez neberie do uvahy tituly.
Vysledky N-gramov mien bez titulov a adries su rovnake ako zhodnost’ ret’azcov bez
ohl’adu na N. Oproti tomu N-gramy mien vratane titulov mierne znızili pocet false positi-
ves, ked’ze povazuju mena s roznymi titulmi za ne-duplikaty. Popri tom ale zvysili pocet
false negatives, pretoze vel’a mien, ktore sa lısia len v tituloch su duplikatmi aj podl’a
baseline.
Kombinacie titulov a disjunkcie titulov znızili pocet false positives oproti samostat-
nej Levenshteinovej vzdialenosti, pretoze v porovnavaniach zahrnaju tituly. Skumanie
naucenych vah tychto vlastnostı ukazalo, ze disjunkcia (ked’ sa dany titul v jednom
zazname nachadza a v druhom nie) bc. (0.51), csc. (2.89), ing. (4.09), judr. (1.32) a mgr.
(1.75) a kombinacia (ked’ sa dany titul nachadza v obidvoch zaznamoch) judr. - mgr.
(1.57) zvysuju pravdepodobnost’ zaznamov, ze su duplikaty.
Naucene vahy
Tabul’ka 5.2.2 ukazuje naucene vahy vlastnostı vybranych testovanı.
Sada vlastnosti Vaha 1 Vaha 2 Vaha 3
=(oznacenia) −11.86 17.45=(mena + tituly), =(adresy) −9.31 13.98 8.15
=(mena), =(adresy) −9.56 12.50 2.25L(mena + tituly), L(adresy) 6.27 −1.43 −0.14
L(mena), L(adresy) 5.70 −2.74 −0.073G(mena + tituly), 3G(adresy) −11.25 14.74 3.56
3G(mena), 3G(adresy) −10.93 13.02 3.04
Tabul’ka 5.2.2: Naucene vahy vlastnostı. Skratky: zhodnost’ (=), Levenshteinova vzdiale-nost’ (L), 3-gramova podobnost’ (3G)
47
Vahy predstavuju koeficienty linearnej funkcie. Po dosadenı vektora vlastnostı x pred-
ikovaneho prıkladu ma funkcia hodnotu mensiu ako 0 v prıpade ne-duplikatu alebo vacsia
ako 0 v prıpade ne-duplikatu. Prva vaha w0 urcı prahovu hodnotu pre vahy vlastnostı
(oznacuje sa ako bias alebo intercept). Vzorec 5.2.4.4
f(x) = wTx = w0x0 + w1x1 + w2x2 + ... + wnxn (5.2.4)
Ukazeme si to na sade vlastnostı s oznaceniami (riadok 1). Bias je -11.86 a vaha
vlastnosti oznacenie 17.45. Ked’ je oznacenie 0, vysledna hodnota je −11.86 + 17.45 ∗0 = −11.86 < 0 a predikcia je ne-duplikat. Ked’ je oznacenie 1, vysledna hodnota je
−11.86 + 17.45 ∗ 1 = 5.59 > 0 a predikcia je duplikat.
Zaujımave je porovnat’ sady vlastnostı s titulami a bez titulov. Zhodnost’ s titulmi
(riadok 2) ma vahu vlastnosti adresa viacnasobne vacsiu ako zhodnost’ bez titulov (riadok
3). Pri porovnavanı s titulami sa casto vyskytuju osoby, ktore sa lısia len v tituloch a mali
by byt’ duplikatmi, ale ako duplikaty oznacene nie su, pretoze presna zhodnost’ ret’azcov
nema moznost’ prisposobit’ sa roznym titulom. To znizuje vahu vlastnosti meno + tituly
oproti vlastnosti meno. Vlastnost’ meno ma rovnaku hodnotu, preto sa relatıvne zvysenie
jej vahy prejavilo podstatnym znızenım vlastnosti adresa. Levenshteinova vzdialenost’ a 3-
gramy sa dokazu lepsie prisposobit’ titulom, preto rozdiel medzi sadou s titulami a sadou
bez titulov nie je taky vyznamny (ale stale naznacuje podobny trend).
Hodnoty zhodnosti ret’azcov (0 alebo 1) a 3-gramov (0 az 1) su v spolocnom intervale.
Preto aj vahy vlastnostı su kladne cısla s podobnym rozmerom. Levenshteinova vzdia-
lenost’ je pri zhodnych ret’azcoch 0 a stupa so vzdialenost’ou ret’azcov. Preto aj vahy su
zaporne.
Vaha mena je vzdy vyssia ako vaha adresy, pretoze adresa sa moze v duplikatoch lısit’
viac. Pri porovnavaniach je dolezitejsia zhodnost’ alebo podobnost’ mien ako zhodnost’
alebo podobnost’ adries.
Krivka ucenia
Obrazok 5.2.1 ukazuje krivku ucenia [2] kombinacie titulov. Krivky d’alsıch sad vlastnostı
vyzeraju podobne. Os X reprezentuje vel’kost’ trenovacej vzorky. Vyskusali sme hodnoty
5 %, 10 %, 20 %, 40 %, 60 % a 90 %. Os Y reprezentuje chybovost’5. Vel’kost’ testovacej
vzorky je vzdy 100 %. Na grafoch vidıme, ze s rastucou vel’kost’ou trenovacej vzorky,
chybovost’ testovania sıce mierne klesa, ale chybovost’ trenovacej vzorky prudko stupa.
Obidve krivky sa nakoniec stretnu, ale chybovost’ trenovania nema trend znizovat’ sa.
4Logisticka regresia okrem toho na vysledok pouzıva tzv. sigmoid funkciu, ale tu pre zjednodusenievysvetlenia vyznamu vah neuvadzame. Vystupom sigmoid funkcie je pravdepodobnost’ (cıslo v intervale<0, 1>). Vyhodou je moznost’ urcit’ iny prah predikcie duplikat - ne-duplikat. Pri prahu 0.5 je vysledokprakticky rovnaky ako nami uvadzany postup.
5Chybovost’ je pomer nespravne urcenych prıkladov a vsetkych prıkladov. Cısla su vel’mi malez dovodu, ze vel’ka vacsina prıkladov su ne-duplikaty (rovnako ako pri metrikach v tabul’ke 5.2.1).
48
Pridavanie novych prıkladov do vzorky nepomoze lepsie natrenovat’ klasifikator. Dalsia
praca musı byt’ vykonana vo vylepsovanı vlastnostı, aby sa lepsie prisposobili datam. Ide
o tzv. high bias problem.
0
0.0001
0.0002
0.0003
0.0004
0.0005
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Chyb
ovos
t’
Vel’kost’ trenovacej vzorky
Chybovost’ trenovania
+ + + ++ +
+Chybovost’ testovania
× × × × × ×
×
Obr. 5.2.1: Krivka ucenia
5.3 Experiment 2
V druhom experimente sme pracovali s datami z Registrov a evidenciı Ministerstva vnutra.
Data boli zıskane nasim st’ahovacım frameworkom (cast’ 4.6). Struktura databazy je po-
dobna foaf.sk - obsahuje organizacie, osoby a vyskyty osob v tychto organizaciach. Medzi
osobami su takisto duplikaty, naprıklad:
• Osoby s rovnakym menom, ale rozdielnymi titulmi (Prof. Ing. Frantisek Uherek
PhD. - doc. Ing. Frantisek Uherek CSc.).
• Osoby s rovnakym menom a rozdielne napısanou adresou (Usiakova 1961/10, 84101
Bratislava - Usiakova 1961/10, 84101 Bratislava - Dubravka).
• Osoby s rovnakym menom a skratkou v adrese (H. Melickovej 13 - Hany Melickovej
13).
• Osoby s rozdielne napısanym menom (SVB ”Nesporova A/4” - Spolocenstvo vlastnıkov
bytov a nebytovych priestorov ”SVB a NP Nesporova 1013 ”).
• Osoby s rovnakym menom a uplne rozdielnou adresou, ktore na zaklade ucasti
v spolocnych organizaciach pravdepodobne su duplikatmi.
49
Tieto duplikaty je potrebne oznacit’ ako identicke osoby, aby sa dali data z Registrov
a evidenciı Ministerstva vnutra spol’ahlivo vyuzıvat’. Takisto je potrebne vyhnut’ sa tomu,
aby boli ucast’ou v organizaciach oznacene osoby, ktore s danymi organizaciami nemaju
nic spolocne (false positives).
5.3.1 Metodologia
Sposob vyhodnotenia je rovnaky ako v prvom experimente okrem toho, ze nebol pouzity
iny baseline algoritmus detekcie duplikatov, ale vzorka bola rucne oznacena”expertom”.
5.3.2 Vzorka dat
Prıprava a rucne oznacovanie vzorky zabralo priblizne 3 hodiny prace. Ciel’om bolo, aby
vyber porovnavanych osob bol co najvyvazenejsı (niekol’ko prıkladov z co najvacsieho
mnozstva situaciı, ktore mozu pri porovnavanı nastat’) a konzistentne oznaceny (dana
situacia bola vzdy oznacena rovnakou hodnotou duplikat-neduplikat). Vel’kost’ vzorky je
250 osob (zaznamov). Prıklady pre ucenie su vsetky mozne dvojice vybratych osob. Vyne-
chali sme rovnake dvojice s vymenenym poradım a pridali dvojice s rovnakymi osobami.
Preto mame 250 ∗ (250 + 1) = 62750 prıkladov. Kazdy prıklad pozostava z dvoch osob
a kazda osoba obsahuje meno a adresu. Z mien sme extrahovali akademicke tituly (aj
s oznaceniami ako ml. a st.). Adresu sme rozbili na jednotlive casti (ulica, supisne cıslo,
cıslo domu, PSC, mesto, mestska cast’). Ku kazdemu prıkladu sme doplnili heuristiku, ci
sa osoby vyskytuju v spolocnej organizacii. Obrazok 5.1.2.
5.3.3 Vlastnosti
Boli pouzite vsetky vlastnosti z prveho experimentu a niekol’ko novych vlastnostı.
• Levenshteinove vzdialenosti a N-gramove podobnosti boli okrem celej adresy pocıtane
aj pre jej jednotlive casti.
• V spolocnej organizacii. Heuristika, ci sa porovnavane osoby vyskytuju v spolocnej
organizaciı. Predpoklad je, ze ak sa 2 osoby s podobnym menom uplne odlisuju
v adrese alebo adresa chyba (co sa na rozdiel od Obchodneho registra vyskytuje
v Registroch a evidenciach Ministerstva vnutra pri obcianskych zdruzeniach, kde
adresy v niektorych funkciach nie su zverejnovane) a maju spolocne clenstvo v or-
ganizaciach, pravdepodobne ide o identicke osoby.
• Prazdna adresa. Heuristika, ci je adresa jednej z osob prazdna. Skutocnost’, ze
jedna z adries moze byt’ prazdna, negatıvne ovplyvnuje presnost’ vah podobnosti
adries. Touto vlastnost’ou sme chceli tento prıpad vyvazit’.
50
5.3.4 Vysledky
Na novej vzorke dat sme najskor vyskusali rovnake vlastnosti ako v predchadzajucom
experimente. Tabul’ka 5.3.1 zobrazuje vysledky. F1 skore je podobne ako v prvom expe-
rimente vysoke, pretoze vzorky su dvojice porovnavanych osob a vo vacsine prıpadov je
jednoznacne, ci ide o duplikat alebo nie (naprıklad uplne ine meno a adresa). My sme sa
zamerali na prıpady, kde to take jednoznacne nie je. Tych kvoli malej vzorke nie je az
tak vel’a, preto uvadzam absolutne pocty chyb false positives a false negatives. Precision
a recall by boli rovnako vysoke a ich uvadzanie nema zmysel, ked’ze F1 lepsie vypoveda
o celkovom vykone.
Sada vlastnostı FP FN F1 skore
=(oznacenia) 0 0 1=(mena bez titulov), =(adresy) 8 6 0.9628L(mena bez titulov), L(adresy) 2 8 0.9728
2G(mena bez titulov), 2G(adresy) 7 7 0.96293G(mena bez titulov), 3G(adresy) 7 8 0.95984G(mena bez titulov), 4G(adresy) 7 9 0.9575G(mena bez titulov), 5G(adresy) 7 11 0.95146G(mena bez titulov), 6G(adresy) 7 12 0.9485
=(mena s titulmi), =(adresy) 7 12 0.9485L(mena s titulmi), L(adresy) 4 13 0.9534
2G(mena s titulmi), 2G(adresy) 3 9 0.96743G(mena s titulmi), 3G(adresy) 3 10 0.96464G(mena s titulmi), 4G(adresy) 8 6 0.96285G(mena s titulmi), 5G(adresy) 8 6 0.96286G(mena s titulmi), 6G(adresy) 8 6 0.9628
L(mena bez titulov), L(adresy), kombinacie titulov 2 8 0.9728L(mena bez titulov), L(adresy), disjunkcie titulov 2 8 0.9728
Tabul’ka 5.3.1: Vykon predikcie na testovacej vzorke pri pouzitı vlastnostız predchadzajuceho experimentu. Skratky: zhodnost’ (=), Levenshteinova vzdiale-nost’ (L), N-gramy (NG), false positives (FP), false negatives (FN)
Porovnanie osob len podl’a zhodnosti mena bez titulov a adresy stacilo na spravne
urcenie vacsiny vzoriek. Levenshteinova vzdialenost’ pocet chyb mierne znızila. N-gramy
maju najlepsı vykon pri N = 2, pri vyssom N vykon klesa.
Porovnanie osob podl’a zhodnosti mena s titulmi a adresy odstranilo niekol’ko false
positives, ked’ze rozne osoby s rovnakymi menami a roznymi titulmi sa tentokrat odlisovali.
Na druhej strane pribudlo viac false negatives, ked’ze rozdielne tituly pri identickej osobe
sposobili jej oznacenie ako ne-duplikat. Levenshteinova vzdialenost’ mierne pomohla, N-
gramy pomohli vyznamne. N-gramy sa znova ukazali ako najvykonnejsie pri N = 2 a ich
vykon klesa s vyssımi N.
Vlastnosti kombinacie a disjunkcie titulov nemali na vysledok ziadny vplyv, pretoze
51
vzorka bola mala na to, aby sa dokazali natrenovat’.
Tabul’ka 5.3.2 ukazuje vplyv rozdelenia adresy na casti a zavedenia heuristık na vysledky.
Rozdelenie adresy na casti z hl’adiska celkovej vykonnosti algoritmu nepomohlo vel’kou
mierou, ale znızilo pocet false positives, pretoze metriky podobnosti sa mohli lepsie zame-
rat’ na preklepy v jednotlivych castiach adresy a nemuseli sa prisposobovat’ chybajucim
supisnym cıslam a castiam adresy.
Sada vlastnostı FP FN F1 skore
=(mena bez titulov), =(casti adresy) 2 17 0.9470L(mena bez titulov), L(casti adresy) 4 13 0.9534
2G(mena bez titulov), 2G(casti adresy) 7 7 0.96263G(mena bez titulov), 3G(casti adresy) 7 8 0.95984G(mena bez titulov), 4G(casti adresy) 7 9 0.9575G(mena bez titulov), 5G(casti adresy) 7 11 0.95146G(mena bez titulov), 6G(casti adresy) 7 12 0.9485
L(mena bez titulov), L(casti adresy), heuristiky 3 13 0.956=(mena s titulmi), =(casti adresy) 2 11 0.9644L(mena s titulmi), L(casti adresy) 2 9 0.97
2G(mena s titulmi), 2G(casti adresy) 1 10 0.96973G(mena s titulmi), 3G(casti adresy) 1 10 0.96974G(mena s titulmi), 4G(casti adresy) 2 11 0.96445G(mena s titulmi), 5G(casti adresy) 3 11 0.96176G(mena s titulmi), 6G(casti adresy) 2 11 0.9644
L(mena s titulmi), L(casti adresy), heuristiky 3 8 0.97
Tabul’ka 5.3.2: Vykon predikcie na testovacej vzorke pri pouzitı novych vlastnostı a porov-nanı adresy po castiach. Skratky: zhodnost’ (=), Levenshteinova vzdialenost’ (L), N-gramy(NG), false positives (FP), false negatives (FN)
Heuristiky pomohli len malo, pricom na zaklade skumania konkretnych false positives
a false negatives, mali mnohe z nich vyriesit’. Predpokladali sme, ze problem je sposobeny
obmedzenymi moznost’ami logistickej regresie prisposobit’ sa vlastnostiam. Vyskusali sme
novy typ klasifikatora Support Vector Machine (SVM) s RBF kernelom a nastaveniami
epsilon = 0.1, gamma = 0.003, C = 4006. Tabul’ka 5.3.3 ukazuje lepsı vysledok SVM.
Heuristiky v tomto prıpade vyznamne znızili pocet false negatives.
Naucene vahy
Tabul’ka 5.3.4 obsahuje vahy jednotlivych polı po normalizacii a heuristık pri sadach
vlastnostı so zhodnost’ou, Levenshteinovou vzdialenost’ou a N-gramovou podobnost’ou.
Najvyznamnejsım pol’om je meno s titulmi a heuristika v spolocnej organizacii. Pri
zhodnosti ma vyznam PSC, pretoze v nom vacsinou nie su preklepy. V ostatnych sadach
6Epsilon je presnost’ ucenia, standardne hodnoty sa pohybuju v radoch 0.001–0.1. Odporucany sposobnastavovania gamma a C je tzv. grid-search, kedy sa vyskusaju vsetky mozne kombinacie niekol’kychhodnot v radovych rozdieloch gamma a C. [22]
52
Sada vlastnostı FP FN F1 skore
=(mena s titulmi), =(adresa) 7 12 0.9485L(mena s titulmi), L(adresa) 2 13 0.9587
2G(mena s titulmi), 2G(adresy) 2 10 0.96723G(mena s titulmi), 3G(adresy) 2 11 0.9644
L(mena s titulmi), L(adresa), heuristiky 2 8 0.9728=(mena s titulmi), =(casti adresy) 2 17 0.9470L(mena s titulmi), L(casti adresy) 4 11 0.9591
2G(mena s titulmi), 2G(casti adresy) 6 8 0.96233G(mena s titulmi), 3G(casti adresy) 6 10 0.9568
L(mena s titulmi), L(casti adresy), heuristiky 2 7 0.9756
Tabul’ka 5.3.3: Vykon predikcie na testovacej vzorke pri pouzitı SVM. Skratky: zhodnost’
(=), Levenshteinova vzdialenost’ (L), N-gramy (NG), false positives (FP), false negatives(FN)
Vlastnost’ Zhodnost’ Levenshtein N-gramy
Bias −6.43 0.16 −7.23Meno s titulmi 4.43 −0.54 6.37
Ulica 0 −0.20 0.94Supisne cıslo 0 0 0
Cıslo domu 0 0 0
PSC 1.50 0 0Mesto 0 −0.06 0
Mestska cast’ −0.24 0.07 −0.16V spolocnej organizacii 4.04 2.42 2.30
Prazdna adresa −0.50 0 0
Tabul’ka 5.3.4: Naucene vahy vlastnostı.
vlastnostı ma vyznam ulica. Skumat’ naucene vahy ma zmysel iba pri logistickej regresii,
kedy maju priamu suvislost’ s pravdepodobnost’ou jednotlivych vlastnostı. Pri SVM nie je
zıskanie pravdepodobnostı take jednoduche [11, 31].
Krivka ucenia
Obrazok 5.3.1 ukazuje krivku ucenia pre logisticku regresiu pri sade vlastnostı L(meno
s titulmi), L(casti adresy), heuristiky). Do vel’kosti trenovacej vzorky 20 % je chybovost’
vysoka aj na samotnej trenovacej vzorke. V predchadzajucom experimente bola tato hra-
nica iba 5 %, co bolo sposobene podstatne vacsou vzorkou dat (viac ako 4,000 oproti
250). Od hranice 20 % chyba na trenovacej vzorke rastie, pricom sa chyba na testovacej
vzorke neznizuje. Toto spravanie ukazuje, ze vlastnosti napriek normalizacii adresy a pri-
daniu heuristık nie su schopne sa prisposobit’ zlozitejsım prıpadom detekcie duplikatov.
Na natrenovanie detekcie pre jednoduche prıpady stacı minimalna vzorka vel’kosti 20 %
z 258, co je priblizne 50 prıkladov.
53
0
0.002
0.004
0.006
0.008
0.01
0.012
0 0.2 0.4 0.6 0.8 1
Chyb
ovos
t’
Velkost’ trenovacej vzorky
Chybovost’ trenovania
++
+
++ + +
+Chybovost’ testovania×× ×
× × × ×
×
Obr. 5.3.1: Krivka ucenia logistickej regresie
Obrazok 5.3.2 ukazuje krivku ucenia pre Support Vector Machine na rovnakej sade
vlastnostı. Do vel’kosti trenovacej vzorky 40 % sa bezchybne prisposobuje novym prıkladom,
d’alej chybovost’ trenovania rastie. Chybovost’ testovanie ma klesajuci trend az po hranicu,
kde sa nachadzaju komplikovanejsie prıpady detekcie duplikatov, ktore nase vlastnosti ne-
zvladaju. Na co najlepsie natrenovanie vah potrebuje SVM vacsiu vzorku ako linearna
regresia (okolo 60 %), ale jeho chybovost’ je uz pri 50 % nizsia ako najnizsia chybovost’
logistickej regresie.
0
0.0002
0.0004
0.0006
0.0008
0.001
0.0012
0 0.2 0.4 0.6 0.8 1
Chyb
ovos
t’
Vel’kost’ trenovacej vzorky
Chybovost’ trenovania
+ + + + +
+
+
+Chybovost’ testovania
×× ×
×
×
××
×
Obr. 5.3.2: Krivka ucenia SVM
54
Prıklady chyb
Ukazem niekol’ko prıkladov chyb, s ktorymi si najlepsie sady vlastnostı na SVM nevedeli
poradit’.
• False negative. Mena su prılis odlisne.
Spol. vlast. bytov a nebytovych priestorov ”Nesporova A/4” |SVB ”Nesporova A/4” |<prazdna adresa>
• False negative. Mena su prılis odlisne, ani heuristika v spolocnej organizacii ne-
pomohla.
Spol. vlast. bytov a nebytovych priestorov ”Nesporova A/4” |Spolocenstvo vlastnıkov bytov a nebytovych priestorov ”Nesporova a/3” |<v spolocnej organizacii>
<prazdna adresa>
• False negative. Mena su prılis odlisne.
PhD. Daniela Janosıkova | Trstın 573, 91905 Trstın
Mgr. Daniela Janosikova PhD. | Trstın 573, 91905 Trstın
<v spolocnej organizacii>
• False positive. Zhodnost’ mena ma vel’ku vahu a v tomto prıpade sa SVM ne-
prisposobil odlisnej adrese.
Peter Marcek | Budatınska 3101/41, 85105 Bratislava - Petrzalka
Peter Marcek | Spitalska 18, 81108 Bratislava - Stare Mesto
5.4 Zhodnotenie
Zamerom prveho (predbezneho) experimentu bolo vyvinut’ vyhodnocovacı framework
a vyskusat’, ci strojove ucenie vobec je mozne pouzit’ na cistenie verejnych dat. Vysledky
boli mierne obmedzene, pretoze nas algoritmus bol porovnavany s baseline algoritmom,
ktoreho vystup nemusel byt’ vzdy spravny. Experiment ukazal, ze strojove ucenie sa da
pouzit’ na cistenie jednoduchych prıpadov duplikatov, ale v tych zlozitejsıch sa navrhnute
vlastnosti nedokazu dostatocne prisposobit’ vstupnym datam.
V druhom experimente sme sa pokusili napravit’ nedostatky vlastnostı prveho experi-
mentu normalizaciou adresy na jednotlive casti a pridanım heuristiky, ktora do porovnania
zahrnula aj vzt’ah medzi porovnavanymi entitami. Nepouzili sme baseline algoritmus, ale
vzorka dat bola rucne oznacena (250 zaznamov za 3 hodiny prace). Normalizacia ad-
resy nemala vel’ky vplyv na vysledok. Heuristika pomohla pri pouzitı SVM. Vlastnosti
pre osetrenie akademickych titulov kvoli malej vel’kosti vzorky nemali vplyv na vysledok,
55
pretoze sa nemohli natrenovat’. Algoritmus dobre fungoval pre jednoduche prıpady dup-
likatov, ale v zlozitejsıch prıpadoch sa nedokazal dostatocne prisposobit’.
Zaujımavym praktickym vystupom obidvoch experimentov mozu byt’ aj naucene vahy
vlastnostı, ktore sa daju pouzit’ aj v inych systemoch detekcie duplikatov (ktore nemusia
byt’ zalozene na strojovom ucenı).
56
Zaver
Praca sa skladala z implementacie st’ahovania slovenskych verejnych dat a z vyskumu
vyuzitia strojoveho ucenia pri cistenı tychto dat.
Vysledkom prvej casti je st’ahovacı framework, ktory dokaze stiahnut’ udaje z 13 slo-
venskych webovych zdrojov s verejnymi datami. Z tychto zdrojov sme vo vyskumnej casti
pouzili len udaje o organizaciach a dlznıkoch. Dalsie st’ahovace sme pri experimentoch
nepouzili, ale pre niekoho by mohli byt’ v buducnosti prınosom. Napadlo ma niekol’ko
sposobov ich d’alsieho vyuzitia, ale moznostı je samozrejme ovel’a viac.
• St’ahovace by boli odovzdane Aliancii Fair-play v ich aktualnej podobe, ktora by ich
mohlo integrovat’ s ich Datanestom alebo aspon vytvoreny kod pouzila na obohate-
nie Datanestu. Tento sposob sa mi pozdava najviac, pretoze by sme priamo pomohli
organizacii, ktora vykonava vel’mi dolezitu cinnost’ pre zlepsenie politickeho prostre-
dia na Slovensku. Aliancii Fair-play sme pocas vyvoja st’ahovacieho frameworku uz
poslali stiahnute udaje a dostali sme vyjadrenie, ze boli uzitocne.
• Vyuzit’ st’ahovace a stiahnute data a vytvorit’ akukol’vek aplikaciu, ktora by ich
vyuzıvala. Naprıklad udaje o organizaciach by sa dali pouzit’ k vytvoreniu po-
dobneho projektu ako je foaf.sk, ktory by pracoval s organizaciami (obcianske zdruzenia,
politicke strany, nadacie, ...) a vyskytami l’udı v tychto organizaciach. Aj ked’ firmy
na foaf.sk su stale zaujımavejsie ako organizacie.
• Pokracovat’ vo vyvoji st’ahovacieho frameworku tak, ako sme zmysl’ali na zaciatku
(rozpısem d’alej). To by ale bolo casovo dost’ narocne. Takisto nevidım vel’ky zmysel
vo vytvaranı konkurencie Datanestu, ked’ mozeme spojit’ sily.
Zaverom z druhej casti je, ze strojove ucenie sa da pouzit’ na cistenie jednoduchsıch
prıpadov verejnych dat a uz pri malej vzorke dokaze odhadnut’ vahy vysledkov jednot-
livych porovnanı pre co najlepsı vysledok. Na druhej strane pre zlozitejsie prıpady stro-
jove ucenie moze priniest’ viac problemov ako uzitku. Mozno by pomohlo d’alsie rozvıjanie
vlastnostı (osetrenie skratiek, rucne osetrenie titulov) alebo pridavanie d’alsıch heuristık
zalozenych na vzt’ahoch medzi entitami, ale pri takomto usilı by data boli cistene rucne
vo vacsej miere ako automaticky a je otazny vyznam strojoveho ucenia, ktore by sluzilo
len na urcenie vah jednotlivych rucne pripravenych a nastavenych vlastnostı.
57
Povodnym planom prace, ktory sa ukazal v case dvoch semestrov ako nerealizovatel’ny,
bolo vytvorenie systemu, ktory by podobne ako Datanest od Aliancie Fair-play zbieral
data z verejnych zdrojov a pomocou jednoducheho pouzıvatel’skeho rozhrania (ktore by
umoznovalo naprıklad vyhl’adavanie v datach alebo moznost’ stiahnut’ vysledky v CSV)
a verejneho API pre aplikacie by ich d’alej poskytovalo v rozumnejsej forme ako je ich
povodna forma na strankach jednotlivych instituciı. Prınos oproti Datanestu by bol, ze
by sme data okrem st’ahovania aj cistili (integrovali). Bolo by teda jasne, kol’ko osob
s vyhl’adavanym menom vystupuje v slovenskych verejnych zdrojoch, ktora osoba vlastnı
ktore firmy, ktora osoba je dlznıkom, atd’. V experimentoch sa ukazalo, ze strojove ucenie
na pouzitie v takomto systeme nie je vhodne. Vel’kou nevyhodou prıstupu strojoveho
ucenia s ucitel’om je potreba vytvorenia vzorky. V druhom experimente mi vytvorenie
vzorky s vel’kost’ou 250 osob zabralo 3 hodiny prace. Vel’kost’ bola viac nez dostatocna
(cast’ 5.3.4) pre odhalenie jednoduchych prıpadov duplikatov, ale v zlozitejsıch situaciach,
ktore je v praxi tiez potrebne riesit’, by bolo treba podstatne vacsiu vzorku (osetrenie roz-
dielnych titulov). Vhodnejsım prıstupom ako strojove ucenie by bolo vytvorenie kvalitneho
pomocneho API pre cistenie dat (rovnako ako st’ahovacı framework poskytuje pomocne
API pre st’ahovanie dat). Toto API by poskytovalo bezne moznosti ako normalizaciu mien,
normalizaciu adries, porovnanie kompatibility titulov (ktora by bola rucne definovana,
pretoze ani pri vzorke s viac ako 4000 osobami sa neukazali kombinacie kompatibilnych
titulov do takej miery, ako by ich dokazal vytvorit’ clovek). Vyvojar by pre kazdy pridany
zdroj verejnych dat okrem st’ahovacov a parserov vytvoril aj”cistic”, kde by pomocou
jednoducheho DSL definoval, ktore sposoby cistenia sa pouziju pre konkretnu databazu.
Problem by sa mohol ukazat’ pri rucnom urcovanı vah jednotlivych porovnavanych vlast-
nostı. Ich automaticke urcenie je ciel’om pouzitia strojoveho ucenia. Avsak tato vyhoda
prıstupu strojoveho ucenia je vyvazena potrebou vytvarat’ oznacenu vzorku dat. Cas sa
da lepsie vyuzit’ na rucne prisposobenie cistenia konkretnej databazy. Okrem toho vzorka
musı byt’ vyvazena a musı zachytit’ vsetky najcastejsie situacie. Preto pri jej tvorbe treba
hl’adat’ vhodne prıklady a objavovat’ suvislosti v datach, ktore by sa namiesto zdlhaveho
hl’adania prıkladov dali priamo zapısat’ do kvalitneho DSL.
Hlavnym problemom nasich dat neboli preklepy alebo ine zapisy rovnakych entıt
(J. Doe - John Doe), ale tituly alebo zmeny adries, kde sa metodami vytvorenymi pre
konkretnu databazu da dosiahnut’ takmer 100-percentna uspesnost’. Metody zalozene na
strojovom ucenı takuto uspesnost’ nedosiahnu. V prıpade, ze by ju dosiahli, vytvaranie
vlastnostı by bolo na hranici s programovanım metody prisposobenej pre konkretnu da-
tabazu. Strojove ucenie ma vyznam v prıpadoch, kedy tolerujeme nespravne zlucene
zlozitejsie prıpady a je dolezite odstranit’ preklepy, ine zapisy a vytvorenie vzorky za-
berie menej casu ako keby programator osetril vsetky prıpady, ktore mozu nastat’ (alebo
data boli doteraz integrovane rucne a mame kvalitnu vzorku).
58
Literatura
[1] Reka Albert and Albert-Laszlo Barabasi. Statistical mechanics of complex networks.
2002.
[2] Andrew Ng. Machine Learning, 2011. Available from: http://www.ml-class.org.
[3] Rohan Baxter, Peter Christen, and Tim Churches. A Comparison of Fast Blocking
Methods for Record Linkage. Performance Evaluation, 2003.
[4] Mikhail Bilenko and R.J. Mooney. Employing trainable string similarity metrics for
information integration. In Proceedings of the IJCAI-2003 Workshop on Information
Integration on the Web, pages 67–72, 2003.
[5] Chih-chung Chang and Chih-jen Lin. A Library for Support Vector Machines. Lib-
rary, 2(3), 2011.
[6] Chih-Chung Chang and Chih-Jen Lin. LIBSVM – A Library for Support Vector
Machines, 2012. Available from: http://www.csie.ntu.edu.tw/~cjlin/libsvm/.
[7] S. Chaudhuri, V. Ganti, and R. Kaushik. A Primitive Operator for Similarity Joins
in Data Cleaning. 22nd International Conference on Data Engineering (ICDE’06),
pages 5–5, 2006.
[8] William W Cohen, Pradeep Ravikumar, and Stephen E Fienberg. A Comparison of
String Distance Metrics for Name-Matching Tasks. Learning, 2003.
[9] William W Cohen and Jacob Richman. Learning to match and cluster large high-
dimensional data sets for data integration. In Proceedings of the eighth ACM
SIGKDD international conference on Knowledge discovery and data mining, pages
475–480, 2002.
[10] Anhai Doan and Robert Mccann. Building Data Integration Systems: A Mass Col-
laboration Approach. Science, 2000.
[11] Joseph Drish, San Diego, and La Jolla. Obtaining Calibrated Probability Estimates
from Support Vector Machines.
59
[12] Rong-en Fan, Kai-wei Chang, Cho-jui Hsieh, Xiang-rui Wang, and Chih-jen Lin.
LIBLINEAR: A Library for Large Linear Classification. Corpus, 9(2008):1871–1874,
2012.
[13] Amy Feekin and Zhengxin Chert. Duplicate Detection Using K-way Sorting Method.
Test, (c):323–327, 2000.
[14] Ivan P. Fellegi and Alan B. Sunter. Record Linkage, 1969.
[15] Ariel Fuxman. Towards Inconsistency Management in Data Integration Systems.
Framework, 2001.
[16] Google. Clustering in Depth, 2012. Available from: http://code.google.com/p/
google-refine/wiki/ClusteringInDepth.
[17] Vienna Insurance Group, Czech Republic, Data Quality, and Fuzzy Match. Vyuzitı
Fuzzy Match algoritmu pro cistenı dat. pages 1–12, 2008.
[18] Lifang Gu, Rohan Baxter, Deanne Vickers, and Chris Rainsford. Record Linkage:
Current Practice and Future Directions. Science.
[19] Brian Hartlieb. Functional Dependencies in Fuzzy Databases. Computer, (x):1–6.
[20] Oktie Hassanzadeh, Fei Chiang, and Hyun Chul Lee. Framework for Evaluating
Clustering Algorithms in Duplicate Detection. Evaluation, 2009.
[21] Mauricio A. Hernandez and Salvatore J. Stolfo. Real-world data is dirty: Data cle-
ansing and the merge/purge problem. Data mining and knowledge discovery, 1998.
[22] Chih-wei Hsu, Chih-chung Chang, and Chih-jen Lin. A Practical Guide to Support
Vector Classification. Bioinformatics, 1(1):1–16, 2010.
[23] Miroslav Hudec. An Approach to Fuzzy Database Querying, Analysis and Realisa-
tion. Analysis.
[24] Nick Johnson. Damn Cool Algorithms: Levenshtein Auto-
mata, 2010. Available from: http://blog.notdot.net/2010/07/
Damn-Cool-Algorithms-Levenshtein-Automata.
[25] Dan Jurafsky. Natural Language Processing, 2012. Available from: http://www.
nlp-class.org.
[26] Dmitri V. Kalashnikov and Sharad Mehrotra. Domain-independent data cleaning
via analysis of entity-relationship graph. ACM Transactions on Database Systems,
31(2):716–767, June 2006.
60
[27] Stoyan Mihov Klaus U. Shulz. Fast String Correction with Levenshtein-Automata.
INTERNATIONAL JOURNAL OF DOCUMENT ANALYSIS AND RECOGNI-
TION, 5:67–85, 2002.
[28] Grzegorz Kondrak. N-gram similarity and distance. String Processing and Informa-
tion Retrieval, pages 115–126, 2005.
[29] S B Kotsiantis. Supervised Machine Learning : A Review of Classification Techniques.
Informatica, 31(3):249–268, 2007.
[30] Mike McCandless. Lucene’s FuzzyQuery is 100 times faster in 4.0,
2011. Available from: http://blog.mikemccandless.com/2011/03/
lucenes-fuzzyquery-is-100-times-faster.html.
[31] John C. Platt. Probabilistic outputs for support vector machines and comparisons
to regularized likelihood methods. 1999.
[32] Iniciatıva pre otvorene Vladnutie. Finalna verzia Akcneho planu Iniciatıvy pre
otvorene vladnutie, 2012. Available from: http://www.otvorenavlada.gov.sk/
finalna-verzia-akcneho-planu/.
[33] Maurizio Serva and Filippo Petroni. Indo-European languages tree by Levenshtein
distance. Europhysics Letters, 81(6):68005, 2007.
[34] Nikita Smetanin. Fuzzy string search. Available from: http://ntz-develop.
blogspot.com/2011/03/fuzzy-string-search.html.
[35] Jan Suchal and Peter Vojtek. Navigacia v socialnej sieti obchodneho registra SR.
2009.
[36] Sheila Tejada, Craig A Knoblock, Steven Minton, and Fetch Technologies. Lear-
ning Domain-Independent String Transformation Weights for High Accuracy Object
Identification. Architecture, pages 350–359, 2002.
[37] Amel Grissa Touzi, Mohamed Ali, and Ben Hassine. New Architecture of Fuzzy
Database Management Systems. Architecture, 6(3):213–221, 2009.
[38] Stefania Vitali, J.B. Glattfelder, and Stefano Battiston. The network of global cor-
porate control. PloS one, 6(10):e25995, 2011. arXiv:arXiv:1107.5728v2.
[39] Benedikt Waldvogel. Java version of LIBLINEAR, 2012. Available from: http:
//www.bwaldvogel.de/liblinear-java/.
[40] Wikipedia. Damerau–Levenshtein distance, 2012. Available from: http://en.
wikipedia.org/w/index.php?title=Damerau\OT1\textendashLevenshtein_
distance&oldid=479098077.
61
[41] Wikipedia. Hamming distance. 2012. Available from: http://en.wikipedia.org/
w/index.php?title=Hamming_distance&oldid=476713278.
[42] Wikipedia. Jaro–Winkler distance, 2012. Available from: http://en.wikipedia.
org/w/index.php?title=Jaro\OT1\textendashWinkler_distance&oldid=
478511268.
[43] Wikipedia. Levenshtein distance, 2012. Available from: http://en.wikipedia.org/
w/index.php?title=Levenshtein_distance&oldid=481363811.
[44] Wikipedia. Logistic Regression, 2012. Available from: http://en.wikipedia.org/
w/index.php?title=Logistic_regression&oldid=484672661.
[45] Wikipedia. Soundex, 2012. Available from: http://en.wikipedia.org/w/index.
php?title=Soundex&oldid=482992849.
[46] Wikipedia. Support Vector Machine. 2012. Available from: http://en.wikipedia.
org/w/index.php?title=Support_vector_machine&oldid=486987645.
[47] WE Winkler. The state of record linkage and current research problems. Statistical
Research Division, US Census Bureau, 1999.
62
Dodatok A
Prıspevok na IIT.SRC
Priebeh a vysledky prveho experimentu sme opısali v prıspevku na studentsku vedecku
konferenciu IIT.SRC.
63
64
Using Trainable Duplicate Detection forAutomated Public Data Refining
Martin LIPTAK∗
Slovak University of TechnologyFaculty of Informatics and Information Technologies
Ilkovicova 3, 842 16 Bratislava, [email protected]
Abstract. Public institutions share important data on the Web. These data areessential for public investigation and thus increase transparency. However, it isdifficult to process them, since there are numerous mistypings, disambiguitiesand duplicates. In this paper we propose an automated approach for cleaningof these data, so that further querying result is reliable. We develop a duplicatedetection method that can train weights of features on small amount of trainingsamples and then predict duplicates on the rest of data. We evaluate our methodon a real-world data set.
1 Introduction
Public institutions have legal obligations to share certain data on the Web. While public registers(e.g. businesses, organizations) and bulletins (public procurements) are essential for business com-munication, other data increase transparency of public institutions and enable public investigation(public contracts). Despite the fact that these data are becoming publicly available on the Web, thereare two problems.
The first problem is format and structure that might not be suitable for machine processing.For example some documents are published as scanned images with censored names and prices.This makes such documents difficult to investigate by a human expert and almost impossible toprocess with computer. For example company liquidations are published in periodic PDF bulletinsas unstructured text content and it is difficult to reliably find out if a company is being liquidated orthe liquidation is being cancelled. Fortunately the most common format is HTML, which is easy toparse and in most cases provides structure. Moreover, the state of public data is nowadays slowlybeing improved.
The second problem are various mistypings, disambiguities and duplicates. They are commoneven in correctly parsed and structured data. A few examples:
– Name of a person might be typed correctly in one business register extract and with a mistakein another one. We can use different fields in these entities like address and find out whetherthey refer to the same person.
∗ Bachelor study programme in field: InformaticsSupervisor: Ing. Jan Suchal, Institute of Informatics and Software Engineering, Faculty of Informatics andInformation Technologies STU in Bratislava
IIT.SRC 2011, Bratislava, May 4, 2011, pp. 1–8.
2 UNSPECIFIED FIELD
– Two entities have equal names, but different addresses. How do we know if the person hasmoved or these two entities refer to different people? We can use a heuristics that when twoentities with equal names and different addresses occur in the same company, these entitiesare duplicates.
– Two entities have both names and addresses equal. We need to find out if they are really thesame person or father and son living at the same address.
– Two names might differ only in academic titles. For example one inludes Ing., the other onedoes not. When addresses are equal, these entities might refer to the same person.
– Two addresses are equal except that one address contains Bratislava - Dubravka, the otherone only Bratislava. If the names are equal, these entities should probably refer to the sameperson.
In this paper we address the second problem by developing trainable duplicate detection method.Our method cleans off (or refines) duplicates, mistypings and other disambiguities to make dataquerrying result consistent and reliable.
2 Trainable duplicate detection
We propose a duplicate detection approach based on machine learning algorithms. We use a logisticregression classifier to predict whether samples are duplicates or not. The classifier trains weightsof features, provided by user for particular database (like Levenshtein distance of compared fieldsor presence of particular combination of substrings in compared fields). The user also provides alabeled set of samples that is used to train the classifier. Trained classifier can detect duplicates bypredicting using learned feature weights.
3 Evaluation
We have evaluated our method on a real-world database of people occurring in Business Register ofthe Slovak Republic provided by foaf.sk. There are many duplicates and it is difficult to determine,who exactly occurs in which company.
3.1 Methodology
There is a set of heuristics already detecting duplicates on foaf.sk. We have used their results fortraining and as a baseline for measuring precision, recall and F1 score. Precision represents detectedduplicates that are actual duplicates (is decreased by false positives) and recall represents actualduplicates that were detected (is decreased by false negatives). Both metrics should preferably be ashigh as possible and reasonably balanced. F1 score combines both metrics (equations 1 - 3).
precision =true positives
true positives+ false positives(1)
recall =true positives
true positives+ false negatives(2)
F1 = 2 ∗ prescision ∗ recallprecision+ recall
(3)
Martin Liptak: Using Trainable Duplicate Detection for Automated Public Data Refining 3
3.2 Data Set
We have chosen 4,298 out of 569,999 total people occurring in slovak business register in June 2011.We selected mostly duplicate records, though we have added many individual records as well. Oursamples are all possible pairs of selected records (omiting the same pairs with reordered recordsand including pairs of two same records), therefore we have 4, 298 ∗ (4, 298 + 1)/2 = 9, 238, 551samples. Each sample consists of two records and each record provides name and address attributes.We have extracted academic degrees out of names and compare them individually. 80% of sampleshave been used as a training set and 20% as a test set for final precision-recall evaluation.
3.3 Features
For training duplicate detection we used combinations of following features (feature sets):
– Label. A feature equal to sample’s label; 1 for duplicates and 0 for non-duplicates.
– Equal names. This feature is 1, when compared names are equal, otherwise 0.
– Equal addresses. This feature is 1, when compared addresses are equal, otherwise 0.
– Levenshtein distance of names. This feature represents Levenshtein distance1 of comparednames.
– Levenshtein distance of address. This feature represents Levenshtein distance of comparedaddresses.
– N-gram similarity of names. This feature represents N-gram similarity2 of compared names.
– N-gram similarity of addresses. This feature represents N-gram similarity of comparedaddresses.
– Combination of academic degrees. We have created N ∗ (N + 1)/2 features for all pairsof N academic degrees occurring in sample names. For a given sample, degree combinationsoccurring in compared names are 1, all the others are 0. This is based on assumption thattwo people with the same name, however, first of them is Ing. and the second MUDr., areprobably not duplicates.
– Disjunction of academic degrees. We have created N features for all academic degreesoccurring in sample names. For a given sample, feature for particular degree is 1 when thedegree occurs in exactly one of the compared names. If the degree occurs in none of themor in both, the feature is 0. This is based on assumption that presence of some degrees (likeml. or st., which mean junior and senior respectively when concerning father and son) in onerecord and absence in the other one indicates that they are not duplicates.
1 Levenshtein distance (or edit distance) of two strings computes number of edit operations (insertion, substitution,deletion) required to change the first string into the second one.
2 N-gram similarity is a string similarity metrics as described in [9] or [1]. Sets of N-grams (that is tokens ofsize N characters) are created from compared strings. N-gram similarity is a Jaccard similarity of these sets.
4 UNSPECIFIED FIELD
3.4 Results
Table 1 shows performance of various feature sets on test set. Overall high F1 score is caused by thenature of our samples. They are a cartesian product of individual records and the vast majority ofthem are not duplicates (for example John Doe record is compared to John Doe, John Doa and Ing.John Doe and 3 duplicates are found, but the other 2 milion comparisons are not duplicates).
Simple name and address equality comparison yields result of 142 false positives and 13 falsenegatives. False positives are caused by records with equal both names and addresses that werenot labeled as duplicates by baseline duplicate detection. This can be explained by either lack ofother features besides names and addresses, like company occurrences, or more probably by errorsin baseline duplicate detection. False negatives are mostly typos that were not detected.
Levenshtein distance decreases number of false negatives, because it accepts misspelled strings.However, it dramatically increases number of false positives, as simple edit operations count mightnot do a good job in distinguishing between a typo and similar spelling (Martin Liptak vs. MartinLuptak) and it does not take degrees into account.
N-grams of names without degrees and addresses yield same results as equality comparisonregardless of N. In contrast, N-grams of names with inclusion of degrees slightly decrease falsepositives, as they consider names with different degrees non-duplicates, but increase false negatives,because many names differing only in degrees are actual duplicates.
Degree combinations and disjunctions decrease number of false positives of individual Lev-enshtein distance, because they include degrees in comparisons. Inspection of learned weights ofdegree features revealed that disjunction of bc. (0.51), csc. (2.89), ing. (4.09), judr. (1.32) and mgr.(1.75) and a combination if judr. - mgr. (1.57) rise probability of records being duplicates
Table 1. Performance of various feature sets on test set. Abbreviations: equality (=), levenshtein distance (L),n-gram similarity (nG), false positives (FP), false negatives (FN).
Feature set FP FN Precision Recall F1 score=(labels) 0 0 1 1 1=(names), =(addresses) 142 13 0.8777 0.9874 0.9293L(names), L(addresses) 326 3 0.8782 0.9923 0.93182G(names), 2G(addresses) 142 13 0.8777 0.9874 0.92933G(names), 3G(addresses) 142 13 0.8777 0.9874 0.92934G(names), 4G(addresses) 142 13 0.8777 0.9874 0.92935G(names), 5G(addresses) 142 13 0.8777 0.9874 0.92936G(names), 6G(addresses) 142 13 0.8777 0.9874 0.92932G(names + degrees), 2G(addresses) 138 40 0.8779 0.9612 0.91773G(names + degrees), 3G(addresses) 138 46 0.8772 0.9554 0.91474G(names + degrees), 4G(addresses) 136 50 0.8784 0.9516 0.91355G(names + degrees), 5G(addresses) 135 53 0.8788 0.9486 0.91246G(names + degrees), 6G(addresses) 135 54 0.8787 0.9477 0.9119L(names), L(addresses), degree combinations 135 39 0.8803 0.9622 0.9194L(names), L(addresses), degree disjunctions 135 23 0.882 0.9777 0.9274
Figure 3.4 shows a learning curve of degree combinations. Curves of other feature sets looksimilar. Training set size is represented by x-axis (we have tried values 5%, 10%, 20%, 40%, 60%and 90%), misclassification error by y-axis. Cross-validation set size is constantly 100%. Withgrowing training set size, cross-validation error slightly decreases, but training set error takes off.Both curves will eventually converge, but error tends to remain stable. This shows a problem of highbias. Further work needs to be done not in the amount of new samples, but in better features.
Martin Liptak: Using Trainable Duplicate Detection for Automated Public Data Refining 5
0
0.0001
0.0002
0.0003
0.0004
0.0005
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Mis
clas
sific
atio
ner
ror
Training set size
Training error
+ ++
++
+
+Cross-validation error
× × × × × ×
×
Figure 1. Learning curve of degree combinations
4 Related work
Misspellings, disambiguities and duplicates are a major problem not only in the public data domain.In fact every database possibly merged of multiple sources needs to be cleaned so that queriesprovide reliable results. This process is widely known as data integration, duplicate detection orrecord linkage [6].
M. Bilenko and R. Mooney in [2] propose to employ learnable string distance functionsfor duplicate detection task. They have used Levenshtein distance with contiguous sequences ofmismatched characters called affine gaps. Expectation maximization algorithm trains parametersfor affine gap penalties for individual fields. Support vector machine classifier trains equality ofcompared records. This method is based on notion that different edit operations have varyingsignificance in different domains. For example a digit substitution in a street address makes a majordifference, because it effectively changes the house number, but a letter substitution is more likelycaused by a typo or an abbreviation.
M. Hernandez and S. Stolfo in [7] have developed a method for removing duplicates fromdatabases of 100 milion to 1 bilion records in a matter of days. The first phase of quick sortinggroups similar records together, more expensive rule-based comparisons in a sliding window acrosssimilar records are executed afterwards.
Fuzzy database systems could be used for duplicate detection as well. Research has beenconducted in this field [12], [8]. However, we have not found many implementations of this concept.S. Chaudhiri in [3] proposed a similarity join operator for relational database that would not requireequal keys (string similarity function will be used instead) and would resolve inconsistencies at querytime.
Data integration systems (DIS) provide a unified access to multiple source databases. DISrequests are translated into requests for source databases, executed and results are translated backto unified interface. Despite significant progess in schema unification, building DIS today is donemostly by hand in a very labor intensive and error prone process. A. Doan and R. McCann in [5]propose a mass collaborative approach for this task.
6 UNSPECIFIED FIELD
W. Cohen and other authors in [4] propose a name comparison toolkit that can help an expertwith database integration. Toolkit offers many string comparison metrics like Levenshtein distance,TF-IDF, Jaro, Monge-Elkan or Jensen-Shannon.
5 Conclusion and future work
We have proposed a trainable duplicate detection method. We have developed a prototype andevaluated it on a data set of people in foaf.sk. Research, that we have conducted so far, showsthat a supervised machine learning approach can be used for simple duplicate detection samples, asprecision-recall metrics are reasonably high. However, further development and experiments needto be done to find out if it is suitable for more complicated samples. Moreover, if our method yieldsgood results in further experiments and turns out to be better than existing solutions, it can be easilyturned into a framework. Such framework could clean any database, provided that user implementsa few database-specific functions.
Our results have clearly shown, that we need a new sample set with our own labels (createdmanuallu) instead of baseline foaf.sk labels. Besides name and address attributes, it would bereasonable to include relations to companies for better results. Name normalization, i.e. omittingdegrees and treating them individually, helped a great deal and we could do the same for addresses.We could also add more features like distance of addresses in terms of their actual coordinates.Finally some performance optimizations could be done for faster learning (Vowpal Wabbit [10])and feature computation (Levenshtein automaton [11], min-hashing) that will be neccessery in areal-world deployment, where larger databases need to be refined.
Acknowledgement: This work was partially supported by the Scientific Grant Agency of SlovakRepublic, grant No. VG1/0971/11.
References
[1] Google Refine Wiki: ClusteringInDepth. http://code.google.com/p/google-refine/wiki/ClusteringInDepth, [Online; accessed February 13th, 2012].
[2] Bilenko, M., Mooney, R.: Employing trainable string similarity metrics for informationintegration. In: Proceedings of the IJCAI-2003 Workshop on Information Integration on theWeb, 2003, pp. 67–72.
[3] Chaudhuri, S., Ganti, V., Kaushik, R.: A Primitive Operator for Similarity Joins in DataCleaning. 22nd International Conference on Data Engineering (ICDE’06), 2006, pp. 5–5.
[4] Cohen, W.W., Ravikumar, P., Fienberg, S.E.: A Comparison of String Distance Metrics forName-Matching Tasks. Learning, 2003.
[5] Doan, A., Mccann, R.: Building Data Integration Systems: A Mass Collaboration Approach.Science, 2000.
[6] Fellegi, I.P., Sunter, A.B.: Record Linkage, 1969.[7] Hernandez, M.A., Stolfo, S.J.: Real-world data is dirty: Data cleansing and the merge/purge
problem. Data mining and knowledge discovery, 1998.[8] Hudec, M.: An Approach to Fuzzy Database Querying, Analysis and Realisation. Analysis.[9] Kondrak, G.: N-gram similarity and distance. String Processing and Information Retrieval,
2005, pp. 115–126.[10] Langford, J., Li, L., Strehl, A.: Vowpal wabbit online learning project (technical report), 2007.[11] N., J.: Damn Cool Algorithms: Levenshtein Automata. http://blog.notdot.net/2010/07/Damn-
Cool-Algorithms-Levenshtein-Automata, [Online; accessed February 13th, 2012].[12] Touzi, A.G., Ali, M., Hassine, B.: New Architecture of Fuzzy Database Management Systems.
Architecture, 2009, vol. 6, no. 3, pp. 213–221.
Dodatok B
Poster na IIT.SRC
Pri prezentacii vysledkov na IIT.SRC pomahal putavy poster.
71
72
Dodatok C
Ocenenie IIT.SRC
Prıspevok bol na IIT.SRC oceneny profesijnou organizaciou ACM.
75
76
Dodatok D
Technicka dokumentacia
Tato prırucka je urcena kazdemu, kto by chcel pouzit’ alebo d’alej vyvıjat’ st’ahovacı fra-
mework Datafine.
D.1 Instalacia
System Datafine ma nasledujuce poziadavky.
• Ruby 1.8 a RubyGems
• Databazovy system PostgreSQL
• Server datovych struktur Redis
• Dostatok miesta na disku pre ukladanie stiahnutych dat v originalnej podobe (aspon
1 GB).
Uvadzam postup pre instalaciu na operacnom systeme GNU/Linux. Postup pre ostatne
operacne systemy je podobny. Na vykonanie nasledujucich krokov na vacsine systemov
netreba prava administratora (root).
1. Pomocou nastroja RVM nainstalujeme Ruby 1.8 a RubyGems. Postupujeme podl’a
instrukciı na webovej stranke RVM.
https://rvm.io
2. Nainstalujeme gem bundler.
$ gem i n s t a l l bundler
3. V adresari s datafine nainstalujeme gemy potrebne pre aplikaciu.
$ bundle i n s t a l l
79
4. V config/database.yml nastavıme prıstup k databaze. Pouzıvatel’, s ktorym sa chceme
k databaze prihlasovat’ musı v databaze existovat’ a mat’ nastavene heslo, ktore sme
zadali do konfiguracneho suboru.
5. Ak databaza este neexistuje, vytvorıme ju.
$ rake db : c r e a t e
6. Vykoname migraciu databazy pre vytvorenie tabuliek.
$ rake db : migrate
7. Spustıme testy pre kontrolu, ci je vsetko v poriadku.
$ r spec spec /
Datafine by v tomto okamihu mal byt’ pripraveny na pouzıvanie. Ak Datafine potrebujete
iba na stiahnutie dat, stacı precıtat’ sekciu St’ahovanie dat. Pokial’ chcete pokracovat’ vo
vyvoji Datafine (pridavat’ st’ahovace pre d’alsie webove zdroje alebo vylepsovat’ aktualne
st’ahovace), precıtajte si aj d’alsie sekcie.
D.2 St’ahovanie dat
Vsetky prıkazy spust’ame v adresari Datafine.
1. Pred st’ahovanım dat je potrebne spustit’ rad sprav. Mozeme ich spustit’ viac (od-
porucame aspon 2 pre kazdy zdroj, ktory planujeme paralelne st’ahovat’). Pri QU-
EUE=* moze byt’ namiesto * nazov radu, kde sa ulohy maju spust’at’ (kazdy webovy
zdroj ma v Datafine vlastny rad), s * sa budu spust’at’ vsetky ulohy. Vo vypisoch
prıkazu by sme mali vidiet’ spust’ane ulohy (ale az po kroku 2).
$ rake environment resque : work QUEUE=∗ VERBOSE=1
2. Nasledne mozeme pouzit’ ulohy rake pre spustenie st’ahovacov dat. Niektore data je
vhodne st’ahovat’ denne a niektore mesacne. Podl’a toho spustıme prıslusnu ulohu
(na serveri mozeme nastavit’ jej periodicke spust’anie pomocou sluzby cron)
$ rake d a t a f i n e : d a i l y
alebo
$ rake d a t a f i n e : monthly
Niektore st’ahovace neboli zaradene do pravidelneho spust’ania uloh. Tie mozeme
spustit’ rucne v konzole Ruby on Rails alebo prıkazom rails runner s plnym nazvom
triedy prıslusneho st’ahovaca. Ak st’ahovac vyzaduje parametre (naprıklad cıslo strany,
od ktorej treba zacat’ st’ahovat’), doplnıme aj tie.
80
$ r a i l s runner ’ Resque . enqueue ( Nic : : Jobs : : DownloadDomainList ) ’
St’ahovace ukoncia svoju cinnost’, ked’ narazia na koniec dostupnych dat (naprıklad viac
ID bude pri skusanı neplatnych). K datam mozete pristupovat’ priamo cez databazu alebo
mozeme vytvorit’ vlastnu aplikaciu, ktora ich bude cez databazu Datafine vyuzıvat’. Vsetky
stiahnute subory su ukladane v povodnej podobe do adresara data/.
D.3 Pridanie st’ahovaca
Na prıklade si ukazeme pridanie st’ahovaca a parsera pre novy zdroj. Nas zdroj sa bude
volat’ D a bude obsahovat’ jeden model Dummy.
1. Vytvorıme model D::Dummy.
$ r a i l s g model D : :Dummy name : s t r i n g address : s t r i n g
2. Vytvorıme st’ahovac D::Jobs::DownloadDummy v adresari app/models/d/jobs/. Nazov
suboru bude download dummy.rb.
module D
module Jobs
c l a s s DownloadDummy
extend Dataf ine : : Jobs : : Download
@queue = : d
de f s e l f . perform ( id = 1)
path = ”dummy. d/#{ id }/ page . html”
begin
html = download (” http ://dummy. d/#{ id }” , path ,
: bucke t i z e => f a l s e )
D : : Par se r s : : DummyParser . parse ( html )
Resque . enqueue (D : :Dummy: : DownloadDummy , id + 1)
r e s cue
l o g g e r . i n f o ”End o f dummies”
end
end
end
end
end
Trieda D::Jobs::DownloadDummy pridava modul Datafine::Jobs::Download, ktory
obsahuje pomocne metody pre st’ahovace Datafine. Clenska premenna @queue ob-
sahuje nazov radu, do ktoreho bude uloha zaradena. Metoda triedy perform (v tomto
81
prıpade obsahuje argument id) bude zavolana pri spustenı ulohy v rade. Pomocnou
metodou download je stiahnuta stranka http://dummy.d/<id> a je ulozena do path
v adresari data/. Prıkazom Resque.enqueue je zaradena do radu d’alsia uloha, ktorej
je ako argument predane nasledujuce id.
3. Vytvorıme parser D::Parsers::DummyParser v adresari app/models/d/parsers/. Nazov
suboru bude dummy parser.rb.
module D
module Parse r s
c l a s s DummyParser
de f s e l f . parse ( html )
doc = Nokog i r i : :HTML( html )
dummy = Dummy. new
dummy. name = doc . c s s (”#name”)
dummy. address = doc . c s s (”# address ”)
dummy. save
end
end
end
end
Parser pouzije Nokogiri kniznicu na zıskanie obsahu tagov #name a #address z html
dokumentu. Zıskane hodnoty pomocou Dummy modelu ulozı do databazy.
Po zaradenı ulohy D::Jobs::DownloadDummy do radu zacne st’ahovanie. Pre periodicke
spust’anie noveho st’ahovaca treba pridat’ prıkaz pre jeho spustenie do rake ulohy v li-
b/tasks/datafine.rake.
D.3.1 Testy
V tutoriali som kvoli strucnosti vynechal pısanie testov. S vygenerovanım modelu v kroku
1 sa automaticky vytvoril test pre model v spec/models/d/dummy spec.rb. Do tohto
suboru pridame testovacie prıpady v prıpade, ked’ v modeli pribudnu nove metody alebo
ina funkcnost’, ktoru by bolo vhodne testovat’. Pred st’ahovacom a parserom by sme mali
najskor vytvorit’ test v spec/models/d/jobs/download dummy spec.rb resp. spec/model-
s/d/parsers/dummy parser spec.rb a pısat’ st’ahovac aj parser prıstupom TDD. Pre viac
inspiracie pozrite implementaciu existujuceho st’ahovaca, naprıklad CRZ.
D.4 Pomocne API pre st’ahovace
Metody pomocneho API pre st’ahovace Datafine sa nachadzaju v lib/.
82
D.4.1 Modul Datafine
get path(path, options = {})
Metoda vrati absolutnu cestu pre subor s cestou path v datovom ulozisku. Odporucana
forma path je /<identifikator zdroja>/<identifikator entity>/<nazov suboru>.html (prıklad
je D::Jobs::DownloadDummy v predchadzajucej kapitole). V prıpade, ze vysledna cesta
obsahuje cıselne komponenty, je rozdelena do adresarov podl’a trojıc cısel. Taketo ukla-
danie je uzitocne, pretoze vel’ke mnozstvo suborov v jednom adresari moze byt’ problem
pre suborovy system. Hash options moze obsahovat’ kl’uc :bucketize => false, ktory toto
spravanie vypne.
D.4.2 Modul Datafine::Jobs::Download
download(url, name = nil, options = {})
Metoda stiahne zdroj s adresou url a stiahnute data zapıse do suboru s cestou v datovom
ulozisku name. Hash options moze obsahovat’ kl’uc :headers s hashom HTTP hlaviciek,
ktore maju byt’ odoslane na server. Ostatne prvky options su predane get path(), ktoru
metoda pouzıva na zıskanie absolutnej cesty name. Metoda vrati ret’azec so stiahnutymi
datami.
download with options(url, data, name = nil, options = {})
Metoda stiahne zdroj s adresou url metodou POST a stiahnute data zapıse do suboru
s cestou v datovom ulozisku name. Hash data obsahuje data, ktore maju byt’ poslane
na stranu servera. Hash options je predany get path(), ktoru metoda pouzıva na zıskanie
absolutnej cesty name. Metoda vrati ret’azec so stiahnutymi datami.
83
84
Dodatok E
Obsah CD
Prilozene CD obsahuje adresare s 2 projektmi. V korenovom adresari CD a v kazdom
z projektovych adresarov sa nachadza subor README.
• /datafine
St’ahovacı framework Datafine.
• /trainable
Vyhodnocovacı framework.
85