1,08 MB - Tobias Lindner

Werbung
SEMINARARBEIT
Vergleich der Levenshtein-Distanz und des
Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des
Forschungsprojekts MPI
(Massively Adhoc Processing in the Internet)
Aktuelle Forschungsprojekte der
Wirtschaftsinformatik
vorgelegt von
Tobias Lindner
www.tobiaslindner.eu
München, den 31. März 2015
Hochschule für angewandte Wissenschaften München
Fakultät für Informatik und Mathematik
Masterstudiengang Wirtschaftsinformatik
Erstprüfer:
Betreuer:
Prof. Dr. Peter Mandl
Dr. Nikolai Bauer
Alexander Döschl
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Inhaltsverzeichnis
Inhaltsverzeichnis
1 EINFÜHRUNG.......................................................................................................................... 1
1.1
1.2
1.3
1.4
EINLEITUNG UND MOTIVATION.................................................................................................... 1
DUPLIKATE UND DUPLIKATERKENNUNG ......................................................................................... 1
ERKENNUNGS- UND KONSOLIDIERUNGSPROZESS .............................................................................. 2
KLASSIFIZIERUNG VON DUPLIKATERKENNUNGSALGORITHMEN ............................................................. 2
2 AUFGABENSTELLUNG .............................................................................................................. 3
2.1 AUFGABENSTELLUNG UND ZIELSETZUNG ........................................................................................ 3
2.2 IMPLEMENTIERUNGS- UND TESTSZENARIO ...................................................................................... 3
3 LEVENSHTEIN-DISTANZ ........................................................................................................... 4
3.1 FUNKTIONSWEISE ..................................................................................................................... 4
3.2 EINFACHES BEISPIEL .................................................................................................................. 5
3.3 VARIANTEN DER IMPLEMENTIERUNG ............................................................................................. 5
4 BLOOMFILTER ......................................................................................................................... 6
4.1 FUNKTIONSWEISE ..................................................................................................................... 6
4.2 EINFACHES BEISPIEL .................................................................................................................. 7
4.3 VARIANTEN DER IMPLEMENTIERUNG ............................................................................................. 7
5 IMPLEMENTIERUNG ................................................................................................................ 8
5.1 LEVENSHTEIN-DISTANCE ............................................................................................................ 8
5.2 BLOOMFILTER ......................................................................................................................... 9
6 AUSWERTUNG ...................................................................................................................... 10
6.1 INFRASTRUKTUR UND KONFIGURATION ....................................................................................... 10
6.2 AUSFÜHRUNGSZEITEN ............................................................................................................. 10
6.3 TREFFERGENAUIGKEIT ............................................................................................................. 11
7 ZUSAMMENFASSUNG ........................................................................................................... 12
8 LITERATURVERZEICHNIS ........................................................................................................ 13
Seite II
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Einführung
1 Einführung
1.1 Einleitung und Motivation
Die Zusammenführung von Daten aus unterschiedlichen Datenquellen (auch Deduplizierung genannt)
sowie die Bereinigung von inkonsistenten, redundanten, inkorrekten oder falsch formatierten Daten
wird immer häufiger zentraler Bestandteil von wissenschaftlichen und wirtschaftlichen IT-Projekten
(Bethlehem 2008; Schnell et al. 2009; Schnell 2010). Anwendungsszenarien sind beispielsweise die
Korrektur von Eingabefehlern, die Umformatierung von verschiedenen Schreibweisen, das Erkennen
und Auflösen von Abkürzungen, das Finden eines bestimmten Objekts in einer Objektmenge oder der
Abgleich und die anschließende Zusammenführung von zwei bestehenden Datenbeständen. Die
meist automatisch ausgeführten Verfahren, die dabei angewandt werden, werden als
Duplikaterkennung oder Objektidentifizierung bezeichnet.
Auch in der Musikbranche ist die Zuordnung einer musikalischen Nutzung (z.B. in Form von MusikStreaming-Diensten, Downloads, CD-Käufen, etc.) zu eindeutig identifizierbaren musikalischen
Werken und seinen Urhebern ein zentrales Problem. Dabei besteht die Herausforderung zum einen
darin, möglichst effizient und automatisch aus Nutzungen die betroffenen Werke eindeutig zu
identifizieren sowie zum anderen darin, den Datenbestand bekannter Werke laufend zu
aktualisieren. Vor diesem Hintergrund soll das konkrete Matching-Problem kurz näher spezifiziert
werden. Zudem sollen einfache Matching-Algorithmen auf Basis der Levenshtein-Distanz und des
Bloomfilters beispielhaft implementiert sowie deren Vor- und Nachteile, Ausführungsgeschwindigkeiten und Treffergenauigkeiten verglichen werden.
1.2 Duplikate und Duplikaterkennung
Mehrere verschiedene Datensätze, die dasselbe Objekt in der realen Welt repräsentieren, werden als
Dubletten oder Duplikate bezeichnet. Beispiele hierfür sind mehrfach geführte Kunden oder
Lieferanten in einem Managementsystem, verschiedene Repräsentationen eines Materials oder
Produkts oder aufgrund unterschiedlicher Schreibweisen doppelt aufgenommene Adressen in einer
Adressdatenbank. Unter Duplikaterkennung oder Objektidentifizierung werden die verschiedenen
Verfahren verstanden, um diese Duplikate innerhalb eines Datenbestandes zu identifizieren. Die
verschiedenen hierfür angewandten Ähnlichkeitsmaße werden im Kapitel 1.4 Klassifizierung von
Duplikaterkennungsalgorithmen näher erläutert.
Generell muss laut (Apel et al. 2010, S. 166) zwischen zwei Arten von Duplikaten unterschieden
werden: identische Duplikate und nichtidentische Duplikate. Während bei identischen Duplikaten alle
Attribute übereinstimmen, weichen bei nichtidentischen Duplikaten ein oder mehrere Attributwerte
voneinander ab. Da im ersten Fall eine Konsolidierung nicht notwendig ist, ist sowohl die Erkennung
als auch die Bereinigung (einfache Löschung der überzähligen Datensätze ohne Informationsverlust)
trivial. Im zweiten Fall ist der Erkennungs- und Bereinigungsprozess weitaus komplexer, da zum einen
ein einfacher Ist-Gleich-Vergleich über alle Attribute nicht ausreicht und zum anderen die
überzähligen Datensätze nicht einfach gelöscht, sondern aufwändig konsolidiert werden müssen.
Seite 1
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Einführung
1.3 Erkennungs- und Konsolidierungsprozess
Nach (Apel et al. 2010, S. 166) verfolgen alle zur Duplikaterkennung eingesetzten Methoden zwei
Ziele: Effektivität und Effizienz. Zum einen sollte das Ergebnis hochqualitativ sein – die Menge an
richtig gefundenen Duplikaten sollte möglichst hoch sein. Zum anderen muss gleichzeitig die Anzahl
der verwendeten Vergleichsoperationen möglichst klein gehalten werden, um die Laufzeit auch bei
sehr großen Datenmengen niedrig zu halten.
Um den beiden Zielen Effektivität und Effizienz gerecht zu werden, sollte der Prozess laut (Apel et al.
2010, S. 167 ff.) folgende vier Schritte umfassen:
1.
2.
3.
4.
Vorverarbeitung der Daten
Partitionierung der Datensätze
Erkennung von Duplikaten
Konsolidierung zu einem Datensatz
Eine detaillierte Beschreibung der einzelnen Prozessschritte würde den Rahmen dieser Studienarbeit
bei weitem sprengen. Daher wird an dieser Stelle auf die ausführliche Literatur von (Apel et al. 2010)
verwiesen. Der Fokus der vorliegenden Arbeit liegt vielmehr in der Untersuchung bzw. im Vergleich
zweier Algorithmen zur Duplikaterkennung und lässt sich vor allem im 3. Schritt einordnen.
1.4 Klassifizierung von Duplikaterkennungsalgorithmen
Vergleichsfunktionen berücksichtigen neben der Äquivalenz (also der semantischen Gleichheit) auch
die Ähnlichkeit (Grad der lexikalischen und syntaktischen Gleichheit) zweier Datensätze. Diese
Funktionen werden auch als Ähnlichkeitsmetrik bezeichnet und liefern als Ergebnis meistens eine
reelle Zahl zwischen 0 (keine Ähnlichkeit) und 1 (absolute Gleichheit). Meist werden zur Berechnung
der Ähnlichkeitsmetrik mehrere Attribute der zu vergleichenden Datensätze verwendet. Hierbei
muss vor allem auf den Datentyp (unterschiedliche Metriken für Zeichen, Zahlen oder Datumswerte)
sowie die zugrundeliegende Sprache (länder- und sprachspezifische Eigenschaften) der einzelnen
Attribute geachtet werden. Nachfolgend werden einige Ansätze zur Ähnlichkeitsbestimmung kurz
dargestellt. Eine detaillierte Übersicht ist in den Vorlesungsunterlagen von Felix Naumann vom
Hasso Plattner Institut der Universität Potsdam (Naumann, S. 28 ff.) zu finden. Für eine ausführliche
Beschreibungen der einzelnen Metriken wird auf (Apel et al. 2010, S. 175 ff.) sowie auf (Naumann,
Herschel 2010, S. 23 ff.) verwiesen.
Phonetische Metriken. Die Ähnlichkeit wird über die Distanz bei der Aussprache des Textes bestimmt
und eignet sich daher vor allem für über das Gehör aufgenommene und anschließend eingegebene
Attribute. Eine Bewertung von Tippfehlern ist jedoch nicht möglich. Weit verbreitet sind der
Soundex-Algorithmus1 und die besser auf die deutsche Sprache abgestimmte Kölner Phonetik2.
Filter-basierte/Hash-basierte Metriken. Bloomfilter3 in den verschiedensten Varianten und
Erweiterungen fallen beispielsweise in diese Kategorie.
Domänenspezifische Metriken. Hierzu zählen Algorithmen zur Ähnlichkeitsbestimmung von
regelbasierten und numerischen Werten sowie Datumswerten.
1
http://de.wikipedia.org/wiki/Soundex, Zugriff: 12.02.2015
http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik, Zugriff: 12.02.2015
3
http://de.wikipedia.org/wiki/Bloomfilter, Zugriff: 12.02.2015
2
Seite 2
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Aufgabenstellung
Distanz-basierte Metriken. Bei Distanz-basierten Metriken erfolgt die Ermittlung der Ähnlichkeit
durch den buchstabenweisen Vergleich zweier Zeichenketten. Da unterschiedliche Wortreihenfolgen
zu sehr unrealistischen Werten führen können, eignen sich diese Metriken vor allem zum Vergleich
von einzelnen Wörtern. Eingesetzt werden häufig die Levenshtein-Distanz4 oder der Jaro-WinklerAlgorithmus5.
Token-basierte Metriken. Token-basierte Metriken sind mit den Distanz-basierten Metriken
verwandt, eignen sich jedoch vor allem für den Vergleich von Zeichenketten mit mehreren Wörtern.
Hierbei wird die Zeichenkette zunächst in einzelne Token aufgeteilt und anschließend verglichen, wie
viele Token die zu vergleichenden Zeichenketten gemeinsam haben. Die Aufteilung kann dabei nach
vorgegebenen Trennzeichen (z.B. Leerzeichen oder Satzzeichen) oder nach festen Intervallen (z.B.
Bildung von Buchstaben-Pärchen) erfolgen. Häufig eingesetzt werden n-Gramme6 bzw. die
Erweiterung q-Gramme.
2 Aufgabenstellung
2.1 Aufgabenstellung und Zielsetzung
Wie bereits in der Einleitung kurz erläutert, besteht die zentrale Herausforderung in der
Musikbranche darin, musikalische Nutzungen möglichst effizient und automatisch eindeutig
identifizierbaren Werken und seinen Urhebern zuzuordnen.
Vor diesem Hintergrund sollen die Ansätze der beiden Matching-Verfahren „Levenshtein-Distanz“
und „Bloomfilter“ zunächst näher untersucht und anschließend prototypisch implementiert werden.
Dadurch sollen sowohl die verschiedenen Funktionsweisen und Einsatzmöglichkeiten als auch
Potenziale und Herausforderungen der Algorithmen kurz aufgezeigt werden.
Darüber hinaus sollen die Messergebnisse bzgl. der Ausführungsgeschwindigkeiten und
Treffergenauigkeiten erste Erkenntnisse darüber liefern, ob die Implementierung eines Bloomfilters
eine sinnvolle Ergänzung oder Alternative für den derzeit von der GEMA eingesetzten LevenshteinDistanz-Algorithmus darstellt.
2.2 Implementierungs- und Testszenario
Um die Ausführungsgeschwindigkeiten und Treffergenauigkeiten der beiden oben genannten
Verfahren vergleichen zu können, werden für diese zwei einfache Prototypen im Oracle-Umfeld als
Funktionen in PL/SQL implementiert und anschließend Messungen bei der Nutzung der Algorithmen
durchgeführt.
Um ein möglichst authentisches Test-Umfeld sowie möglichst aussagekräftige Messergebnisse zu
erhalten, wird zunächst ein kleiner, 10.000 Datensätze umfassender Referenzdatenbestand über
musikalische Werke und seine Urheber aufgebaut. Hierzu werden aus einer originalen DDEX-Datei
von Spotify Premium aus dem Jahre 2013 die notwendigen Informationen (Artisten und Titel des
Liedes) extrahiert und in einer Oracle-Datenbank gespeichert.
4
http://de.wikipedia.org/wiki/Levenshtein-Distanz, Zugriff: 12.02.2015
http://en.wikipedia.org/wiki/Jaro-Winkler_distance, Zugriff: 12.02.2015
6
http://de.wikipedia.org/wiki/N-Gramm, Zugriff: 12.02.2015
5
Seite 3
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Levenshtein-Distanz
Um die Ausführungsgeschwindigkeiten und Treffergenauigkeiten der beiden implementierten
Algorithmen messen zu können, wird zusätzlich ein 100 Datensätze umfassender Testdatenbestand
aufgebaut. Dieser besteht aus 100 zufällig ausgewählten Datensätzen des Referenzdatenbestandes.
Um Abweichungen zu generieren, wird jeder Datensatz des Testdatenbestands manuell um eine oder
mehrere der nachfolgend genannten Eigenschaften verändert:






