Blitzeinführung in NLP

Moin! Herzlich Willkommen zu den Ressoursen für meinen Talk NLP - eine Interaktive Blitzeinführung auf dem University Future Festival 2021. Hier findet sich sowohl Links zu den Quellen meines Talks, Weiterführendes um sich intensiver zu beschäftigen als auch der Programmcode zum direkt kopieren und ausführen. Aber am Besten klickt man auf einen der Beiden Links um direkt in einer interaktiven Umgebung arbeiten zu können:

Open In Colab Open In myBinder

Was ist NLP?

Natural Language Processing, die Kunst natürliche Sprache in Computern verstehen.

Was kann NLP?

Wie funktioniert NLP?

  • Mit Machine Learning, welches die Abstraktion und Aneignung von abstrakten Wissen und Verständnis in Neuronalen Netzen mithilfe von Trainingsbeispielen beschreibt.
  • Nahezu alle aktuellen (State of the Art) Ansätze basieren auf einer Architektur für Neuronale Netze namens Transformers (Vaswani et al., 2017), die alle einen Attention-Mechanismus besitzen, die ihnen erlaubt ein Kontextverständnis auszubauen. Der Encoder setzt den Input in ein Embedding um, welches der Decoder wieder in Text (Output) übersetzt. Dies Architektur nennt man auch die Encoder-Decoder-Architecture oder seq-2-seq (Sequence to Sequence), da sie aus einem textuellen Input in einen textuellen Output erzeugt und wird z.B. für Übersetzungen genutzt.
  • Visualisierung des Attentionmechanismus für deutsche Sätze.
  • Deutsches Bert Modell
  • Warum die Modelle nach der Sesamstraße (engl. Muppets) benannt sind

Anstatt NLP-Modelle von Grund auf neu zu trainieren (was teuer ist und dauert), ist es jetzt möglich (und ratsam), vortrainierte Sprachmodelle zu nutzen, um gängige NLP-Aufgaben zu erfüllen. Viele der Modelle sind

Kann ich das Anwenden?

Ja, sogar komplett kostenlos - rudimentäre Python Kentnisse vorrausgesetzt.

Das einfachste Beispiel ist Sentiment Analysis, bei Text nach Stimmung (positiv, negativ) klassifiziert wird. Auf Huggingface sind hierführ verschiedene Modelle mit unterschiedlicher Datengrundlage und Sprache verfügbar. Für die deutsche Sprache biete sich das Model oliverguhr/german-sentiment-bert von Guhr et al. (2020) an. Dieses wurde mit 1.834 millionen deutschen Beispielen unter anderem von Bewertungsplattformen trainiert.

from transformers import pipeline

classifier = pipeline("sentiment-analysis", model="oliverguhr/german-sentiment-bert")
texts = [
    "Mit keinem guten Ergebniss",
    "Das ist gar nicht mal so gut",
    "Naja, war ok",
    "Total toll!",
    "Nicht so schlecht wie erwartet",
    "Sie fährt ein grünes Auto.",
]
outputs = classifier(texts)

print(outputs)

Zero-Shot Learning

  • Zero-Shot Learning beschreibt das “Erlernen” von Fähigkeiten ohne Trainingbeispiele. Da die NLP-Netze immer besser darin werden, Sprache zu verstehen können diese auch Anweisungen in natürlicher Sprache verstehen
  • Eine Kurzzusammenfassung zum n-shot learning finden sich in diesem Blogpost
from transformers import pipeline
# Warning! This model is about 10GB in size!
generator = pipeline('text-generation', model='EleutherAI/gpt-neo-2.7B')
prompt="""
Airport code extractor:

Text: "I want to fly form Los Angeles to Miami." 
Airport codes: LAX, MIA 

Text: "I want to fly from Orlando to Boston" 
Airport codes:"""
generator(prompt, do_sample=True, min_length=50)

Fast jedes Problem aus dem Bereich Machine Learning lässt sich als n-shot Problem beschreiben. Siehe dazu zum Beispiel Prompt Source. N-Shot Learning ist aber schwieriger und somit oft weniger genau als der klassiche Machine Learning Ansatz mit Trainingsdaten. Wo zero-shot learning oft aber sehr gut funktioniert ist die Klassifizierung, hier an Beispielen von Zeitungsartikeln.

from transformers import pipeline

classifier = pipeline("zero-shot-classification", model="Sahajtomar/German_Zeroshot")
sequences = [
    "Letzte Woche gab es einen Mord im nahe gelegenen Ort Unterweiler.",
    "Die meisten Menschen sind geimpft. Trotzdem steigen die Infektionsahlen. Soll ich noch auf eine Geburtstagsfeier oder Hochzeit gehen? Das raten Expertinnen und Experten.",
    "Letzes Jahr wurden 15% weniger Ladendiebstähle verübt.",
    "Am 19. Februar jährt sich der Anschlag in Hanau, bei dem neun Menschen mit Migrationshintergrund gezielt erschossen wurden.",
    "Ziel des  Handelns muss es sein, langfristig zu denken und ökonomische und ökologische Lösungen zu schaffen, die auch für künftige Generationen von Vorteil sind.",
]
candidate_labels = ["Verbrechen", "Krankheit", "Rassissmus", "Nachhaltigkeit"]
hypothesis_template = "In diesem geht es um {}."
outputs = classifier(
    sequences, candidate_labels, hypothesis_template=hypothesis_template
)

NLP in der Bildung


Bibliography

Oliver Guhr, Anne-Kathrin Schumann, Frank Bahrmann, and Hans Joachim Böhme. Training a broad-coverage german sentiment classification model for dialog systems. In Proceedings of The 12th Language Resources and Evaluation Conference, 1620–1625. Marseille, France, May 2020. European Language Resources Association. URL: https://www.aclweb.org/anthology/2020.lrec-1.202.

Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, 5998–6008. 2017.