Grafik von Billy Huynh – https://unsplash.com/de/@billy_huy

T5: Das vielseitige Sprachmodell für Text-zu-Text-Aufgaben

T5 ist ein leistungsstarkes Sprachmodell, das für eine Vielzahl von Text-zu-Text-Aufgaben wie Textklassifikation, Sprachübersetzung oder Textzusammenfassung eingesetzt werden kann. Ziel dieses Beitrags ist es, dem Leser diesen Pretrained Transformer vorzustellen.

Henrik Bartsch

Henrik Bartsch

Die Texte in diesem Artikel wurden teilweise mit Hilfe künstlicher Intelligenz erarbeitet und von uns korrigiert und überarbeitet. Für die Generierung wurden folgende Dienste verwendet:

Einführung

In unserer heutigen Welt sind wir oft einer großen Menge an Informationen ausgesetzt. Nicht selten handelt es sich dabei um umfangreiche Texte, aus denen wir die für uns wichtigen Informationen herausfiltern müssen. Ob es sich nun um wissenschaftliche Arbeiten, Geschäftsanalysen oder Nachrichten und Medien handelt, eine sorgfältige Recherche kann viel Zeit in Anspruch nehmen. Um solche Recherchen zu vereinfachen, stelle ich heute ein Tool vor, das diese Arbeit erleichtern kann - T5.

Was ist T5?

T5 ist eine speziell für Text-to-Text-Aufgaben entwickelte Variante des populären Sprachmodells BERT (Bidirectional Encoder Representations from Transformers). T5 wurde von Google entwickelt und stellt ein Sprachmodell der fünften Generation dar, das auf den Fortschritten seiner Vorgänger aufbaut und das Modell verfeinert, um eine kohärente und kontextrelevante Textausgabe zu erzeugen. 1

T5 ist ein Deep-Learning-Modell, das eine Transformator-Architektur zur Verarbeitung von Eingabe- und Ausgabetext verwendet. Der Transformator ist ein neuronales Netzwerk, das für sequentielle Eingabedaten, wie z.B. Text, ausgelegt ist und diese durch einen besonderen Mechanismus verarbeitet, die sogenannte Self-Attention. Wir können Self-Attention als ein Mechanismus betrachten, der den Informationsgehalt einer Einbettung von einer Eingabe erhöht, indem er Informationen über den Kontext der Eingabe enthält. In anderen Worten, ermöglicht der Self-Attention-Mechanismus dem Modell, die Bedeutung verschiedener Elemente in einer Eingabesequenz zu bewerten und ihren Einfluss auf die Ausgabe dynamisch anzupassen. Dies ist besonders wichtig für Sprachverarbeitungsaufgaben, bei denen sich die Bedeutung eines Wortes je nach Kontext innerhalb eines Satzes oder eines Dokuments ändern kann. Dadurch ist das Modell in der Lage, die Beziehungen zwischen Wörtern und Sätzen im Eingangstext zu verstehen und Antworten zu generieren, die im Kontext relevant sind. 2 3

Grundsätzlich T5 wird auf einem großen Korpus von Textdaten trainiert. Dadurch ist es in der Lage, Muster und Beziehungen in der Sprache zu erkennen. Während des Trainings erhält T5 eine Aufgabe oder einen Inputtext. Anschließend T5 wird darauf trainiert, eine Antwort zu erzeugen, die dem Originaltext ähnlich ist. Durch diesen Prozess wird das Modell in die Lage versetzt, kohärente und kontextuell relevante Textausgaben zu erzeugen. 4 5

Einer der wichtigsten Vorteile von T5 ist seine Fähigkeit, eine große Bandbreite von Aufgaben im Bereich der Text-zu-Text-Übersetzung zu bewältigen. Im Gegensatz zu anderen Sprachmodellen, die für spezifische Aufgaben entwickelt wurden, wie z.B. Sprachübersetzung oder Textsynthese, kann T5 an eine Vielzahl von Aufgaben angepasst werden, was es zu einem flexiblen Werkzeug für viele Anwendungen macht. 1

Anwendungsbeispiele

