Workshop - Daten mit OpenRefine clustern

Folie - Daten mit OpenRefine clustern Folie - Daten mit OpenRefine clustern

Wir verwenden verschiedene Clustering Methoden in OpenRefine, um Schreibweisen zu vereinheitlichen.

Clustering in der OpenRefine Dokumentation.

Clustering im OpenRefine Wiki.

Wir verwenden in diesem Workshop OpenRefine in Version 3.5.2.

Hintergrund

OpenRefine implementiert unterschiedliche Methoden, um Cluster in Mengen von Werten zu finden. Dies hilft uns beim Vereinheitlichen von Werten, finden von Tippfehlern, usw.

Im folgenden Diagramm ist dargestellt, wie alle Vorkommen von “Michael Müller” in einer Liste von Namen zusammengefasst werden können. Ein einfaches Sortieren nach Namen genügt hier nicht, da “Michael Müller” unterschiedlich geschrieben wurde. Hier ist eine Deduplizierung erforderlich, wofür in OpenRefine Clustering eingesetzt werden kann.

flowchart LR subgraph unsorted["Unsortiert"] mm1_1["Michael Müller"] mm1_2["Michael Müller"] mm1_3["Michael Müller"] mm2_1["Michael Mueller"] mm2_2["Michael Mueller"] mm3_1["Michel Müller"] end subgraph original["Sortiert (Original)"] mm1["3 x Michael Müller"] mm2["2 x Michael Mueller"] mm3["1 x Michel Müller"] end subgraph clustered["Zusammengeführt"] mm_finished["9 x Michael Müller"] end mm1_1 & mm1_2 & mm1_3 -.-> mm1 mm2_1 & mm2_2 -.-> mm2 mm3_1 -.-> mm3 mm1 & mm2 & mm3 -.-> mm_finished unsorted --Sortieren--> original --Deduplizieren--> clustered

Hier eine Übersicht über die verschiedenen Arten von Cluster-Verfahren und welche Probleme sie lösen. Die Zusammenfassung basiert auf Clustering In Depth aus dem OpenRefine Wiki und aus unseren Erfahrungen beim Clustering von Namen mit OpenRefine.

Fingerprint Verfahren (schnell)

NameBeschreibungBeispielKommentar
FingerprintingNormalisiert und Sortiert auf Wortebene. Entfernt Satzzeichen!
  • Straßburg (Elsaß, Frankreich)
  • Elsass (Frankreich), Strassburg
  • Strassburg, Elsáss, Frankreich
Probleme mit kleinen Abweichungen.
N-Gram FingerprintingNormalisiert und sortiert auf Buchstabenebene
  • Paris = 1-gram => a i p r s
  • Paris = 2-gram => ar is pa ri
Schnell und hilft z.B. bei Buchstabendrehern.

Die Fingerprinting Methoden sind sehr schnell und helfen bei typischen Problemen wie Wortreihenfolgen, unterschiedlicher Verwendung von Sonderzeichen oder Satzzeichen. OpenRefine bietet hier ein Verfahren auf Wortebene und eines auf Buchstabenebene an.

Hierbei ist zu beachten, dass schon kleine Abweichungen (ein zusätzliches/anders geschriebenes Wort) dazu führen, dass ein Text aus einem Cluster ausgeschlossen wird.

Phonetische Verfahren

NameSpracheBeispiel
Cologne-phoneticDeutschMeier, Maier, Mayer, Mayr.
Metaphone3EnglischReuben Gevorkiantz und Ruben Gevorkyants.
Daitsch-MoktoffSlawisch und JiddischMoskowitz und Moskovitz.
Beider-MorseSlawisch und JiddischWeniger Falsch-Positive als Daitsch-Moktoff.

Die phonetischen Verfahren berücksichtigen, dass manche Buchstaben in der gesprochenen Sprache die gleichen Laute erzeugen. Das ist gerade für Namen in historischen Dokumenten sinnvoll, da diese häufig nach Hörverständnis geschrieben werden.

OpenRefine hat Implementierungen für die deutsche Sprache in Form von Cologne Phonetic, für die englische Sprache in Form von Metaphone, und für slawische Sprachen und Jiddisch Daitsch-Moktoff und Beider-Morse.

Nearest-Neighbor-Verfahren (langsam)

NameBeschreibungBeispielKommentar
Levensthein$d(A, B) = repl + ins + del$
  • Seid, Christoph
  • Seld, Christoph
  • Aufwendig
  • Gut bei OCR Fehlern
Prediction by
Partial Matching
$d(A, B) = \frac{compress(A, B) + compress(B, A)}{compress(A, A) + compress(B, B)}$
  • Streitt, Johann Konrad
  • Streitter, Johann, Conrad
  • Aufwendig
  • Falsch-Positive
  • Braucht lange Texte

