Efektivní podobnostní operace pro integraci dat Michal Fiedler.

Slides:



Advertisements
Podobné prezentace
OZD: Hašování RNDr. Michal Žemlička.
Advertisements

Aplikační a programové vybavení
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Aplikační a programové vybavení
10. Dynamické datové struktury
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Semestrální práce KIV/PT Martin Kales Hana Hůlová.
Fakulta elektrotechniky a informatiky
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
C# pro začátečníky Mgr. Jaromír Osčádal
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Programování v Pascalu Přednáška 7
ADT Strom.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Databáze Jiří Kalousek.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Hana Kotinová Struktura a cíl práce Metody předzpracování dat Systémy předzpracování dat Historie vývoje DPT Jak program pracuje Budoucnost.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
D ATOVÉ MODELY Ing. Jiří Šilhán. D ATABÁZOVÉ SYSTÉMY Patří vedle textových editorů a tabulkových kalkulátorů k nejrozšířenějším představitelům programového.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
DalšíPředchozíTÉMA: M. K a d l e c o v á M. K a d l e c o v á.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
Algoritmy a programovací techniky
Objektové programování
Relační databáze.
Algoritmy vyhledávání a řazení
Informatika pro ekonomy II přednáška 10
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
JavaScript Podmínky, cykly a pole.
IGrid index Roman Krejčík. Obsah Motivace Prokletí dimenze Míry podobnosti IGrid, IGrid+ Experimentální porovnání.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Dokumentace informačního systému
Ukládání heterogenních dat pomocí rozvolněných objektů Michal Žemlička.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Databázové modelování
Aplikační a programové vybavení
Rozpoznávání v řetězcích
Databázové systémy Informatika pro ekonomy, př. 18.
Databáze velké množství dat pevně dané struktury
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
Databázové systémy Přednáška č. 5 Datové typy a Fyzická organizace dat.
Vyhledávání v multimediálních databázích Tomáš Skopal KSI MFF UK 4. Mapování a redukce dimenze 1. část – úvod + mapování vektorových sad.
REŠERŠNÍ STRATEGIE Mgr. Anna Vitásková.
DBXplorer Systém pro vyhledávání nad relačními databází podle klíčových slov. zpracovala Margarita Vishnyakova.
Perzistence XML dat Kamil Toman
Databáze MS ACCESS 2010.
Filtrování záznamů Filtr podle výběru Filtr podle formuláře Rozšířený filtr Symboly, výrazy Dotazy.
Rozdíl mezi databází a tabulkou Rozdíl mezi Accessem a Excelem
Úvod do databází zkrácená verze.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Databáze MS ACCESS 2010.
Ukládání dat biodiverzity a jejich vizualizace
Úvod do databázových systémů
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Definiční obor a obor hodnot
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Optimalizace SQL dotazů
Transkript prezentace:

Efektivní podobnostní operace pro integraci dat Michal Fiedler

2 Zdroj Referát podle článku “Efficient similarity-based operations for data integration” Autoři E. Schallehn, K. Sattler, G. Saake Článek vyšel v časopise Data & Knowledge Engineering, číslo 48

Úvod Kapitola 1.

Michal Fiedler 4 Úvod Stoupá poptávka po integraci dat – Shromažďování dat z různých veřejných zdrojů (Internet) – Integrace podnikových dat pro podporu rozhodování v datových skladech – Příprava dat pro data-mining

Michal Fiedler 5 Úkol Významným úkolem je poradit si s kolizemi a nesrovnalostmi v datech Při shromažďování překrývajících se dat z různých zdrojů kdy chceme odstraňovat duplikáty Při spojování souvisejících dat z různých zdrojů

Michal Fiedler 6 Problém Jen výjimečně můžeme při těchto operacích spoléhat na kvalitu dat, mezi atributy odpovídajících objektů nemusí platit rovnost! Nesrovnalosti pramení z chyb při vkládání dat nebo například z různé informovanosti autorů

Michal Fiedler 7 Implementace Implementace operací se proto liší od tradičních způsobů Zpravidla musíme zpracovat velké množství dat => velmi záleží na efektivitě

