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:
Was ist NLP?
Natural Language Processing, die Kunst natürliche Sprache in Computern verstehen.
Was kann NLP?
- Programmcode erzeugen und verstehen
- Matheaufgaben lösen
- und außerdem: besser Übersetzen, (dadaistische) Texte schreiben, Fragen anhand von Kontext beantworten auch zu Tabellen und Spracherkennung
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
- Kann sinnvolles, individuelles Feedback automatisieren, Multiple Choice Fragen oder Flashcard generieren. Dies erlaubt neuartige Lehr- und Lernkonzepte oder die Skalierung Richtung MOOCs.
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. ↩