Im Folgenden soll der Nutzen des Modells verdeutlicht werden. Zu diesem Zweck werden wir eine Reihe von Beispielen vorstellen, in deren Kontext dieser vortrainierte Transformator verwendet werden kann. Um den folgenden Code ausführen zu können, werden die folgenden drei Packages benötigt: torch, transformers und sentencepiece. Falls diese Packages noch nicht installiert sind, können diese ganz normal über pip heruntergeladen werden.

Im ersten Schritt bereiten wir die Sitzung vor, indem wir alle notwendigen Imports einfügen:

t5_test.py
from transformers import T5Tokenizer, T5ForConditionalGeneration

Anschließend können wir T5 mit dem folgenden Code laden. Hier wird nicht nur das eigentliche neuronale Netz geladen, sondern auch der entsprechende Tokenizer, der die Verarbeitung natürlicher Sprache ermöglicht.

t5_test.py
tokenizer = T5Tokenizer.from_pretrained("t5-large", model_max_length=1024)
model = T5ForConditionalGeneration.from_pretrained("t5-large", max_length=1024)

Nachdem dieser Code ausgeführt wurde, können wir beginnen, die ersten Anwendungen von T5 zu untersuchen.

Grundsätzlich werden alle Beispiele in diesem Post am Beispiel von t5-large durchgeführt. Es können aber ebenso t5-small, t5-base, t5-3b oder t5-11b verwendet werden. Die Performance der Modelle kann mit unterschiedlichen Parameteranzahl variieren.

Zusammenfassungen

Wir beginnen hier mit einem Beispiel, das meiner Meinung nach oft gute Ergebnisse liefert: Textzusammenfassungen. Dazu definieren wir im ersten Schritt eine Funktion, die entsprechenden Text durch den Tokenizer und das neuronale Netz verarbeitet und sehen uns dann Beispiele dazu an. Zusammenfassungen sind theoretisch in Englisch, Deutsch, Französisch und Rumänisch möglich. Dies gilt auch für alle folgenden Beispiele.

Entsprechend beginnen wir mit der Implementierung der Textverarbeitungsfunktion. In Anlehnung an die Model-Card wird der Befehl summarize: verwendet.

t5_test.py
def summarize_text(text):
  task = "summarize: " + text
  input = tokenizer.encode(task, return_tensors="pt", max_length=1024, truncation=True)

  output = model.generate(input, min_length=80, max_length=100)

  text_summary = tokenizer.decode(output[0], skip_special_tokens=True)
  print(text_summary)

Über den Parameter text können wir Originaltexte übergeben, die vom Modell zusammengefasst und ausgegeben werden. Im Folgenden wurden zwei Texte aus correctiv extrahiert, um Textzusammenfassungen exemplarisch durchzuführen.

Originaler Text

Es ist der wohl simpelste Betrug, den man sich vorstellen kann: Man sucht sich im Laden ein teures Paar Sneaker aus, klebt ein Preisschild mit niedrigerem Preis auf den Karton und geht dann zur Kasse, um weniger zu bezahlen. Wenig Aufwand, hohe Wirkung. Chinesische Betrügerbanden gehen schon seit Jahren nach diesem Schema vor, nur sehr viel geplanter und in großem Stil. Bei ihnen geht es nicht um ein Paar Sneaker, sondern um ganze Container voller Schuhe. Anstatt ein Preisschild umzukleben, gründen sie Scheinfirmen und fälschen gleich einen ganzen Strauß Dokumente. Und ihr Betrug findet nicht vor einer Ladentheke statt, sondern einer offiziellen EU-Zollabfertigung in einem Frachthafen. [Quelle]

Zusammengefasster Text

chinesische betrügerbanden gehen schon seit Jahren nach diesem Schema vor, nur sehr viel geplanter und in großem Stil. statt ein Preisschild umzukleben, gründen sie Scheinfirmen und fälschen gleich einen ganzen Strauß. betrug findet nicht vor einer Ladentheke statt, sondern einer offiziellen EU-Zollabfertigung in einem Frachthafen.

