Einleitung

Stanza ist eine Open Source NLP Bibliothek der Stanford University, die auf modernen neuronalen Netzen basiert. Sie ermöglicht die umfassende linguistische Analyse von Texten in über 70 Sprachen. Ziel von Stanza ist es, ein vollständiges Pipeline System bereitzustellen, das alle gängigen Verarbeitungsschritte umfasst: Tokenisierung, Wortartenbestimmung (POS), Lemmatisierung, syntaktische Analyse (Abhängigkeiten und Konstituenten) sowie Named Entity Recognition (NER).

Stanza eignet sich sowohl für Forschungszwecke als auch für produktive Anwendungen, etwa bei der Textklassifikation, Informationsextraktion oder dem Vorverarbeiten von Texten für Retrieval Augmented Generation (RAG). Die Modelle sind vortrainiert, können aber auch feinjustiert werden. Intern basiert Stanza auf dem PyTorch Framework.

Eine Pipeline in der Sprachverarbeitung (NLP) bezeichnet eine festgelegte Abfolge von Verarbeitungsschritten, mit denen ein Text analysiert und strukturiert wird. Jeder Schritt nimmt den Output des vorherigen als Input und reichert ihn um weitere linguistische Informationen an. Ziel ist es, aus rohem Text schrittweise eine tiefere sprachliche Repräsentation zu erzeugen, die für weitere Anwendungen genutzt werden kann, z. B. Textklassifikation, Informationsextraktion oder Fragebeantwortung.

Schritte einer typischen Stanza Pipeline

Die Standardpipeline von Stanza besteht aus den folgenden Modulen (auch „Prozessoren“ genannt), die in dieser Reihenfolge arbeiten:

  1. Tokenisierung (tokenize)

  2. Mehrworterkennung (mwt)

  3. Wortartenbestimmung (pos)

  4. Lemmatisierung (lemma)

  5. Syntaktische Abhängigkeitsanalyse (depparse)

  6. Konstituentenanalyse (constituency) - Nur für Englisch

  7. Benannte Entitäten erkennen (ner)

  8. Stimmungsanalyse (sentiment) - Nur für Englisch

1. Tokenisierung

Die Tokenisierung ist der erste Schritt in der Verarbeitung eines Textes durch eine NLP Pipeline. Dabei wird der Eingabetext in einzelne Einheiten zerlegt. Diese Einheiten nennt man Tokens. Ein Token kann ein Wort, eine Zahl, ein Satzzeichen oder ein Symbol sein. Die Tokenisierung legt fest, wo ein Token anfängt und wo es endet. Das ist wichtig, weil alle weiteren Verarbeitungsschritte diese Einheiten verwenden.

Stanza verwendet für die Tokenisierung sprachspezifische Modelle. Diese Modelle sind auf reale Sprachdaten trainiert und berücksichtigen Besonderheiten der jeweiligen Sprache. Im Englischen erkennt Stanza zum Beispiel, dass “U.S.A.” ein einzelnes Token ist und nicht drei. Auch Abkürzungen, Zahlenformate und Emojis werden korrekt behandelt.

Was Stanza in diesem Schritt liefert:

  • Eine Aufteilung des Textes in Sätze

  • Eine Liste von Tokens pro Satz

  • Zu jedem Token werden Start- und Endposition im Originaltext gespeichert

2. Mehrworterkennung (MWT)

Die Mehrworterkennung oder Multi Word Token Expansion ist ein optionaler Schritt in der Stanza Pipeline. Er wird nur für bestimmte Sprachen aktiviert, bei denen einzelne Tokens aus mehreren Wörtern bestehen können. Dazu gehören vor allem morphologisch komplexe Sprachen wie Arabisch oder Französisch. In Sprachen wie Deutsch oder Englisch ist dieser Schritt standardmäßig deaktiviert, da Wörter dort bereits einzeln geschrieben werden.

Bei aktivierter MWT Komponente wird ein Token, das mehrere Wörter enthält, in seine Bestandteile zerlegt. Die ursprüngliche Tokenstruktur bleibt erhalten, aber es werden zusätzliche Wörter erzeugt. Diese Wörter sind die tatsächlichen Einheiten, mit denen die weiteren Module wie POS oder Lemmatisierung arbeiten.

