Datenextraktion

Tools für die Datenextraktion

Datenfilterung und -extraktion

Eine Webarchivsammlung besteht üblicherweise aus mehreren WARC-Dateien, in denen die archivierten Daten gespeichert sind. Als Containerformat enthält eine WARC-Datei viele unterschiedliche Datentypen, die zusammen eine Website bilden: von HTML-Dateien über Quellcode in JavaScript, Darstellungsvorgaben in CSS hin zu Bild-, Video-, Audio- oder Textdateien, die auf der Website eingebettet sind. Der erste Schritt vor der eigentlichen Auswertung einer Webarchivsammlung ist deshalb die Filterung und Extraktion von Daten abhängig von der Fragestellung, u. a. nach Zeit, Datentyp oder auch Inhalt. Im Projekt „Methoden der Digital Humanities in Anwendung auf Webarchive“ wurden zwei Werkzeuge evaluiert, die speziell für die Filterung und Extraktion von Daten aus WARC-Dateien entwickelt wurden: ArchiveSpark und das Archives Unleashed Toolkit (AUT).

ArchiveSpark1

ArchiveSpark entstand im Rahmen eines Forschungsprojekts in Zusammenarbeit zwischen dem L3S Research Center in Hannover und dem Internet Archive. Wie auch AUT setzt ArchiveSpark auf Apache Spark, ein Framework, mit dem große Datenmengen parallel auf verschiedenen Rechnern verarbeitet werden können. ArchiveSpark legt besonderen Wert auf die effiziente Datenverarbeitung und wertet zunächst nur Metadaten im CDX-Format aus, die kleiner und leichter zu verarbeiten sind als die entsprechenden Originaldaten im WARC-Format. Das CDX-Format ist in der Webarchivierung weit verbreitet, da es von gängigen Viewern wie der OpenWayback als Index genutzt wird.

Die Nutzung von ArchiveSpark setzt Programmiererfahrung voraus. Forschende aus den Geisteswissenschaften ohne entsprechende technische Kenntnisse sind hier auf interdisziplinäre Kooperationen oder IT-Personal an den archivierenden Institutionen angewiesen. Eine zusätzliche Herausforderung entsteht dadurch, dass ArchiveSpark auf Scala setzt, eine Programmiersprache, die in den Digital Humanities nur wenig verbreitet ist.

Als Ergebnis der Datenfilterung und -extraktion entsteht ein abgeleitetes Datenset. ArchiveSpark nutzt JSON als Ausgabeformat, da es maschinenlesbar und auch außerhalb der Webarchivierung weit verbreitet ist und von gängigen Programmiersprachen und Analysewerkzeugen unterstützt wird. Das Derivat enthält zusätzlich Metadaten, um den Entstehungsprozess zu dokumentieren: Dazu gehören Informationen zu den Ausgangsdaten sowie den einzelnen Extraktionsschritten.

Version 3.0.1 von ArchiveSpark wurde im Oktober 2019 veröffentlicht. Seitdem gab es noch einzelne Fehlerkorrekturen, doch die Entwicklung scheint insgesamt zu stagnieren.

Archives Unleashed Toolkit2

Anders als ArchiveSpark orientiert sich AUT ausdrücklich an den Anforderungen von Forschenden aus den Geisteswissenschaften: Bereits das Entwicklungsteam ist interdisziplinär aufgestellt und umfasst neben Informatiker*innen auch Historiker*innen sowie Bibliothekar*innen. Mit der Veranstaltung von Datathons bemühen sich die Entwickler*innen zusätzlich um den Aufbau einer Nutzercommunity und um den Austausch mit Forschenden. Anders als ArchiveSpark setzt AUT inzwischen zudem auf Python, eine Programmiersprache, die auch in Digital Humanities Studiengängen einführend gelehrt wird und daher vielen Forschenden in diesem Bereich vertraut ist. Als zusätzliches Angebot für Nutzer*innen ohne Programmierkenntnisse und ohne die entsprechende technische Infrastruktur stellte das Entwicklerteam die Archives Unleashed Cloud zur Verfügung, mit der die Datenfilterung und -extraktion im Browser über eine grafische Benutzeroberfläche gesteuert und auf externen Servern in der Cloud durchgeführt werden konnte 3.