Michal Fiedler 8 Odstranění duplikátů Odstranění duplikátů je běžná podúloha čištění dat Při použití SQL se nabízí použití operátoru group by na klíčové atributy spolu s použitím agregačních funkcí pro zpracování lišících se neklíčových atributů Tento postup je možný jen při rovnosti klíčových atributů. Pokud data nemají jednoznačný klíč, nebo jsou v klíčových atributech nesrovnalosti, nebudou záznamy odpovídající stejnému reálnému objektu sloučeny

Michal Fiedler 9 Spojování Pro spojování SQL nabízí join (podle rovnosti) Pokud není podle čeho spojovat, jsme opět v koncích

Michal Fiedler 10 Motivace ArtistTitle Ilja RepinBarge Haulers on the Volga Vincent vanGoghDrawbridge with Carriage Albrecht DurerA Young Hare El GrecoView of Toledo … NameBirthDeath… Albrecht Dürer Vincent van Gogh Ilya Repin Dominico Theotocopuli …

Michal Fiedler 11 Motivace ArtistTitle Ilja RepinBarge Haulers on the Volga Vincent vanGoghDrawbridge with Carriage Albrecht DurerA Young Hare El GrecoView of Toledo … NameBirthDeath… Albrecht Dürer Vincent van Gogh Ilya Repin Dominico Theotocopuli … TitleArtistBirthDeath… Barge Haulers on the VolgaIlya Repin Drawbridge with CarriageVincent van Gogh A Young HareAlbrecht Dürer View of ToledoEl Greco …

Michal Fiedler 12 Motivace TitleArtistYear ResurrectionEl Greco1579 ResurrectionDieric Bouts1460 … The Holy TrinityEl Greco1577 The Holy TrinityEl Greco16th cen. … Self-Portrait at 28Albrecht Dürer1500 Self-Portrait at 28Albrecht Dürer Self Portrait at 28Albrecht Dürer1500 … Fifteen SunflowersVincent van Gogh1888 Fifteen SunflowersVincent van Gogh1889 … TitleArtistYear ResurrectionEl Greco1579 ResurrectionDieric Bouts1460 … The Holy TrinityEl Greco1577 … Self-Portrait at 28Albrecht Dürer1500 … Fifteen SunflowersVincent van Gogh1888 Fifteen SunflowersVincent van Gogh1889 …

Michal Fiedler 13 Nástin řešení Navrhneme podobnostní operátory pro spojení a seskupování, jejich sémantiku i implementaci Použijeme podobnostní predikáty Musíme se proto vypořádat s odlišnými vlastnostmi (od rovnosti), zejména s netranzitivností Realizace rozšířením jazyka nebo extensions

Metody měření podobnosti Kapitola 2.

Michal Fiedler 15 Co je podobnost? Existuje mnoho způsobů, jak popsat podobnost objektů speciálního typu Zde chceme vytvořit široce použitelný aparát Definujeme podobnost pro běžné a jednoduché datové typy a způsob, jak jejich kombinací popsat podobnost komplexních objektů

Michal Fiedler 16 Míra podobnosti x, y  U míra podobnosti: SIM(x, y) → [0, 1] vzdálenost: d(x, y) → R Vzdálenost lze převést na míru podobnosti, např. – max je největší vzdálenost mezi objekty z U

Michal Fiedler 17 Predikát podobnosti Binární predikát SIM(x, y)… x je podobné y Lze odvodit z míry podobnosti (resp. z vzdálenosti) nastavením meze t  [0,1] (k  R): SIM(x, y) ↔ SIM(x, y) ≥ t resp. SIM(x, y) ↔ d(x, y) ≤ k Zpravidla reflexivní, symetrický, netranzitivní

Michal Fiedler 18 Metrika Metrika d v metrickém prostoru S –  x,y  S:d(x, y) = 0 ↔ x = y –  x,y  S:d(x, y) = d(y, x) –  x,y,z  S:d(x, y) ≤ d(x, z) + d(z, y) např. Euklidovská metrika

Michal Fiedler 19 Metrika Díky symetrii a trojúhelníkové nerovnosti lze metriky účinně používat Data porovnávaná metrikou musí mít formát souřadnic v metrickém prostoru, nebo na ně být převeditelná Pro efektivitu lze použít vícerozměrné indexy

