Navigation

Home
Organisatorisches
News
News (Archiv)
Installationshinweise
Unterrichtsmaterialien
Unterrichtsskripte (Notebooks)
Übungsaufgaben
Weihnachtsprojekt

Einführung in die CL-Programmierung mit Python (WS 19/20)

Dozierende: Esther Seyffarth, Ben Burkhardt

Dieser Kurs richtet sich an:

  • Erstsemester-Studierende im Bachelorstudiengang Computerlinguistik
  • Studierende mit linguistischem Interesse oder linguistischem Studiumsschwerpunkt, die programmieren lernen möchten
  • Informatikstudierende mit linguistischem Interesse (ohne Vorkenntnisse in Python)
  • Mitarbeiter_innen der HHU, die grundlegende Programmierkenntnisse erwerben möchten. Falls Sie keinen Studierendenstatus haben, können wir Ihre Übungsaufgaben leider nicht korrigieren. Sie sind aber in den Vorlesungen herzlich willkommen.

Ziel des Kurses ist es, einen ersten Einblick in die Programmiersprache Python zu geben und grundlegende Fähigkeiten zur Nutzung und zum Lernen von Programmiertechniken zu vermitteln. Der Schwerpunkt liegt auf der automatischen Verarbeitung sprachlicher Daten.

Die Webseite des Python-Kurses aus dem WS 18/19 ist hier zu finden.

Teilnehmende in Kursen von Esther Seyffarth müssen den Leitfaden lesen und werden aufgefordert, sich daran zu halten. Der Leitfaden ist als PDF hier auf deutsch und hier auf englisch zu finden.

News (aktualisiert am 11.11.2019)

  • Info-Mail vom 11.11.: Wiederholungssitzung, Übungsquiz statt Programmieraufgaben, Feedbackformular [Mailtext]
  • Info-Mail vom 21.10.: Übungssitzung am 23.10. nur in einem Raum [Mailtext]
  • Info-Mail vom 15.10.: Übungen, Leitfaden [Mailtext]
  • Info-Mail vom 14.10.: Filmaufnahmen in der Sitzung am 15.10. [Mailtext]
  • Info-Mail vom 10.10.: Python-Installation reparieren, VSCode einrichten & nutzen, Jupyter auf Macbooks, Übungsaufgabe 01-04; Anwesenheitspflicht, Aufgaben nachreichen, Anzahl zu lösender Aufgaben [Mailtext]
  • Info-Mail vom 08.19.: LSF-Anmeldungen, Vorbereitung für die Übung, Eduroam [Mailtext]
  • Für die Übungssitzung (mittwochs) steht uns zusätzlich zu 24.21.03.62-64 jetzt auch der Raum 24.21.03.61 zur Verfügung.
  • Info-Mail vom 06.10.: Begrüßung, erste Empfehlungen [Mailtext]

News (Archiv)

  • Der Kurs "Einführung in die CL-Programmierung mit Python" wird auch im Wintersemester 2019/2020 von Esther Seyffarth und Ben Burkhardt unterrichtet.
  • Der Kurs aus dem WS 18/19 wurde für den Lehrpreis der Heinrich-Heine-Universität nominiert. Vielen Dank an die Nominierenden!

Organisatorisches

Der Kurs wird mit einem Beteiligungsnachweis (BN) abgeschlossen. Um den BN zu erwerben, müssen Teilnehmende mindestens 50% der wöchentlichen Übungsaufgaben sinnvoll bearbeitet haben. Jede Woche werden etwa 4 Aufgaben gestellt, aus denen Sie sich diejenigen, die Sie bearbeiten, selbst aussuchen können.

Dienstags findet von 16:30 bis 18:00 in Raum 24.21.03.62-64 die Vorlesung statt. Mittwochs findet von 16:30 bis 18:00 in Raum 24.21.03.62-64 und Raum 24.21.03.61 die Übungssitzung statt, in der die Aufgaben gelöst und praktische Fragen geklärt werden können.

Es gibt weder dienstags noch mittwochs eine Anwesenheitspflicht. Es wird dringend empfohlen, mindestens an den Übungssitzungen regelmäßig teilzunehmen. Die Lösung der Übungsaufgaben wird in den Sitzungen kontrolliert.

Installationshinweise

Um Python auf Ihrem eigenen System einzurichten, können Sie sich auf https://www.python.org/downloads/ die passende Version für Ihr Betriebssystem herunterladen und installieren, z.B. Python 3.7.4 für Windows. Sie können die Installation zum Schluss testen, indem Sie eine Kommandozeile öffnen und python eingeben und das Kommando mit Enter abschicken. Eine Anleitung dazu, wie Sie eine Kommandozeile öffnen, finden Sie z.B. hier für Windows, hier für Linux, hier für Mac.

