OpenRefine Basisfunktionen

In der siebten Vorlesung ging es um die Software OpenRefine. Dabei handelt es sich um eine grafische Oberfläche, mit der man Daten bereinigen und umwandeln kann. Die Software wird lokal auf dem Computer installiert und über den Browser bedient.

Die Installation von OpenRefine wurde in der Vorlesung Schritt für Schritt vorgezeigt und erläutert. Diese Erläuterung hilft mir sehr fürs Verständnis.

Wir schauen uns einige Basisfunktionen an, um die Software kennenzulernen. Daten können einfach über «create project» importiert werden. Für jeden importierten Datensatz wird automatisch ein neues Projekt erstellt.

Den Begriff «Datenbereinigung» hatte ich schon oft gehört, aber mir nie genau überlegt, wie das eigentlich genau funktionierten könnte. Beim Ausprobieren von OpenRefine bekomme ich einen kleinen Einblick, wie das in der Praxis funktionieren könnte. Beispielsweise bedeutet Datenkonsistenz, dass Werte, die einer Spalte angehören alle der gleichen Logik folgen. So sollte in der Spalte language für alle englischen Publikationen «EN» angegeben sein. Wie in Abb.1 aber ersichtlich ist, zeigt die Textfacette der Spalte language für den Beispieldatensatz 871 Mal «EN» und 107 Mal «English». Wie in Abb. 2 ersichtlich wird, sind nach der Korrektur 978 Zeilen mit der Sprache «EN» vorhanden. Mit der Funktion der Textfacette ist also bereits eine sehr schnelle Datenbereinigung möglich.

tag7

Abb.1: Beispieldatensatz in OpenRefine

tag7

Abb.2: Beispieldatensatz in OpenRefine nach der Korrektur der Spalte language

Eine weitere Möglichkeit, die OpenRefine bietet, ist, Zellen mit mehreren Werten aufzuteilen («Split multi-valued cells»). Wenn man dies beispielsweise mit der Spalte Autoren macht und die Regel angibt, dass Autoren mit | getrennt werden sollen (Abb.3), dann werden aus den 1001 Zeilen 4009 Zeilen, weil so viele neu Zeilen generiert werden, wie verschiedene Autorennamen vorkommen.

tag-7-3

Abb.3: Funktion «Split multi-valued cells».

Eine sehr hilfreiche Funktion ist auch der Cluster Mechanismus, wobei ein Algorithmus den Datensatz durchsucht und vorschlägt, wo es sich um gleiche Bezeichnungen handeln könnte, die aber unterschiedlich eingegeben wurden. So könnte es sich Beispielsweise bei A. Khan Vakeel um den gleichen Autor handeln wie bei Vakeel A. Khan. Es wird dann auch gleich ein Vorschlag gemacht, wie der neue Zellenwert aussehen soll. Mit diesem Algorithmus sind Datenfehler einfach zu finden und zu korrigieren.

tag7-4

Abb.4: Facettenansicht der Autoren vor «Split multi-valued cells». </i/</h5>

7-4-2

Abb.5: Facettenansicht der Autoren nach «Split multi-valued cells».

OpenRefine reconciliation

Nach ein paar kleinen Übungen ging es weiter mit einer Vorführung der Funktion «reconciliation». Hier geht es darum, den eigenen Datensatz mit anderen, externen Datenquellen zu vergleichen und anzureichern. Im vorgeführten Beispiel handelte es sich bei der externen Quelle und Wikidata.

CSV nach MARCXML mit openRefine

In einem weiteren Teil der Vorlesung ging es darum, MarcXML zu modellieren, also selber zu schreiben. Beim Betrachten des Aufbaus eines MarcXML Files zeigt sich beispielsweise, dass sich in Datafields die Indikatorn und in den Subfields die eigentlichen Werte befinden. Ich kann der Übung nur knapp folgen.

Nach einer kurzen Gruppenarbeit wird in der Besprechung einges nochmals klarer. Im Row Template stehen in den geschweiften Klammern die Funktionen, die die Zellinhalte auswerten. Alles, was nicht in Klammern steht, wird als Zeichenkette genau so wiedergegeben. </i>

Biespielsweise wird durch .value.replace beschrieben, dass die URL ersetzt wird durch nichts, was in diesem Fall dann gelöscht wird bedeutet. Der übrige Inhalt wird dann ins Mac Feld 001 geschrieben. Es gibt verschiedene Funktionen wie .split (aufteilen), .replace (ersetzten), .slice (Teil weglöschen).

Die Funktion replace, wie auch Schleifen und [1] als zweiter Eintrag, weil die Zählung bei 0 beginnt, erinnern mich dan die Programmierlogiken der Sprache Python. Die Zählung beispeilsweise folgt dort der gleichen Logik:

>>> fruit = "banana"

>>> letter = fruit[1]

>>> print letter

Ergebnis a

Der Einblick in dieser Vorlesung war sehr komplex, dennoch war es interessant und hat einige Zusammenhänge klarer gemacht.