Hier ist zu erkennen, dass das neuronale Netz mit hoher Präzision zusammengefasst hat und somit keine relevanten Details ausgelassen hat. Auch wenn die Groß- und Kleinschreibung in diesem Beispiel noch Luft nach oben lässt, wurde die Hauptaufgabe erfüllt. Es folgt ein weiteres Beispiel:

Originaler Text

Weiterhin gaukeln Betrüger den Zollbehörden mit falschen Papieren einen niedrigeren Warenwert für T-Shirts und Schuhe in den Containern vor, um weniger Zollgebühren entrichten zu müssen. Im Rechtsjargon wird das „Unterbewertung“ genannt. Unter den vielen Möglichkeiten, den Zoll zu hintergehen, ist sie der absolute Dauerbrenner. Weil dessen Kontrolleure ihr bei der Masse an Containern, die täglich durch Frachthäfen geschleust werden, gar nicht hinterherkommen können. Durch Zollbetrug fehlen aktuell mindestens eine Milliarde Euro in den Kassen der EU. Und dieses Geld fehlt wiederum an anderer Stelle, beispielsweise für Umweltschutz oder digitale Infrastruktur. Betrugsbekämpfer wie jene der Europäischen Staatsanwaltschaft (EPPO) in Luxemburg versuchen händeringend, die Lage in den Griff zu bekommen. Sie warnen, dass der Bluff beim Zoll nur der erste Schritt eines mehrstufigen Betrugssystems sei: Die Banden kommen dadurch meist auch um die Zahlung der Mehrwertsteuer herum. Der tatsächliche Schaden für EU und Mitgliedsländer ist also noch viel höher. Der Europäische Rechnungshof benennt den laufenden Betrug in seinen regelmäßigen Berichten, erarbeitet sogar Lösungsvorschläge. Und doch geht der Schwindel an den EU-Grenzen munter weiter. Warum wird er nicht entschiedener bekämpft? [Quelle]**

Zusammengefasster Text

mindestens 1 milliarde euro fehlen durch Zollbetrug in den kassen der EU. eu-Grenzen sind deshalb noch munterer. warum wird er nicht entschiedener bekämpft? eu-Grenzen sind es, die die europäischen Mitgliedstaaten treffen. eu-Grenzen sind es, die die europäischen Mitgliedstaaten treffen.

Auch hier ist eine gute Qualität der Ausgabe zu erkennen. Ein Blick auf das eigentliche Paper von T5 zeigt, dass eigentlich der Befehl TL;DR: statt summarize: trainiert wurde. Diesen können wir auch für die Zusammenfassung unserer Texte verwenden.

t5_test.py
task = "TL;DR: Es ist der wohl simpelste Betrug, den man sich vorstellen kann: [...]"

input = tokenizer.encode(task, return_tensors="pt", max_length=1024, truncation=True)
output = model.generate(input, min_length=80, max_length=100)

text_summary = tokenizer.decode(output[0], skip_special_tokens=True)
print(text_summary)

In diesem Code-Snippet beziehen wir uns auf den ersten Text, den wir zusammengefasst haben. Dieser wurde hier aufgrund seiner Länge abgekürzt und im Code nicht ausgeschrieben. Wenn wir diesen Text durch den Code zusammenfassen lassen wollen, erhalten wir folgende Ausgabe:

Zusammengefasster Text:

. TL;DR: Es ist der wohl simpelste Betrug, den man sich vorstellen kann: Man sucht im Laden ein Paar Sneaker aus, klebt ein Preisschild mit niedrigerem Preis auf dem Karton und geht dann zur Kasse, um weniger zu bezahlen. Wenig Aufwand, hohe Wirkung. Chinesische Betrügerbanden gehen seit Jahren nach diesem Schema vor, nur viel geplanter und in großem Stil._

Mit diesem Befehl erhalten wir eine andere Version der Zusammenfassung. Obwohl wir diese Zusammenfassung in unserem Text in Groß- und Kleinschreibung erhalten, erhalten wir auch ein TL;DR: im Ausgabetext und auch einen zufälligen Punkt. Unserer Meinung nach sind Zusammenfassungen, die mit dem Befehl summarize: erstellt wurden, von höherer Qualität als solche, die mit TL;DR: erstellt wurden.

