CL-Blog

Computerlinguistik & Politik

Du durchsuchst gerade das Archiv der Kategorie ‘Computerlinguistische Techniken’.

Kategorie: Computerlinguistische Techniken

2017 22 Feb

CLT: Endergebnisse der Übungsblätter

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Die Gesamtbewertung aller Ü-Blätter samt Note und (Nicht-)Zulassung zum Programmierprojekt hängt voraussichtlich ab Morgen im Schaukasten gegenüber von II.14.220.

 

2017 14 Feb

CLT, Übungsblatt 8

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hier folgt das letzte, recht kurze Übungsblatt.

Für die Fertigdurchsicht von ÜB7 brauche ich mind. noch bis Donnerstag.

Hier finden Sie einen Katalog mit den zur Verfügung stehenden Programmierprojekten für die Kurse CL-Techniken und C++ I.

Jedes Projekt enthält Informationen dazu, für welchen Kurs das Projekt zur Verfügung steht (Python bedeutet dabei CLT).

Der letztmögliche Abgabetermin ist in beiden Fällen der 9.4.2017, 23:59. Von “Verlängerungsanträgen” sehen Sie bitte ab. Die Abgabe bitte als einzelne Zip-Datei (Programm, Dokumentation und  alle nötigen Daten) an meine Email-Adresse.

Bewertungsmaßstab für alle Projekte ist

  • die Höhe des Aufwands
  • die Qualität der Kommentierung (auch der Kopfzeilen zu Beginn, Zeilenkommentierung, doxygen in C++, docstrings in Python),
  • die Lesbarkeit und Übersichtlichkeit des Codes (z.B. keine zu langen Zeilen machen, ausreichend Leerraum verwenden)
  • die Qualität der Fehlermeldungen
  • die Robustheit und Absturzsicherheit
  • und die Eleganz des Codes

Allgemeine Hinweise für C++-Projekte finden Sie hier. (im PDF steht fälschlicherweise der 10.4.)

2017 9 Feb

CLT, 8./9.2.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Ansätze zur Semantik
  • Semantikkonstruktion in Prolog

Materialien:

Weiterführendes:

2017 1 Feb

CLT, 1.2./2.2.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Besprechung von Ü-Blatt 7
  • EM-Training von PCFGs

2017 28 Jan

CLT, 25./26.1.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Besprechung von Übungsblatt 7
  • EM-Training von PCFGs (Inside-Outside-Algorithmus)

Materialien:

2017 21 Jan

Python: names and values

Abgelegt unter: Computerlinguistische Techniken,Programmieren für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Ein interessanter Vortrag von der PyCon 2015:

2017 20 Jan

CLT: Übungsblatt 7

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hier folgt das vorletzte Übungsblatt. Schauen Sie sich die Aufgabenstellung bitte genau an und stellen Sie nächsten Donnerstag Fragen:

CLT-Uebung7

Noch zwei drei Bemerkungen:

  • Das Startsymbol der Grammatik ist dasjenige auf der linken Seite der ersten Regel der Grammatik (also <TOP>)
  • Zur Repräsentation der Grammatik können Sie auch die Grammatiklasse vom Beginn des Kurses verwenden.
  • Zur Erleichterung des Debuggings bietet sich an, die Chart in HTML-Format speichern zu können.

 

 

2017 18 Jan

CLT, 18./19.1.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen

Foliensätze:

Programmcode:

 

2017 11 Jan

CLT, 11./12.1.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

2017 11 Jan

