Kurs:Natürliche Sprachverarbeitung

Hier entsteht ein Kurs über natürliche Sprachverarbeitung. Der Kurs wird bis Ende 2014 geplant, um anschliessend 2015 im Sommer im Rahmen einer deutschen Schülerakademie gehalten werden zu können.

Teilnehmer Bearbeiten

Die 16 Teilnehmer müssen in den vorletzten 2 Jahrgangsstufen sein. Da das Gymnasium inzwischen nur noch 8 Jahre dauert, ist also von 16-18 jährigen Teilnehmern auszugehen.

Vermutlich haben zumindest ein paar noch nichts in Richtung Wahrscheinlichkeitstheorie gemacht. Begriffe wie "bedingte Wahrscheinlichkeit" werden eventuell komplett unbekannt sein.

Voraussetzungen Bearbeiten

  • Englischkenntnisse (B1): Paper / Dokumentation lesen
  • Laptop zum Programmieren

Lernziele Bearbeiten

Das wichtigste bei einem Kurs sind immer die Lernziele. Bei der Definition von Referatsthemen und beim Auswählen der Kursinhalte sollte stets geprüft werden, ob diese zu den Lernzielen passen.

Themenspezifisch Bearbeiten

  • Problembewusstsein für die Herausforderungen im Gebiet der natürlichen Sprachverarbeitung
  • Akurates arbeiten mit Wahrscheinlichkeitsfunktionen und Statistik.
  • Wissenschaftliches Arbeiten und evaluieren von Experimenten (Hypothese, Versuchsaufbau, Durchführung, Diskussion)
  • Nützliche Toolkits zum effizienten Arbeiten auf dem Gebiet der Natürlichen Sprachverarbeitung.
  • Stärkung der Programmierkenntnisse

Allgemein Bearbeiten

  • Teamarbeit (Kommunikation, Dokumentation, git,...)
  • Arbeiten mit Wikis
  • Präsentationstechniken (Es sollte wieder eine Posterpräsentation geben, bei der man hoffentlich aus den Fehlern von 2013 gelernt hat)
  • Feedbackkultur
  • Wissenschaftliches schreiben

Mathematik Bearbeiten

Ohne Mathematik wird es in dem Kurs nicht funktionieren. Im Folgenden sind die Themen und Konzepte genannt, die vermutlich unverzichtbar sein werden.

Grundlagen Bearbeiten

  • Wahrscheinlichkeitsräume
  • Wahrscheinlichkeitsfunktionen
  • bedingte Wahrscheinlichkeiten
  • Satz von Bayes
  • Satz der totalen Wahrscheinlichkeit

Fortgeschrittenere Konzepte Bearbeiten

Expertenwissen Bearbeiten

  • Shannon paper
  • Noisy channel model
  • Markov Modelle / Markov-Annahme (Dieses Thema erscheint mir in Wirklichkeit viel komplexer und subtiler als es meistens gedacht ist.)

Grundlagen der Informatik Bearbeiten

  • Ubuntu / Linux: sicherer Umgang mit der Konsole
  • Sicheres Beherrschen eines Editors z.B. Emacs oder aber eine Entwicklungsumgebung wie z.B. eclipse
  • Sicherer Umgang mit einer Programmiersprache z.B. Java oder Python

Sprachmodelle Bearbeiten

  • Korrektes Zählen
  • Maximum likelihood Verteilung
  • Geskipte n-gram Verteilungen
  • Fortsetzungshäufigkeit.
  • Smoothing-Techniken (falls überhaupt)
  • Klassenbasierte / POS-Modelle (?)

Algorithmen, Programmiertechniken und Datenstrukturen Bearbeiten

  • Beam search
  • Caching
  • Dynamische Programmierung
  • MapReduce-artige Ansätze
  • Hashmaps, FST, Trie, Listen, …

Anwendungen und Ausblick Bearbeiten

Fast sämtliche Anwendungen ließen sich mit Machine Learning anreichern und auch implementieren.

Rechtschreibkorrektur Bearbeiten

Autovervollständigung Bearbeiten

  • Evaluations settings: Precision Recall, MRR, Normalized Key Stroke Savings
  • Effiziente Indexstrukturen (Tries und FST)