3. Wortartenbestimmung (Part-of-Speech Tagging / POS)

Die Wortartenbestimmung ist ein zentraler Schritt in der Verarbeitung natürlicher Sprache. Dabei wird jedem Wort eine grammatische Kategorie zugewiesen. Beispiele für solche Kategorien sind Nomen, Verb, Adjektiv, Adverb, Artikel oder Präposition. Diese Informationen sind für fast alle weiteren Schritte erforderlich, da sie grammatische Strukturen sichtbar machen.

Stanza verwendet neuronale Modelle, um diese Kategorisierung automatisch vorzunehmen. Für jedes Wort wird sowohl eine universelle Wortart (UPOS) als auch eine sprachspezifische, detaillierte Wortart (XPOS) vergeben. Zusätzlich werden morphologische Merkmale erfasst, wie Genus, Numerus, Kasus, Tempus oder Verbform.

UPOS bedeutet „Universal Part of Speech“. Das ist eine Einteilung von Wörtern in grundlegende Wortarten wie Nomen, Verb, Adjektiv oder Artikel. Dieses System ist für alle Sprachen gleich. Ein Verb in Deutsch und ein Verb in Englisch erhalten beide das Merkmal VERB.

XPOS ist die Wortart, wie sie in einer bestimmten Sprache üblich ist. In Stanza wird sie für jede Sprache anders festgelegt. Für Englisch bedeutet das:

  • NN steht für ein Nomen im Singular

  • VBZ steht für ein Verb mit dritter Person Singular im Präsens

  • JJ steht für ein Adjektiv

XPOS ist also eine genauere Beschreibung der Wortart, wie sie in der jeweiligen Sprache gebraucht wird.

4. Lemmatisierung

Die Lemmatisierung ist der Prozess, bei dem ein Wort auf seine Grundform zurückgeführt wird. Diese Grundform nennt man Lemma. Ziel ist es, verschiedene grammatische Formen eines Wortes auf eine einheitliche Form zu bringen. Das ist wichtig, um Wörter unabhängig von Zeitform, Person oder Numerus vergleichen oder verarbeiten zu können.

Beispiele:

  • „went“ wird zu „go“

  • „dogs“ wird zu „dog“

Stanza verwendet für die Lemmatisierung ein Modell, das den Kontext des Wortes berücksichtigt. Dadurch kann es auch Wörter mit mehreren Bedeutungen korrekt behandeln.

5. Syntaktische Abhängigkeitsanalyse

Die syntaktische Abhängigkeitsanalyse untersucht die grammatische Struktur eines Satzes. Dabei wird für jedes Wort bestimmt, zu welchem anderen Wort es gehört und welche Rolle es dabei spielt. Das Ergebnis ist ein gerichteter Baum, in dem jedes Wort genau einem anderen untergeordnet ist. Die Verbindungen nennt man Kanten, und sie tragen grammatische Bezeichnungen wie Subjekt, Objekt oder Modifikator.

Stanza verwendet dafür ein neuronales Modell, das sogenannte Universal Dependencies erzeugt. Diese Struktur zeigt, wie die Wörter im Satz miteinander verbunden sind. Jedes Wort hat dabei einen sogenannten Head, also das übergeordnete Wort, und eine Beziehung zu diesem Head.

Wichtige Abhängigkeitsbeziehungen

  • nsubj: nominales Subjekt

  • obj: direktes Objekt

  • obl: adverbiale Ergänzung

  • root: Wurzel des Satzes, meist das Hauptverb

  • det: Artikel

  • amod: Adjektiv als Modifikator eines Nomens

  • case: Präposition oder Kasusanzeiger

  • punct: Satzzeichen

6. Konstituentenanalyse - Nur für Englisch

Die Konstituentenanalyse untersucht, aus welchen Satzteilen ein Satz besteht und wie diese Satzteile miteinander verschachtelt sind. Dabei wird erkannt, welche Wörter zusammen eine Einheit bilden, zum Beispiel ein Subjekt oder ein Objekt. Solche Einheiten nennt man Phrasen, zum Beispiel Nominalphrase oder Verbalphrase.

Die Analyse zeigt die Struktur des Satzes als Baum. Jeder Satz wird dabei in immer größere Gruppen aufgeteilt, zum Beispiel: zuerst einzelne Wörter, dann Phrasen, dann der ganze Satz.

