Übung 4
Transcription
Übung 4
Korpuslinguistik WS 2009/10 Zinsmeister 11.11.2009 Übung 4 Vorbereitung Öffnen Sie einen Texteditor, z.B. Word, Emacs, Textedit etc. und legen Sie Ihre Antwortdatei an. Der Name der Antwortdatei sollte nach folgendem Schema aufgebaut sein: KL_ueb4_<der erste Buchstabe ihres Vornamen + die ersten 3 Buchstaben ihres Nachnamens> Beispiel: meine eigene Datei würde so aussehen: KL_ueb4_hzin.doc Bitte wenn möglich als pdf-Datei einreichen Für diese Übung benötigen Sie den TreeTagger (Schmid 1994, 1995) Falls Sie die Übung nicht im Pool G 209 bearbeiten, können Sie sich den TreeTagger installieren. Download: von http://ims.uni-stuttgart.de/projekte/corplex/TreeTagger Bitte folgen Sie den dort gegebenen Anweisungen für die Installation. Im Pool G209: Arbeiten Sie im Verzeichnis: /Users/cluser/desktop/CL0910/TreeTagger/ /Users/cluser/CL0910/TreeTagger/ Bitte sichern Sie am Ende ihre Dateien in einem anderen Verzeichnis und löschen Sie sie aus dem TreeTagger-Verzeichnis. Sie können sich zum Verzeichnis über den „Finder“ klicken, um die Dateien anzuschauen. Zusätzlich müssen Sie in der Shell (im „Terminal“) in dieses Verzeichnis wechseln: cd cd /Users/cluser/desktop/CL0910/TreeTagger/ [enter] /Users/cluser/CL0910/TreeTagger/ [enter] (‚change directory’) Aufgabe: Trainieren und Testen des TreeTaggers o Laden Sie sich die Dateien zur Übung 4 von der Seminarwebseite: o ueb4_train-1.txt o ueb4_train-2.txt o ueb4_lex-1.txt o ueb4_train-3.txt NEU!! o ueb4_test.txt (die Testdatei können Sie selbst erstellen, siehe unten) o Zusätzlich brauchen Sie die Dateien ep-99-05-06(-kurz.(de|en).txt von Übung 3. o Falls Sie Probleme beim Programmaufruf haben, überprüfen Sie das Format der Dateien: Anzahl und Art der Leerstellen, usw. Der TreeTagger besteht im Kern aus zwei Programmen o Dem eigentlichen Taggerprogramm: tree-tagger o Einem Programm, das eine Parameter-Datei für den Tagger erstellt: train-tree-tagger 1 Korpuslinguistik WS 2009/10 Zinsmeister 11.11.2009 Die folgenden Angaben finden Sie auf Englisch auch in der Datei README im Verzeichnis des TreeTaggers. Für das Training des Taggers benötigt man: o ein (manuell) getaggtes Trainingskorpus im Format <Wort><TAB><Tag><EOL> (Kommentar: EOL = „end of line“ = z.B. Zeilenumbruch, aber nicht Leerzeichen). Beispiel eines Trainingskorpus: Hundert ist eine runde Zahl . $. CARD VAFIN ART ADJA NN o ein Lexikon im Format <Wort><TAB><Tag1> <Lemma1><TAB><Tag2> <Lemma2>...<EOL> Beispiel eines Lexikons: . $. . Hundert Zahl eine ist runde CARD hundert NN Zahl ART ein VVIMP einen VAFIN sein ADJA rund (ambiger Eintrag!) o Open class file: eine Liste von Tags, die unbekannte Wörter haben können Dazu gehören Adjektive, Verben, Substantive und Adverben, nicht aber Artikel, Präpositionen und Hilfsverben Format: <Tag1> <Tag2> ... <TagN><EOL> 1. Erstellen Sie im beschriebenen Format eine Datei für die unbekannten Wörter: unknown.txt. Achten Sie darauf, dass Sie nur solche Tags verwenden, die bereits im Lexikon (ueb4_lex-1.txt) eingeführt wurden. 2. Trainieren Sie den Treetagger auf der Datei ueb4_train-1.txt und erstellen Sie die Parameterdatei train-1.par USAGE: train-tree-tagger [options] <lexicon> <open class file> <input file> <output file> OPTIONS: -cl -st <n> <t> consider <n> preceding tags for tagging (Default: n=2) use <t> as sentence marker tag rather than SENT 2 Korpuslinguistik WS 2009/10 Zinsmeister 11.11.2009 Beispielaufruf (vom Verzeichnis TreeTagger aus, gegeben, dass die Übungsdateien dort liegen) mit dem Sie die Parameterdatei train-1.par erzeugen: bin/train-tree-tagger ueb4_lex-1.txt unknown.txt ueb4-train-1.txt train-1.par In den Übungsdateien wurde der Tag für den Satzpunkt durch den Tag „SENT“ ersetzt. Wenn Sie mit den originalen Labeln des STTS arbeiten wollen, müssen Sie in der Option „-st“ das STTS-Tag angeben (das Dollarzeichen muss durch einen Backslash geschützt sein „\$.“: bin/train-tree-tagger –st \$. ueb4_lex-1.txt unknown.txt ueb4-train-1.txt train1.par 3. Testen Sie Ihr Modell: Aufruf des TreeTaggers (allgemein) tree-tagger {-options-} <parameter file> {<input file> {<output file>}} Beispiel: echo "Hundert ist eine runde Zahl ." | tr " " "\n"| train-1.par bin/tree-tagger -token -lemma [Kommentar: echo gibt die nachfolgende Zeichenkette (string) weiter. "|" ist die pipe. Sie markiert, dass ein neuer Befehl aufgerufen wird. Die Ausgabe des vorangegangenen Befehls kann als Eingabe für den nachfolgenden Befehl genutzt werden (die Daten rutschen quasi durch die 'Röhre'). tr ist der Transliterator-Operator, der Zeichen von Strings in andere Zeichen transformiert. ] echo "Ich runde ab ." | tr " " "\n"| test-1.txt bin/tree-tagger -token -lemma train-1.par > [Kommentar: Alternativ speichern Sie den Testsatz in einer Datei test.txt (Format: ein Wort pro Zeile!) , die Sie dann mit "cat" einlesen: cat test.txt| cat test.txt| treetagger/bin/tree-tagger -token -lemma > test-1.txt bin/tree-tagger -token -lemma train-1.par > test-1.txt 4. Überprüfen Sie die Annotation. Stimmt die Tags? Wo gibt es ein Problem? 5. Trainieren Sie den Treetagger nun auf ueb4_train-2.txt. Hierzu müssen Sie zuerst das Lexikon mit den neuen Wörtern erweitern, die in ueb4_train-2.txt erstmals auftreten. 6. Testen Sie erneut. Erhalten Sie jetzt ein besseres Ergebnis? 7. Schauen Sie sich ueb4_train-3.txt in einem Editor an. Wie unterscheidet es sich von ueb4_train-2.txt? Trainieren Sie erneut mit ueb4_train-3.txt. 8. Testen Sie erneut. Erhalten Sie jetzt ein besseres Ergebnis? Abgabe bis Sonntag, 22.11.2009. 3