CLT, Hinweise zu weiteren Ü-Blättern

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

  • Bitte schreiben Sie nicht so lange Zeilen in Ihren Python-Skripten; das macht den Programmcode unübersichtlich. Spätestens ab Spalte 100 ist Schluss. Brechen Sie entweder in die nächste Zeile um (mit einem \ ganz am Zeilenende), oder vereinfachen Sie die Anweisungen (z.B. durch zusätzliche Variablen)
  • Programmcode wird besser lesbar, wenn man ab un zu auch mal Leerzeilen verwendet, um ihn zu gliedern. Zur Gliederung tragen auch Kommentare zu Beginn jeder Funktion bei (die kurz erläutern, was die Funktion macht und was sie zurückgibt). Solche Kommentare können auch die Form sog. Python Docstrings haben
  • Folgen Sie bei Funktionen, die nur intern und nicht von außen aufgerufen werden, der Python-Konvention: jeweils zwei Unterstriche vor und nach dem Funktionsnamen
  • Wenn Sie Textdateien im “ein-Eintrag-pro-Zeile”-Modus erzeugen, schreiben Sie bitte jede einzelne Information in eine eigene, tab-getrennte Spalten. Erzeugen Sie also beispielsweise keine Spalten, die Python-Tupel etc. enthalten. Schreiben Sie stattdessen die Tupelkomponenten in eigene Spalten.
  • In Zukunft muss jede von Ihnen erzeugte Klasse eine Instanzfunktion __str__(self) aufweisen. Zur Erinnerung: __str__() erzeugt eine (menschenlesbaren) String-Repräsentation der Instanz und wird beispielsweise von print() aufgerufen. Wie die Repräsentation aussieht, bleibt Ihnen überlassen; sie sollte halt übersichtlich sein und die wesentlichen Informationen über die Instanz enthalten.

2017 6 Jan

CLT 4./5.1.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Besprechung von Ü-Blatt 5
  • Forward-Algorithmus

2017 6 Jan

CLT: Übungsblatt 6

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hier kommt das 6. Übungsblatt zu Vorwärtswahrscheinlichkeiten und Tagging in HMMs. Schauen Sie sich die Aufgabenstellung bis nächsten Mittwoch genau an und stellen Sie bitte Fragen.

Noch etwas: nach reiflicher Überlegung halte ich an den im Blog-Eintrag vom 3.1. gemachten Aussagen fest. M.a.W. : um den Kurs zu bestehen, muss man tatsächlich für jedes Halbsemester mindestens 150 Punkte in den 3 besten Blättern erreichen.

 

2017 3 Jan

CLT – Ergebnisse der Übungsblätter

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Die Ergebnisse der Übungsblätter des 1. Halbsemesters hängen im Kasten bei uns im 2. Stock.

Beachten Sie bitte, dass nach den Anforderungen an die Prüfungsleistung (Foliensatz 1, S. 27) in den drei besten Übungen mind. 150 Punkte erreicht werden müssen. Diese Punktzahl haben einige Teilnehmer/innen verfehlt, die betreffenden Personen können den Kurs daher nicht mehr erfolgreich abschließen.

2016 15 Dez

CLT, 14./15.12

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Besprechung der Ü-Blätter 4 und 5
  • Hidden Markov Modelle
  • Fake News
  • Social Bots
    Vom im Artikel genannten Noah Bubenhofer gibt es auch einen CCC-Vortrag zu digitalen Informationskriegen: Mein Bot, der Kombattant.  Ab ca. Min. 45 enthält dieser auch eine technische Einführung in Bots, die zu unserem aktuellen Thema passt.

Materialien:

 

2016 14 Dez

CLT, Übungsblatt 5

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Schon etwas früher als sonst erscheint das nächste Übungsblatt (über die Weihnachtsferien, sonst kommen wir nicht auf die acht angekündigten Ü-Blätter dieses Semester).

Es geht um das Training eines Hidden Markov-Modells aus einem Trainingskorpus.

Noch etwas: Senden Sie mir nur die gezippten Python-Dateien zu (und nicht das Korpus)