Zu beachten ist, dass es sich hierbei um allgemeine Zusammenfassungen handelt. Eine Anwendung auf z.B. Sitzungsprotokolle und eine anschließende Filterung nach personenbezogenen Informationen ist mit diesem Modell derzeit nicht möglich.

Textübersetzungen

Zur Einführung in die Textübersetzung beginnen wir mit Beispielen, bei welchen wir englischen Text zu deutschem Text übersetzen wollen. Eine Funktion hierzu können wir wie folgt definieren:

t5_test.py
def translate_to_german(text):
  task = "translate English to German: "
  input = tokenizer(task + translation_sentences, return_tensors="pt", padding=True)

  output_sequences = model.generate(
    input_ids=input["input_ids"],
    attention_mask=input["attention_mask"],
    do_sample=False
  )

  print(tokenizer.batch_decode(output_sequences, skip_special_tokens=True))

Anschließend beginnen wir mit einem einfachen Beispiel, welches im Alltag auftauchen könnte.

Originaler Text

Hello there! How can I help you?

Ausgabe

Hallo, wie kann ich Ihnen helfen?

Bei diesem Beispiel sehen wir, dass dies eine gute Qualität erreicht. Weiter gehen wir mit einem komplexeren Fall, welcher technische Begriffe verwendet.

Originaler Text

The engine was close to overheating, when I was about to check it.

Ausgabe

Der Motor war kurz vor der Überhitzung, als ich es überprüfen wollte.

Auch hierbei scheint das Modell gut zu funktionieren. Weiterhin können wir auch Englisch aus einem höheren Sprachniveau verwenden, in diesem Fall aus einem englischen Investigativjournal:

Originaler Text

A US billionaire took over a tropical island pension fund — then hundreds of millions of dollars allegedly went missing. [Quelle]

Ausgabe

Die ersten zehn Jahre nach der Geburt von lteren hat sich die deutsche Gesellschaft für psychische Erkrankungen (PSK) in der Schweiz etabliert.

Bei diesem Beispiel können wir klar erkennen, dass das Modell Schwierigkeiten hat. Die Eingabe scheint vollständig unkorreliert zu sein von der entsprechenden Ausgabe.

Nachdem wir vom Englischen ins Deutsche übersetzt haben, können wir ebenfalls den umgekehrten Fall betrachten.

t5_test.py
def translate_german(text):
  task = "translate German to English: "
  input = tokenizer(task + translation_sentences, return_tensors="pt", padding=True)

  output_sequences = model.generate(
    input_ids=input["input_ids"],
    attention_mask=input["attention_mask"],
    do_sample=False
  )

  print(tokenizer.batch_decode(output_sequences, skip_special_tokens=True))

Wir beginnen hier mit einfachen Beispielen, um die Fähigkeiten des Modells zu testen.

Originaler Text

Heute geht es mir sehr gut.

Ausgabe

Heute geht es mir sehr gut.

Originaler Text

Meine Meinung zu diesem Thema ist sehr komplex, entsprechend kann ich diese nicht in einem Satz zusammenfassen.

Ausgabe

Meine Meinung zu diesem Thema ist sehr komplex, entsprechend kann ich diese nicht in einem Satz zusammenfassen.

Wir sehen hier, dass das Modell keine Übersetzung vornimmt. Dies geschieht auch bei komplexeren Beispielen:

Originaler Text

Geflüchtete sind oft schwer traumatisiert. Oft entwickeln sich daraus psychische Erkrankungen und verhindern eine Integration. Betroffene können zur Gefahr für sich selbst werden - oder sogar für andere. Trotzdem werden sie fast nie therapiert. Ein Systemversagen mit Ansage. [Quelle]

Ausgabe

Die ersten zehn Jahre nach der Geburt von lteren hat sich die deutsche Gesellschaft für psychische Erkrankungen (PSK) in der Schweiz etabliert.

Originaler Text

Robustes Clustering mittels k-Means. Um ähnliche Gruppen in unbekannten Daten zu identifizieren und die Komplexität zu reduzieren, kann Clustering verwendet werden. Hier wird der k-Means-Algorithmus beschrieben, der für Clustering verwendet werden kann. [Quelle]