Einbau von Schreibfehlern/Buchstabendrehern/etc.
Hinzufügen oder Entfernen einzelner Wörter bei Artisten oder Liedtitel
z.B.: „(Live)“, „(Digital Remaster)“ oder „(Radio Edition)“
Vertauschen des Vor- und Nachnamens des Artisten
Vertauschen der Reihenfolge bei mehreren Artisten
Vertauschen von Artist und Liedtitel
z.B.: „ABBA - Dancing Queen“ wird zu „Dancing Queen by ABBA“
Suchen des Liedtitels bei YouTube und Übernahme der Schreibweise des hochgeladenen
Videos (dadurch authentischere Testdaten)
3 Levenshtein-Distanz
3.1 Funktionsweise
Der Levenshtein-Algorithmus berechnet die Mindestanzahl von Einfüge-, Lösch- und ErsetzOperationen, um eine bestimmte gegebene Zeichenkette in eine zweite, ebenfalls gegebene
Zeichenkette umzuwandeln. Die Anzahl der notwendigen Editieroperationen wird dabei als
Levenshtein-Distanz oder auch als Editierdistanz bezeichnet. Benannt wurde die Levenshtein-Distanz
nach dem russischen Mathematiker und Wissenschaftler Wladimir Lewenstein, der diese 1965 erfand
und hierfür 2006 die Richard-W.-Hamming-Medaille für außergewöhnliche Leistungen in der
Informationstechnik des IEEE erhielt (Hamming). Anwendung findet die Levenshtein-Distanz
hauptsächlich zur Ähnlichkeitsbestimmung von Zeichenketten, u.a. bei der Duplikaterkennung oder
zur Rechtschreibprüfung. Im Original-Artikel (Levenshtein, 1965) wird zwar die Funktionsweise der
Levenshtein-Distanz auf theoretischer und mathematischer Basis definiert, jedoch kein Algorithmus
für die Distanz-Berechnung angegeben. Die Implementierung des Algorithmus erfolgt meist nach
dem Prinzip der dynamischen Programmierung (Bellman, 1957), einer Methode zum algorithmischen
Lösen von Optimierungsproblemen:
Zunächst wird eine zweidimensionale Matrix erstellt. Anschließend wird für jede (m,n)-Zelle die
Levenshtein-Distanz zwischen dem m-ten Buchstaben des ersten Wortes und dem n-ten Buchstaben
des zweiten Wortes errechnet. Meist wird diese Matrix bzw. Tabelle von der oberen linken zur
unteren rechten Ecke gefüllt. Jeder horizontale, vertikale oder diagonale Sprung von einer Zelle zur
nächsten entspricht dabei einer Editieroperation und wird mit virtuellen Kosten versehen.
Horizontale und vertikale Sprünge entsprechen Einfüge- oder Löschoperationen, für die
normalerweise Kosten von „1“ angesetzt werden. Ein diagonaler Sprung wird für den Fall, dass der
m-te und n-te Buchstabe übereinstimmt mit „0“, andernfalls mit „1“ berechnet. Da jede Zelle jeweils
den lokalen Aufwand minimiert, entspricht die Zahl in der rechten unteren Ecke der LevenshteinDistanz der beiden Wörter. Im nachfolgenden Kapitel wird dieses Vorgehen mit einem einfachen
Beispiel visuell verdeutlicht.
Seite 4
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Levenshtein-Distanz
3.2 Einfaches Beispiel
Die nachfolgende Matrix zeigt die Berechnung der Levenshtein-Distanz mit den beiden Wörtern
„Meilenstein“ und „Levenshtein“:
L
e
v
e
n
s
h
t
e
i
n
0
1
2
3
4
5
6
7
8
9
10
11
M
1
1
2
3
4
5
6
7
8
9
10
11
e
2
2
1
2
3
4
5
6
7
8
9
10
i
3
3
2
2
3
4
5
6
7
8
8
9
l
4
3
3
3
3
4
5
6
7
8
9
9
e
5
4
3
4
3
4
5
6
7
7
8
9
n
6
5
4
4
4
3
4
5
6
7
8
8
s
7
6
5
5
5
4
3
4
5
6
7
8
t
8
7
6
6
6
5
4
4
4
5
6
7
e
9
8
7
7
6
6
5
5
5
4
5
6
i
10
9
8
8
7
7
6
6
6
5
4
5
n
11
10
9
9
8
7
7
7
7
6
5
4
Durch die Tabelle gibt es zwei mögliche Wege, die den niedrigsten Aufwand produzieren:
M e i l e n s
t e i n
L e
v e n s h t e i n
~ = + ~ = = = - = = = =
M e i l e n s
t e i n
L e v
e n s h t e i n
~ = ~ + = = = - = = = =
= Übereinstimmung; ~ Ersetzen; + Einfügen; - Löschen
3.3 Varianten der Implementierung
Nachfolgend werden zwei häufig eingesetzte Varianten der Levenshtein-Distanz kurz dargestellt.
Gewichtete Levenshtein-Distanz. Im Gegensatz zur einfachen Levenshtein-Distanz werden bei der
gewichteten Levenshtein-Distanz die verschiedenen Operationen (Ersetzen, Einfügen, Löschen)
unterschiedlich gewichtet. Sollen beispielsweise gleich lange Zeichenketten beim Vergleich besser
bewertet werden als Zeichenketten mit unterschiedlicher Länge, könnten höhere Kosten für Einfügeund Löschoperationen angesetzt werden. Darüber hinaus können einzelne Zeichen mit variablen
Kosten gewichtet werden. Dieses Verfahren wird beispielsweise bei der Schreibmaschinendistanz7
eingesetzt und berücksichtigt die Entfernung der Zeichen auf einer QWERTZ- bzw. QWERTY-Tastatur.
Damerau-Levenshtein-Distanz. Bei der Damerau-Levenshtein-Distanz wird die einfache LevenshteinDistanz um die in (Damerau, 1964) eingeführte Eigenschaft – die Identifikation von zwei vertauschten
Zeichen – erweitert. Soll beispielsweise das durch einen Tippfehler falsch geschriebene Wort
„Levensthein“ mit den richtigen Wort „Levenshtein“ verglichen werden, ist beim Einsatz der
Damerau-Levenshtein-Distanz nur eine statt zwei Operationen notwendig, um die erste Zeichenfolge
in die zweite zu überführen.
7
http://de.wikipedia.org/wiki/Schreibmaschinendistanz, Zugriff: 16.02.2015
Seite 5
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Bloomfilter
4 Bloomfilter
4.1 Funktionsweise
Der Bloomfilter ist eine erstmals von Burton Bloom (Bloom, 1970) vorgestellte Datenstruktur, mit der
sowohl sehr zeit- als auch platzsparend festgestellt werden kann, ob ein Datensatz in einer
Datenmenge vorhanden ist. Ursprünglich wurde der Algorithmus für die Rechtschreibkontrolle und
Worttrennung entwickelt und wird heute hauptsächlich bei der Verwaltung von Datenbanken, beim
Caching und beim effizienten Routing von Paketen in Netzwerken eingesetzt. Darüber hinaus
kommen Bloomfilter häufig zum Einsatz, wenn nach sensiblen Daten gefiltert wird, die nicht im
Klartext vorhanden sein sollen. Es werden lediglich zwei Operationen bereitgestellt: Eine Operation
ermöglicht das Hinzufügen eines Datensatzes zu einem Bloomfilter, die zweite Operation bietet die
Möglichkeit, abzufragen, ob ein bestimmter Datensatz im Bloomfilter enthalten ist. Die nachträgliche
Entfernung eines bestimmten Datensatzes aus einem Bloomfilter ist bei der klassischen
Implementierung nicht möglich. Da es sich um eine probabilistische und verlustbehaftete
Datenstruktur handelt, können Abfragen zu falsch-positiven Ergebnissen führen. Dies bedeutet:
Liefert der Bloomfilter bei einer Abfrage ein positives Ergebnis, befindet sich der gesuchte Datensatz
mit einer sehr hohen Wahrscheinlichkeit in der Datenmenge. Liefert eine Abfrage hingegen ein
negatives Ergebnis, war der gesuchte Datensatz definitiv nicht in der Datenmenge enthalten.
Ein Bloomfilter besteht aus einem Bit-Array A mit einer festgelegten Länge m und wird zu Beginn mit
Nullen gefüllt. Zudem werden k unterschiedlichen Hashfunktionen benötigt. Zu beachten ist hierbei,
dass die gelieferten Hashwerte gleichverteilt sein müssen. Da die Hashwerte keine kryptografischen
Eigenschaften aufweisen müssen, können anstatt rechenintensiver kryptografischer Hashverfahren
(z.B. MD58, SHA9, …) einfache und schnelle Hashverfahren, wie beispielsweise Murmur10 oder FNV11,
eingesetzt werden. Das Risiko eines falsch-positiv Ergebnisses kann bei gegebenem m und n
(Höchstzahl der zu speichernden Werte) durch die geeignete Wahl von k minimiert werden. Die
Ermittlung des geeigneten k erfolgt dabei durch folgende Formel (Broder, Mitzenmacher, 2002):
Soll ein Datensatz zum Bloomfilter hinzugefügt werden, werden von dem zu speichernden Wert mit
Hilfe der k Hashfunktionen h Hashwerte ermittelt. Jeder der Hashwerte stellt dabei eine Position im
Bit-Array dar, die unabhängig vom vorherigen Wert („0“ oder „1“) auf „1“ gesetzt wird. Dies wird für
beliebig viele Datensätze wiederholt.
Um zu überprüfen, ob ein bestimmter Datensatz im Bloomfilter vorhanden ist, müssen von dem zu
überprüfenden Wert mit Hilfe der k Hashfunktionen h Hashwerte ermittelt werden. Steht im BitArray nun an einer oder mehreren der h Stellen eine „0“, so ist der gesuchte Datensatz mit absoluter
Sicherheit nicht in der Datenmenge enthalten. Steht im Bit-Array an jeder der h Stellen eine „1“ ist
der gesuchte Datensatz mit sehr hoher Wahrscheinlichkeit, jedoch nicht mit absoluter Gewissheit in
der Datenmenge enthalten.
8
http://de.wikipedia.org/wiki/Message-Digest_Algorithm_5, Zugriff: 18.02.2015
http://de.wikipedia.org/wiki/Secure_Hash_Algorithm, Zugriff: 18.02.2015
10
http://en.wikipedia.org/wiki/MurmurHash, Zugriff: 18.02.2015
11
http://de.wikipedia.org/wiki/FNV_%28Informatik%29, Zugriff: 18.02.2015
9
Seite 6
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Bloomfilter
4.2 Einfaches Beispiel
Die im vorherigen Kapitel beschriebene Funktionsweise des klassischen Bloomfilters soll nachfolgend
durch ein einfaches Beispiel visualisiert werden. Dabei werden folgende Annahmen getroffen:
 Länge des Bit-Arrays:
 Anzahl der Hashfunktionen:
 Wörter:
