Daten in großen Mengen zu verarbeiten, insbesondere wenn es sich um Texte/Sprache handelt, birgt große Herausforderungen. Dieser Blog-Beitrag gibt einen Einblick in den Verarbeitungsprozess des DiskursBarometer LIVE-Korpus. Bei der Entwicklung der dahinterstehenden Software traten Probleme auf, die bisher kaum oder gar nicht in der Fachliteratur zur Korpuslinguistik beschrieben werden [1]. Zuerst werden einige ausgewählte Problemfelder vorgestellt, dann werden die Lösungen aufgezeigt. Zum Schluss erfolgt eine Retrospektive und ein Ausblick auf zukünftige Verbesserungen.
Probleme die es zu lösen galt…
1. Problem – Die Gesamtgröße
Gegenwärtig gibt es nicht viele öffentlich verfügbare Korpora des Deutschen (und auch anderer Sprachen), die eine Marke von über 1 Mrd. Token überschreiten (siehe [2]). Dies hat im wesentlich zwei Gründe: (1) Ist der Aufwand für Erfassung, Aufbereitung und Auswertung groß und es werden entsprechende Hardwareressourcen und Know-how benötigt. (2) Lassen sich bereits viele Forschungsfragen mit einer kleineren Korpusgröße gut beantworten – was dazu führt, dass im Abwägungsprozess (Kosten/Nutzen) eher zu kleineren Korpora tendiert wird.
Da sich das Gesamtprojekt DiskursMonitor mit der Analyse von gesamtgesellschaftlichen Diskursen befassen möchte, ist eine breite und große Datengrundlage unerlässlich. Aktuell (Stand gestern) wurde folgende Korpusgröße verarbeitet:
Die Kapazitätsgrenze unserer jetzigen Soft- und Hardwaredesigns kann max. ca. 5 Mrd. Token pro Tag verarbeiten. Mit Stand 20. April 2020 (3,3 Mrd. Token) würden die Kapazitäten demnach ausreichen, um die Gesamtmenge innerhalb eines Tages zu verarbeiten. Dies führt direkt zu Problem Nr. 2.
2. Problem – Nicht eine Gesamtgröße, sondern viele Teilgrößen
Das Hauptproblem bei der Datenverarbeitung im DiskursBarometer ist nicht die Gesamtgröße von mehreren Mrd. Token, sondern die Optimierung der Analysedaten und ihr kontinuierliches Wachstum. Konkret: Nutzt man denselben Prozess für Erfassung, Aufbereitung und Auswertung, um „Ein Korpus mit 1 Mrd. Token“ – vs. – „100 Korpora mit je 10 Mio. Token“ zu verarbeiten, so stellt man fest: dass das „1. Mrd. Korpus“ (Monolith) wesentlich mehr Optimierungspotenzial bietet. In einem frühen Prototypen, der die Korpora normierte und eine Angleichung vornahm, stießen wir sehr schnell an Kapazitätsgrenzen. Die Normierung wurde damals eingeführt, um einheitliche Korpora zu erhalten, die sich auf eine ähnliche Weise optimieren lassen, wie ein großes monolithisches Korpus. Dies hatte aber zur Folge, dass der Prozess zur Normierung/Angleichung stetig mehr Zeit/Hardware-Ressourcen konsumiert.
Ein kritischer Punkt war für uns von Anfang an das Zeitlimit von 24 Stunden – in dieser Zeit muss ein kompletter Tag (Vortag) verarbeitet sein, um keinen Rückstau zu produzieren (und dies bei sehr begrenzten Mitteln für den Hardware/Server-Betrieb). Da nicht absehbar ist, wie viel Material pro Tag aufläuft, muss der Prozess der Erfassung, Aufbereitung und Auswertung flexibel genug sein, um auch große Lastspitzen aufzufangen.
Unsere Lösung sieht daher wie folgt aus: Wir nehmen keine Normierung/Angleichung mehr vor. Neu hinzukommende Korpora werden autark aufbereitet und ausgewertet. Dadurch entfällt der Vorteil einer gemeinsamen Optimierung. Daher wurde der folgende Ablauf entwickelt, um diesen entgangenen Vorteil aufzufangen. Dieser Prozess wird in den kommenden Monaten noch weiter optimiert.
— Jede Sekunde —
Mittels selbst gebauter Scraper (vom engl. ‚to scrape‘ – für ‚(aus)kratzen‘ – Scraper sind Programme, die Inhalte – im vorliegenden Fall ‚Text‘ – herauskratzen) extrahiert das Diskursbarometer kontinuierliche Webseiten, Newsfeeds und andere spezifizierte Quellen. Die initiale Liste basiert auf einer einer Analyse von aktiven Entitäten, die über die DPA (Deutsche Presse Agentur) und/oder „Google News“ Inhalte in regelmäßigen Abständen platzierten. Daher umfasst die Liste sowohl Qualitätsmedien, Boulevardpresse, Pressemeldungen politischer Parteien, Lobbygruppen und Firmen, ebenso wie Blogs und dubiose Verschwörungswebseiten. Diese Liste wird kontinuierlich erweitert und gepflegt. Wenn Sie Vorschläge für die Aufnahme weiterer Quellen haben, nutzen Sie gerne unser Kontaktformular.
— 00:01-00:30 Uhr —
Jeden Tag, um kur nach Mitternacht, wird das Tages-Korpus vom Vortrag zunächst komprimiert archiviert. Die Daten liegen entweder als XML, JSON oder HTML vor und werden in einer ZIP-Datei komprimiert gespeichert. Dies hat gleich mehrere Vorteile. Zunächst einmal (1) werden die Originaldaten archiviert. Da der Prozess aktuell noch in der Erprobungsphase ist, kam es bereits mehrfach vor, dass wir auf diese Rohdaten zurückgreifen mussten. Durch die ZIP-Kompression wird zudem (2) Speicherplatz bei der Archivierung eingespart. Der folgende Arbeitsschritt zur Bereinigung und Annotation verwendet die ZIP-Daten direkt, dadurch (3) muss nur eine Datei als Parameter übergeben werden und (4) die ZIP-Daten lassen sich effizienter verarbeiten, als Einzeldateien (trotz Zeitverlust durch die Kompression).
— 00:31-02:30 Uhr —
Im Anschluss an die erfolgreiche Archivierung startet der automatische Verarbeitungsprozess. Die Metadaten werden extrahiert und die Texte werden bereinigt – nur der pure Text bleibt übrig (Bilder, Formatierungen etc.) werden entfernt (wird bereinigte Text wird auch als Plaintext bezeichnet). Der bereinigte Text wird dann automatisch annotiert. Im Annotationsprozess wird der Text zunächst in Sätze und Token (umfasst u. a. Wortformen aber auch Satzzeichen) zerlegt, danach werden die Token mit Lemmata- (Wortform: ‚Häuser‘ – Lemma: ‚Haus‘) und POS-Annotationen (Part-of-Speech / Wortart – Wortform: ‚Haus‘ – POS: ‚NN‘ bzw. Nomen) angereichert. Diese Daten sind insbesondere bei komplexeren Abfragen hilfreich. Aktuell dauert der Prozess pro Tag ca. 2 Stunden. Die fertigen Korpusdaten werden dann im CEC6-Format gespeichert – dies ist ein spezielles und hoch effizientes Binärformat für annotierte Korpora (siehe CorpusExplorer.de). Zum Vergleich, 1 GB gezippte Rohtexte benötigen trotz zusätzlicher Annotationen nur ca. 150 MB Speicherplatz.
— 02:31:06:30 Uhr —
Direkt nachdem die Annotation abgeschlossen wurde, stehen die fertigen Daten im Diskursbarometer zur Verfügung. Auf die Daten haben nur assoziierte Forscher*innen des Lehrstuhls für computergestützte Sozio- und Diskurslinguistik an der Universität Siegen Zugriff. Der Zugriff erfolgt über eine RESTful-API (eine webbasierte Programmierschnittstelle). Über diese API können Analysen eingestellt werden. Alle Analysen werden automatisch abgearbeitet – es muss also niemand eine Nachtschicht einlegen, damit die Ergebnisse rechtzeitig zum Frühstück vorliegen. Wurden alle Analysen erfolgreich abgeschlossen, werden alle nicht mehr benötigten Daten und Vorstufen gelöscht.
— 06:30, 09:30, … 21:30 Uhr —
Ab 06:30 Uhr prüft ein zweiter Server, alle drei Stunden, ob neue Analyseergebnisse für die Veröffentlichung zur Verfügung stehen. Dies geschieht entweder automatisch (durch vordefinierte Analysen – wie Sie sie auf dieser Seite sehen) oder manuell (weil diese durch assoziierte Forscher*innen angefordert und veröffentlicht wurden – z. B. zu bestimmten Diskursphänomenen oder zu Diskurs-Glossar-Einträgen). Die Zeit dazwischen nutzen die Server zur Berechnung länger andauernder Aufgaben.
— Literatur —
Folgende Literatur empfehlen wir für die Vertiefung:
Kleppmann, Martin. Designing Data-Intensive Applications: The Big Ideas behind Reliable, Scalable, and Maintainable Systems. First edition, O’Reilly Media, 2017.
Wir haben zudem eine umfassende technisches Dokumentation auf der folgenden Seite für Sie zusammengestellt: [Weiterführende technische Informationen für Entwickler*innen]
— Fußnoten —
[1] Für vertiefende Lektüre sei hier (Kleppmann, 2017) empfohlen. Viele praxisrelevante Lösung für datenintensive Anwendungen beschrieben – mit einem starken Informatik-Fokus. Diese Ansätze sind aber nur bedingt auf korpuslingisitschen Datensätzen übertragbar, da sie sich primär an klassischen strukturierten Daten orientieren.
[2] Im Vergleich, die gesamte deutschsprachige Wikipedia umfasst im Juni 2019 0,75 Mrd. Token. Eine Auswahl größerer Korpora: Die größte deutschsprachige Sammlung, das DeReKo (Deutsche Referenzkorpus), umfasst (Stand: 18.01.2020): 46,9 Mrd. Token, das DTA (Deutsch Text Archiv) mit ca. 100 Millionen Token (Stand März 2014) bildet insbesondere den historischen Sprachstand ab, dem DWDS mit ca. 2,5 Mrd. Token (Stand ca. 2018) versucht den deutschen Wortschatz von 1600 bis heute empirisch erschließbar zu machen. Im Englischen gibt es neben COCA (Corpus of Contemporary American English) mit 1. Mrd. Token (Stand 2019), iWeb 14 Mrd. Token (Stand 2017) und NOW (News on the Web) 9,8 Mrd. Token (täglich aktualisiert) vergleichbare Projekte.