42 views
 owned this note
# CAS Datenmanagement: Modul 2 - OpenRefine 26.3.2021 8.30 - 12.00 Uhr Gemeinsames Dokument für den Kurs zu OpenRefine im Modul 2 des Studiengangs CAS Datenmanagement und Informationstechnologien 2021. Alle, die den Link zu diesem Dokument kennen, können es bearbeiten. Kontakt: Felix Lohmeier mail@felixlohmeier.de ## Vorbedingungen * OpenRefine wurde bereits installiert * Vorwissen aus anderen Kursen: * XML * RegEx * Bibliothekarische Metadatenformate (z.B. MARC21) * IIIF * Python ## Lernziel OpenRefine als ein Werkzeug für Datenbereinigung und -anreicherung kennenlernen. Inhalte (kurzer Einstieg mit Tipps zur Vertiefung): - Exploration und Bereinigung von tabellarischen Daten am Beispiel von Publikationsdaten aus DOAJ - Anreicherung mit externen Datenquellen am Beispiel von Wikidata und CrossRef - Umgang mit weiteren Formaten wie JSON und XML ## Ablauf 08.30 - 09.00 Intro zu OpenRefine 09.00 - 09.30 Demo-Session zu Basisfunktionen 09.30 - 10.00 Breakout-Session zu Basisfunktionen 10.00 - 10.30 Pause 10.30 - 11.00 Demo-Session zu Anreicherung 11.00 - 11.30 Breakout-Session zu Anreicherung 11.30 - 12.00 Bezüge zu vorigen Kursen und Abschlussdiskussion ## Intro zu OpenRefine * Claim * Einsatzbereiche * Anwender\*innen * Formate * Einsatzmöglichkeiten * Historie ### Claim von OpenRefine > "A free, open source, powerful tool for working with messy data" * grafische Oberfläche, die einer klassischen Tabellenverarbeitungssoftware ähnelt * dient der Analyse, Bereinigung, Konvertierung und Anreicherung von Daten * wird in der Regel lokal auf einem Computer installiert und über den Browser bedient ### Einsatzbereiche ![OpenRefine 2020 Survey Results: Tasks](https://raw.githubusercontent.com/OpenRefine/openrefine.github.com/master/images/2020survey/4.png) Aus Umfrage vom OpenRefine-Team, n = 178 ### Anwender\*innen ![OpenRefine 2020 Survey Results: Communities](https://raw.githubusercontent.com/OpenRefine/openrefine.github.com/master/images/2020survey/1.png) ### Von OpenRefine unterstützte Formate * Besonders geeignet für tabellarische Daten (CSV, TSV, XLS, XLSX und auch TXT mit Trennzeichen oder festen Spaltenbreiten) * Einfaches "flaches" XML (z.B. MARCXML) oder JSON ist mit etwas Übung noch relativ einfach zu modellieren * Komplexes XML mit Hierarchien (z.B. EAD) ist möglich, aber nur mit Zusatztools * Kann auch in Kombination mit MarcEdit für Analyse und Transformation von MARC21 benutzt werden ### Einsatzmöglichkeiten von OpenRefine * Exploration von Datenlieferungen * Vereinheitlichung und Bereinigung (zur Datenqualität in der Praxis siehe Präsentation von Peter Király ["Validating 126 million MARC records"](https://docs.google.com/presentation/d/e/2PACX-1vRU4J_rln00UVD7pNPT0_02NOad0HfSk_UKqRI0v29y8QkMAplEDlyjc0Ot_VE_paV6WBW29Fh_V-iN/pub)) * Abgleich mit Normdaten ("Reconciliation") in Wikidata, GND und VIAF * Für lokalen Einsatz ausgelegt (Installation auf Webservern und Automatisierung möglich, aber nur mit Zusatzsoftware) ### Historie <https://github.com/OpenRefine/OpenRefine/graphs/contributors> * 2010-05: Freebase Gridworks * 2011-12-11: Google Refine 2.5 * 2015-04-30: OpenRefine 2.6 rc1 * 2017-06-18: OpenRefine 2.7 * 2020-09-06: OpenRefine 3.4 ## Exploration und Bereinigung von tabellarischen Daten Wir nutzen dazu Teile der [Lehrmaterialien von Library Carpentry](https://librarycarpentry.org/lc-open-refine/) Und die dort zur Verfügung gestellten Beispieldaten, ein Auszug aus Publikationen im Directory of Open Access Journals (DOAJ): https://github.com/LibraryCarpentry/lc-open-refine/raw/gh-pages/data/doaj-article-sample.csv ### Demo-Session 9.00 - 9.30 Uhr * Import (Kapitel 2) * Struktur (Rows/Records) (Kapitel 3) * Facetten und Text filter (Kapitel 4) ### Breakout-Session 9.30 - 10.00 Uhr Aufgabe 1: Führen Sie Split und Join noch einmal selbst durch, um ein besseres Gefühl für die Unterschiede zwischen Rows und Records zu erhalten * Anleitung: [Kapitel 3 in den Lehrmaterialien von Library Carpentry](https://librarycarpentry.org/lc-open-refine/03-working-with-data/index.html) Aufgabe 2: Nutzen Sie die Facetten, um sich einen Überblick über die Daten zu verschaffen. * All > Facet > ... * Spalte XY > Facet > Text Facet * Spalte XY > Facet > Customized facets > ... ## Pause 10.00 - 10.30 Uhr ## Nachtrag 10.30 - 11.00 Uhr ### Demo-Session 10 Minuten * Clustern mit Algorithmen (Kapitel 5) * Transformationen (Kapitel 7) "Kochrezepte": https://github.com/OpenRefine/OpenRefine/wiki/Recipes ### Breakout-Session 10 Minuten Aufgabe: Korrigieren Sie die durchgehende Großschreibung der Titel mancher Verlage in "Titlecase" (Wortanfang groß) * Anleitung: [Kapitel 8 in den Lehrmaterialien von Library Carpentry](https://librarycarpentry.org/lc-open-refine/08-writing-transformations/index.html) ## Anreicherung mit Wikidata und CrossRef OpenRefine ist ein [oft genutztes Tool, um Daten mit Wikidata](https://www.wikidata.org/wiki/Wikidata:Tools/OpenRefine) abzugleichen, anzureichern oder Daten an Wikidata zu spenden. Der Prozess funktioniert auch mit anderen Datenquellen und wird "Reconciliation" (Versöhnung) genannt. Darüber hinaus ist auch die Abfrage beliebiger Webseiten bzw. Programmierschnittstellen (APIs) im Web möglich. Wir schauen uns das am Beispiel von CrossRef an. ### Reconciliation mit Wikidata * In [W3C Community Group Entity Reconciliation](https://www.w3.org/community/reconciliation/) entwickelter Entwurf für einen Standard: [Reconciliation Service API, v0.1, 20.8.2020](https://reconciliation-api.github.io/specs/0.1/) * Übersicht vorhandener Schnittstellen: <https://reconciliation-api.github.io/testbench/> * z.B. auch für GND über "lobid": https://lobid.org/gnd * Nur ein kleiner Teil (u.a. Wikidata und lobid-gnd) unterstützt die Funktionen "Suggest" und "Extend Data" ### Demo-Session 11.00 - 11.10 Uhr #### Wikidata Im Deutschen Literaturarchiv Marbach besonders oft verknüpfte Schriftstellerinnen und Schriftsteller als CSV. Import über Startseite > Create Project > Clipboard ``` Name,Geburtsjahr,GND Ernst Jünger,1895,118558587 Hilde Domin,1909,118526634 Hermann Hesse,1877,11855042X Gertrud von LeFort,1876,118570951 Johann Wolfgang von Goethe,1749,118540238 Sarah Kirsch,1935,118562487 Friedrich von Schiller,1759,118607626 Ricarda Huch,1864,118554190 Karl Wolfskehl,1869,118634976 Luise Rinser,1911,118601172 Peter Rühmkorf,1929,118603957 Ingeborg Bachmann,1926,118505602 Paul Celan,1920,118519859 Else Lasker-Schüler,1869,118569880 Alfred Döblin,1878,118526200 Christa Wolf,1929,118634666 Erich Kästner,1899,118559206 ``` Endpoint: <https://wikidata.reconci.link> * Link für Eingabe in OpenRefine: https://wikidata.reconci.link/en/api * oder für deutsche Sprache: https://wikidata.reconci.link/de/api #### CrossRef Adresse der API für Zeitschriftendaten: http://api.crossref.org/journals/ (gefolgt von ISSN) Beispiel: <http://api.crossref.org/journals/1099-4300> ### Breakout-Session 11.30 - 11.45 Uhr Aufgabe: Mit ISSN in DOAJ Beispieldaten die CrossRef API abfragen und Informationen aus der JSON-Antwort extrahieren * Abfrage wie gezeigt * Anleitung zum Extrahieren von Informationen aus dem JSON: Abschnitt "Retrieving journal details from CrossRef via ISSN" im [Kapitel 13 der Library Carpentry Lehrmaterialien](https://librarycarpentry.org/lc-open-refine/13-looking-up-data/index.html) ## Bezüge zwischen OpenRefine und vorigen Kursen 11.45 - 12.00 Uhr ### XML Bearbeitung von XML mit OpenRefine * Import * Export via "Templating" ### RDF ... ### RegEx Regular Expressions können in OpenRefine vielfältig verwendet werden: * Text filter: Checkbox RegEx aktivieren * In zahlreichen GREL-Funktionen. Beispiel: replace(/^Hallo Welt$/, 'Grüzi Welt') Handbuch: https://docs.openrefine.org/manual/expressions/#regular-expressions ### Bibliothekarische Metadatenformate Das für MARC21 oft verwendete Tool MarcEdit bietet eine Import/Export-Schnittstelle für OpenRefine. So kann OpenRefine auch verwendet werden, um MARC21-Daten zu analysieren oder zu bearbeiten. Terry Reese (2016): MarcEdit and OpenRefine. https://blog.reeset.net/archives/1873 ### IIIF Im Cheat Sheet des Kurs wurden einige Top-Level-Collections benannt wie zum Beispiel: https://www.e-codices.ch/metadata/iiif/collection.json An diesem Beispiel können wir die Bearbeitung von JSON in OpenRefine zeigen: * Import * Export via "Templating" Über die Funktion "Add column from fetching URLs" kann eine JSON-API abgefragt werden. Die Ergebnisse müssen anschließend manuell mit der Funktion parseJson() geparst werden. Dazu eine Literaturempfehlung für ein Tutorial: https://programminghistorian.org/en/lessons/fetch-and-parse-data-with-openrefine ### Python OpenRefine unterstützt Jython 2.7, d.h. es kann alternativ zur Skriptsprache GREL auch Python2-Code (mit Ausnahmen) verwendet werden. Beispiel: Handbuch: https://docs.openrefine.org/manual/jythonclojure/#jython ### Abschlussdiskussion ...