Handschrifterkennung Bearbeiten

Ursprünglich ein Machine Learning Problem. Es lässt sich doch mit Hilfe von Sprachmodellen als Noisy channel Problem verstehen und passt daher thematisch gut in den Kurs.

Maschinelles Übersetzen Bearbeiten

  • Einführung in MOSES
  • Kombination mit Machine Learning

Spracherkennung Bearbeiten

  • Einführung in CMU Sphinx
  • Kombination mit Machine Learning

Entity Recognition Bearbeiten

  • Freebase-Konzepte in der Wikipedia erkennen?
  • Part of speech tagging
  • Lassen sich die Links in der Wikipedia automatisch generieren?

Question Answering Bearbeiten

  • Einführung in die Problemstellung
  • Problembewusstsein schaffen.

Standard Software Bearbeiten

  • Python / Java?
  • NLP toolkits: NLTK
  • Corpora parsen
  • Verwenden wir nur Standard-Toolkits oder implementieren wir bestimmte Sachen auch selbst?

Wissenschaftliche Methoden Bearbeiten

  • Dataset split
  • Cross corpus Evaluation
  • Statistische Methoden (AUC, ROC, Precision, Recall, …)
  • 10-fache Kreuzvalidierung
  • Reproduzierbarkeit / Dokumentation
  • Experiment design


Zeitplan Bearbeiten

Es gibt 17 Tage. Vor dem Mittagessen stehen ca. 3 Stunden zur Verfügung; Nachmittags nochmals ca. 2 Stunden.

Vorbereitung: Die Teilnehmer sollten versuchen die benötigte Software bereits vor der Akademie zu installieren. Dabei können wir per Email / Wiki Hilfestellung geben


  • Tag 1:
    • Vormittags: Vorstellen (ca. 2h?); git; Programmiersprache
    • Nachmittags: Dynamische Programmierung+Levenshtein-Distanz
  • Tag 2:
    • Vormittags: Akkuratheit der Korrektur durch Kreuzvalidierung feststellen(?)
    • Nachmittags: N-Gram Modell als zusätzliche Möglichkeit der Bewertung der besten Hypothese(?)
  • Tag 3:
    • Vormittags: Programmieren eines Online-Spellcheckers für Englisch (da scheint es tatsächlich noch nichts gutes zu geben!)
    • Nachmittags: "
  • Tag 4:
    • Vormittags: Programmieren eines Chatbots (see StackOverflow)
    • Nachmittags:
  • Tag 5:
    • Vormittags: Grammatik-Prüfung mit Word-Embeddings
    • Nachmittags: Grammatik-Prüfung mit Word-Embeddings
  • Tag 6:
    • Vormittags:
    • Nachmittags:
  • Tag 7:
    • Vormittags:
    • Nachmittags:
  • Tag 8:
    • Vormittags:
    • Nachmittags:
  • Tag 9:
    • Vormittags:
    • Nachmittags:
  • Tag 10:
    • Vormittags:
    • Nachmittags:
  • Tag 11:
    • Vormittags:
    • Nachmittags:
  • Tag 12:
    • Vormittags:
    • Nachmittags:
  • Tag 13:
    • Vormittags:
    • Nachmittags:
  • Tag 14:
    • Vormittags:
    • Nachmittags:
  • Tag 15:
    • Vormittags:
    • Nachmittags:
  • Tag 16:
    • Vormittags:
    • Nachmittags:
  • Tag 17:
    • Vormittags:
    • Nachmittags:

Materialien Bearbeiten

Folgende Materialien sollten von den Kursleitern in einem vernünftigem Format bereitgestellt werden:

  • Wörterbücher
  • N-Gramme

Quellen Bearbeiten

MOOCs: Bearbeiten

  • Natural Language Processing (Coursera, Stanford)
  • Neural networks (Université de Sherbrooke): The NLP part is the last, chapter 10. I have not watched them so far, but the lecture about pre-training (ANNs) is very good.

Artikel Bearbeiten

Bücher Bearbeiten

  • Dan Jurafsky, James Martin: Speech and language processing
  • Schuetze, Manning: Statistical foundations of NLP
  • Koehn: Machine translation