Hier noch ein paar weitere Hinweise:

  1. Geben Sie das trainierte HMM in nachvollziehbarer Form auf dem Bildschirm aus. Nachvollziehbar heißt, dass man klar erkennt, was die jeweiligen Initial-, Übergangs- und Emissionswahrscheinlichkeiten sind. Die Ausgabe könnte z.B. so aussehen (Nullwahrscheinlichkeiten bei den Emissionen sollten nicht ausgegeben werden):
    [Initial]
    ADJA     0.022
    ART      0.208
    ....
    
    [Transitions]
    ART  ADJA    0.244
    ART  NN      0.633
    ....
    
    [Emissions]
    ART    die    0.2
    ...
  2. Bauen Sie sich erst mal ein kleines Minikorpus und überprüfen Sie die Ergebnisse (zunächst mal ungeglättet) per Hand. Beachten Sie die Nebenbedingungen eines HMMs: die Initial-, Übergangs- und Emissionswahrscheinlichkeiten pro Zustand (also Tag) müssen sich auf 1 addieren. Sie sollten diese Nebenbedingungen als Tests in Ihre Trainingsfunktion mit einbauen. Beachten Sie jedoch, dass Python mit beschränkter Genauigkeit rechnet, die Ergebnisse also nicht ganz genau 1.0 sein müssen.
  3. Überprüfen Sie dann auch die geglätteten Ergebnisse. Auch hier gelten die Nebenbedingungen! Beachten Sie, dass Sie bei add-x-Glättungsverfahren nicht nur den Zähler, sondern auch den Nenner verändern müssen (vgl. S. 26 der N-Gramm-Modell-Folien). Nochmal der Hinweis: Sie müssen nur die Übergangswahrscheinlichkeiten glätten. Was ist hierbei V?
  4. Wenn Sie die Glättung nicht hinbekommen, lassen Sie sie weg.
  5. Beachten Sie, dass bei Aufgabe 1.2 einiges schief gehen kann: Wort- und Tagsequenz haben verschiedene Längen, Wortsequenz ist leer, es gibt unbekannte Tags bzw. Wörter, Übergänge zwischen Tags wurden beim Training nicht beobachtet (nach der Glättung sollte das allerdings nicht mehr der Fall sein!). Gehen Sie stets vom schlimmsten Fall aus!
  6. Machen Sie verschiedene Tests.

 

 

 

 

 

2016 13 Dez

CLT

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Bitte sehen Sie sich Ü-Blatt 4 genau an, so dass wir am Donnerstag Fragen dazu besprechen können.

2016 9 Dez

CLT, Übungsblatt 4

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Diesmal geht es wie erwartet um N-Gramme.

2016 7 Dez

CLT, 7.12/8.12.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • N-Gramm-Modelle
  • Glättung
  • Hidden-Markov-Modelle
  • Donald Trump

Materialien:

2016 30 Nov

CLT, 30.11./1.12.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen

  • Wahrscheinlichkeitstheorie
  • N-Gramm-Modelle

Materialien:

 

2016 25 Nov

CLT: Übungsblatt 3

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hier kommt das nächste Übungsblatt. (Hinweis: noch mal leicht verändert)

Es wäre günstig, wenn Sie sich die Aufgaben bis nächsten Donnerstag genau ansehen würden und dann ggf. Fragen stellen können.

 

2016 25 Nov

CLT, 23./24.11.

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Parsing-Schemata

Materialien:

2016 21 Nov

CLT: Ü-Blatt 2

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hallo allerseits,
ausnahmsweise ist der Abgabetermin um 24 Stunden auf Mittwoch (23.), 12:00 verlegt.

Wer die Übung allerdings schon fertig hat, soll sie mir schicken, dann kann ich morgen schon mit der Korrektur anfangen.

 

2016 16 Nov

CLT, 16./17.11

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Earley-Parsing
  • deque: Datenstruktur für die Implementierung von Warteschlangen mit O(1)-Zugriffskomplexität an den Enden

Materialien:

Hausaufgabe zum Selbststudium bis nächsten Mittwoch:

  • Machen Sie sich damit vertraut, wie die set()-Klasse in Python funktioniert, vor allem, wenn man benutzerdefinierte Typen (wie unsere Items) in Instanzen von set() einfügen möchte. Welche Eigenschaften muss ein Datum haben, damit man es in eine Python-set einfügen kann?

2016 10 Nov

CLT, Übungsblatt 2

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

2016 9 Nov

CLT, Woche 4

Abgelegt unter: Allgemein,Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

Materialien:

  • Programmcode folgt morgen mit dem Ü-Blatt

 

2016 9 Nov

CLT, Tutorium

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Das Tutorium (= Besprechung des aktuellen Übungsblatts) findet ab jetzt immer 14-tägig mittwochs ab 15:45 im Linguistik-Besprechungsraum II.14.215/216 statt. Der erste Termin ist der 9.11.

 

2016 9 Nov

