4.1. NLP als Methode zur “Semantisierung” von Text#

4.1.1. Was ist NLP und warum benutzen wir es?#

Für den Computer ist ein Text eine Liste von Zeichen, die nicht aus semantischen Einheiten wie z.B. Wörtern oder Sätzen besteht. Sobald die Operationalisierung einer Forschungsfrage von diesen semantischen Einheiten ausgeht, z.B. auf der Häufigkeit eines Wortes aufbaut, ist es sinnvoll Methoden des Natural Language Processing (NLP) anzuwenden, um den Text mit zusätzlichen linguistischen Informationen anzureichern.
NLP ist ein interdisziplinäres Feld, das sich zwischen der Linguistik und der Informatik ansiedelt und verschiedene Methoden (regelbasiert, statistisch, maschinelles Lernen) zur automatischen Verarbeitung natürlicher Sprache umfasst. Diese reichen von der Aufteilung eines Texts in Wörter (Tokenisierung) über die Analyse von Emotionen in Texten (Emotion / Sentiment Analysis) bis hin zu der Erstellung von Chatbots (Dialogue Systems).

4.1.2. Voraussetzungen#

Zur Analyse der Luftqualität soll zum einen das semantische Feld “Luft” untersucht werden, zum anderen sollen Adjektive extrahiert werden, die der Luft attribuiert sind, um die Veränderungen in den Eingenschaften, die Luft zugeschrieben werden, untersuchen zu können.

Für die Untersuchung des semantischen Felds sollen alle Wörter in dem Feld automatisch extrahiert und dann gezählt werden. Die Extraktion der Wörter soll folgende Bedingungen erfüllen:

  1. Es sollen nur die Wörter des semantischen Felds gefunden werden. Wenn wir nach “Luft” suchen, wollen wir nicht auch “Luftfahrt” finden.

  2. Unterschiedliche Wortformen sollen auf eine Wortform abgebildet werden. Wenn wir nach “Dunst” suchen, wollen wir auch “Dünste” finden.

Für die Untersuchung der Adjektiv-Nomen-Paare sollen alle Adjektive extrahiert werden, die den häufigsten Nomen des semantischen Felds “Luft” Eigenschaften zuschreiben. Dafür müssen wir zum einen wissen, welche Wörter Adjektive und Nomen sind und zum anderen welche Adjektive in Beziehung zu welchen Nomen stehen.

4.1.3. Verwendete NLP-Methoden#

Um diese Analysen durchführen zu können, müssen mehrere Vorverarbeitungsschritte durchgeführt werden: Zuerst muss das Korpus mittels Tokenisierung in Wörter, sogenannte Token aufgeteilt, werden. Um verschieden Wortformen auf Grundform, ihr Lemma, abzubilden, wird das Korpus lemmatisiert werden.

Um die Adjektive zu extrahieren, muss jedem Wort die Wortart zugewiesen werden. Dies kann automatisch mittels Part-of-Speech (POS)-Tagging durchgeführt werden. Im POS-Tagging werden Tagsets verwendet, in denen jeder Wortart eine Abkürzung zugewiesen wird. Die Tagsets können unterschiedlich granular sein, so finden sich im Stuttgart-Tübingen-Tagset (STTS) 54 Tags, in denen z.B. das Tempus und der Modus von Verben unterschieden wird. Das Universal POS Tagset hingegen besteht nur aus 17 Tags, die keinerlei morphologische Informationen liefern. Für die Extraktion der Adjektive ist das Universal POS Tagset ausreichend.

Die einfachste Methode, um die Beziehung von Adjektive zu Nomen zu extrahieren, ist, diejenigen Adjektiv-Nomen-Paare zu extrahieren, die den geringsten Abstand voneinander haben. Dass diese Methode schnell zu Fehlern führen kann, lässt sich an folgendem Satz zeigen:

Beispiel

Beispielsatz: Die wunderschöne, von einem Nachbarn geklaute Rose ist rot.

Schwierigkeit: Das Nomen, das mit geringsten Abstand zu dem Adjektiv “wunderschön” steht, ist “Nachbar” und nicht “Rose”, worauf sich das Adjektiv tatsächlich bezieht.

Es wird deshalb auf Dependenzgrammatik zurückgegriffen, in der “die syntaktische Struktur eines Satzes ausschließlich anhand gerichteter binärer grammatikalischer Beziehungen zwischen den Wörtern beschrieben wird” (vgl. (Jurafsky and Martin, 2025), S. 427.). Die grammatikalischen Beziehungen sind durch ein geschlossenen Vokabular beschrieben. In der Linguistik gibt es verschiedene anerkannte Vokabulare z.B. das Universal Dependencies Annotationsschema (s.o.), das für die englische Sprache oder das TIGER-Annotationsschema , das für Deutsch entwickelt wurde.

Automatische Annotationen mit Dependenzinformationen können mittels Dependency Parsing erzeugt werden. In der folgenden Abbildung sind die automatisch erzeugten Dependenzannotationen für den Beispielsatz dargestellt, anhand derer die Adjektiv-Nomen-Paare automatisch extrahiert werden können.

../_images/dependency_plot.png

Fig. 4.2 Dependenzannotation erstellt mit der Python-Bibliothek spaCy; model: “de_core_news_sm”.#

Die Dependenzannotation sind durch die beschrifteten Bögen in der oberen Bildhälfte dargestellt. Die Beschriftungen sind die Dependenz-Tags, die Abkürzungen werden in Python-Bibliothek spaCy (s.u.) wie folgt aufgelöst:

  • nk: noun kernel element

  • sb: subject

  • sbp: passivized subject

  • cj: conjunction

  • pd: predicate

