Praktikum Verarbeitung natürlicher Sprache im Sommersemester 2023
Überblick
In der Vorlesung Formale Systeme wurden kontextfreie Grammatiken als Modell zur Beschreibung formaler Sprachen eingeführt. Ziel dieses Praktikums ist die Anwendung kontextfreier Grammatiken in der natürlichen Sprachverarbeitung. Dazu werden wir aus Trainingsdaten eine Grammatik für die englische Sprache induzieren und einen Parser implementieren, der mithilfe dieser Grammatik Eingabesätze in ihre syntaktische Struktur zerlegt. Weiterhin werden wir verschiedene Methoden zur Verbesserung der Genauigkeit und der Laufzeit des Parsers untersuchen. Am Ende werden die genauesten und schnellsten Parser der Praktikumsteilnehmer in einem Wettbewerb gekürt.
Das Praktikum bietet eine Möglichkeit, die in den Vorlesungen Maschinelles Übersetzen natürlicher Sprachen und Parsing von natürlichen Sprachen vermittelten Konzepte am praktischen Beispiel zu vertiefen.
Organisation
Das Praktikum findet wöchentlich am Dienstag in der 2. und 3. Doppelstunde im Raum APB/E069 statt. Es gibt einige verbindliche Veranstaltungen, außerhalb derer bietet der Raum eine Möglichkeit zur selbstständigen Arbeit. Die Einführungsveranstaltung findet am 11. April um 9:20 Uhr statt.
Es gibt keine Einschreibung. Der Ablaufplan enthält alle relevanten Informationen:
- Einbringungsmöglichkeiten des Praktikums und Voraussetzungen,
- Teilaufgaben und deren Aufgabenstellungen,
- Termine der Tutorien und Abgabetermine der Teilaufgaben sowie
- die Dokumentation der erwarteten Kommandozeilenschnittstelle.
Materialien
An dieser Stelle werden Ihnen die Folien der Tutorien und weitere für das Praktikum benötigte Daten zur Verfügung gestellt. Der Zugriff auf die verlinkten Ressourcen ist ausschließlich im Netz der TU Dresden möglich. Informationen zur Verwendung von VPN finden Sie hier.
Folien der Tutorien
- Einführungsveranstaltung: Einführung und Organisatorisches, 1. Aufgabe
- 2. Aufgabe
- 3. Aufgabe
- 4. Aufgabe
Achtung: das vierte Tutorium wird um eine Woche auf den 20.06. verschoben!
Korpora
Als Trainings- und Testkorpus dienen annotierte Sätze des Wall Street Journals aus der Penn Treebank (PTB). Diese werden hier in aufbereiteter Form zur Verfügung gestellt. Bitte beachten Sie, dass die Lizenz der TU Dresden über die Nutzung der Penn Treebank Sie nicht zur Weitergabe dieser Daten berechtigt.
Die Daten sind in die Ordner large
und small
unterteilt.
Sie enthalten jeweils eine Grammatik, die aus unterschiedlich großen Segmenten der PTB trainiert wurde, Sätze zum Testen des Parsers und die Gold-Parsebäume für diese Sätze.
Im Fall von large
sind zusätzlich die Bäume enthalten, die zum Training der Grammatik verwendet worden sind.
Die konkreten Inhalte der einzelnen Dateien stellen sich wie folgt dar.
- training.mrg
- Trainingskorpus (annotierte Sätze) für die Grammatinduktion.
- training_b.mrg
- Binarisiertes Trainingskorpus für die Grammatinduktion (sollte
grammar.rules
,grammar.lexicon
undgrammar.words
liefern). - grammar.rules, grammar.lexicon, grammar.words
- Beispielgrammatik (binarisiert) für den Parser.
- testsentences
- Beispielsätze (i.e., Testkorpus) für den Parser.
- gold.mrg
- Gold-Parsebäume = annotierte Sätze des Testkorpus (nicht binarisiert, können also nicht zur Parser-Ausgabe passen!).
- gold_b.mrg
- Binarisierte Gold-Parsebäume.
Evaluation des Parsers (F1-Score)
Die vom Parser ausgegebenen Bäume stimmen im Normalfall nicht mit den Goldbäumen überein. Die Güte des Parsers wird daher über den F1-Score bestimmt, der z.B. mit discodop bestimmt werden kann:
discodop eval --fmt=bracket <DATEI MIT GOLDBÄUMEN> <DATEI MIT PARSEBÄUMEN>
Arbeitsumgebung
Die Strukturierung der Implementierung und die Wahl der verwendeten Tools ist Ihnen freigestellt. Es gelten lediglich die folgenden Anforderungen, um ein automatisches Testen zu ermöglichen.
- Das Arbeitsverzeichnis enthält auf oberster Ebene eine Datei namens
Makefile
. Diese enthält ein Target, das eine ausführbare Dateipcfg_tool
erstellt. Eine weitergehende Einführung in Make gibt es z.B. hier. - Das Programm
pcfg_tool
enthält die Lösungen zu allen Teilaufgaben. Einzelne Funktionen werden über Subkommandos aufgerufen (wie bei git). Ist eine Funktion nicht implementiert, soll das Programm mit dem Statuscode 22 beendet werden. Alles weitere zur Kommandozeilenschnittstelle steht im Ablaufplan. - Keine Datei auf der obersten Ebene des Arbeitsverzeichnisses beginnt mit
.eval_
.
Sie können selbst überprüfen, ob Ihre Implementierung die Spezifikationen hinsichtlich Ein- und Ausgabeformat erfüllt.
Dazu entpacken Sie die folgende Testsuite in Ihr Arbeitsverzeichnis und rufen make -f tests.mk
auf.
Bitte stellen Sie vor Einreichung einer Teillösung sicher, dass diese Tests erfolgreich durchlaufen.
Hinweis: die Tests überprüfen nicht die Korrektheit der Implementierung.
Kontakt
-
Dipl.-Inf.
Richard Mörbitz
Tel.: +49 (0) 351 463-38487