Die Levensthein Distanz berechnet die Ähnlichkeit zwischen zwei Texten, indem sie die notwendigen Änderungsoperationen (Ersetzungen, Einfügungen, Löschungen) zählt, die notwendig sind um zwei Texte ineinander zu überführen. Die Berechnung ist jedoch recht aufwendig. Dafür ist die Levensthein Methode hilfreich um Tippfehler oder OCR-Fehler zu identifizieren.

Bei Prediction by Partial Matching werden Kompressionsverfahren verwendet. Die Annahme dabei ist, dass Texte mit ähnlichen Inhalten (strukturell, nicht semantisch!) komprimiert ähnlich aussehen. Das ist gerade bei längeren Texten hilfreich, bei kurzen Texten (einzelne Worte) ist das Verfahren nicht so erfolgreich.

Probleme beim Clustering

Auch wenn man mit den Clustering Methoden schnell zu sinnvollen Ergebnissen kommt, gibt es einige Bereiche, für die es in OpenRefine (noch) keine Lösungen gibt, bzw. spezialisierte Clustering Methoden notwendig wären. Hier eine unvollständige Liste von separat zu behandelnden Problemen mit Beispielen:

  • Abkürzungen: w, weibl., weiblich
  • Synonyme: ledig, single, alleinstehend, frei, unverheiratet
  • Bestimmte OCR-Fehler: Fleinrich und Heinrich
  • Fehlende Zweitnamen: Speckmann, Johann Stefan
  • Fehlende Namensbestandteile: Albrecht (von Lauterburg) Johann Konrad
  • Alternative Schreibweisen: Greck, Leo und Greck (Gregk), Leo

Aufgabe 1: Clustering mit “fingerprint” Methoden

Die Spalte “Todesdatum (beschreibend)” sieht auf den ersten Blick recht aufgeräumt aus.

Wir testen auf dieser Spalte die Cluster-Methoden “fingerprint” und “ngram-fingerprint”. Den Dialog für das Clustering öffnen wir entweder über die Bedienfläche “Cluster” im “Text Facet” der Spalte, oder über das Spaltenmenü “Todesdatum (beschreibend)“ "Edit cells" "Cluster and edit…”.

Bildschirmfoto vom Clustering Dialog mit der ‘fingerprint’ Methode.

Wie in Abbildung 1 zu sehen, wird automatisch die “fingerprint” Methode ausgeführt, die auch gleich drei mögliche Cluster findet. Diese unterscheiden sich lediglich in der Reihenfolge der Satzstellung sowie Groß- und Kleinschreibung.

Wir führen diese Cluster noch nicht zusammen, sondern schauen uns noch die Ergebnisse der “NGram-Fingerprint” Methode an. Diese findet in den Standardeinstellungen hier keine Cluster, sondern erst, wenn wir, wie in Abbildung 2 markiert, die Größe auf 1 reduzieren.

Bildschirmfoto vom Clustering Dialog mit der ‘Ngram fingerprint’ Methode.

Aufgabe 2: Clustering mit phonetischen und “Nearest-Neighbor”-Methoden

Die Spalte “Familienverhältnis” beinhaltet unterschiedliche Abkürzungen und Tippfehler. Testen Sie verschiedene phonetische und “Nearest-Neighbor”-Methoden zum Clustern aus.

Bildschirmfoto mit Text Facet auf der Spalte Familienverhältnis.

Aufgabe 3: Clustern?

Auch in der Spalte “Religion” haben sich unterschiedliche Abkürzungen und Tippfehler eingeschlichen. Lohnt sich hier ein Clustering, oder besser eine Kombination aus “Text Facet” und Textfilter?

Bildschirmfoto mit Text Facet auf der Spalte Religion.

Fazit

Die in OpenRefine implementierten Clusteringverfahren sind mächtig und komfortabel integriert. Auch wenn man ohne Hintergrundwissen über die einzelnen Clusteringverfahren zu einem brauchbaren Ergebnis kommt, ist es sinnvoll sich im Vorfeld einen passenden Workflow zurechtzulegen. Je nach Datenmenge wartet man sonst unnötig lange auf das Ergebnis eines aufwendiger zu berechnenden Nearest-Neighbor-Verfahrens.

Hier gibt es im GLAM-Bereich auch durchaus noch Potential weitere Clusteringverfahren zu implementieren. Zum Beispiel zur Korrektur von OCR-Fehlern, Berücksichtigung von Synonymen, oder Worteinbettungen wie Bag-of-Words Modelle und Word2Vec.


Im nächsten Teil beschäftigen wir uns mit dem Abgleich von Daten in OpenRefine mit der Gemeinsamen Normdatei (GND) über das lobid API.

Benjamin Rosemann
Benjamin Rosemann
Data Scientist

Ich evaluiere KI- und Software-Lösungen und integriere sie in den Archivalltag.

Ähnliches