Die verschiedenen Verfahren des Natural Language Processing gehören schon länger zum Handwerkszeug der Digital History. Hierzu zählen auch die Methoden der Named Entity Recognition (NER) und Word Embeddings, die für geschichtswissenschaftliche Anwendungen besonders vielversprechend sind. Doch finden sie bislang nur sehr eingeschränkt Verwendung. Um diese Methoden der digitalen Textanalyse den Studierenden des Master-Schwerpunkts “Digital History” näherzubringen, bot der Lehrstuhl für Digital History in der vorlesungsfreien Zeit eine zusätzliche Übung als 3-tägigen Workshop an. Unter dem Titel Natural Language Processing für Historiker:innen mit den Python Frameworks Flair und SpaCy widmeten sich Studierende, Mitarbeiter:innen der Digital History und weitere Kolleg:innen gemeinsam der Frage, welche Möglichkeiten die NLP-Methoden Named Entity Recognition und Word Embeddings für die Geschichtswissenschaften bieten können und wie man sie konkret einsetzen kann. Hierfür wurden die State-of-the-Art NLP-Bibliotheken flair und SpaCy ausgewählt, um gemeinsam in kurzen Übungen deren Potenziale und Möglichkeiten für die Digital History auszuloten. Im Laufe des Workshops konnten die Teilnehmer:innen an bereitgestellten Beispielen und eigenen Projekten die beiden Python Bibliotheken kennenlernen und austesten, lernten aber auch die Grenzen der ausgewählten Methoden und deren Umsetzung in den verschiedenen Frameworks kennen.
Das Setting
Hierfür wurden von den Kursverantwortlichen Jupyter Notebooks vorbereitet, um den Teilnehmer:innen zunächst die Grundlagen von flair und spaCy zu vermitteln und, darauf aufbauend, in ersten Mini-Projekten dann auch selbst erste kleinere Fragestellungen bearbeiten zu können. Beide NLP-Bibliotheken bieten neben diversen anderen Funktionalitäten Methoden zum POS-Tagging, zur Named Entity Recognition und für die Modellierung von Word Embeddings, auf die der Workshop den Fokus gelegt hat. Ebenfalls stehen für beide Bibliotheken verschiedene vortrainierte Sprachmodelle zur Verfügung, die für die Verarbeitung der zur Verfügung gestellten Textdaten genutzt wurden. Als Beispieldatensatz für das gemeinsame Scripten dienten Reden der Bundesregierung aus den Jahren 1982–2017, wie sie im German Political Speeches Corpus gesammelt und bereitgestellt werden.
Named Entity Recognition
Nach der Einführung in die grundlegende Anwendung von flair und SpaCy ging es darum, wie sich mit Hilfe der beiden Frameworks die im Text enthaltenen Named Entities auszeichnen lassen. Das heißt, wie sich in unbekannten Texten die verschiedenen Eigennamen und ihre jeweiligen Klassenzuordnungen (Personen, Orte, Institutionen etc.) annotieren lassen, so dass man dann damit weiterarbeiten kann.
Mit dem bereitgestellten Datensatz konnten die Teilnehmer:innen das vorgestellte Verfahren daraufhin selbst erproben. In einer gemeinsamen Übung war es dann die Aufgabe, für alle Sätze, die das Wort Ukraine enthielten, alle weiteren geografischen Entitäten zu identifizieren und in eine chronologisch geordnete Liste zu bringen, so dass der Kontext, in dem in den Reden der Bundesregierung von der Ukraine gesprochen wurde, und dessen Entwicklung über die Zeit nachvollziehbar wurde. So handelten viele im Korpus enthaltenen Reden in der Mitte der 1990er-Jahre um Verträge bezüglich des Abzugs von Atomwaffen aus der Ukraine; 2014 war die Annexion der Krim ein vorherrschendes Thema in den Reden. Um die Jahrtausendwende gingen Reden der Bundesregierung auf die Frage der Zwangsarbeiterentschädigungen in Ost- und Mitteleuropa ein, wie der folgende mit Named Entity ausgezeichnete Ausschnitt aus einer Rede von Dr. Otto Graf Lambsdorff vor dem Deutschen Bundestag zum Entwurf eines Gesetzes zur Errichtung einer Stiftung “Erinnerung, Verantwortung und Zukunft” vom 14. April 2000 zeigt:
Die Bundesregierung und auch der Bundestag ORG sind darin einig, dass mehr als 55 Jahre nach Ende des Krieges MISC die Frage der Reparationen nicht mehr geöffnet wird. Bundeskanzler Gerhard Schröder PER hat das Nötige dazu gesagt. Die Stiftung hat eine politische Dimension: Bei den Betroffenen handelt es sich zum überwiegenden Teil um Menschen aus Ost- und Mitteleuropa: aus Polen LOC , aus Rußland LOC , aus der Ukraine LOC , aus Weißrussland LOC , aus der Tschechischen Republik LOC und anderen Ländern LOC , also vor allem um unsere osteuropäischen Nachbarn. Die Entschädigung ehemaliger Zwangsarbeiter ist, wie fälschlicherweise oft zu lesen war, keine nur jüdische MISC Überlebende betreffende Frage. Wir wollen mit den osteuropäischen Ländern – so wie auch mit der Jewish Claims Conference ORG – eine friedliche Zukunft gestalten und sichern.
Erste Unterschiede zwischen Flair und SpaCy
Bei der konkreten Arbeit mit den beiden Python-Bibliotheken haben sich verschiedene Unterschiede zwischen den Frameworks gezeigt. Ein erster Unterschied zeigt sich in der Genauigkeit bei der Zuweisung von Kategorien von Named Entities, die mit flair und SpaCy ausgezeichnet werden können: Während z. B. SpaCy den Eigennamen ‘Sowjetunion’ als ORG (Organisation) auszeichnet, wird dieser in flair als LOC (Location) erkannt. Zudem gibt es auch erhebliche Unterschiede in der Verarbeitungsgeschwindigkeit sowie in den Ergebnissen. SpaCy bot deutlich mehr Ergebnisse bei der Named Entity Recognition an als flair; darunter fand sich jedoch auch eine größere Anzahl falsch-positiver Ergebnisse. So wurden von SpaCy mitunter auch Verben und Adjektive als Named Entities erkannt.
Flair bot hingegen ein deutlich kleineres und damit wohl auch präziseres Set an Ergebnissen, war zugleich aber auch wesentlich langsamer. So wurde schnell deutlich, dass bei den Anwendungen stets die Waage zwischen Performance und Genauigkeit gefunden werden muss.
An diesen Beispielen wurde anschließend auch die Frage diskutiert, auf welcher Grundlage die für die Named Entity Recognition bereitgestellten Modelle trainiert wurden und ob diese sich so überhaupt auf historische Textsammlungen anwenden lassen. Insbesondere, wenn die verwendeten Modelle auf Texten des 21. Jahrhunderts basieren, scheint ihr Einsatz für die Analyse historischer Texte wie auch für abweichende Textgattungen schwieriger. Das zeigt vor allem, dass wir Frameworks brauchen, für die ganz unterschiedliche Modelle für verschiedene Sprachstufen und Textgattungen bereitstehen und verwendet werden können – wenn man diese Modelle nicht erst aufwändig selbst trainieren möchte. Hier ist das Angebot von flair ungleich besser, lassen sich über Hugging Face doch eine ganze Reihe von Modellen nutzen, während SpaCy a priori nur seine Standardmodelle anbietet. Doch hat flair gerade für noch unerfahrene Nutzer – zumindest für den Moment – auch einen großen Nachteil: Das Framework ist leider bei weitem nicht so umfangreich und eingänglich dokumentiert wie SpaCy, so dass es immer wieder viel Zeit braucht, das genaue Vorgehen selbstständig zu erarbeiten.
Word Embeddings
Im zweiten Abschnitt der Veranstaltung befassten sich die Teilnehmer:innen dann mit den Möglichkeiten der Word Embeddings. Dabei handelt es sich um eine besondere numerische Repräsentation von Wörtern: In einem großen mehrdimensionalen Vektor werden hier die verschiedenen Häufigkeiten des gemeinsamen Vorkommens mit anderen Wörtern als Zahlenwerte abgelegt, so dass beispielsweise mit Hilfe von Distanzmetriken, die auf linearer Algebra basieren, eine räumliche Nähe im Wordvektorenraum bestimmt und damit eine inhaltlich-semantische Ähnlichkeit verglichen werden kann. Aber auch viele weitere Einsatzmöglichkeiten im Bereich der Textanalyse sind möglich. Bei den sogenannten Flair Embeddings aus der gleichnamigen Python-Bibliotheken werden bei der Zuweisung der numerischen Repräsentation der Kontext, in dem ein Wort steht, mitberücksichtigt, so dass hier auch semantische und kontextrelevante Nuancen erfasst und abgebildet werden. Dies erlaubt es z. B., synonym gebrauchte Wörter zu finden, aber auch inhaltlich ähnliche Texte zu identifizieren.
Für die Visualisierung der Daten wurde dabei auf plotly und bokeh, zurückgegriffen, zwei Python-Bibliotheken für interaktive Visualisierungen. Eine Voraussetzung, um die mehrdimensionalen Word Embeddings zu visualisieren, ist eine Reduktion der Dimension auf 2 bzw. 3 Dimensionen. Auch hierfür bietet das Python-Universum einen Algorithmus an — im konkreten Falle UMAP, eine in Python implementierte Lösung zur Dimensionsreduzierung. An dem Beispieldatensatz der Reden der Bundesregierung konnte veranschaulicht werden, wie sich die Datenpunkte in Clusterwolken zusammenfanden. In einzelnen kleineren Clustern gruppierten sich beispielsweise Eigennamen oder Jahreszahlen, wie ein Hoovern über die Datenpunkte anzeigte.
Ausgehend von diesen ersten Erfahrungen wurde unter anderem diskutiert, inwieweit Word Embeddings vielleicht auch im Bereich der Text Reuse Analysis angewendet werden können und welche Vor- und Nachteile die Repräsentation der Ergebnisse in 3D-Visualisierungen bringen. Im abschließenden Teil des Workshops widmeten sich die Teilnehmer:innen dann eigenen Mini-Projekten.
Fazit
Insgesamt hat sich gezeigt, dass die Grundfunktionen in beiden Frameworks sehr einfach anwendbar sind: Es klingt alles zunächst komplizierter, als es tatsächlich ist. Vor allem aber wurde deutlich, wie unterschiedlich die beiden Frameworks funktionieren. Dies bezieht sich auf die Technologien, aber auch auf die Dokumentation und die Freiheiten für Forschende, bereits in der Community erstellte Modelle wiederverwenden zu können.
SpaCy ist in diesen ersten Anwendungen sehr einfach, Flair besitzt mehr Potenzial für die flexible Anwendung durch die Forschenden. Der tatsächliche Einsatz für eigene Forschungsprojekte verlangt dann aber noch deutlich mehr Vorbereitung und Preprocessing. Aber ein erster Einstieg für die Studierenden ist gemacht.
OpenEdition schlägt Ihnen vor, diesen Beitrag wie folgt zu zitieren:
Digital History Berlin (Redaktion) (2. Mai 2022). Bericht zum Workshop – Natural Language Processing für Historiker:innen mit den Python Frameworks Flair und SpaCy. Digital History Berlin. Abgerufen am 15. Oktober 2024 von https://doi.org/10.58079/nl3j