Effizienz und die Möglichkeiten zur verteilten Ausführung auf mehreren Servern, die Apache Spark bietet, spielen bei AUT eine Nebenrolle. Dies deckt sich mit dem Szenario an der BSB, wo ebenfalls nur ein Server für die Auswertungen genutzt wurde. Wie auch ArchiveSpark setzt AUT bei den abgeleiteten Datensets auf Standardformate wie JSON oder CSV, die Derivate enthalten jedoch keine Metadaten zum Entstehungsprozess. Ausgangsdaten und der Quellcode für die Erzeugung müssen so separat dokumentiert werden, um die Nachvollziehbarkeit der Ergebnisse zu garantieren.

Archives Unleashed hat sich strategisch auf kleine bis mittelgroße Archivierungseinrichtungen ausgerichtet, die ihre thematischen Sammlungen für computergestützte Analysen zugänglich machen wollen, aber nur über eingeschränkte technische Ressourcen verfügen und darum überwiegend auf den Webarchivierungsdienstleister Archive-It zurückgreifen. Diese Zielsetzung war insofern erfolgreich, als dass die Archives Unleashed-Werkzeuge nach Abschluss des ursprünglichen Forschungsprojekts jetzt in das Angebot von Archive-It integriert werden sollen. Die Weiterentwicklung des Toolkits scheint damit auf nächste Zeit gesichert. Zu bedenken ist jedoch, dass das Geschäfts- und Vertragsmodell von Archive-It auf die rechtliche Situation in den USA zugeschnitten ist und vor allem von archivierenden Einrichtungen dort genutzt wird. Die unterschiedlichen urheberrechts-, datenschutz- und vertragsrechtlichen Regelungen erschweren es archivierenden Einrichtungen in Europa, das Angebot von Archive-It zu nutzen.

Erfahrungen im Projekt

Aufgrund der Ausrichtung an geisteswissenschaftlichen Forschungsinteressen, der Unterstützung durch eine aktive Nutzercommunity und die gesicherte Weiterentwicklung fiel die Wahl im Projekt auf AUT als Werkzeug für die Datenfilterung und -extraktion. Mit AUT erzeugten wir Standardderivate für den Event Crawl zur Europawahl 2019, wie sie auch die Archives Unleashed Cloud vorsieht: Plain Text Derivate, die den reinen Inhaltstext archivierter HTML-Dateien enthalten, sowie Domain Graphen, die Links zwischen Domains aufzeichnen. Dabei nutzten wir auch die Funktion zur Entfernung von Boilerplate-Inhalten wie der Navigationsleiste, die AUT beinhaltet. Die Heuristik zur Erkennung von Boilerplate-Inhalten greift auf das HTML-Markup zurück und muss deshalb angewendet werden, bevor das Markup bei der Textextraktion entfernt wird4. Ein Beispiel für die Auswertung dieser Derivate mit einsteigerfreundlichen Werkzeugen wie Voyant und Gephi findet sich hier bzw. hier.

Herausforderungen ergaben sich bei der Extraktion durch die Verwendung verschiedener Zeichencodierungen in den Ursprungsdaten: AUT unterstützt standardmäßig nur UTF-8, während in den ursprünglichen WARC-Dateien einzelne Inhalte in abweichenden Codierungen wie ISO-8859-1 vorlagen. Dieses Problem ist den Entwickler*innen bereits bekannt, aus Gründen der Performanz ist jedoch nicht vorgesehen, AUT so zu erweitern, dass für jeden Inhalt zunächst die Zeichencodierung ermittelt wird5. Hier ist also auch in Zukunft noch eigener Entwicklungsaufwand nötig.

Eine Schwachstelle von AUT in der aktuellen Version 0.90.4 ist noch das Parsen von WARC-Einträgen. Speicherfehler bei ungewöhnlich großen WARC-Einträgen fielen auch bei unseren Extraktionsversuchen auf. Bei der Auswertung von WARCs, die mit webrecorder6 erstellt worden waren, stießen wir darüber hinaus auf Probleme bei der korrekten Wiedergabe von gzip-komprimierten Inhalten. In den folgenden Versionen von AUT ist eine Überarbeitung dieser Funktionalität geplant, möglicherweise wird dabei auf die sparkling-Komponente von ArchiveSpark zurückgegriffen7.

