CL-Blog

Computerlinguistik & Politik

Du durchsuchst gerade das Archiv der Kategorie ‘Andere Kurse’.

Kategorie: Andere Kurse

2017 17 Feb

Fortgeschrittene Sprachmodellierung: Projekte

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Der Abgabetermin für Ihre Projekte ist der 9.4. Bitte als einzelne ZIP-Datei an mich. Es gelten die üblichen Richtlinien für Programmierprojekte. Bei Wahl eines Hausarbeitsthemas bitte mind. 15 Seiten (ohne Literatur und Titelei)

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 12 Feb

C++-Besprechungstermin am 13.2. entfällt

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Statt dessen veröffentliche ich bis Morgen Projektspezifikationen

2017 10 Feb

Sprachmodellierung: Semesterferienprojekte

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Bitte teilen Sie mir baldmöglichst Ihr ausgewähltes Thema mit.

Potentielle Themen sind:

  • Viterbi-Algorithmus: Parallelisierung (GPU, Multikern)
  • Iterativer Viterbi Algorithmus (ein wirklich interessantes Implementierungsthema)
  • k-best-Viterbi- Algorithmus (Huang & Chiang, 2005)
  • EM-Training von HMMs
  • Hausarbeit: Ansätze zur Behandlung unbekannter Wörter beim prob. Parsing und Tagging
  • Hausarbeit: Regularisierung von CRFs

2017 10 Feb

Sprachmodellierung, 9.2.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

2017 6 Feb

Themen für Semesterprojekte

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

  • Aho-Corasick-Mustererkenner
  • Cocke-Younger-Kasami-Parser für prob. Baumbankgrammatiken
  • Übersetzung regulärer Ausdrücke in endliche Automaten
  • Sprachidentifikation
  • Training eines Hidden-Markov-Modells
  • Konstruktion eines HMM-Taggers mit dem Viterbi-Algorithmus
  • Meinten-Sie-Funktion

Bitte schreiben Sie mir bis spätestens Sonntag-Abend, für welche Themen Sie sich interessieren. Ich biete dann für Themen, die mind. einmal genannt werden, nächsten Montag (13.) Nachmittag individuelle Besprechungstermine an.

 

2017 6 Feb

C++ I, 6.2.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Konstruktionsprinzipien eines einfachen Compilers: Parsing, Tokenisierung, Semantik

Programmcode:

  • JSON-Parser (komplette Version von 2015, dient auch als Referenzprojekt für Ihre Semesterferienprojekte)

Materialien:

 

2017 30 Jan

C++ I, 30.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • JSON-Sprache zur einfachen Repräsentation komplexer Objekte in Textform
  • Syntaxgraphen
  • Recursive-Descent-Parsing bietet sich an bei unambigen Sprachen mit nicht-linksrekursiver Grammatik (wobei sich Linksrekursion auch beseitigen lässt)
  • Grundprinzip von Recursive-Descent-Parsern: mache aus jedem Nichtterminal der Grammatik eine boolsche Funktion. Damit übernimmt die verwendete Programmiersprache die gesamte Buchführung der Rekursionen, das ganze Hin- und Zurückspringen zwischen den verschiedenen Syntaxgraphen
  • Weitere Parsprinzipien: parse inkrementell (Token für Token, lese also nicht die gesamte Eingabe ein), lasse internen Tokenizer die Token finden (Tokenizer wiederum basieren oft auf endlichen Automaten)

Programmcode:

2017 27 Jan

C++ I – Übung 9

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

In dieser Übung geht es um das Einlesen und Schreiben von Dateien.
Informationen und Anweisungen finden sich auf dem Übungsblatt.

Übung9

2017 23 Jan

C++ I, 23.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Tries: interne Datenstruktur
  • Ausgabe im Graphviz-dot-Format.
    Dot-Dateien kann man übrigens mit dot -Tpdf -O input.dot nach PDF umwandeln

Programmcode:

 

2017 18 Jan

C++ I, 16.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Dateien einlesen mit std::ifstream
  • Trie-Implementierung mit 2 Vektoren (einen für Zustände, einen für Übergänge)
  • Mögliche Abschlussprojekte: Suffixbäume, Suffixarrays, DAWGs, Aho-Corasick-Patternmatcher, Huffman-Bäume

Programmcode:

Goldene Regeln:

  • Prüfen Sie stets beim Öffnen von Dateien mit ifstreams, ob das auch geklappt hat.

2017 13 Jan

C++I – Übung 8

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

In dieser Übung geht es um Klassen, Konstruktoren und Structs.

Übung8

2017 10 Jan

C++, 9.1.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Konstruktoren, Default-Konstruktor
  • Typinferenz
  • CFG-Klasse
  • Tries

Programme:

2017 4 Jan

C++I – Übung 7

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die siebte Übung zum Thema Klassen in C++ und Doxygen-Dokumentation.

Übung7

2017 3 Jan

C++ I, 2.1.17

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • String-Manipulation
  • Objektorientierte Programmierung:
    • struct vs. class
    • private vs. public
    • Konstruktoren: initialisieren eine Instanz
  • doxygen: automatische Erzeugung von Quellcodedokumentationen (www.doxygen.org)

Programme:

2016 9 Dez

Fortgeschrittene Sprachmodellierung, 8.12.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

2016 7 Dez

C++ I – Übung 6

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die sechste Übung.
Alle Anweisungen und Hinweise finden sich in der beigefügten PDF und in den Quellcode-Dateien.

Übung6

2016 6 Dez

C++ I, 5.12.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Externe und interne Repräsentation
  • Strukturen (structs) repräsentieren Tupel in C/C++. Der Zugriff auf die Komponenten erfolgt über Namen (Selektoren genannt) mit dem Punkt-Operator.
  • Objektorientierte Erweiterung von structs um Funktionen.
  • Programmierparadigmen: funktional – objektorientiert – imperativ – logisch
  • Header-Dateien: enthalten Definitionen und werden über #include bei Kompilieren hineinkopiert.

Goldene Regeln:

  • Gehe nicht davon aus, dass Eingabedaten, die von Benutzern kommen, korrekt sind. Validiere stets.
  • Schreibe aussagekräftige Fehlermeldungen, die dem Benutzer helfen, seine Eingabefehler zu korrigieren

Programmcode:

2016 30 Nov

C++ I – Übung 5

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die fünfte Übung.

Diesmal soll ein Automat codiert werden, der nicht tokenisiert, sondern einen regulären Ausdruck zur Wortsuche in Texten beschreibt.

Tipps und Anweisungen sind in dem PDF zu finden.

Übung5

2016 28 Nov

C++ I, 28.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Direkte Umsetzung von endlichen Automaten nach C++
  • Tokenisierung in C++

Programmcode:

2016 25 Nov

Fortgeschrittene Sprachmodellierung, 24.11.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

2016 23 Nov

C++ I – Übung 4

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die vierte Übung.

Übung4

2016 22 Nov

C++ I, 21.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Unicode
  • Textkodierungen: ISO-8859, UTF-8
  • Unterschiedliche Repräsentation von Zeilenenden
  • Lesen von Textdateien mit std::getline()
  • Ausgabe-Streams std::cout und std::cerr
  • Umleitung der Ein/Ausgabe und Pipes
  • Fehlersuche
  • casts
  • Bigramm-Zeichenfrequenz
  • Tokenisierung mit endlichen Automaten

Materialien:

Goldene Regeln:

  • Strukturiere Ausgabedaten übersichtlich, z.B. in Tabellenform (TSV-Format)

 

2016 21 Nov

C++ I – Musterlösung Übung3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die Musterlösung zur dritten Übung.

Die dritte Aufgabe war ziemlich tricky und zudem auch missverständlich gestellt (Entschuldigung!).

Dennoch hoffe ich, dass ihr durch die Übung sicherer im Umgang mit Matrizen und Vektoren geworden seid.

Schaut mal rein!

Musterlösung

2016 16 Nov

C++ I, Übung 3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die dritte Übung.

Themen sind Vektoren und Matrizen, sowie die Fertigstellung des Programms aus dem Seminar.

Es gibt eine Datei “programmieruebungIII.cpp” mir der main() Funktion, die ihr kompilieren sollt und in den übrigen Dateien löst ihr die Aufgaben.

Achtet darauf, dass die “aufgabe4.cpp” das Encoding “ISO 8859-1” (Westeuropäisch, Latin1) hat.

Wenn ihr nicht wisst, wie das geht, dann müsst ihr das für euren Editor im Internet nachschauen.