Ausgabe

Um ähnliche Gruppen in unbekannten Daten zu identifizieren und die Komplexität zu reduzieren, kann Clustering verwendet werden.

Bei diesen komplexeren Beispielen wird der zu übersetzende Text nicht einmal kopiert, sondern es werden (gravierende) Fehler in die Ausgabe eingebaut. Daher sollte bei einer Übersetzung aus dem Englischen die Tauglichkeit des Modells vor der Verwendung überprüft oder ein Feintuning vorgenommen werden, um die Tauglichkeit der Übersetzung zu gewährleisten.

Zusammenfassend lässt sich sagen, dass in unserem Beispiel eine Übersetzung zwischen Englisch und Deutsch nur dann funktioniert, wenn wir vom Englischen ins Deutsche übersetzen. Eine Übersetzung in umgekehrter Richtung ist nicht sinnvoll.

CoLA

Als letztes Beispiel betrachten wir CoLA, was für “Corpus of Linguistic Acceptability” steht. Die Aufgabe des Modells bei diesem Kommando ist es, die Korrektheit eines Eingabetextes zu überprüfen. Dabei wird nicht der Fehler selbst markiert, sondern nur eine Klassifizierung in korrekt oder fehlerhaft vorgenommen. 1 6 Eine Textüberprüfungsfunktion ist einfach zu definieren:

t5_test.py
def cola_sentence(sentence):
  task = "cola sentence: " + sentence
  input = tokenizer.encode(task, return_tensors="pt", max_length=1024, truncation=True)

  output = model.generate(input, min_length=80, max_length=100)

  text_summary = tokenizer.decode(output[0], skip_special_tokens=True)
  # text_summary = tokenizer.decode(output[0])
  print(text_summary)

Dann können wir uns eine Reihe von Beispielen ansehen. Wir beginnen mit einem einfachen aber fehlerhaften Satz:

Originaler Text

This is house falling.

Originale Ausgabe

unacceptable - equivalent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Gekürzte Ausgabe

unacceptable

Die Originalausgabe des Modells erscheint willkürlich, aber für uns ist nur das Schlüsselwort acceptable oder unacceptable relevant. Daher werden wir im Folgenden mit diesen verkürzten Ausgaben arbeiten. Wir sehen jedoch, dass dieser einfache Satz korrekt klassifiziert wurde.

Wir sehen uns anschließend zwei komplexere Sätze an.

Originaler Text

My bearded dragon appears happy as of late.

Gekürzte Ausgabe

acceptable

Originaler Text

The coca cola company tries to invest in previously unknown business branches.

Gekürzte Ausgabe:

acceptable

In beiden Fällen wurde eine korrekte Klassifizierung erreicht. Bei der Verwendung von Sonderzeichen scheint die Klassifizierung für das Modell schwieriger zu sein:

Originaler Text

My dog was running for an hour straight.

Originaler Text

My d0g was running for an hour straight.

Originaler Text

My dOg was running for an hour straight.

Originaler Text

My d=g was running for an hour straight.

Gekürzte Ausgabe

acceptable

Bei all diesen Eingaben erhalten wir die Klassifizierung, dass diese Eingabe keine Fehler enthält - obwohl wir sehen, dass Sonderzeichen an Stellen sind, wo sie nicht sein sollten.

Wenn wir nun einen grammatikalischen Fehler in den Satz einbauen, erkennt das Modell diesen Fehler.

Originaler Text

My dog was running for two hour straight.

Gekürzte Ausgabe

unacceptable

Zusammenfassend lässt sich sagen, dass es wahrscheinlich sinnvoll ist, Sonderzeichen aus dem Eingabetext zu entfernen, wenn sie für die Bedeutung nicht relevant sind. Alternativ können Fehler durch Sonderzeichen potentiell ignoriert werden, wenn dies nicht notwendig ist. Ansonsten scheint das neuronale Netz in diesem Aufgabenbereich auch komplexere Sätze gut verstehen zu können und erscheint uns daher als ein interessantes Werkzeug zur automatischen Kontrolle von Texten.