CLT, ÜB1: Allgemeine Kommentare

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

  • Generell: Syntaxfehler und fehlende Anfragebeispiele führten zu Punktabzug. Ebenso kaputte zip/tar/gz-Dateien
  • Generell: Deutsche Sätze enthalten Subjekt und Prädikat. “ein Apfel auf Hans” ist daher kein Satz.
  • Generell: Anfragen wurden oft im “Generierungsmodus” von Prolog gestellt, also mit Variablen. Wir behandeln aber gerade das Thema “Parsing”, also müssen die Anfragen komplette Sätze als Prolog-Listen enthalten. Oft war aber auch schon im Generierungsmodus zu sehen, dass etwas mit den generierten Sätzen nicht stimmt, z.B. Listen in Listen u. dgl.
    Anfragen sollten — wenn immer möglich — komplette Sätze und damit das Satzprädikat enthalten.
  • Aufgabe 1.2: bei den dreifachverzweigenden Regeln kommt man um die zweimalige Anwendung von append nicht herum. Es sollte auch nicht Chomsky-Normalform hergestellt werden (und damit merkwürdige Konstituenten wie det_und_n). Um Instanziierungsproblemen vorzugebeugen sollten die append-Konjunkte vor den Konjunkten für die Nichtterminale stehen.
  • Bei Aufgabe 1.3 setzt sich die Baumkonstruktion bis ins Lexikon fort: eine Klausel wie det([die]). erzeugt einen Baum det(die), muss also mit Baumargument so aussehen: det([die],det(die)).
  • Bei Aufgabe 1.4 sind die morphologischen Merkmale Argumente der Lexikonprädikate.
    Weiterhin kann man genuin disjunktive Merkmale (z.B. verschiedene Kasus) nicht konjunktiv angeben. Z.B. sind Klauseln wie
    n([kaesebrot,kng(nom/dat/akk,sin,neu)]).
    oder
    n([kaesebrot], morph(nom,sg,n), morph(akk,sg,n), morph(dat,sg,n)).
    falsch. Die Form “Käsebrot” hat eben nicht die Kasus Nominativ UND Akkusativ UND Dativ GLEICHZEITIG, sondern jeweils immer nur einen davon. Ich habe in der Aufgabenstellung ja geschrieben, dass entsprechend mehrere Klauseln/Lexikoneinträge notwendig sind. Technisch heißt das Ganze “Disjunktive Normalform”, das sollte im Grundlagenkurs drangekommen sein. Zudem: wenn nun der Artikel “das” den Eintrag
    det([das,kng(nom/akk,sin,neu)]).
    hat, passt dies nicht zu “Käsebrot”, obwohl beide z.B. im Nominativ stehen können. Grund ist, dass beide Kasusterme eben nicht gleich sind.
    Wer bei der “NP –> Det N PP”-Regel Chomsky-NF hergestellt hat und N und PP zusammengefasst hat, muss die Merkmale des Nomens an die Mutter weitergeben, damit auf der NP-Ebene Kongruenz hergestellt werden kann.

 

2016 5 Nov

CLT, Woche 3

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Cocke-Younger-Kasami-Parsing

Materialien

Hausaufgabe (zum Selbststudium)

  • Machen Sie sich bis nächsten Mittwoch Gedanken zur Repräsentation kontextfreier Grammatiken in Python

2016 27 Okt

CLT, Übungsblatt 1

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Hier kommt das erste Übungsblatt.

CLT-Übung 1
Lesen Sie vor der Bearbeitungen die Aufgabenstellungen und die Hinweise aufmerksam durch. Fragen können wir nächste Woche in der Vorlesung behandeln.

2016 26 Okt

CLT, Woche 2

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Prolog: nichtdeterministische logische Programmiersprache basierend auf Horn-Logik
  • Recursive-descent Parsing in Prolog:
    Maxime: aus Nichtterminalen werden Prädikate, die jeweiligen Wortlisten sind deren Argumente; append erledigt nichtdeterministisch die Zerlegung
    “Parser = Grammatik”

Materialien:

 

Hausaufgabe (im Selbststudium):

  • Studieren Sie den Vollständigkeits -und Korrektheitsbeweis des Shift-Reduce-Parsers

2016 25 Okt

CLT, Mi

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

