175 views
 owned this note
# DDM2020-MK4.3 Datenanreicherung mit OpenRefine am Beispiel von Wikidata (Felix Lohmeier) Gemeinsames Dokument für das Reallabor Methodik im Studiengang Digitales Datenmanagement der FH Potsdam und HU Berlin im Wintersemester 2020. Alle, die den Link zu diesem Dokument kennen, können es bearbeiten. ## Literatur für die Wartezeit https://openai.com/blog/dall-e/ ## Organisatorisches ### Inhalte * Grundfunktionen von OpenRefine zur Bereinigung und Normalisierung von Metadaten * Datenanreicherung mit OpenRefine über die Reconciliation API * Datenanreicherung mit OpenRefine über das Parsen von HTML, XML und JSON ### Kurzbeschreibung In einem Auftrag für das Deutsche Literaturarchiv Marbach (DLA) wurden Personendaten aus dem Archivsystem (Hermann Hesse, Else Lasker-Schüler, …) mit Wikidata abgeglichen und daraus Zusatzinformationen (z. B. Links zu Portraitfotos und der Originalunterschrift bei Wikimedia Commons) für einen neuen Online-Katalog geladen. Wir spielen das in diesem Reallabor nach. Dazu importieren wir Beispieldaten in die Software OpenRefine, verknüpfen diese mit Wikidata und laden daraus zusätzliche Informationen. Sie lernen hands-on die Software OpenRefine und deren Möglichkeiten zur Datenanreicherung kennen. In der speziellen Arbeitsleistung können Sie die gelernte Methode dann in einer Gruppenarbeit auf eigene Daten anwenden. ### Vorleistung Zum Kennenlernen von OpenRefine bearbeiten Sie bitte die [Lehrmaterialien von Library Carpentry](https://librarycarpentry.org/lc-open-refine/) (ca. 4 Stunden) ### Ablaufplan 20. Februar 2021 08:30 bis 17:30 Uhr [via Zoom](https://ecampus.fh-potsdam.de/mod/page/view.php?id=202799) | Zeit | Agenda | | ------------- | ------ | | 08:30 - 09:00 | Vorstellungsrunde, Klärung der Erwartungshaltungen | | 09:00 - 09:30 | Erläuterung des Anwendungsfalls am Beispiel des Auftrags für das Deutsche Literaturarchiv Marbach | | 09:30 - 10:00 | Lehr-Block: Intro zu OpenRefine | | 10:00 - 10:30 | Pause | | 10:30 - 11:45 | Demo-Session: Anreicherung über die Reconciliation API von Wikidata | | 11:45 - 12:45 | Mittagspause | | 12:45 - 14:00 | Break-Out-Session / Arbeitsgruppen: Weitere Datenquellen mit Reconciliation API ausprobieren | | 14:00 - 14:30 | Pause | | 14:30 - 15:00 | Diskussion der Ergebnisse | | 15:00 - 15:30 | Demo-Session: Anreicherung über das Parsen von HTML, XML und JSON | | 15:30 - 16:00 | Pause | | 16:00 - 16:45 | Break-Out-Session / Arbeitsgruppen: Konzept für die spezielle Arbeitsleistung entwerfen | | 16:45 - 17:15 | Diskussion der Entwürfe | | 17:15 - 17:30 | Lehr-Evaluation | ### Nachbereitung (spezielle Arbeitsleistung) * Aufgabe: Gelernte Methode (Datenanreicherung mit OpenRefine) auf andere Daten anwenden. * Sie können wählen, mit welchen Daten Sie arbeiten wollen. Ein Konzept für das Vorgehen entwickeln Sie in einer Break-Out-Session am Ende der Lehrveranstaltung. * Als Arbeitsleistung ist das fertige OpenRefine-Projekt sowie eine Seite Begleittext abzugeben, der die Zielstellung, das Vorgehen und das Ergebnis diskutiert. * Gruppenarbeit (ca. 4-5 Studierende pro Gruppe) * Abgabetermin: 06.03.2021 * Bitte laden Sie Ihre spezielle Arbeitsleistung über die [Aktivität auf Moodle](https://ecampus.fh-potsdam.de/mod/assign/view.php?id=202811) hoch. ## Vorstellungsrunde, Klärung der Erwartungshaltungen 08:30 - 09:00 ### OpenRefine bereits eingesetzt oder geplant einzusetzen? Bereits eingesetzt: * ... Planung/Optionen: * Bearbeitung von großen Excel-Tabellen * Datenaufbereitung STATA * Alte SQL-Datenbanken via CSV * Amateurhafte Sammlungskonglomerate in Excel aus Nachlässen * Personennormdatensätze * Projekt VerbaAlpina (https://www.verba-alpina.gwi.uni-muenchen.de/) * Suche nach Gutachter\*innen: Liste mit möglichen Gutachter\*innen prüfen, ob sie mit den Antragsteller\*innen gemeinsam publiziert haben. * Problemstellung Autorenidentifikation ### Fragen zur Vorleistung (Library Carpentry Lehrmaterialien)? * Beenden von OpenRefine? * https://docs.openrefine.org/manual/running#exiting * Sehr viele Tutorials im Internet * https://openrefine.org/documentation.html ("Online Courses") * GREL-Funktionen * https://docs.openrefine.org/manual/expressions ### Wünsche an den heutigen Tag? * Personenstammsätze in Wikidata einbringen * Literaturempfehlung: https://doi.org/10.3929/ethz-b-000393724 * Vergleich mit anderen Tools (auch mit Excel) * grob im Intro mündlich besprochen * ggf. später noch Vergleich mit Catmandu, Metafacture, etc? * Einsatzmöglichkeiten * grob im Intro mündlich besprochen ## Erläuterung des Anwendungsfalls am Beispiel des Auftrags für das Deutsche Literaturarchiv Marbach 09:00 - 09:30 * Einblicke in den in Entwicklung befindlichen neuen Katalog, hier Entwicklungsstand Juni 2020: <https://wdv-teamwork.dla-marbach.de/news/34> ## Lehr-Block: Intro zu OpenRefine 09:30 - 10:00 * 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) Note: * 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> Note: * 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 ### Fragen * OpenRefine beenden: `STRG`+`C` im Konsolenfenster <https://docs.openrefine.org/manual/running/#exiting> * Templating: <https://docs.openrefine.org/manual/exporting/#templating-exporter> ## Pause bis 10:30 Uhr ## Demo-Session: Anreicherung über die Reconciliation API von Wikidata 10:30 - 11:30 ### Wikidata * Wikidata Query Service: <https://query.wikidata.org> ([Handout](https://www.wikidata.org/wiki/File:Wikidata_Query_Service_kurzgefasst.pdf)) ### Reconciliation * 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" * Voraussetzung sind einheitliche Daten. * Literaturempfehlung zu typischen Problemen mit Tabellendaten: https://librarycarpentry.org/lc-spreadsheets/02-common-mistakes/index.html ### Endpoints * Alt: <https://wdreconcile.toolforge.org> * Neu: <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 ### Beispieldaten Im DLA Marbach besonders oft verknüpfte Schriftstellerinnen und Schriftsteller als CSV: **Hinweis:** Bei Karl Wolfskehl hat sich unabsichtlich ein Tippfehler eingeschlichen (Wolf**g**skehl). Wir haben damit weiter gearbeitet, woran sich schön der Vorteil vom Abgleich mit Identifiern zeigen lässt ;-). ``` 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 Wolfgskehl,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 ``` Beobachtungen: * Alle Personen (bis auf Tippfehler Wolfgskehl) lassen sich eindeutig gegen Wikidata mit Name und Geburtsjahr zuordnen. Das muss aber nicht immer so bleiben, wenn weitere Einträge in Wikidata erfolgen. Personen mit gleichem Namen und Geburtsjahr kommen in der Realität schon ab und zu mal vor. * Reconciliation ist also als Annäherungsprozess (mit intellektuellen Zuordnungen und ggf. Vereinfachungen) zu verstehen. OpenRefine bietet mit den Facetten und der Undo/Redo Historie Möglichkeiten zur Qualitätssicherung. * Die Zuordnung über Identifier sollte in der Theorie eindeutig sein, aber auch hier könnten sich Falschzuordnungen einschleichen, falls beispielsweise ein Identifier in Wikidata falsch erfasst wurde. ## Break-Out-Session / Arbeitsgruppen: Weitere Datenquellen mit Reconciliation API ausprobieren 12:45 - 14:00 (tatsächlich ab 13:15 Uhr) * Weitere Reconciliation Endpoints: * https://docs.openrefine.org/manual/reconciling/#sources * Weitere Datenquellen: * Nutzen Sie für die Reconciliation erstmal nur Ausschnitte (ein paar Dutzend Zeilen), damit Sie nicht zu lange auf Ergebnisse warten müssen. * Über die Funktion `Create project` > `clipboard` können Sie Daten via copy&paste aus Excel einfügen, falls Sie bereits Daten vorliegen haben. * Andernfalls können Sie die Beispiele aus dem Wikidata Query Service nutzen, weil Sie da sicher sein können, dass auch etwas in Wikidata dazu zu finden ist. 1. Unter https://query.wikidata.org/ oben den Button "Beispiele" aufrufen und eine Abfrage anklicken 2. Links den Play-Button drücken 3. In der Tabelle unten den Button "Herunterladen" drücken und Format TSV-Datei auswählen. 4. Datei in OpenRefine über `Create Project` > `This computer` hochladen ## Diskussion der Ergebnisse 14:30 - 14:45 Notieren Sie hier gerne Beobachtungen und Fragen: ### Gruppe 1 * wir haben verschiedene APIs probiert * ORCID ist sehr langsam * Daten aus Wikidata konnten mit weiteren Daten angereichert werden (Länder, Währungen, Sprache...) ### Gruppe 2 * wir haben versucht, eine eigene Datei mit Daten von Wikidata anzureichern (Orte) * leider kaum eindeutige Matches * enthaltene Daten eignen sich nicht als Unterstützung für verbessertes Matching ### Gruppe 3 * Versuch mit Daten von Lehrkräften an Höheren Schulen Preußens * Abgleich mit GND + wikidata ### Gruppe 4 * Test mit VerbaAlpina Daten von API Schnittstelle https://www.verba-alpina.gwi.uni-muenchen.de/?api=1&action=getNames&version=182 (Konzepte), Test mit ca. 10 Wortstämmen/Gattungen (Bsp. Herde, Rahm, Ziege) * Herde: https://www.wikidata.org/wiki/Q209542 * Rahm: https://www.wikidata.org/wiki/Q13228 * Ziege: * https://www.wikidata.org/wiki/Q2934 * https://doi.org/10.5282/verba-alpina?urlappend=%3Fpage_id%3D12180%26db%3D202%23C7 * https://www.verba-alpina.gwi.uni-muenchen.de/?api=1&action=getRecord&id=C7&format=json * Problem 1: Wenn Begriffe aus unterschiedlichen Gattungen stammen (z.B. bei uns Tiere, Gebäude, Dinge), dann gibt es kein gemeinsames übergeordnetes "Konzept" zum Abgleich-->bedeutet viel manuelle Nacharbeit * Problem 2: Wenn nicht genügend Daten vorhanden sind, sondern nur einzelne Begriffe, die nicht in Zusammenhang miteinander stehen (keine weiteren Parameter zur eindeutigen Identifikation des Begriffes vorhanden) ### Nachtrag: Daten aus Wikidata ergänzen * Hinweis: Die "Extend Data" Funktion des Reconciliation API Standards unterstützen nicht alle Datenquellen. Für Wikidata ist das aber sehr komfortabel. * Daten aus Wikidata für abgeglichene Einträge übernehmen: * Name > Edit column > Add column(s) from reconciled values ## Demo-Session: Anreicherung über das Parsen von HTML, XML und JSON 15:00 - 15:45 Beispiel lobid-gnd: * https://lobid.org/gnd/api * ist zwar auch als Reconciliation API verfügbar, aber für die Übung gut, weil stabile Schnittstelle, relevante Daten und wir können über die Webseite vergleichen. * Wir können den gleichen Beispieldatensatz wie oben verwenden, weil dazu auch Informationen in der GND zu finden sind. Beispiel Geburtsort: * Label: ``` value.parseJson().placeOfBirth[0].label ``` * ID: ``` value.parseJson().placeOfBirth[0].id.replace('https://d-nb.info/gnd/','') ``` ### Teil 1: Abfrage * Handbuch: https://docs.openrefine.org/manual/columnediting/#add-column-by-fetching-urls ### Teil 2: Parsen * Handbuch: https://docs.openrefine.org/manual/grelfunctions/#format-based-functions-json-html-xml ### Literatur: * Tutorial: <https://programminghistorian.org/en/lessons/fetch-and-parse-data-with-openrefine> ### OpenRefine Historie auf neue Daten anwenden * Anleitung: https://kb.refinepro.com/2012/06/google-refine-json-and-my-notepad-or.html (schon etwas älter, deswegen heißt es dort noch Google Refine, aber funktioniert noch so) * Handbuch: https://docs.openrefine.org/manual/running/#reusing-operations ## Break-Out-Session / Arbeitsgruppen: Konzept für die spezielle Arbeitsleistung entwerfen 16:15 - 17:00 * Welche Ausgangsdaten? * Anregungen: <https://scrapir.org> * Womit anreichern? * Anregungen: <https://github.com/OpenRefine/OpenRefine/wiki/Reconcilable-Data-Sources> * Warum? (Anwendungsfall beschreiben) ### Gruppe 1 * Ausgangsdaten? * Liste von Forschenden, die enthält: Name, Vorname, Institution * wir wählen 9 Forscher*innen: ``` Name, Institution Edenhofer Ottmar, PIK Rockström johann, PIK Kleingärtner Sunhild, DSM Cress Ulrike, IWM Fratzscher Marcel, DIW Sinha Nitin, ZMO Treuer Stefan, DPZ Graner Andreas, IPK Petras Vivien, HU Berlin ``` * Womit anreichern? * Daten aus Wikidata * GND-Nummern - über den Namen --> GND Nummer * ORCID-IDs - über die Namen --> ORCID-ID * mit GND --> WikiData * * Warum (Anwendungsfall)? * Uns liegt eine Liste von Forscher/innen und ihrer Institutionen vor, die in der Vergangenheit im Rahmen verschiedener Projekte mit unserer Institution kooperiert haben * Um die institutionelle Zusammenarbeit besser organisieren zu können, soll diese Liste um weitere Daten angereichert werden * A Graner hat keine GND --> damit ist es schwer (unmöglich) Daten anzureichern Hinweise: * Wären vielleicht aktuelle Publikationen dieser Personen interessant? Diese könnten eventuell über Wikidata und ORCID abgefragt werden. Vollständigere Datenbanken wie Web of Science, Scopus, Google Scholar, Microsoft Academic Search, Dimensions haben keine (kostenfreien und unkomplizierten) APIs. Höchstens CrossRef wäre noch eine Alternative für alles was eine DOI hat: https://www.crossref.org/education/retrieve-metadata/rest-api/ * wir geben unser bestes - vielen Dank für den Hinweis ### Gruppe 2 * Ausgangsdaten? * <https://www.hochschulkompass.de/hochschulen/downloads.html> * Womit anreichern? * Im ersten Schritt erfolgt eine Anreicherung mit der aus Wikidata extrahierten GND-ID der Hochschulen bzw. weiteren verfügbaren IDs; ggf. auch weitere interessante Merkmale aus Wikidata * Darauf basierend können dann weitere Anreicherungen vorgenommen werden, z.B. Geodaten, Social-Media-Kanäle,... auch abhängig vom Umfang der Wikidata-Inhalte * Vorgehen: * zuerst via "higher education institution" --> 292 matched, 172 none * für 172 none: Hochschultypen via Textfacette angeschaut * verschiedene Abfragen anhand anderer Hochschultypen versucht sowie in Kombination mit dem Gründungsjahr versucht --> zwar mehr Matches, aber es bleibt händische Restarbeit, weil die Namen der Hochschulen häufig nicht genau gleich sind (teilweise vermutlich auch aufgrund von Umbenennungen) * Warum (Anwendungsfall)? * Verbesserung der statistischen Analyse von Daten aus Studierendenbefragungen (Stichwort Kontextdaten-Anspielung für Hochschulen) * Code wäre bei Aufbereitung über OpenRefine weiter zugänglich und könnte durch die anfragenden Wissenschaftler qualitätsgeprüft und/oder leicht angepasst werden Hinweise: * Vielleicht funktioniert das Matching gegen lobid-gnd https://lobid.org/gnd/api#openrefine besser. Vielleicht ist die Wikidata-ID auch in der GND hinterlegt und könnte auf diese Weise zumindest für einen Teil gefunden werden. * Vielleicht auch interessant: https://www.wikidata.org/wiki/Wikidata:Scholia. Dort gibt es Übersichtsseiten für Organisationen, die sich aus Wikidata Querys zusammensetzen. Was für Informationen dort dargestellt werden, könnte als Anregung dienen. ### Gruppe 3 * Ausgangsdaten? * * Versuch mit Daten von Lehrkräften an Höheren Schulen Preußens (basierend auf Datensätzen zu Personalunterlagen im Archiv) - Name - Vorname - Geburtsdatum (hier könnte man die schlechte Datenbasis z.B. Der GND austricksen, indem man sowohl nur nach Jahren sucht, als auch nur im Zeitraum 1850-1920 als Geburtsjahre) * Womit anreichern? - Wikidata: - Funktion/Beruf - von Lehrkräften an Höheren Schulen in Preußen - Wirkungsort… - Schulen??? (vgl. Vorgänger/Nachfolge + vllt. API zu https://schularchive.bbf.dipf.de//index.php/Hauptseite) - Sterbedaten - GND: - Funktion/Beruf - von Lehrkräften an Höheren Schulen in Preußen - Wirkungsort - Schulen??? (vgl. Vorgänger/Nachfolge + vllt. API zu https://schularchive.bbf.dipf.de//index.php/Hauptseite) - Wirkungsdaten - alternative Namen (Geburtsname) => gleiche Datenausgaben könnte man über die Vergleichsfunktion abgleichen => Abfrage über API bietet weitere Auswahlmöglichkeiten über den String => Ringabfragen zur Prüfung, ob jeweils das gleiche rauskommt * Warum (Anwendungsfall)? - Anreicherung von vorhandenen Personendatensätzen um weitere biografische Angaben und eindeutige Zuordnung von Personen mit gleichem Namen/Namensänderungen ### Gruppe 4 * Ausgangsdaten? Die Universitätsbibliothek der Ludwig-Maximilians-Universität München ist die zweitgrößte Altbestandsbibliothek in Bayern, mit einem Bestand von über 200.000 Bänden aus der Zeit zwischen 1450 und 1800. Die für Coding Da Vinci aufbereiteten und im CSV-Format bereitgestellten bibliographischen Daten bieten mit 2057 Datensätzen einen kleinen Ausschnitt jener Werke, die bereits digital vorliegen. In den Metadaten ist jeweils der Link auf das im PDF-Format vorliegende Digitalisat vorhanden. Sowohl die Metadaten als auch die Digitalisate selbst stehen unter der CCO-Lizenz. Die Metadaten enthalten neben den herkömmlichen Titelangaben, wie Autor, Titel, Jahr, Verlag etc. auch die historischen Namen der Erscheinungsorte. (Datensatz https://data.ub.uni-muenchen.de/140/) * Womit anreichern? * Geoname ID über Wikidata (https://www.wikidata.org/wiki/Property:P1566) * GND ID * Geburtsort und Sterbeort der AutorInnen über Wikidata * Warum (Anwendungsfall)? * Erstellung einer virtuellen Karte (Visualisierung, vgl. Modul 4.1 Reallabor Daten) zur Veranschaulichung, wo in diesem frühen Zeitraum Bücher/Werke entstanden sind bzw. bei welchen Verlagen oder mit Geburts- und Sterbeorte der AutorInnen. (Bsp. https://pressengers.de/news/datenvisualisierung-2000-jahre-kulturgeschichte-5-minuten/) ## Diskussion der Entwürfe 17:00 - 17:15 * Größere Datenmengen? Ggf. Arbeitsspeicher erhöhen, auf den OpenRefine zugreifen darf: <https://docs.openrefine.org/manual/installing/#increasing-memory-allocation> * Würden Sie Ihre Arbeitsleistungen veröffentlichen wollen? Ich könnte dafür bei Interesse ein Repository bei GitHub einrichten und auch die Kursmaterialien dort ablegen. ## Lehr-Evaluation 17:15 - 17:30 Kursevaluation über [Moodle](https://ecampus.fh-potsdam.de/course/view.php?id=4708) (Link oben rechts)