Weitere Anwendungen

T5 stellt eine Grundlage dar, um eine Reihe verschiedener Aufgaben an Texten durchzuführen. Hierbei stellt es kein Optimum dar, sondern eine Basis für weitere Entwicklungen welche grundsätzlich in der Lage ist, eine Reihe von Aufgaben in akzeptabler oder guter Qualität durchzuführen. Bei komplexeren Aufgabenstellungen oder spezifischen Anpassungen an Anwendungen ist Fine-Tuning des Modells potenziell notwendig und verbessert die Leistungsfähigkeit (deutlich). Durch die Art und Weise wie Aufgaben an das Modell übergeben werden und wie dies trainiert wurde, ist es grundsätzlich sehr flexibel. Dadurch stellt es ein gutes Werkzeug für eine Reihe von zukünftigen Aufgaben dar, auf welchen es bisher nicht trainiert wurde. 4 5

Zusätzlich hierzu gibt es bereits offiziell verfügbare Weiterentwicklungen des Modells, welche sich auf verschiedene Aufgabenstellungen spezialisieren. Wir geben hier einige Beispiele: 4

  1. Bei T5v1.1 handelt es sich um eine architektonische Verbesserung von T5, welche nur mit dem Datensatz C4 trainiert wird.

  2. Bei mT5 handelt es sich um eine mehrsprachige Version von T5. Anstatt von 44 Sprachen, ist es in der Lage mit insgesamt 101101 Sprachen umzugehen.

  3. Bei byT5 handelt es sich um eine Version von T5, welche nicht auf SentencePiece-Subword-Token-Sequenzen trainiert wurde, sondern auf Byte-Sequenzen. Die Idee hierbei ist es, beliebige Sprachen zu verarbeiten, diese robuster gegenüber Störungen in der Sprache und weniger fehleranfällig durch Wegfall der Pipieline zu machen.

  4. Bei UL2 handelt es sich um ein ähnliches Modell zu T5, welches auf verschiedene Rauschunterdrückungsziele trainiert wurde.

Eine Auflistung weiterer Weiterentwicklungen oder ähnlichen Modellen sind hier zu finden.

TL;DR

Zusammenfassend lässt sich sagen, dass T5 ein leistungsstarkes Sprachmodell ist, das eine Vielzahl von Text-to-Text-Aufgaben ausführen kann. Seine Fähigkeit, natürliche Sprache zu verstehen und kontextrelevante Informationen zu generieren, macht es zu einem wertvollen Werkzeug für viele Anwendungen wie Chatbots, Sprachübersetzung und Inhaltsgenerierung.

Wir haben gesehen, dass die Qualität der Zusammenfassungen zufriedenstellend ist. Adressatenspezifische Zusammenfassungen sind nicht möglich, so dass wir uns auf allgemeine Zusammenfassungen beschränken müssen.

Bei den Übersetzungen haben wir festgestellt, dass eine Übersetzung vom Deutschen ins Englische nicht möglich ist. Außerdem ist die Übersetzung vom Englischen ins Deutsche mit leichten Schwierigkeiten verbunden, aber für nicht allzu schwierige Übersetzungsaufgaben ist dieses Modell gut geeignet.

Bei der Überprüfung der Korrektheit des Textes haben wir gesehen, dass unser Modell gute Ergebnisse liefert. Lediglich die Verwendung von Sonderzeichen bereitet dem Modell Schwierigkeiten, auf die geachtet und die überprüft werden sollten.

Anmerkung des Autors: Die hier aufgeführten Beispiele stellen persönliche Erfahrungswerte dar und können keine vollständige Korrektheit garantieren. Insbesondere bei neuronalen Netzen besteht immer die Gefahr, dass einzelne Datenpunkte fehlerhaft verarbeitet werden. Soweit mir hierzu Informationen bekannt sind, wurden diese beispielhaft dargestellt.

Quellen

Footnotes

  1. arxiv.org 2 3

  2. arxiv.org

  3. sebastianraschka.com

  4. huggingface.co 2 3

  5. huggingface.co 2

  6. arxiv.org