Wir machen morgen eine Übung. Bitte bringen Sie Ihre Notebooks mit und installieren SWI-Prolog.

2016 21 Okt

CLT, Woche 1

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

2016 19 Okt

CLT, Übersicht

Abgelegt unter: Computerlinguistische Techniken | RSS 2.0 | TB | Kommentare geschlossen

VM 3b: Computerlinguistische Techniken
Wintersemester 2016/17
Mi 12-14, Do 12-14; Golm, Haus 14, Raum 0.09

 

Übersicht

In der Vorlesung “Computerlinguistische Techniken” geht es um grundlegende Algorithmen der Computerlinguistik. Wir werden uns in der ersten Hälfte des Semesters mit verschiedenen Parsingalgorithmen für kontextfreie Grammatiken befassen; in der zweiten Hälfte geht es dann um elementare statistische Verfahren wie n-Gramm-Modelle, Hidden Markov Models und probabilistische kontextfreie Grammatiken.

Übergreifendes Ziel der Vorlesung ist es, den Teilnehmern Anhaltspunkte dafür zu vermitteln, wie man computerlinguistische Probleme effizient löst. Dazu wird es in regelmäßigen Abständen theoretische und praktische Übungsaufgaben geben, die zu Hause gelöst und in eigenen Übungssitzungen mit dem Dozenten besprochen werden.

Wir werden in den ersten Wochen der Veranstaltung mit der Programmiersprache Prolog arbeiten. Später werden wir dann aber auf die Programmiersprache Python umsteigen, die es uns erlauben wird, Details der Algorithmen deutlicher anzusehen. Um Ihnen den Wechsel zu erleichtern, wird zu einem Termin nach Vereinbarung ein wöchentliches Tutorium stattfinden, in dem man sich auch Tipps und Rat zu den Programmier-Übungsaufgaben holen kann. Die Teilnahme an diesem Tutorium ist freiwillig, wird aber dringend empfohlen.

Benotung. Für die Lehrveranstaltung gibt es 6 Leistungspunkte. Das übersetzt sich in einen Arbeitsaufwand von insgesamt 180 Stunden.

Die Note setzt sich wie folgt zusammen:

  • Teilnote für die Übungen (30%). Es gibt in jeder Semesterhälfte vier Übungen, von denen Sie jeweils mindestens drei abgeben müssen. In jeder Semesterhälfte müssen Sie außerdem in den besten drei Übungen mindestens 150 (von 300) Punkten bekommen. Die Teilnote für die Übungen berechnet sich aus der Gesamtpunktzahl dieser 3+3 Übungen.
  • Teilnote für das Abschlussprojekt (70%).

Gegen Ende des Semesters werde ich Sie bitten, ein Thema für Ihr Abschlussprojekt aus einer Liste von möglichen Themen auszuwählen oder ein eigenes Thema vorzuschlagen. Der Arbeitsaufwand für das Abschlussprojekt soll sich in der Größenordnung einer Übung bewegen. Gegen Ende der Semesterferien reichen Sie dann Ihr Projekt mit einer kurzen Dokumentation ein. Die Note bestimmt sich aus der Schwierigkeit der Aufgabe, der Qualität Ihrer Lösung und der Klarheit der Dokumentation.

 

Literatur


Die folgenden Ressourcen können für Sie in dieser Vorlesung nützlich sein. Wir werden die Liste ggf. im Laufe des Semesters erweitern.

Bücher

Die folgenden beiden Bücher sind Standardwerke, die im Regal der meisten Computerlinguisten stehen.

  • Dan Jurafsky and James Martin, Speech and Language Processing. Dieses Buch ist eine sehr lesbare Einführung, die inhaltlich mehr Themen abdeckt als die Vorlesung, aber nicht an allen Stellen so weit in die Tiefe geht.
  • Chris Manning and Hinrich Schütze, Foundations of Statistical Natural Language Processing. Dieses Buch ist eine technisch anspruchsvollere Einführung in statische Verfahren in der Computerlinguistik, das Ihnen mehr Details bietet als Jurafsky & Martin.

CL-Blog läuft unter Wordpress 3.5.1
Anpassung und Design: Gabis Wordpress-Templates
19 Verweise - 0,300 Sekunden.