Machine Learning: spaCy verlegt Transformer-basierte Pipelines

Neben dem neuen System für Transformer bringt das aktuelle Release der NLP-Library vortrainierte Pipelines und ein neues Konfigurationssystem mit.

In Pocket speichern vorlesen Druckansicht
Schreibmaschine

(Bild: Shutterstock)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Das Berliner Unternehmen ExplosionAI hat Version 3.0 der auf Natural Language Processing (NLP) ausgelegten Python-Library spaCy veröffentlicht. Die Open-Source-Bibliothek hat im aktuellen Release eine Transformer-basierter Pipeline und ein erweiterbares Konfigurationssystem an Bord.

Sprachverständnis von 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 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.

Transformer sind Methoden, die beim Natural Language Processing eine Zeichenfolge in eine andere umwandeln. In dem aktuellen Release von spaCy lassen sich vortrainierte Transformer für das Training in der Pipeline verwenden. Dabei darf ein Transformer mehrere Komponenten umspannen. Die Library arbeitet dabei mit den transfromers aus Facebooks ML-Framework PyTorch und aus der Hugging-Face-Community. Zudem liegen bisher separat aufgerufene Klassen wie der Lemmatizer nun als eigenständige Elemente für den Einsatz in Pipelines vor.

Die einzelnen Transformer können gemeinsam einen am oder in der Nähe des Anfangs der Pipeline eingebetteten Token-to-Vector- (tok2vec) beziehungsweise Transformer-Layer nutzen. Die Verbindung zu den Komponenten der Pipeline erfolgt über Listener in den jeweiligen Modellen. Das Wiederverwenden der eingebetteten Schicht soll die Verarbeitung beschleunigen und schlankere Modelle ermöglichen. Beim Trainingsprozess ist ein Update der Inhalte des geteilten Layers möglich, um Multi-Task Learning umzusetzen.

Die einzelnen Komponenten der Pipeline können gemeinsam auf einen Transfomer-Layer am Anfang der Pipeline zugreifen.

(Bild: Explosion)

Für spacy 3.0 sind 59 trainierte Pipelines verfügbar, von denen fünf in die neue Kategorie der Transformer-basierten Pipelines fallen, darunter eine auf der Basis des Bidirectional Encoder Representations from Transformers (BERT) für deutschsprachige Texte.

Das aktuelle Release führt außerdem ein neues System zum Durchführen der Trainingsabläufe ein. Eine einzelne Konfigurationsdatei legt alle Details für das Training fest. Nutzerinnen und Nutzer können ein Gerüst mit einem Widget oder dem Befehl init config erstellen. Den Dateinamen können sie statt zahlreicher Kommandozeilenparameter an spacy train übergeben, um die gespeicherten Konfigurationsparameter zu verwenden.

Die Konfigurationsdatei darf alle Einstellungen und Hyperparameter für das Training enthalten. Einzelne Settings lassen sich über Funktionen registrieren, um sie flexibel auszutauschen. Nutzerinnen und Nutzer können ihre eigenen Architekturen wahlweise über ML-Frameworks wie PyTorch, TensorFlow und MXNet oder über spaCys hauseigene ML-Library Thinc umsetzen.

Die Konfigurationsdatei enthält sämtliche Parameter für das Training.

(Bild: Explosion)

Ebenfalls neu ist das Konzept der Projekte zum Definieren, Verwalten und Teilen von Arbeitsabläufen für unterschiedliche Anwendungsfälle und Domänen. Explosion stellt auf GitHub einige Vorlagen bereit, die als Basis für eigene Projekte dienen können. Zum Verwenden der Projekte kommt der neue Befehl spacy project ins Spiel.

Weitere Neuerungen in spaCy 3.0 wie die Anbindung an die Plattform Weights & Biases lassen sich dem Explosion-Blog entnehmen. Der Sourcecode, die Installationsanweisung für die Binaries und die Dokumentation finden sich im GitHub-Repository.

(rme)