Ü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