Kategoriespezifisches Encoder-Modell

Um den Beispielcode selbst auszuführen oder zu modifizieren, können Sie das dieser Seite zugrundeliegende Jupyter Notebook über die Seitenleiste öffnen und herunterladen.

Kein Problem! Erklärungen zu den einzelnen Schritten des Codes verbergen sich hinter den Nummern an der rechten Seite. Einfach mit der Maus über die Nummer fahren, um die Erklärung zu sehen. Wo der jeweilige Code ausgeführt wird (in Python, R, oder dem Terminal), steht in der Kopfzeile des Codeblocks.

Python
print("Hallo! 👋")
1
Das ist ein einfacher Python-Befehl, der den Text “Hallo” in der Konsole ausgibt. Der Output erscheint unter dem Codeblock.
Hallo! 👋

Daten laden

Unabhängig vom verwendeten Modell laden wir zunächst die bereits installierten Pakete sowie unsere Textdaten und speichern diese in einem Listenobjekt:

Python
import pandas as pd
from transformers import pipeline

daten = pd.read_csv("data/example_dataset.csv")
datenliste = list(daten["text"])
1
Importieren der benötigten Bibliotheken
2
Laden der Textdaten aus einer CSV-Datei und Speichern in einer Liste

Modell laden

Hier verwenden wir ein kategoriespezifisches Encoder-Modell für die Sentiment-Analyse in deutscher Sprache, das auf dem BERT-Modell basiert (Guhr et al., 2020). Dieses Modell ist auf Hugging Face frei verfügbar und kann direkt über den pipeline()-Befehl geladen werden. In diesem können wir je nach Bedarf noch weitere Parameter festlegen, die der Dokumentation von Hugging Face entnommen werden können. Wichtig ist etwa bei kleineren Modellen das Kürzen langer Texte in Abhängigkeit der maximalen Inputlänge des gewählten Modells (z. B. max_length = 512, truncation=True). Die Ausführung des pipeline()-Befehls kann mitunter lange dauern, vor allem beim ersten Mal, da das LLM geladen werden muss.

TippGut zu wissen

Anstelle des hier verwendeten Modells oliverguhr/german-sentiment-bert können Sie auch andere kategoriespezifische Encoder-Modelle (üblicherweise gekennzeichnet für “Text Classification”) für verschiedene Sprachen und Anwendungsfälle verwenden. Eine Übersicht über verfügbare Modelle finden Sie auf Hugging Face. Achten Sie darauf, dass das gewählte Modell für Ihre spezifische Aufgabe geeignet ist (z. B. Sentiment-Analyse, Themenklassifikation etc.) und die Sprache Ihrer Texte unterstützt.

Python
sentiment_classifier = pipeline("sentiment-analysis",
                                 model="oliverguhr/german-sentiment-bert",
                                 max_length = 512, truncation=True)
3
Initialisieren der Pipeline für die Sentiment-Analyse (bzw. generischer Textklassifikation)
4
Spezifizieren des Modells, hier ein kategoriespezifisches Encoder-Modell für die deutsche Sprache
5
Festlegen der maximalen Eingabelänge und Aktivieren der Kürzung langer Texte

Klassifikation durchführen

Nun wenden wir das Modell auf unsere Liste der Texte an. Das Ergebnis speichern wir in einem DataFrame-Objekt, um es übersichtlich darstellen zu können.

Python
ergebnis = sentiment_classifier(datenliste)
ergebnis = pd.DataFrame(ergebnis)
ergebnis["text"] = daten["text"]
print(ergebnis)
6
Anwenden der Sentiment-Analyse auf die Liste der Texte
7
Umwandeln des Ergebnisses in ein DataFrame für eine bessere Übersicht
8
Hinzufügen der Originaltexte zum Ergebnis-DataFrame
9
Ausgabe des Ergebnis-DataFrames mit den Klassifikationen
      label     score                                               text
0   neutral  0.988959  Die orthodoxe Gemeinde feiert heute #Ostern. I...
1   neutral  0.753388  Vielen Dank Gregor Rutz für die Unterstützung ...
2  negative  0.976087  Wird ja immer schlimmer mit den Intoleranten d...
3  negative  0.732691  Liebe Junge, geht wählen. Kann ja nicht sein, ...
4  negative  0.903959  ‘— Das war unser EU-Wahl-Abschluss der SP– mit...
5  positive  0.942041  Aufschlussreicher Blick hinter die Mauern! Tol...
6  negative  0.685230  Denn ein Hard-Brexit würde der #EU, aber noch ...
7  negative  0.609906  Familienbonus: Es ist erstaunlich wie viele Me...
8   neutral  0.998905  Integration passiert vor Ort. Deshalb arbeitet...
9   neutral  0.950086  Ich frage mich: Wer ist als nächstes dran Frau...
Quelle: 03_kategoriespezifisches_Encoder-Modell.ipynb

Literatur

Guhr, O., Schumann, A.-K., Bahrmann, F., & Böhme, H. J. (2020). Training a Broad-Coverage German Sentiment Classification Model for Dialog Systems. In N. Calzolari, F. Béchet, P. Blache, K. Choukri, C. Cieri, T. Declerck, S. Goggi, H. Isahara, B. Maegaard, J. Mariani, H. Mazo, A. Moreno, J. Odijk, & S. Piperidis (Hrsg.), Proceedings of the Twelfth Language Resources and Evaluation Conference (S. 1627–1632). European Language Resources Association. https://aclanthology.org/2020.lrec-1.202