Die Pfeile drücken die Übergeordnetheit eines Wortes in Beziehung zu einem anderen aus, z.B. ist das Wort “Rose” dem Wort “wunderschöne” übergeordnet und zwar mit der Beziehung “noun kernel element”. Das übergeordnete Wort wird Kopf genannt.

Fehler in der automatischen Annotation

In der automatischen Annotation lassen sich bereits Fehler feststellen: Das partizipiale Adjektiv “geklaute” ist dem Adjektiv “wunderschöne” in Form einer Konjunktion untergeordnet, allerdings sind die Adjektive nicht durch eine Konjunktion wie “und” verbunden und sind deshalb gleichrangige “noun kernel elements”, die von dem Nomen “Rose” abhängen. Um zusätzlich zu den attributive Adjektive auch prädikative Adjektive wie in diesem Beispiel “rot” zu extrahieren, kann das Tag “pd” verwendet werden.

Die Abbildung zeigt unter dem Satz zusätzlich die POS-Tags, also die Wortarten, die die Grundlage für das Depedency Parsing bilden. Die folgende Tabelle gibt eine Übersicht über die Annotationen, auf denen die Textanalyse aufbaut.

Beispiel der Annotationen im Tabellen-Format

Ursprünglicher Satz: “Die wunderschöne, von einem Nachbarn geklaute Rose ist rot.”
In tokenisierter und lemmatisierter Form mit POS-Tags und Dependenz-Tags sowie Dependenz-Kopf:

Token

Lemma

POS-Tag

Dependenz-Tag

Dependenz-Kopf

Die

der

DET

nk

Rose

wunderschöne

wunderschön

ADJ

nk

Rose

,

PUNCT

punct

wunderschöne

von

von

ADP

sbp

geklaute

einem

ein

DET

nk

Nachbarn

Nachbarn

Nachbar

NOUN

nk

von

geklaute

geklaut

ADJ

cj

wunderschöne

Rose

Rose

NOUN

sb

ist

ist

sein

AUX

ROOT

ist

rot

rot

ADV

pd

ist

.

PUNCT

punct

ist

4.1.4. NLP mit Python#

nltk und spaCy#

In Programmiersprachen gibt es Bibliotheken, die Methoden z.B. zur Textverarbeitung, bündeln. Die Bibliotheken können installiert, in den Programmcode geladen und dann angewendet werden. Für Python gibt es verschiedene Bibliotheken, mit denen die Verarbeitung von Texten mittels NLP möglich ist. Am weitesten vebreitet sind die Bibliotheken spaCy und nltk, die in Tabelle Vergleich von spaCy und nltk verglichen werden.

Table 4.1 Vergleich von spaCy und nltk#

Bibliothek

Vorteile

Nachteile

spaCy

  • kurze Verarbeitungsdauer
  • leichte Benutzbarkeit durch komplette Pipeline
  • Visualisierungsmöglichkeiten

  • Weniger flexibel in der Anpassung an spezielle Anwendungsfälle

nltk

  • flexibel in der Anpassung an spezielle Anwendungsfälle
  • Transparenz einzelner Schritte in einer Pipeline

  • Lange Verarbeitungsdauer
  • Höhere Einstiegshürde

NLP mit spaCy#

Da die Vorverarbeitung der Texte keinerlei spezialisierter NLP-Methoden bedarf und auf Grund der leichten Benutzbarkeit sowie der Geschwindigkeit benutzen wir spaCy für die Annotation des Textkorpus. spaCy stellt unterschiedliche Methoden für die Vorverarbeitung bereit, die meisten basieren auf maschinellem Lernen. Da die Vorverarbeitung sprachabhängig ist, stellt spaCy für die unterstützten Sprachen (über 20) verschiedene Analyse-Modelle zur Verfügung. Eine Übersicht über die von spaCy unterstützen Sprachen gibt es hier. Die zur Verfügung gestellte Modelle unterscheiden sich in der Geschwindigkeit und in der Akkuratheit der Annotation. Da wir auf einem verhältnismäßig großem Korpus operieren und sich die Leistung der Modelle für die Tokenisierung gar nicht und für die Lemmatisierung, das POS-Tagging nur wenig (0.01% - 0.04%) unterscheidet, verwenden wir ein Modell, das auf Geschwindigkeit ausgelegt ist (de_core_news_sm). Die Akkuratheit der deutschen Modelle wird auf dieser Website verglichen. Die Dokumentation von spaCy gibt leider nicht für jede Annotation Auskunft darüber, welches Tagset benutzt wird. Für die Annotation mit POS-Tags bietet spaCy zwei Möglichkeiten, zum einen die gröbere Annotation mit dem Universal Tagset, zum anderen die Annotation mit dem STTS-Tagset. Für die Dependenz-Annotationen wird nicht das Universal-Dependency Tagset verwendet. Es gibt zwar eine Tagübersicht, allerdings ist für die Tags keine Quelle gelistet.

Leistung von spaCy auf unserem Korpus

Die Modelle in spaCy sind auf zeitgenössische Zeitungs- und Medientexte ausgelegt. Historische Sprachverwendung führt zu einer geringeren Annotationsleistung.

4.1.5. Zusammenfassung und nächste Schritte#

Die NLP-Methoden, die für die Vorverarbeitung von Texten notwendig sind, wurden erklärt. spaCy wurde als Bibliothek festgelegt, mit der die Methoden auf die Textdaten angewendet werden. Im nächsten Schritt werden die Texte, die als txt-Dateien vorliegen, mittels spaCy annotiert und die Annotationen werden in einem spaCy-spezifischen sowie im Tebellen-Format gespeichert.