Michal Fiedler 20 Změnová vzdálenost Levenshteinova neboli změnová či editační vzdálenost (edit distance) edist(p, w) pro určení vzdálenosti řetězců Výchozí řetězec p je posloupností povolených znakových operací (vložení, vymazání, záměna), které mají určenou cenu, převeden na cílový řetězec w. edist(p, w) je potom minimální cena takové posloupnosti operací.

Michal Fiedler 21 Změnová vzdálenost - příklad Nastavme cenu zmíněných operací na 1 Najdeme edist(“edna“, “eden“): Nejkratší posloupnosti jsou: – {záměna(#3, “e”), záměna(#4, “n”)} – {vložení(#3, “e”), vymazání(#5)} Tedy edist(“edna“, “eden“) = 2

Michal Fiedler 22 Změnová vzdálenost edist je metrika, což zaručuje možnost efektivní implementace Možno odvodit další vzdálenosti, např: – Přidáním operace prohození – Jemnějším rozlišením operací

Michal Fiedler 23 Další vzdálenosti řetězců Hammingova vzdálenost – povoluje jen výměnu Prokládaná vzdálenost (episode distance) – povoluje pouze vložení Délka nejdelší společné podposloupnosti – povoluje vložení a vymazání …

Michal Fiedler 24 Vzdálenosti pro další typy dat Obdobu změnové vzdálenosti lze použít např. pro záznam genomu, pro časoprostorová data, pro stromy a obecně pro grafy Pro číselná data euklidovská metrika Pro 1-rozměrná odpovídá rozdílu a lze použít stávající indexovací metody

Michal Fiedler 25 Vzdálenosti pro další typy dat Pro data zaznamenávající kategorii lze definovat míru podobnosti mapováním na: – Uspořádanou množinu – Metrický prostor – Graf reprezentující kategorie a vztahy mezi nimi

Michal Fiedler 26 Složené podobnostní podmínky Nestačí porovnávat atomická nebo homogenní data, chceme zjišťovat podobnost složitějších objektů Užitím (různých) predikátů podobnosti na jednotlivé atributy a spojením logickými spojkami dostaneme složenou podobnostní podmínku

Michal Fiedler 27 Specializované míry podobnosti Data mohou mít speciální sémantiku, na základě její znalosti lze definovat specializovanou míru podobnosti (application-specific similarity measure) Např. pro jména osob můžeme použít změnovou vzdálenost, lepší je ale zohlednit, že “Petr Malý“ nejspíš identifikuje stejnou osobu jako “Malý, Petr”, zatímco “Petr Milý” je nejspíš někdo jiný

Michal Fiedler 28 Specializované míry podobnosti Takové míry lze implementovat jako uživatelsky definované funkce, narážíme ovšem na problémy: – Efektivita: Autor funkce jen těžko využije indexů. – Vlastnosti: Pokud míra nebude symetrická, ztíží to vytvoření odpovídajícího podobnostního operátoru. Takové míry zde nebudeme uvažovat

Michal Fiedler 29 Převod podobnosti na ekvivalenci Existující operátory relační algebry jsou založeny na relaci ekvivalence, relace podobnosti však není tranzitivní Z relace podobnosti SIM proto odvodíme ekvivalenci SIM EQ Jednoduchá (tranzitivní) strategie: vytvořením tranzitivního uzávěru: SIM EQ = SIM + Přísná strategie: V každé třídě ekvivalence vyžadujeme podobnost po dvou

Michal Fiedler 30 Převod podobnosti na ekvivalenci Příklad převodu na ekvivalenci tranzitivní (b) a přísnou (c) strategií Př: řetězce “DBMS”, “ODBMS”, “OODBMS”, použijeme změnovou vzdálenost s mezí 1 Při strategii užívající tranzitivní uzávěr jsou podobné Při přísné strategii ne – edist(“DBMS”, “OODBMS”) = 2 > 1

Sémantika podobnostních operátorů Kapitola 3.

Michal Fiedler 32 Rozšiřujeme relační algebru Připomeneme značení: – R relace nad schématem S = {A 1,…,A m } – t R  R záznam z R – t R (A i ) hodnota atributu A i záznamu t R

Michal Fiedler 33 Podobnostní podmínka Podobnostní podmínka je konjunkce predikátů značí atomický predikát rovnosti (eq) nebo podobnosti (edist k, diff k,…), kde: – eq(A i ) značí rovnost atributu A i : t j (A i ) = t l (A i ) – edist k (A i ) značí změnovou vzdálenost s mezí k: edist(t j (A i ), t l (A i )) ≤ k – diff k (A i ) značí číselnou podobnost: |t j (A i )- t l (A i )| ≤ k

Michal Fiedler 34 Podobnostní spojení Spojení relací R 1 a R 2 přes podobnostní podmínku definujeme

Michal Fiedler 35 Podobnostní seskupení Tradiční: F [ ](R) Podobnostní: Γ [ ](R) Lze popsat jako složení operací rozdělení a agregace Operátor rozdělení vytvoří množinu skupin, kde prvky každé skupiny jsou si tranzitivně podobné podle podobnostní podmínky a nenastává podobnost mezi prvky různých skupin. Operátor agregace vytvoří z každé skupiny jeden záznam a vypočítá hodnotu agregačních funkcí z hodnot atributů záznamů v této skupině a vrátí je spolu s hodnotami atributů, podle nichž se spojovalo přes rovnost.

Michal Fiedler 36 Podobnostní seskupení A1A1 A2A A 1 avgA 2 min A1A1 A2A2 G1G G2G

Implementace a optimalizace Kapitola 4.

Michal Fiedler 38 Podobnostní predikát pro řetězce Zaměříme se na změnovou vzdálenost Jako vyhledávací strukturu použijeme trie, kam kromě hodnot řetězců uložíme také id odpovídajících záznamů Pro zrychlení výpočtu vzdálenosti použijeme metodu dynamického programování Máme zadanou mez a hledaný řetězec Hledání nevzdáváme hned po první neshodě, ale až když podobnost klesne pod mez. Při procházení trie tak odřezáváme větve, kde jsou jen nepodobné řetězce.

Michal Fiedler 39 Algoritmus 1 – hledání podobného řetězce Globals Threshold k Pattern string p, target string w Procedure approxSearch(TrieNode n, int level) begin for all child nodes c of n w[level] = character z of c// znak určující c if c is a leaf node and edist (w, p, level) < k output tuple-ids for node c if edist (w, p, level) > k continue// ořezání approxSearch (c, level + 1) end for end

Michal Fiedler 40 Podobnostní spojení Jako u běžného spojení se snažíme co nejvíce používat index, abychom snížili počet provedených porovnání. Zde ovšem pro různé podobnostní predikáty použijeme více typů indexů: – Pro predikát rovnosti běžné indexové struktury (stromy, hašovací tabulky) – Pro číselnou podobnost diff k můžeme po skupinách ukládat největší a nejmenší hodnoty – Pro podobnost stromů podle změnové vzdálenosti edist k můžeme použít trie – Pro další podobnostní predikáty můžeme použít odpovídající indexy, např vícerozměrné stromy

Michal Fiedler 41 Podobnostní spojení Provedeme spojení relací R 1 a R 2 Předpokládáme existenci indexů nad R 2 Procházíme záznamy R 1 a vyhovující záznamy ukládáme do tabulky

Michal Fiedler 42 Algoritmus 2 – zpracování záznamu při podobnostním spojení Globals Conjunctive join condition c = p 1 and … and p n Set of indices I pi, 1≤ i ≤ n on join relation R 2 for index supported predicates Mapping table tid_tid for matching tuples Procedure processTuple(Tuple t) begin for all index supported equality predicates p i set of tuples s conj = indexScan(I pi, t(A pi )) end for for all index supported similarity predicates p i s conj = s conj ∩ indexScan(I pi, t(A pi ), k pi ) end for …

Michal Fiedler 43 Algoritmus 2 – zpracování záznamu při podobnostním spojení … for all tuples t l  s conj boolean similar = true for all non-index supported predicates p i similar = similar and evaluate(p i, k pi, t(A pi ), tl(A pi ) if not similar break end for if similar insert (t, t l ) in tid_tid end for end

Michal Fiedler 44 Podobnostní seskupení Zde narážíme na netranzitivitu podobnostních predikátů Naivní algoritmus: – Procházíme postupně záznamy z vstupní množiny a zjišťujeme podobnost se všemi již zpracovanými záznamy. Dostaneme tak množinu skupin, do kterých patří podobné záznamy. – Pokud je množina prázdná, umístíme záznam do nové skupiny, jinak sloučíme všechny nalezené skupiny (jednáme podle strategie užívající tranzitivní uzávěr) – Složitost O(n 2 )

Michal Fiedler 45 Algoritmus 3 – Zpracování záznamu při podobnostním seskupení Globals Conjunctive similarity condition c = p 1 and … and p n Set of indices I pi, 1≤ i ≤ n for index supported predicates Mapping table gid_tid assigning tuples to groups Procedure processTuple(Tuple t) begin set of groups r conj = all groups from gid_tid for all index supported equality predicates p i set of tuples s = indexScan(I pi, t(A pi )) r conj = r conj ∩ gid_tid(s) end for for all index supported similarity predicates p i set of tuples s = indexScan(I pi, t(A pi ), k pi ) r conj = r conj ∩ gid_tid(s) end for …

Michal Fiedler 46 Algoritmus 3 – Zpracování záznamu při podobnostním seskupení … for all groups g j  r conj boolean member = false for all tuples t l  g j boolean similar = true for all non-index supported predicates p i similar = similar and evaluate(p i, k pi, t(A pi ), tl(A pi ) if not similar break end for member = member or similar if member break end for if not member r conj = r conj – g j end for if r conj = 0 group g = new group in gid_tid else group g = merge all r conj in gid_tid insert t in g end

Michal Fiedler 47 Podobnostní seskupení Algoritmus realizuje jen seskupovací část celé operace. Následující projekce a agregace se již shodují s běžným seskupením. Udržováním informace o počtu výskytů můžeme ještě výhodněji seřadit jednotlivá vyhledávání. Tím se efektivita ještě zvýší.

Michal Fiedler 48 Pro plnohodnotné začlenění nadefinovaných podobnostních operací je třeba přidat do DB stroje odpovídající plánovací operátory. Potom může optimalizátor vybrat plán, který podobnostní operátory využívá. Například pro dotaz select * from r1, r2 where edist(r1.title, r2.title) < 2 je žádoucí provést operaci r1 r2, nikoliv kartézský součin následovaný selekcí Plánovací operátory

Michal Fiedler 49 Rozšíření jazyka Můžeme také rozšířit jazyk SQL o odpovídající operátory, např: select * from r1 similarity join r2 on edist(r1.title, r2.title) threshold 0.9 select * from r1 group by similarity on edist(title) threshold 0.9

Michal Fiedler 50 Funkce vracející tabulku Implementace nativních plánovacích operátorů vyžaduje ovšem výrazné zásahy do DB stroje, což u komerčních systémů není možné. Musíme proto použít jiné mechanismy. V moderních systémech bývá možnost vytvořit funkce vracející tabulku.

Michal Fiedler 51 Funkce vracející tabulku Definujeme např. funkci sim_join, která na dvou zadaných kurzorech provede ukázaný algoritmus select * from table(sim_join( cursor(select * from data1), cursor(select * from data2), ‘edist(data1.title, data2.title) < 2’ )) Nutnost přesně udávat návratový typ funkce však znamená nepříjemné omezení

Michal Fiedler 52 Využití identifikátorů záznamu Možné řešení: funkce bude vracet tabulku obsahující generické identifikátory záznamů (rowid). Pro seskupování tak definujeme funkci sim_grouping, která vrací tabulku typu gid_tid_table: create type gid_tid_t as object gid int, tid int; create type gid_tid_table is table of gid_tid_t; select raw_data.* from table (sim_grouping( cursor(select rowid, * from raw_data), ‘edist(title) < 2’) ) as gt, rawdata where raw_data.tid = gt.tid group by gt.tid

Vyhodnocení efektivity Kapitola 5.

Michal Fiedler 54 Testování podobnostního seskupování Vzorek náhodných dat s přidanými pozměněnými záznamy Měření efektivity pro různé hodnoty meze. Pro rostoucí mez se blíží k O(n 2 ), ale nepřekračuje ji, díky použitému dynamickému programování

Michal Fiedler 55 Výsledky podobnostního seskupování pro různé hodnoty meze Seskupování podle rovnosti a podle změnové vzdálenosti s mezí 1 Seskupování s různými hodnotami meze a srovnání s naivním algoritmem „každý s každým“

Michal Fiedler 56 Výsledky podobnostního seskupování pro různý podíl duplikátů Měření výkonnosti na vzorcích s různým podílem duplikátů, Měřeno pro mez k = 2 Podobnostní operátor se vyplatí, pokud vzorek opravdu vykazuje podobnost.

Michal Fiedler 57 Výsledky podobnostního spojení Výsledky pro podobnostní spojení s různou hodnotou meze. V závislosti na mezi opět roste od O(n) k O(n 2 )

Uplatnění Kapitola 6.

Michal Fiedler 59 Uplatnění podobnostních operací v praxi Ukážeme si příklady použití na projektu shromažďování informací o uloupených uměleckých dílech Data přicházejí z různých zdrojů i z různých kultur, dochází k duplikaci. Podobnostní operace jsou tedy namístě

Michal Fiedler 60 Nalezení duplikátů Při detekci duplikátů použijeme podobnostní seskupení podle titulu (změnová vzdálenost) a autora (speciální míra podobnosti uvažující různé zápisy jména) select … from data group by similarity on sim_person(artist) and sim_edist(title) threshold 0.8

Michal Fiedler 61 Agregace Je třeba určit, jaké hodnoty atributů, podle nichž se neseskupuje, odpovídají seskupeným záznamům Vestavěné agregační funkce v tom nepomohou Možno použít uživatelské agregační funkce (UDA). Ty však mají přístup jen k hodnotám agregovaného atributu. Lepší výsledky dostaneme, pokud máme možnost nahlédnout do hodnot ostatních atributů, které mohou udávat například spolehlivost uvedených údajů pro daný záznam.

Michal Fiedler 62 Nové agregační funkce Proto definujeme sadu pokročilých agregačních funkcí, mezi nimi: – pick_where_eq(v, col) vrátí hodnotu atributu col prvního záznamu, který splní podmínku v – pick_where_min(v, col) vrátí hodnotu col záznamu, který má nejnižší hodnotu v – pick_where_max(v, col) vrátí hodnotu col záznamu, který má hodnotu v nejvyšší – to_array(col) vytvoří z hodnot col pole

Michal Fiedler 63 Nové agregační funkce Za použití těchto funkcí můžeme data slučovat například následujícími strategiemi: Vybíráme nejnovější záznam, datum je uloženo v m_date: select max(m_date), pick_where_max(m_date, col),… from data group by … Data jsou z různých zdrojů (uloženo v src), v případě kolize preferujeme zdroj ps select pick_where_eq(src = ‘ps’, col),… … Pokud dojde ke kolizi, předáme seznam dat uživateli, aby rozhodl select to_array(col),… …

Michal Fiedler 64 Zvolení vhodného predikátu Je třeba vybrat míru podobnosti a hodnotu meze tak, aby výpočet byl přesný i rychlý. Informace o distribuci vzdálenosti umožňuje určit vhodnou hodnotu meze. Někdy (např. pro řetězce pevné délky) je to dostačující informace Jindy (např. pro řetězce proměnlivé délky) takový výběr přináší chybně detekované duplikáty Zde je vhodné zvolit jinou míru podobnosti. Pro řetězce různé délky je vhodná relativní změnová vzdálenost

Michal Fiedler 65 Distribuce vzdálenosti a relativní vzdálenosti Distribuce změnové vzdálenosti na vzorku reálných dat Distribuce relativní změnové vzdálenosti Nabízí se zvolit hodnotu meze 0.8, analýza výsledku takto provedeného seskupení tomu dává za pravdu.

Shrnutí Kapitola 7.

Michal Fiedler 67 Shrnutí Předvedli jsme si databázové nástroje pro nalézání souvisejících dat a detekci duplikátů na základě uživatelem zadaných kritérií podobnosti. Lze je uplatnit především při integraci heterogenních dat, kde lze očekávat výskyt více záznamů o stejných objektech. Zároveň zde hrozí výskyt nepřesností.

Michal Fiedler 68 Shrnutí Navržené operace podobnostního spojení a seskupování spolu s pokročilými agregačními funkcemi jsme navrhli jako rozšíření relační algebry a předvedli jsme jejich efektivní implementaci.

Michal Fiedler 69 Prostor pro vylepšení Volba vhodného kritéria podobnosti Volba odpovídající indexovací metody Lepší začlenění operátorů do jazyka a do DB strojů

KONEC Děkuji za pozornost