Stanza verwendet dafür ein englisches Regelwerk namens Penn Treebank. Das funktioniert gut für Texte auf Englisch. Für deutsche Texte ist die Konstituentenanalyse in Stanza zurzeit nicht verfügbar. Die Funktion eignet sich vor allem für englische Sätze. Für Deutsch muss man zusätzlich die Berkeley Neural Parser (Benepar) Bibliothek verwenden.

7. Erkennung benannter Entitäten (Named Entity Recognition)

Die Erkennung benannter Entitäten ist ein Schritt in der NLP Verarbeitung, bei dem bestimmte Wörter oder Wortgruppen als bedeutende Objekte erkannt werden. Diese Objekte nennt man Entitäten. Sie beziehen sich zum Beispiel auf Personen, Orte, Organisationen, Zeitangaben oder Geldbeträge.

Stanza erkennt Entitäten automatisch auf Basis eines trainierten neuronalen Modells. Jede erkannte Entität wird einem festen Typ zugeordnet. Das Modell bezieht den Kontext mit ein und kann auch mehrteilige Entitäten wie „New York City“ oder „United Nations“ korrekt erfassen.

Entitätstypen in Stanza

  • PERSON: Vorname oder Nachname einer Person

  • GPE: Geopolitische Einheit wie Land oder Stadt

  • ORG: Organisation wie Firma oder Behörde

  • DATE: Datum

  • TIME: Uhrzeit

  • MONEY: Geldbetrag

  • LOC: Geografische Angabe ohne politische Funktion

  • PRODUCT: Gegenstand oder Produkt

8. Stimmungsanalyse (Sentiment Analysis) - Nur für Englisch

Die Stimmungsanalyse bewertet, ob der Inhalt eines Satzes eher positiv, neutral oder negativ ist. Das Modell untersucht dabei nicht einzelne Wörter, sondern den gesamten Satz in seinem Zusammenhang. So kann es zum Beispiel erkennen, dass ironische oder abschwächende Formulierungen eine eigentlich positive Aussage neutral oder sogar negativ erscheinen lassen.

Stanza bietet die Stimmungsanalyse zurzeit nur für englische Texte an. Die Grundlage ist ein neuronales Modell, das auf dem SSTplus Korpus trainiert wurde. Das Modell ist in der Lage, jede Satzstruktur zu analysieren und einer von drei Kategorien zuzuordnen.

Klassifikationsstufen

  • 0: negativ

  • 1: neutral

  • 2: positiv

Code Beispiel

Ausgabe

PDF-Datei Analyse

Das Problem bei der obigen Ausgabe ist, dass der Text aus dem PDF ohne ausreichende Vorverarbeitung direkt und als Ganzes an die Stanza-Pipeline übergeben wurde. Dadurch werden nicht nur die eigentlichen inhaltlichen Sätze, sondern auch sämtliche Layout- und Formatierungsreste des Dokuments, wie beispielsweise Kopfzeilen, Seitennummern, einzelne Überschriften, Fußnoten oder Listenpunkte, von Stanza als eigenständige Sätze erkannt und verarbeitet. Das führt dazu, dass in der Ausgabe zahlreiche inhaltlich zusammenhanglose oder sogar bedeutungslose Fragmente als einzelne Sätze erscheinen. Auch inhaltlich zusammenhängende Sätze werden durch harte Zeilenumbrüche, wie sie bei PDFs häufig auftreten, von der Pipeline unterbrochen und als getrennte Einheiten analysiert. Die Folge ist, dass die linguistische Auswertung nicht die eigentliche Satzstruktur widerspiegelt, sondern vom Layout und den technischen Besonderheiten des PDFs dominiert wird. Für eine sinnvolle und präzise Analyse müssen solche Artefakte bereits vor der Übergabe an die Stanza-Pipeline bereinigt, Wörter an Zeilenumbrüchen korrekt zusammengesetzt und der Text in vollständige, grammatisch vollständige Einzelsätze segmentiert werden. Nur so lässt sich mit Stanza eine semantisch aussagekräftige und für nachgelagerte Verarbeitungsschritte brauchbare linguistische Analyse erzielen.

Extraktion und linguistische Vorverarbeitung via DeepSeek & Stanza