Falls die Datei in Unicode kodiert ist, kann es zu Fehlermeldungen kommen, weil dann die Umlaute in dem dort verwendeten String anders interpretiert werden.

Übung3

2016 14 Nov

C++ I, 14.11.

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Vektoren in C++
  • Strings in C++: std::string ist eine Klasse (mehr dazu später), mit der man Zeichenketten repräsentieren kann. Nützlich ist z.B. die Indizierung mit [] und die size() Funktion
  • ISO 8859: Erweiterung von ASCII, um Sonderzeichen europäischer Sprachen darstellen zu können
  • Zählen von Buchstabenunigrammen und -bigrammen

Programm-Code:

Materialien:

Goldene Regeln:

  • Schreibe stets totale Funktionen, d.h. vergiss nie das return.
  • Initialisiere Vektoren vor dem Gebrauch (sonst enthalten sie Datenmüll)
  • Schreibe niemals über den linken oder rechten Rand von Vektoren hinaus

 

2016 14 Nov

C++ I, Übung 2 – Musterlösung

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier gibt es die Musterlösung zu der zweiten Übung.

Schaut euch die Lösung mal an und vergleicht das mit euren eigenen Ideen.

Fast jede Zeile Code wird hier kommentiert und das ist die Regel.
So programmiert man schnell mal 200 Zeilen.

In der Zukunft werden die Programmierübungen etwas übersichtlicher ausfallen und auf einzelne Dateien verteilt, anstatt alles in einer Datei zu bearbeiten.

MusterlösungII

2016 8 Nov

C++ I, Übung 2

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier ist die zweite Übung.

Ich habe die zweite Aufgabe noch inhaltlich etwas abgeändert und Beschränkungen eurerseits verlangt.

Bitte benutzt für die zweite Aufgabe nur die bereitgestellte vorzeichen() Funktion, ist_null() Funktion, die arithmetischen Operatoren und die logischen Operatoren “==, !=”.

 

Bitte schickt mir die Übungen bis zum Samstag, den 12.11.2016, damit ich diese rechtzeitig korrigieren kann.

Ihr müsst die Dateien nicht umbenennen. Tragt euren Namen und eure Matrikelnummer in den Kopf der Datei ein, bearbeitet sie und gebt sie mir so wieder zurück. Eure ausführbaren Dateien brauche ich nicht. Ich kompiliere euren Code selbst.

Hinweis: Löst die Aufgaben zuerst auf dem Papier und programmiert dann.

Übung2

2016 7 Nov

C++ I, Woche 3

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Funktionen in der Mathematik und in Programmiersprachen
  • Probleme der Rechengenauigkeit in Computern; vgl. auch hier
  • Kontrollstrukturen in C++ (die gleichen wie in Python): Sequenz, Auswahl, Iteration, Rekursion
  • Eingebaute Datentypen: int, float, double, char, bool
  • ASCII vs. Unicode

Programme:

2016 27 Okt

Sprachmodellierung: Interpolationsmodelle

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Vervollständigen Sie das in der Übungs begonnene Python-Programm und schicken Sie mir die Ergebnisse bis nächsten Donnerstag Mittag.

Hier finden Sie Korpus und Programm, hier den Algorithmus:

brants

 

 

2016 26 Okt

Übungsaufgabe I

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Hier sind die ersten Übungsaufgaben für den Kurs C++ I.

Aufgaben:

Die Aufgaben sind immer zweigeteilt.

Der erste Teil besteht aus einer Programmierübung, bei der ihr den Code selber schreiben sollt.

Der zweite Teil ist eine Syntaxübung, wo der Code von euch berichtigt werden soll, bis er funktioniert.

Beides soll als praktische Übung dienen, damit ihr euch mit der Sprache auseinandersetzt.

Die Übungen werden in der Regel am Dienstag, spätestens Mittwoch, nach dem Kurs hochgeladen, im Tutorium auch besprochen und gegen Ende der jeweiligen Woche kontrolliert und an euch zurückgegeben.

Abgabe:

Bearbeitet bitte die mitgelieferten C++-Dateien direkt im Code und gebt mir eure Versionen davon zurück.

Übung1

2016 24 Okt

C++ I, Woche 2

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

Programmcode:

2016 19 Okt

C++ I, Woche 1