m = 10
k=3
„Bloom“, „Hochschule“, „München“
Vorgang
Bloomfilter
0 0 0 0 0
0 0 0 0 0
Zu Beginn sind alle Elemente des Bit-Arrays auf „0“ gesetzt.
Nun werden die einzelnen Wörter nacheinander zum Bloomfilter hinzugefügt. Hierzu werden für
jedes Wort die drei Hashwerte der drei unterschiedlichen Hashfunktionen ermittelt und
anschließend die entsprechenden Positionen im Bit-Array auf „1“ gesetzt. Alle Hashwerte sind für
dieses Beispiel frei konstruiert.
0 1 0 1 0
0 0 1 0 0
„Bloom“
Hashwerte: „8“, „2“, „4“
1 1 0 1 0
0 1 1 0 0
„Hochschule“ Hashwerte: „7“, „4“, „1“
1 1 0 1 0
0 1 1 1 0
„München“
Hashwerte: „9“, „2“, „8“
Finaler Bloomfilter
1 1 0 1 0
0 1 1 1 0
Nachdem alle Wörter zum Bloomfilter hinzugefügt wurden, sollen nun mit einigen Wörtern überprüft
werden, ob diese enthalten sind. Hierfür werden ebenfalls für jedes Wort die drei Hashwerte der drei
unterschiedlichen Hashfunktionen ermittelt und anschließend überprüft, ob alle Positionen im BitArray auf „1“ gesetzt sind.
„Filter“
„Hochschule“
„Ingolstadt“
Hashwerte: „10“, „1“, „3“
Nur die Position „1“ ist im Bit-Array gesetzt, die Positionen „3“ und „10“ nicht.
Somit ist das Wort „Filter“ definitiv nicht enthalten, was korrekt ist.
Hashwerte: „7“, „4“, „1“
Alle drei Positionen sind im Bit-Array gesetzt. Das Wort „Hochschule“ könnte mit
einer hohen Wahrscheinlichkeit enthalten sein. Dies ist auch der Fall.
Hashwerte: „9“, „1“, „4“
Alle drei Positionen sind im Bit-Array gesetzt. Das Wort „Ingolstadt“ könnte mit
einer hohen Wahrscheinlichkeit enthalten sein. Da das Wort jedoch oben nicht zum
Bloomfilter hinzugefügt wurde, handelt es sich um ein falsch-positives Ergebnis.
4.3 Varianten der Implementierung
Im Laufe der Zeit wurden zahlreiche Varianten und Erweiterungen von Bloomfiltern vorgeschlagen
und entwickelt. Der Artikel (Broder, Mitzenmacher, 2002) von Andrei Broder und Michael
Mitzenmacher gibt hierüber einen ersten guten Überblick. Der Counting Bloomfilter (Bonomi et al.
2006) erlaubt beispielsweise auf Kosten eines höheren Platzbedarfs das nachträgliche Entfernen von
Elementen aus dem Filter. Der Stable Bloomfilter (Deng, Rafiei, 2006) ermöglicht es, einen
Bloomfilter auf Stream-Daten anzuwenden und der Bloomier Filter (Chazelle et al. 2004) bietet
Optionen für probabilistische Multiplizitätsabschätzungen von eingefügten Elementen. Spektrale
Bloomfilter (Eisenhardt et al. 2004) wiederum ermöglichen die Repräsentation von Multimengen im
Filter und der Compressed Bloomfilter (Mitzenmacher, 2002) reduziert den Platzbedarf eines Filters.
Seite 7
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Implementierung
5 Implementierung
5.1 Levenshtein-Distance
Das von Oracle bereitgestellte Package UTL_MATCH enthält eine Reihe hilfreicher Funktionen, um
die Ähnlichkeit bzw. den Unterschied zwischen zwei gegebenen Zeichenketten einfach und schnell zu
bestimmen. Bereitgestellt werden u.a. Funktionen zur Berechnung der Levenshtein-Distanz sowie der
Jaro-Winkler-Algorithmus. Beide Algorithmen wurden neben der klassischen Variante, die
beispielsweise bei der Levenshtein-Distanz die Anzahl der notwendigen Änderungsoperationen
liefert, in einer weiteren Variante implementiert, die das Ergebnis auf einer normierten
Ähnlichkeitsskala von 0 (keine Übereinstimmung) bis 100 (volle Übereinstimmung) zurückgibt. Eine
genaue Beschreibung kann in der offiziellen Dokumentation von Oracle (OracleUtlMatch) eingesehen
werden. Das Package wurde laut (OracleBase) mit der Version Oracle 10g Release 2 eingeführt und
mit der Version Oracle 11g Release 2 erstmals dokumentiert und somit offiziell unterstützt.
Da die von Oracle bereitgestellten Funktionen vermutlich hardwarenah entwickelt (z.B. in C/C++)
und hochoptimiert sind, wurde der Algorithmus zur Berechnung der Levenshtein-Distanz zusätzlich
als PL/SQL-Funktion implementiert. Dadurch werden die gemessenen Verarbeitungszeiten der
verschiedenen Algorithmen und Implementierungen vergleichbarer. Der nachfolgende Code-Auszug
zeigt die Berechnung der Levenshtein-Distanz in PL/SQL. Da die Funktionsweise bereits im Kapitel 3.1
detailliert beschrieben wurde, wird an dieser Stelle nicht näher darauf eingegangen.
...
IF input_1_length = 0 THEN
RETURN input_2_length;
END IF;
IF input_2_length = 0 THEN
RETURN input_1_length;
END IF;
levenshtein_grid (0) (0) := 0;
FOR i IN 1..input_1_length LOOP
str1(i) := SUBSTR(input_1, i, 1);
levenshtein_grid (i) (0) := i;
FOR j IN 1..input_2_length LOOP
str2(j) := SUBSTR(input_2, j, 1);
levenshtein_grid (0) (j) := j;
IF str1(i) = str2(j) THEN
cost := 0;
ELSE
cost := 1;
END IF;
levenshtein_grid (i) (j) := LEAST (levenshtein_grid (i-1)(j) + 1,
levenshtein_grid (i)(j-1) + 1,
levenshtein_grid (i-1)(j-1) + cost);
END LOOP;
END LOOP;
RETURN levenshtein_grid (input_1_length) (input_2_length);
...
Seite 8
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Implementierung
5.2 Bloomfilter
Die klassische/ursprüngliche Variante des Bloomfilters erlaubt eine zeit- und platzsparende
Möglichkeit zur Bestimmung, ob sich ein gesuchter Datensatz in einer großen Datenmenge befindet.
Das objektgenaue Identifizieren eines Datensatzes in einer Datenmenge ist jedoch nicht möglich.
Daher muss für die, in dieser Arbeit genannten Aufgabenstellung bei der Implementierung und
anschließenden Nutzung des Bloomfilter-Algorithmus an einigen Stellen von der klassischen Variante
abgewichen werden. Die Entwicklung orientiert sich vor allem an der Veröffentlichung (Schnell et al.
2009) zum SAFELINK-Projekt der Universität Duisburg-Essen. Das Projekt befasst sich mit der
Entwicklung von fehlertoleranten Methoden zur Verknüpfung von personenbezogenen Daten unter
Berücksichtigung des Datenschutzes. Aus Gründen der leichteren Lesbarkeit wird auf eine
wiederholte Nennung der Veröffentlichung in den nachfolgenden Abschnitten teilweise verzichtet.
Um für jeden Datensatz des Referenzdaten- bzw. Testdatenbestandes einen eigenen Bloomfilter zu
erzeugen, wird aus den Elementen des Datensatzes (in diesem Fall Namen der Artisten und Titel des
Liedes) zunächst eine Zeichenkette gebildet. Diese Zeichenkette wird anschließend am Anfang und
Ende um ein Leerzeichen ergänzt und in N-Gramme (z.B.: N=2  Bi-Gramme oder N=3  TriGramme) unterteilt. Aus der Zeichenkette „Bloom“ ergibt sich beispielsweise die Bi-Gramm-Menge
{_B; Bl; lo; oo; om; m_}.
Aus den einzelnen Elementen der Bi-Gramm-Menge werden anschließend Hashwerte errechnet und
im Bloomfilter gesetzt. Bei der Umsetzung der k Hash-Funktionen wird auf die oben genannte
Veröffentlichung Bezug genommen. Diese schlägt vor, die k Hash-Funktionen auf Basis zweier
unabhängiger Hash-Funktionen (h1 und h2) zu realisieren. Für eine detailliertere Beschreibung sei
auf die Veröffentlichung verwiesen. Der nachfolgende Code-Auszug zeigt dieses Vorgehen
beispielhaft in PL/SQL.
...
FOR i IN 0..k-1 LOOP
e := h1 + i*h2;
e := MOD(e, bloom_length);
bloomfilter(e+1) := 1;
END LOOP;
...
Als unabhängige Hash-Funktionen wurden für die Implementierung die kryptografischen Funktionen
SHA1 und MD5 gewählt, da diese bereits von Oracle bereitgestellt werden. Andere, weniger
rechenintensivere und daher empfohlene Hashverfahren, wie Murmur oder FNV, müssten zunächst
zeit- und testaufwändig in PL/SQL entwickelt werden.
Bezüglich der optimalen Konfiguration von m und k werden durch die Veröffentlichung eine
Bloomfilter-Länge von 1.000 Bits sowie 15 Hash-Funktionen empfohlen. Diese Werte wurden
übernommen.
Zur Bestimmung der Ähnlichkeit zweier N-Gramm-Mengen wird häufig der sog. DICE-Koeffizient
eingesetzt. a gibt dabei die Anzahl der N-Gramme in der ersten Zeichenkette, b die Anzahl der NGramme in der zweiten Zeichenkette und c die Anzahl der N-Gramme, die in beiden Zeichenketten
vorkommen, an. Als Ergebnis liefert der DICE-Koeffizient eine Gleitkommazahl zwischen 0 (keine
Übereinstimmung) und 1 (totale Übereinstimmung). Da bei dieser Implementierung des Bloomfilters
Seite 9
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Auswertung
N-Gramme eingesetzt werden, kann der DICE-Koeffizienten zur Ähnlichkeitsbestimmung von zwei
Bloomfiltern verwenden werden. Dies wird auch in der oben genannten Veröffentlichung empfohlen.
Die Variablen a, b und c geben beim Einsatz mit Bloomfiltern jedoch nicht die Anzahl der N-Gramme,
sondern die Anzahl der gesetzten Bits an. Der nachfolgende Code-Auszug zeigt die Implementierung
des DICE-Koeffizienten in PL/SQL.
...
IF bloom1 =
dice :=
ELSE
SELECT
INTO
FROM
SELECT
INTO
FROM
SELECT
INTO
FROM
bloom2 THEN
1;
NVL(LENGTH(REPLACE(UTL_RAW.BIT_AND(bloom1, '1'), '0', '')), 0)
a
dual;
NVL(LENGTH(REPLACE(UTL_RAW.BIT_AND(bloom2, '1'), '0', '')), 0)
b
dual;
NVL(LENGTH(REPLACE(UTL_RAW.BIT_AND(bloom1, bloom2), '0', '')), 0)
c
dual;
dice := 2 * c / (a + b);
END IF;
...
6 Auswertung
6.1 Infrastruktur und Konfiguration
Die Entwicklung der Algorithmen sowie die Messung der Ausführungszeiten
Treffergenauigkeiten erfolgten unter folgenden Hardware- und Software-Komponenten:
Komponente
Hardware
Prozessor
Arbeitsspeicher
Festplatte
Software
Betriebssystem
Oracle-Datenbank
und
Eigenschaft
Intel® Core™ i7-2630QM (Quad-Core, 2.00 GHz, 6 MB Cache)
8 GB
750 GB HDD, 7.200 Umdrehungen pro Minute
Windows 7 Professional (64 Bit)
11g Express Edition (in der Standardkonfiguration)
Tabelle 1: Die eingesetzten Hardware- und Software-Komponenten
6.2 Ausführungszeiten
Um die einzelnen Matching-Verfahren hinsichtlich ihrer Verarbeitungszeiten vergleichen zu können,
wurden jeweils 100 Testdatensätze gegen den gesamten Referenzdatenbestand (10.000 Datensätze)
getestet. Die nachfolgende Tabelle zeigt die gemessenen Ausführungszeiten der verschiedenen
Verfahren und Implementierungsvarianten (in Minuten, Sekunden und Millisekunden).
Verfahren
Levenshtein-Distanz (Oracle-Implementierung)
Levenshtein-Distanz (Eigen-Implementierung)
Bloomfilter
Vorberechnung
--00:40,384
Tabelle 2: Die Ausführungszeiten der einzelnen Matching-Verfahren
Seite 10
Abgleich
00:16,037
35:04,904
05:05,895
Summe
00:16,037
35:04,904
05:46,279
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Auswertung
Die Verarbeitungszeit beim Einsatz der Levenshtein-Distanz ist sehr stark von der Implementierung
abhängig. Während die hochoptimierte Oracle-interne Implementierung für eine Million
Distanzberechnungen (Vergleich von 100 Testdatensätzen mit jeweils 10.000 Referenzdatensätzen)
nur 16 Sekunden benötigt, ist die eigene Implementierung in PL/SQL mit 35 Minuten um den Faktor
130 langsamer. Die Verarbeitungszeit beim Einsatz des Bloomfilters setzt sich aus zwei Komponenten
zusammen: Zum einen die einmalige Berechnung und anschließende Speicherung der Bloomfilter der
10.000 Referenzdatensätze (Vorberechnung). Zum anderen die Berechnung der Bloomfilter der 100
Testdatensätze und der anschließende Abgleich mit den gespeicherten Bloomfiltern des
Referenzdatenbestandes (Abgleich). Allerdings besteht beim Bloomfilter ein Optimierungspotenzial:
Die rechenintensiven kryptografischen Hashverfahren können durch einfache und schnelle
Hashverfahren ersetzt werden. Dies würde zu einer Reduzierung der Ausführungszeit führen.
6.3 Treffergenauigkeit
Um Bestimmen zu können, ob die Matching-Algorithmen die einzelnen Datensätze korrekt zuordnen,
wird bei der Erstellung der Testdatensätze der Verweis auf den Ursprungsdatensatz des
Referenzdatenbestands gespeichert. Stimmt nach der Durchführung eines Abgleichs die ID des
zugeordneten Datensatzes mit der ID des Verweises überein, gilt die Zuordnung als korrekt,
andernfalls als nicht korrekt.
Verfahren
Anzahl
Testdatensätze
Levenshtein-Distanz
Bloomfilter
100
100
Anzahl
übereinstimmender
Paare
75
95
Anzahl nicht
übereinstimmender
Paare
25
5
Trefferquote
75%
95%
Tabelle 3: Die Treffergenauigkeit der einzelnen Matching-Verfahren
Der Bloomfilter hat im gegebenen Testszenario eine deutlich höhere Trefferquote als die
Levenshtein-Distanz. Dies liegt vor allem an der unterschiedlichen Herangehensweise bei der
Verarbeitung der beiden zu vergleichenden Zeichenketten. Während bei der Levenshtein-Distanz die
Anzahl der Änderungsoperationen sehr stark von der Reihenfolge der Zeichen abhängt, spielt die
Reihenfolge der Zeichen beim Bloomfilter aufgrund der N-Gramme nur eine untergeordnete Rolle.
Am besten lässt sich dies anhand eines Beispiels verdeutlichen:
a) Vergleich von „ABBA - Dancing Queen” mit „ABA - Dancing Queen (live)”
b) Vergleich von „ABBA - Dancing Queen” mit „Dancing Queen (live) by ABBA“
Obwohl in beiden Szenarien der Großteil der Zeichen identisch ist, liefert die Levenshtein-Distanz nur
in Szenario A eine korrekte Zuordnung. Der Bloomfilter hingegen liefert bei beiden Szenarien eine
korrekte Zuordnung.
Szenario A: Es gibt keine Änderungen in der Reihenfolge der Zeichen, da lediglich ein Buchstabe fehlt
und etwas angehängt wird. Die Levenshtein-Distanz beträgt acht (Entfernen des Buchstaben „B“ im
Artisten sowie Hinzufügen von „ (live)“ am Ende) und ist relativ niedrig. Die Wahrscheinlichkeit, mit
acht Änderungen bei einer nicht übereinstimmenden Zeichenkette (z.B.: „ABBA - Happy New Year“,
11 Änderungen notwendig) zur Eingabezeichenkette zu gelangen, ist gering. Die Treffergenauigkeit
ist daher hoch. Die Bits des Bloomfilters sind sehr ähnlich, da nur das Bi-Gramm „BB“ fehlt und neue
Bi-Gramme für „ (live)“ hinzukommen. Alle anderen Bi-Gramme sind identisch. Die Treffergenauigkeit
ist daher hoch.
Seite 11
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Zusammenfassung
Szenario B: Artist und Titel werden vertauscht, die Reihenfolge der Zeichen hat sich somit stark
geändert. Die Levenshtein-Distanz beträgt 22. Die Wahrscheinlichkeit, mit 22 Änderungen bei einer
nicht übereinstimmenden Zeichenkette (z.B.: „ABBA - Happy New Year“, 11 Änderungen notwendig)
zur Eingabezeichenkette zu gelangen, ist wesentlich höher als im Szenario A. Die Treffergenauigkeit
ist daher geringer und ein falsch-positive Zuordnung leichter möglich. In diesem Fall würde die nicht
übereinstimmende Zeichenkette fälschlicherweise zugeordnet werden. Die Bits des Bloomfilters sind
hingegen sehr ähnlich, da nur Bi-Gramme für „ (live) by“ hinzugekommen sind. Alle anderen BiGramme sind identisch. Die Treffergenauigkeit ist daher hoch. Mit dem Bloomfilter erfolgt eine
korrekte Zuordnung.
Die Treffergenauigkeit kann darüber hinaus bei beiden Verfahren verbessert werden, wenn die
beiden zu vergleichenden Zeichenketten zuvor bereinigt werden. Beispiele hierfür sind u.a. das
einheitliche Entfernen oder Ersetzen von Sonderzeichen („&“ zu „und“, etc.) sowie eine einheitliche
Großkleinschreibung, da Groß- und Kleinbuchstaben zu Änderungskosten bei der Levenshtein-Distanz
bzw. zu einem anderen Bit-Muster beim Bloomfilter führen.
7 Zusammenfassung
In dieser Arbeit wurden im Grundlagenteil eine kurze Einführung in die umfangreiche Thematik der
Duplikaterkennung/Objektidentifizierung sowie ein erster Überblick über die verschiedenen
Klassifizierungen, Lösungsansätze, Algorithmen und Implementierungsverfahren gegeben. Durch die
prototypische Implementierung der Levenshtein-Distanz und des Bloomfilters konnten sowohl eine
mögliche Umsetzung aufgezeigt als auch mögliche Potenziale und Grenzen der Algorithmen näher
untersucht werden. Ziel der Arbeit war es zudem, durch Messergebnisse bzgl. der Ausführungszeiten
und Treffergenauigkeiten erste Erkenntnisse darüber zu liefern, ob die Implementierung eines
Bloomfilters eine sinnvolle Ergänzung oder Alternative für den derzeit eingesetzten LevenshteinDistanz-Algorithmus darstellt. Dies soll nachfolgend nun kurz aufgezeigt werden.
Die Oracle-interne Implementierung der Levenshtein-Distanz bietet im Gegensatz zu einer eigenen
Implementierung ein hohes Steigerungspotenzial bei den Verarbeitungszeiten. Da die offizielle
Veröffentlichung und Unterstützung der Oracle-internen Implementierung erst mit Version „11g
Release 2“ begann, könnten sich große Optimierungspotenziale durch die Aktualisierung älterer
Programmbestandteile (die mit eigenen Implementierungen arbeiten) ergeben, falls dies bisher noch
nicht geschehen ist.
Auch der Einsatz eines Bloomfilters könnte sich aufgrund der deutlich höheren Treffergenauigkeit in
einigen oder vielleicht sogar allen Bereichen lohnen. Diese bessere Trefferquote muss allerdings
gegebenenfalls mit einer längeren Verarbeitungszeit erkauft werden.
Die große Stärke der klassischen Variante des Bloomfilters ist die zeit- und platzsparende
Bestimmung, ob sich ein gesuchter Datensatz in einer sehr großen Datenmenge befindet. Eine
sinnvolle Ergänzung wäre beispielsweise, einen Teil oder alle Datensätze des Referenzdatenbestands
in einen einzigen mehrere zehn- oder hunderttausend Bit langen Bloomfilter zu packen. Dieser
könnte anschließend zur Vorauswahl verwendet werden und steuert, ob eine detailliertere und somit
rechenintensivere Identifizierung mit einem anderen Matching-Algorithmus, zum Beispiel dem
derzeit eingesetzten Levenshtein-Distanz-Algorithmus, durchgeführt werden soll.
Seite 12
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Literaturverzeichnis
8 Literaturverzeichnis
Apel, Detlef; Behme, Wolfgang; Eberlein, Rüdiger; Merighi, Christian: Datenqualität erfolgreich
steuern – Praxislösungen für Business-Intelligence-Projekte. 2., vollständig überarbeitete und
erweiterte Auflage, Carl Hanser Verlag, 2010
Bellman, Richard: Dynamic Programming. Princeton University Press, 1957
Bethlehem, Jelke: Surveys without questions. In: E. D. de Leeuw, J. D. Hox und D. A. Dillman (Hg.):
International handbook of survey methodology, New York: Erlbaum, 2008, S. 500-511
Bloom, Burton H.: Space/Time Trade-offs in Hash Coding with Allowable Errors. Communications of
the ACM, 13(7): 422-426, 1970
Bonomi, Flavio; Mitzenmacher, Michael; Panigrahy, Rina; Singh, Sushil; Varghese, George: An
Improved Construction for Counting Bloom Filters. In: Lecture Notes in Computer Science Volume
4168, 2006, S. 684-695
Broder, Andrei; Mitzenmacher, Michael: Network applications of bloom filters: A survey. In: Internet
Mathematics. 2002, S. 636-646
Chazelle, Bernard; Kilian, Joe; Rubinfeld, Ronitt; Tal, Ayellet: The Bloomier filter: an efficient data
structure for static support lookup tables. In: Proceedings of the fifteenth annual ACM-SIAM
symposium on Discrete algorithms. 2004, S. 30-39
Damerau, Fred J.: A technique for computer detection and correction of spelling errors. In:
Communications of the ACM. 7, Nr. 3, März 1964, S. 171–176
Deng, Fan; Rafiei, Davood: Approximately detecting duplicates for streaming data using stable bloom
filters. In: Proceedings of the 2006 ACM SIGMOD international conference on Management of data.
2006, S. 25-36
Eisenhardt, Martin; Müller, Wolfgang; Henrich, Andreas: Spektrale Bloom-Filter für Peer-to-Peer
Information Retrieval. Conference: INFORMATIK 2004 - Informatik verbindet, Band 2, Beiträge der 34.
Jahrestagung der Gesellschaft für Informatik e.V. (GI), Ulm, 20.-24. September 2004
Levenshtein, Vladimir I.: Binary codes capable of correcting deletions, insertions, and reversals. In:
Doklady Akademii Nauk SSSR. 163, Nr. 4, 1965, S. 845–848 (Russisch, Englische Übersetzung in:
Soviet Physics Doklady, 10(8) S. 707–710, 1966)
Mitzenmacher, Michael: Compressed bloom filters. In: IEEE/ACM Transactions on Networking. 2002,
S. 604-612
Naumann, Felix; Herschel, Melanie: An Introduction to Duplicate Detection. Morgan & Claypool, 2010
Schnell, Rainer: Record Linkage from a Technical Point of View. In: German Data Forum (RatSWD)
(ed.): Building on progress: Expanding the research infrastructure for the social, economic, and
behavioral sciences (Vol. 1), Opladen: Budrich UniPress, pp. 531-545, 2010
Schnell, Rainer; Bachteler, Tobias; Reiher, Jörg: Privacy-preserving record linkage using Bloom filters.
In: BMC Medical Informatics and Decision Making 9 (41), 2009
Seite 13
Vergleich der Levenshtein-Distanz und des Bloomfilter-Algorithmus zur
Objektidentifizierung im Kontext des Forschungsprojekts MPI
Literaturverzeichnis
Internetquellen für die Recherche:
[Hamming]
Richard-W.-Hamming-Medaille des IEEE
http://www.ieee.org/about/awards/medals/hamming.html
Zugriff am 16.02.2015
[Naumann]
Duplikaterkennung (Offizielle Folien von Felix Naumann, 03.07.2012)
http://hpi.de/fileadmin/user_upload/fachgebiete/naumann/
folien/SS12/InfoInt/InfoInt_07_Duplikaterkennung.pdf
Zugriff am 12.02.2015
[OracleBase]
UTL_MATCH : String Matching by Testing Levels of Similarity/Difference
http://oracle-base.com/articles/11g/utl_match-string-matching-inoracle.php
Zugriff am 18.03.2015
[OracleUtlMatch]
Offizielle Dokumentation des UTL_MATCH-Packages von Oracle
http://docs.oracle.com/database/121/ARPLS/u_match.htm
Zugriff am 18.03.2015
Seite 14
Herunterladen