Ein aufmerksamer Blick auf die Ausgabe von Schritt 7, der Erkennung benannter Entitäten (NER), könnte für eine kurze Verwirrung sorgen. Obwohl Entitäten wie OPITZ CONSULTING und STACKIT korrekt als Organisationen (ORG) erkannt werden, fehlen erwartete Zuweisungen wie zum Beispiel für das Datum “1. März 2024” oder für Produktbezeichnungen wie “STACKIT Cloud”.

Der Grund hierfür liegt nicht in einem Fehler des Skripts, sondern im zugrundeliegenden Sprachmodell, das Stanza standardmäßig für Deutsch verwendet. Wie die Protokollausgabe beim Start des Skripts verrät, kommt hier das Paket germeval2014 zum Einsatz. Dieses Modell wurde auf Basis des “GermEval 2014 Shared Task” trainiert und kennt daher hauptsächlich die vier Entitätstypen, die in diesem Wettbewerb im Fokus standen: PER (Person), LOC (Ort), ORG (Organisation) und OTH (Sonstiges).

Kategorien wie DATE (Datum), MONEY (Geldbetrag) oder PRODUCT (Produkt) sind in diesem spezifischen Modell schlichtweg nicht vorgesehen. Es kann also nur das erkennen, wofür es trainiert wurde. Dies ist eine wichtige Erkenntnis bei der Arbeit mit vorgefertigten KI-Modellen: Ihre Leistungsfähigkeit und ihr “Wissen” sind immer durch die Daten und die Zielsetzung ihres ursprünglichen Trainings begrenzt.

Hybrid-Pipeline: Verbesserung von Named Entity Recognition (NER)

Das ursprüngliche Skript wurde zu einer robusten, modularen Verarbeitungspipeline weiterentwickelt. Die wichtigsten Änderungen sind:

  • Austausch der NER-Komponente: Der entscheidende Schritt war, die standardmäßige Erkennung benannter Entitäten (NER) von Stanza, die auf dem älteren germeval2014-Modell basiert, zu entfernen. Stattdessen wird nun ein modernes, auf der Hugging Face transformers-Bibliothek basierendes Modell verwendet. Dieses neue Modell (domischwimmbeck/bert-base-german-cased-fine-tuned-ner) erkennt nicht nur mehr Entitätstypen, sondern bietet in der Regel auch eine höhere Genauigkeit.

  • Einführung einer Hybrid-Pipeline: Anstatt sich auf eine einzige Bibliothek zu verlassen, kombiniert das Skript nun die Stärken von zwei spezialisierten Werkzeugen.

Neue Ausgabe der benannten Entitäten

Unter Hugging Face stehen weitere NER-Modelle zur Verfügung:
https://huggingface.co/models?library=pytorch&language=de&sort=likes

Spacy statt Stanza

In der neuen Version des Skripts wurde die komplette linguistische Basisanalyse, die zuvor von der Bibliothek Stanza durchgeführt wurde, durch die Bibliothek spaCy ersetzt. spaCy ist eine sehr populäre und auf Geschwindigkeit optimierte Bibliothek, die oft in produktiven Anwendungen zum Einsatz kommt. Während Stanza für seine hohe akademische Genauigkeit bekannt ist, bietet spaCy eine hervorragende Balance aus Performance und Präzision und liefert Analyseergebnisse, die für die Weiterverarbeitung in Softwareprojekten oft als besonders intuitiv empfunden werden. Die Kernlogik der hybriden Pipeline – die Kombination einer Basis-Analyse mit einem spezialisierten NER-Modell – bleibt dabei identisch.
Die folgenden Analyse-Schritte werden nun nicht mehr von Stanza, sondern von spaCy übernommen:

  • Tokenisierung: Das Aufteilen der Sätze in einzelne Wörter (Tokens).

  • Wortartbestimmung (POS-Tagging): Die Zuweisung einer grammatikalischen Kategorie zu jedem Wort (z.B. Substantiv, Verb, Adjektiv).

  • Lemmatisierung: Das Zurückführen jedes Wortes auf seine Grundform (z.B. “ging” → “gehen”).

  • Dependenz-Analyse: Die Analyse der syntaktischen Satzstruktur, also welche Wörter im Satz grammatikalisch voneinander abhängen.