Abgelegt unter: C++ in der Computerlinguistik I | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Hardware eines Computers
  • Software: Betriebssystem, Compiler, Terminal und Shell

2016 3 Feb

Sprachmodellierung, 3.2.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Gradienten-Training von CRFs

CRF-Software

Literatur

  • Iterative Viterbi decoding und Staggered Decoding
    Nach meinen Erfahrungen ist der iterative Viterbi-Decoder gegenüber dem herkömmlichen bei großen Ausgabelabelmengen (> 500) 4 bis 5 mal schneller. Ungelöst ist aber, wenn man den iterativen Decoder mit dem Perceptron-Trainingsalgorithmus effizient zusammenbringt, da sich die Theta-Parameter nach jedem Korpuspaar dynamisch ändern und der iterative Decoder laufend neue “residual groups” berechnen muss.
  • HMM scaling

 

 

 

2016 27 Jan

Fortgeschrittene Sprachmodellierung, 27.1.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Themen:

Folien:

Hausaufgabe:

Semesterprojekte

Bitte überlegen Sie sich, was Sie als Semesterferienprojekt machen wollen. Grob gibt es zwei Arten von Themen: Irgendetwas implementieren (HMM mit SIMD, Viterbi für CRFs, usw.) oder einen Korpus nehmen und mit vorhandener Software ein Modell trainieren und evaluieren.

 

2016 15 Jan

Sprachmodellierung, 13.1.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Hausaufgabe:

  • Bitte machen Sie sich bis nächste Woche mit der Differentialrechung (wieder) vertraut.

2015 9 Dez

Fortgeschrittene Sprachmodellierung, 9.12.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Themen:

Materialien:

2015 26 Nov

Sprachmodellierung, 25.11.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Hausaufgabe

  • Lesen Sie Seiten 8-10 im Rabiner-Tutorial.
  • Lesen Sie Kapitel 6.5 in Jurafsky & Martin.

2015 18 Nov

Fortgeschrittene Sprachmodellierung, 18.11.

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • HMM, Präfixwahrscheinlichkeit

Foliensatz Mathematische Preliminarien

Hausaufgaben (zum Selbststudium)

  • Machen Sie sich vertraut mit elementarer Wahrscheinlichkeitstheorie (z.B. durch Lesen der Wikipedia-Artikel oder J&M) [bis nächste Woche]
  • Machen Sie sich vertraut mit dem Rechnen mit Logarithmen und Exponentialrechnung [bis in 2 Wochen. Sie könnten z.B. alle log-Rechenregeln von den Präliminarienfolien beweisen]
  • Lesen Sie die Seiten 1-7 im HMM-Tutorial von L. Rabiner [bis nächste Woche]

 

2015 5 Nov

Sprachmodellierung, Woche 4

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Backoff-Modelle
  • Glättungsverfahren: Witten-Bell

Folien:

2015 21 Okt

Fortgeschrittene Sprachmodellierung, Woche 2

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Folien:

Hausaufgabe (bis in 2 Wochen, Teil 2 per Email an mich)

  1. Lesen Sie Kapitel 4 (bis einschl. 4.9) in J&M fertig
  2. Programmieren Sie Brants’ Algorithmus zum Training der einfachen Lambda-Koeffizienten (hier ist der Latex-Code für den Algorithmus). Sie können auch einmal einen Blick in Brants’ Aufsatz werfen.
    Hinweis: programmieren Sie auch eine Variante, wo Sie 1 statt der N-Gramm-Frequenz auf \lambda_{\hat{n}} draufaddieren (dies wäre sozusagen die Type- statt der Token-Version). Wie ändern sich die lambdas für Ihr gewähltes Trainingskorpus? Wie ist dies zu interpretieren?

Material

  • Ich hatte vor längerer Zeit einmal die Tag-Sequenzen aus dem TiGer-Korpus extrahiert. Die Liste befindet sich hier. Sie enthält bereits 3-1 Grenzsymbole zu Satzbeginn und eines am Ende, um auch Trigramme am Satzanfang markieren zu können. Das letzte Token in jeder Zeile ist die Häufigkeit jeder Sequenz (sollte eigentlich eine ganze Zahl sein, ist aber mit leichten Rundungsfehlern versehen)
  • Fixed vs. growth mindset

Weil das am Donnerstag kurz zur Sprache kam, hier eine Leseempfehlung: “Using logic to design computer components”

