Machine Learning: spaCy 3.1 gibt Vorhersagen in der Pipeline weiter

Die NLP-Library ermöglicht neuerdings die Weitergabe von Annotationen an andere Komponenten während des Trainingsprozesses.

In Pocket speichern vorlesen Druckansicht

(Bild: Shutterstock)

Lesezeit: 2 Min.

Das Berliner Unternehmen Explosion AI hat Version 3.1 der auf Natural Language Processing (NLP) ausgelegten Python-Library spaCy veröffentlicht. Zu den Neuerungen gehört die Option, während des Trainings Annotationen über Vorhersagen von einer Komponente an andere weiterzugeben. Eine neue Komponente dient zudem dazu, beliebige und potenziell überlappende Textpassagen zu labeln.

Sprachverständnis mit spaCy

Die quelloffene Python-Library spaCy dient ebenso zur Verarbeitung natürlicher Sprache (NLP) wie das Natural Language Toolkit (NLTK). Während Letzteres vor allem im akademischen Umfeld eine Rolle spielt, zielt spaCy auf den produktiven Einsatz. Das Berliner Unternehmen Explosion AI bewirbt es mit "Industrial strength NLP in Python". (Nicht nur) aufgrund der deutschen Wurzeln, gehört Deutsch zu den unterstützten Sprachen.

Ähnlich wie die Libraries NumPy oder Pandas Methoden für Matrixoperationen, Data-Science und numerische Berechnungen mitbringen, bietet spaCy vorgefertigte Funktionen für typische computerlinguistische Aufgaben wie die Tokenisierung oder die Lemmatisierung. Ersteres beschreibt das Segmentieren eines Textes in Einheiten wie Wörter, Sätze oder Absätze, und Letzteres bringt Flexionen von Wörtern auf ihre Grundformen, die Lemmata.

spaCy ist in Cython implementiert und bietet zahlreiche Extensions wie sense2vec als erweiterte Form von word2vec oder Holmes, um Informationen aufgrund von Prädikatenlogik aus deutschen oder englischen Texten zu extrahieren. Version 3.0 der Library hat ein Transformer-basiertes Pipeline-System eingeführt.

Der Trainingsprozess von Komponenten läuft üblicherweise isoliert ab: Die einzelnen Komponenten haben keinen Einblick in die Vorhersagen der Komponenten, die vor ihnen in der Pipeline sind. Das aktuelle Release ermöglicht das Schreiben von Annotationen während des Trainings, auf die andere Komponenten zugreifen können. Die neue Konfigurationseinstellung training.annotating_components legt fest, welche Komponenten Annotationen schreiben.

Auf die Weise lassen sich beispielsweise die Informationen zur grammatikalischen Struktur aus der Dependency des Parsers für das Tagging mit der Erweiterung Tok2Vec nutzen, wie folgendes Beispiel aus der spaCy-Dokumentation zeigt:

[nlp]
pipeline = ["parser", "tagger"]

[components.tagger.model.tok2vec.embed]
@architectures = "spacy.MultiHashEmbed.v1"
width = ${components.tagger.model.tok2vec.encode.width}
attrs = ["NORM","DEP"]
rows = [5000,2500]
include_static_vectors = false

[training]
annotating_components = ["parser"]

Annotationen dürfen sowohl von regulären als auch von eingefrorenen Komponenten (frozen_components stammen. Letztere werden während des Trainings nicht aktualisiert. Für nicht eingefrorene Komponenten entsteht mit dem Vorgehen ein Overhead, da sie einen doppelten Durchlauf beim Training verursachen: Der erste aktualisiert das Modell, das im zweiten Durchlauf als Grundlage für die Vorhersagen dient.

spaCy 3.1 führt die neue Komponente SpanCategorizer zum Labeln beliebiger Textpassagen ein, die sich überlagern können oder verschachtelt sein dürfen. Die bisher als experimentell gekennzeichnete Komponente soll diejenigen Fälle abdecken, bei denen die Named Entity Recognition (NER) an ihre Grenzen stößt. Letztere kategorisiert die einzelnen Entitäten eines Texts, die dafür aber sauber trennbar sein müssen.

Parallel zu der neuen Komponente hat Explosion AI eine Pre-Release-Version des Annotationswerkzeugs Prodigy veröffentlicht, das unter anderem ein neues UI zum Annotieren verschachtelter und überlappender Passagen bietet. Die darin festgelegten Annotationen lassen sich als Trainingsdaten für SpanCategorizer nutzen.

Prodigy ermöglicht das Labeln überlappender Textpassagen.

(Bild: ExplosionAI)

Weitere Neuerungen in spaCy 3.1 wie die zusätzlichen Pipeline-Pakete für Katalanisch und Dänisch sowie die direkte Anbindung an den Hugging Face Hub lassen sich dem ExplosionAI-Blog entnehmen.

(rme)