Damit Sie auf Ihrem eigenen Gerät die Jupyter Notebooks (s.u.) verwenden können, muss noch ein zusätzliches Modul installiert werden. Dazu starten Sie die Kommandozeile als Administrator (Anleitung für Windows, Anleitung für Linux, Anleitung für Mac) und geben pip install jupyter ein.

Alternativ zur oben beschriebenen Installation von Python und Jupyter empfehlen wir die Installation von anaconda (Pythonversion 3.6 oder 3.7). Falls bei der Installation Probleme auftreten, sprechen Sie uns bitte an, damit wir Sie unterstützen können.

Da die Vorlesungen und Übungen in einem PC-Pool stattfinden, können Sie in diesem Kurs durchgehend die Uni-Computer nutzen. Wenn es Ihnen mit geringem finanziellem, technischem und logistischem Aufwand möglich ist, empfehlen wir allerdings, einen eigenen Laptop mitzubringen.

Als Editor für die Pythondateien im Kurs verwenden wir VSCode.

Unterrichtsmaterialien

Die Vorlesungsskripte haben die Form von interaktiven Jupyter Notebooks. Sie können die einzelnen Skripte herunterladen (Rechtsklick, "Ziel speichern unter" bzw. "Save link as") und dann den Ordner, der die Dateien enthält, in der Kommandozeile öffnen (eine Anleitung dazu finden Sie z.B. hier für Windows, hier für Linux, hier für Mac).

Geben Sie dann in der Kommandozeile jupyter notebook ein und bestätigen Sie die Eingabe mit Enter. In Ihrem Browser öffnet sich eine Übersicht über alle Notebooks im Ordner. Wenn Sie ein Notebook auswählen, öffnet es sich in einem neuen Tab und Sie können damit arbeiten.

Falls Sie nicht mit anaconda arbeiten, installieren Sie bitte Jupyter nach der Anleitung auf der offiziellen Webseite.

Unterrichtsskripte (Notebooks)

Übungsaufgaben

Hier erscheinen im Laufe des Semesters nach und nach die Übungsaufgaben. Sie können die Dateien (je ein zip-Archiv) herunterladen und dann die Aufgaben auf Ihrem Gerät bearbeiten. Denken Sie daran, Ihre gelösten Aufgaben an einem sicheren Ort zu speichern!

Weihnachtsprojekt (18.12.2019)

In der letzten Übungssitzung des Jahres haben wir zusammen ein Programmierprojekt in Gruppenarbeit implementiert. Dazu wurde der Kurs in drei Gruppen aufgeteilt. Am Ende der Sitzung haben wir Ihre Teillösungen zusammengefügt, um das Projekt abzuschließen.

Die zip-Datei mit den Aufgabenstellungen und Rohdaten finden Sie hier.

Die zip-Datei mit den Ergebnissen der drei Gruppen finden Sie hier.

Das fertige Projekt ist online verfügbar unter balladen.pythonanywhere.com. Jedes Mal, wenn die Seite neu geladen wird, entsteht ein neues Gedicht.

Das Ziel

Wir generieren anhand deutschsprachiger Gedichte oder Balladen neue Texte. Die neuen Texte sehen fast aus wie die Originale, nur dass wir die meisten Substantive durch andere Substantive ersetzen, die grammatikalisch an die gleiche Stelle passen wie das jeweilige Originalwort.

"Wer wagt es, Kleistersmann oder Knapp,
Zu tauchen in diesen Grundsprachumfang?
Einen goldnen Versicherungsberater werf ich hinab,
Verschlungen schon hat ihn der schwarze Naturbegriff.
Wer mir den Versicherungsberater kann wieder zeigen,
Er mag ihn behalten, er ist sein eigen."

Das Ergebnis wird auf einer Webseite angezeigt. Jedesmal, wenn die Seite neu geladen wird, erzeugt das Programm ein neues Gedicht.

Damit wir in der Sitzung fertig werden, sind jeweils Teile des Codes schon vorgegeben, vor allem die Struktur der Funktionen und ihre Argumente. Erklärungen sind in den Dateien mit dem Stichwort NOTE markiert. Stellen, an denen Sie Code ergänzen sollen, sind mit TODO markiert. Jede Gruppe wird von eine_r Dozierenden oder unserem Tutor betreut, damit Sie jederzeit nach Tipps fragen können.