2015 14 Okt

Fortgeschrittene Sprachmodellierung

Abgelegt unter: Fortgeschrittene Sprachmodellierung | RSS 2.0 | TB | Kommentare geschlossen

Hier zwei Hausaufgaben zum Warmwerden:

  1. Beweisen Sie das Bayessche Theorem! (und schicken Sie mir Ihren Beweis per Email)
    Hinweis: versuchen Sie es selbst, im WWW findet man das natürlich.
  2. Lesen Sie Kapitel 4 (bis einschließlich 4.5) in Jurafsky&Martin!

 

In Zusammenarbeit mit der Firma retresco in Berlin (über die Bilder auf der Webseite sehe ich mal freundlicherweise hinweg :-; ) veranstalten wir am 31. 30. Januar und 6. Februar jeweils von 14h bis 18h einen Workshop zum Thema ElasticSearch. Raumangabe kommt noch.

Ich kenne mich da auch noch nicht aus, habe aber verstanden, dass das die momentan fortschrittlichste Suchtechnologie für Volltextdaten ist. Bei Interesse melden Sie sich bitte baldmöglichst an unter der Email-Adresse: cbaban Klammeraffe uni Minus Potsdam Punkt de (Constance B.)

 

ElasticSearch ist eine Open Source Suchlösung, die sich hervorragend für die Arbeit mit unstrukturierten Daten eignet. Der zweigeteilte Workshop soll einen Überblick über die Suchtechnologie im Allgemeinen und deren Relevanz aus Sicht der Computerlinguistik geben.
Wir beleuchten dann im Detail ElasticSearch und geben eine erste praktische Einführung, die für erste Einsätze fit machen soll.

An den beiden Workshoptagen werden unter anderem folgende Fragen bearbeitet:

  • Wie funktioniert die Speicherung von großen Textmengen?
  • Wie werden diese Mengen intern durchsucht (Verfahren)?
  • Warum ist das für die Computerlinguistik so relevant?
  • Was kann ich damit tun (2-3 Hands-on-Beispiele)?
  • Was sind praktische Beispiele aus dem Markt für den Einsatz von Suchtechnologien?

Referent: Marko Drotschmann (Head of Linguistics @ Retresco und ehemaliger Diplomstudent der Computerlinguisitik an der Universität Potsdam)

 

2014 17 Jul

Prolog, 16.7.

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Themen:

 

Freiwillige Hausaufgabe (bitte machen, dient dem Verständnis, auch wenn es Arbeit ist, Sie können nur gewinnen):

Setzen Sie den Morphologietransduktor aus dem Beispiel oben nach Prolog um. Nehmen Sie dazu den Prolog-Code des Morphologieakzeptors aus der Vorwoche als Grundlage.

 

Erläuterungen:

  • Ein- und Ausgabe an den Übergängen sind durch : getrennt.
  • In den Endzuständen (mit Doppelkreis) erfolgen auch Ausgaben (nach der Zustandsnummer und einem Doppelpunkt). Ist die Ausgabe leer, steht hier ε (die leere Liste)
  • Manche Endzustände machen alternative Ausgaben; diese sind am Ende von gepunkteten Linien angegeben. Die linguistische Grundlage hiervon ist sog. Formensynkretismus.