Offen ist außerdem, wie Inhalte extrahiert werden können, die auf Websites dynamisch via JavaScript im JSON-Format vom Server nachgeladen werden. Bei der Text- und Linkextraktion berücksichtigt AUT bisher archivierte HTML-Dateien, JSON-Dateien werden nicht weiter ausgewertet. Wir stießen auf diese Einschränkung bei dem Versuch, Inhalte aus Twitter-Webseiten zu extrahieren, die mit webrecorder manuell über den Browser archiviert worden waren. Wenn Nutzer*innen in einer Twitter-Timeline nach unten scrollen, werden zusätzliche Inhalte nachträglich vom Server angefordert. Diese JSON-Dateien enthalten einzelne HTML-Bestandteile, die in die Webseite eingebunden werden. Die genaue Struktur dieser JSON-Dateien variiert jedoch je nach Website, was eine Auswertung schwierig macht. Für große und häufig archivierte Websites wie Twitter wäre eine solche Extraktionsfunktion jedoch aus unserer Sicht lohnend. Unsere Umsetzung für die Extraktion von Twitterdaten findet sich auf GitHub.

Die von AUT extrahierten Daten sind relativ grob granular. Für Plain Text Derivate wird beispielsweise nicht zwischen Textbestandteilen wie Titel oder Hauptteil unterschieden, die anhand des HTML-Markups identifiziert werden könnten. Auch das Crawldatum gibt nur eine sehr grobe Information darüber, dass der Inhalt zum Zeitpunkt des Crawls verfügbar war, liefert jedoch keinen Hinweis darauf, wann ein Inhalt zum ersten Mal publiziert oder zuletzt verändert wurde. Für bestimmte Analysemethoden wie Structural Topic Modeling, das im Projekt zum Einsatz gekommen ist, sind Metadaten jedoch notwendig, um die Themenentwicklung abhängig von Faktoren wie Verfasser*in oder Publikationsdatum zu untersuchen. Auch hier gilt, dass die Extraktion dieser granularen Daten für jede Website einzeln konfiguriert werden muss und damit mit erheblichem Aufwand für die Analyse der einzelnen Websites verbunden ist. An dieser Stelle setzt das im Projekt entstandene Extraktionswerkzeug warc2corpus an, das speziell für die Extraktion fein granularer Daten aus archivierten Websites entwickelt wurde.


  1. Holzmann, Helge, Vinay Goel, und Avishek Anand. „ArchiveSpark: Efficient Web Archive Access, Extraction and Derivation“. In Proceedings of the 16th ACM/IEEE-CS on Joint Conference on Digital Libraries, 83–92. JCDL ’16. New York, NY, USA: Association for Computing Machinery, 2016. https://doi.org/10.1145/2910896.2910902↩︎

  2. Ruest, Nick, Jimmy Lin, Ian Milligan, und Samantha Fritz. „The Archives Unleashed Project: Technology, Process, and Community to Improve Scholarly Access to Web Archives“. In Proceedings of the ACM/IEEE Joint Conference on Digital Libraries in 2020, 157–166. JCDL ’20. Virtual Event, China: Association for Computing Machinery, 2020. https://doi.org/10.1145/3383583.3398513↩︎

  3. Die Instanz der Archives Unleashed Cloud wurde inzwischen abgeschaltet, der Quellcode steht weiterhin zur Nachnutzung zur Verfügung. ↩︎

  4. Kohlschütter, Christian, Peter Frankhauser, und Wolfgang Nejdl. „Boilerplate Detection using Shallow Text Features“. Vortrag auf WSDM 2010 - The Third ACM International Conference on Web Search and Data Mining New York City, NY USA. New York City, NY USA, 2010. https://www.l3s.de/~kohlschuetter/publications/wsdm187-kohlschuetter.pdf↩︎

  5. Siehe dazu https://github.com/archivesunleashed/aut/issues/428↩︎

  6. Der Webarchivierungsdienst „webrecorder“ wurde inzwischen zu „Conifer“ umbenannt. ↩︎

  7. Für laufende Diskussionen dazu siehe https://github.com/archivesunleashed/aut/issues/494↩︎