Die entstehende Webseite wird nach der Übungssitzung online gestellt. Falls alle einverstanden sind, wird auch der Code Ihrer Lösungen veröffentlicht.

Gruppe 1: Wortklassen sammeln

Gruppe 1 (mindestens 3 Personen) wird sich damit beschäftigen, mögliche Ersetzungskandidaten für Substantive zu ermitteln. Sie bekommen dafür eine Datei, in der für 480.131 deutsche Substantivformen morphologische Annotationen aufgelistet sind:

...
Adventskalender    Masc_Nom_Sg    Masc_Nom_Pl    Masc_Gen_Pl    Masc_Dat_Sg    Masc_Acc_Sg    Masc_Acc_Pl
Adventskantate    Fem_Nom_Sg    Fem_Gen_Sg    Fem_Dat_Sg    Fem_Acc_Sg
Adventskerze    Fem_Nom_Sg    Fem_Gen_Sg    Fem_Dat_Sg    Fem_Acc_Sg
Adventskonzert    Neut_Nom_Sg    Neut_Dat_Sg    Neut_Acc_Sg
Adventskranz    Masc_Nom_Sg    Masc_Dat_Sg    Masc_Acc_Sg
...

Im Ausschnitt sehen Sie, dass die Wörter "Adventskantate" und "Adventskerze" die gleichen morphologischen Eigenschaften haben und deshalb untereinander ausgetauscht werden könnten.

Gruppe 1 wird solche Übereinstimmungen in der Datei automatisch identifizieren und ein Dictionary erstellen, in dem jeder Wortklasse (beschrieben durch eine Sequenz morphologischer Eigenschaften) alle bekannten Wortformen zugeordnet werden, die in diese Klasse gehören.

{   "Masc_Nom_Sg    Masc_Nom_Pl    Masc_Gen_Pl    Masc_Dat_Sg    Masc_Acc_Sg    Masc_Acc_Pl": {"Adventskalender"},
    "Fem_Nom_Sg    Fem_Gen_Sg    Fem_Dat_Sg    Fem_Acc_Sg": {"Adventskantate", "Adventskerze"},
    "Neut_Nom_Sg    Neut_Dat_Sg    Neut_Acc_Sg": {"Adventskonzert"},
    "Masc_Nom_Sg    Masc_Dat_Sg    Masc_Acc_Sg": {"Adventskranz"}
}

Benötigte Skills:

  • for, if
  • Dateien öffnen und verarbeiten
  • Stringmethoden (z.B. split)
  • Dictionarys anlegen
  • Funktionen

Gruppe 2: Texte generieren

Gruppe 2 (mindestens 5 Personen) bekommt diese Substantivklassen von Gruppe 1 und hat die Aufgabe, Gedichttexte aus Dateien zu lesen und neue Texte anhand der Originale und des Dictionarys zu erzeugen.

Dazu gehört auch, dass zunächst Substantive im Originaltext gefunden werden müssen. Dann müssen diese Substantive im Dictionary gesucht und die möglichen Ersatzwörter identifiziert werden. Schließlich muss für jedes Substantiv im Gedicht ein Ersatzwort ausgewählt werden, und jedes Vorkommen des ursprünglichen Wortes muss durch das neue Wort ersetzt werden.

Benötigte Skills:

  • for, if
  • Reguläre Ausdrücke (re.sub,re.search)
  • Dictionarys anlegen
  • Dictionarys sortiert verarbeiten (sorted)
  • Zufallsauswahl aus Mengen (random.sample) und Listen (random.choice)
  • Funktionen

Gruppe 3: Webseite präsentieren

Gruppe 3 (mindestens 3 Personen) bekommt die generierten Gedichte von Gruppe 2 und hat die Aufgabe, diese in Form einer Webseite zu präsentieren. Die Webseite wird mit dem Pythonpaket flask bereitgestellt. Die Gedichte werden von Gruppe 2 im "Plain text"-Format erstellt, was in HTML nicht so gut aussieht (es fehlen zum Beispiel die Zeilenumbrüche). Gruppe 3 soll deshalb einige HTML-Tags an passenden Stellen einfügen, um das Gedicht etwas schöner darzustellen. Schließlich soll noch ein fertig vorbereiteter Disclaimer-Text aus einer Datei gelesen und unterhalb des Gedichts angezeigt werden.

Benötigte Skills:

  • Reguläre Ausdrücke (re.sub)
  • Stringoperationen (z.B. replace)
  • Dateien lesen
  • Funktionen














This space is intentionally left blank