Hinweise zur Umsetzung in Prolog:

  • Verwenden Sie generell Prolog-Listen für die auszugebenden Merkmale.
  • Bei den Übergängen des Automaten fügen Sie diese zu den t-Termen in der Übergangsliste hinzu. Im Beispielfall enthält diese Liste z.B. den Term t(1,holf,13,[]).
  • In den Endzuständen können keine, eine oder mehrere Ausgaben erfolgen. Verwenden Sie hierzu eine Liste von Merkmalslisten. Diese Liste enthält in den vorgenannten Fällen die leere Liste, eine oder eben mehrere Merkmalslisten. Fügen Sie diese Listen jeweils den Endzuständen Ihres Transduktors hinzu (statt einer Liste von Endzuständen enthält der Transduktor also nun eine Liste von Paaren, z.B. mit Funktor final. Beispielsweise heißt final(3,[[imp,sg]]), dass 3 ein Endzustand ist und als Ausgabe [imp,sg] trägt.
  • Wie auch der Akzeptor akzeptiert der Transduktor nur in Endzuständen. Während man rekursiv von Zustand zu Zustand mit dem Kopfsymbol der Eingabeliste geht, verkettet man die Ausgaben auf. Erreicht man einen Endzustand, wählt man mit member/2 aus den mit dem Endzustand verbundenen Ausgabelisten (nicht-deterministisch) aus und verkettet die gewählte Ausgabe mit der bisher aufgebauten Ausgabeliste. Beispiel: Analyse von [helf,t]. Wenn man den Endzustand 11 erreicht, hat man bis dahin die Ausgabe [verb(helfen)] in einer Liste erzeugt. Nun wählt man mit member/2 unter den Ausgabelisten von Zustand 11 beispielsweise die mit [imp,pl] aus, verkettet diese mit [verb(helfen)] und erhält [verb(helfen),imp,pl]. Der Nichtdeterminismus von member/2 ist nötig, um eben dem genannten Synkretismus Rechnung zu tragen: helft hat eben zwei Analysen.
  • Für das neue akzeptiert-Prädikat des Transduktors bietet sich die Akkumulatortechnik in Prolog an. Diese besteht darin, dass man für die Ausgabe zwei Listen-Variablen verwendet: die erste (der Akkumulator) enthält immer die Ausgabe bis zum gerade erreichten Zustand, die man mit den neuen Ausgaben verkettet und in der Rekursion weiterreicht. Diese Variable wird durch das nicht-rekursive akzeptiert-Prädikat zu Beginn mit [] belegt. Die zweite Ausgabelistenvariable ist in der Rekursion immer die gleiche und wird erst beim trivialen Fall mit der Arbeitsvariablen (dem Akkumulator) gleichgesetzt. Studieren Sie listlen/3 aus dem oben verlinkten Beispiel, dann verstehen Sie, was ich meine.

Testen Sie Ihr fertiges Prädikat mit findall/3. Sie können auch gerne Fragen stellen. Hier finden Sie noch eine Prolog-Vorlage für die Hausaufgabe.

 

 

2014 11 Jul

Prolog, 9.7.14

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Automaten in Prolog

Prolog-Codeprolog_09072014

 

2014 9 Jul

Prolog, Zusatzübung

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Diese Woche gibt es noch das Bonus-Übungsblatt, für alle die sich noch einmal mit Prolog beschäftigen wollen, und für alle denen noch ein paar Punkte zum Bestehen des Kurses fehlen.

Eure gesammelten Punkt- und Prozentzahlen könnt ihr jetzt am schwarzen Brett einsehen. Wenn ihr euch bei den ständigen Gewittern nicht hinaus traut, schreibt mir eine Mail, dann schicke ich euch eure persönliche Punkte-Übersicht. Noch einmal: Um den Kurs zu bestehen, braucht ihr 60% der Punkte die es für die Übungen gibt. Eine Note gibt es für den Kurs nicht.

Hier sind auch schon mal meine Folien aus dieser Woche. Ich werde auch nächste Woche noch zu den Tutoriums-Terminen da sein, um eventuelle letzte Fragen zu klären. Vielleicht kann ich ja noch den ein oder anderen für Automaten begeistern!

2014 2 Jul

Prolog, 12. Übungsblatt

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Hier das letzte offizielle Übungsblatt!

2014 2 Jul

Prolog, 2.7.

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Themen:

  • Subkategorisierung
  • Endliche Automaten

Hausaufgabe: Repräsentieren Sie diesen endlichen Automaten in Prolog.

2014 26 Jun

Prolog, 11. Übungsblatt

Abgelegt unter: Prolog für Linguisten | RSS 2.0 | TB | Kommentare geschlossen

Hier kommt nun das vorletzte offizielle Übungsblatt!

Nach der 12. Übung kommt noch ein Bonus-Blatt, mit dem ihr zusätzliche Punkte sammeln könnt. Außerdem liegt die Grenze zum Bestehen des Kurses jetzt bei 60% der möglichen Punkte!

Für das aktuelle Übungsblatt braucht ihr wieder die Dateien von Herrn H.; außerdem hier noch meine Folien aus dieser Woche.

 

Falls euch beim Lösen der Blätter noch etwas generell unklar ist, mailt mir auch schon vor der Abgabe eine Frage, ich reagiere auch darauf!


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