proc AutoBuild {templ hier} - IPdS in Kiel
proc AutoBuild {templ hier} - IPdS in Kiel
proc AutoBuild {templ hier} - IPdS in Kiel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Automatische<br />
Etikettierung <strong>in</strong> Sprachdatenbanken<br />
T<strong>in</strong>a John
Der Weg zur automatischen Etikettierung<br />
automatisch<br />
manuell
Der Weg zur automatischen Etikettierung<br />
automatisch<br />
manuell
Der Weg zur automatischen Etikettierung<br />
package require emu::autobuild<br />
E<strong>in</strong>e solche Datei kann selbst<br />
geschrieben werden und mit<br />
e<strong>in</strong>em beliebigen Namen (ext:<br />
.tcl) an e<strong>in</strong>em beliebigen Ort<br />
gespeichert werden.<br />
E<strong>in</strong> Beispiel e<strong>in</strong>er solchen Datei<br />
bef<strong>in</strong>det sich im Verzeichnis<br />
*…/Emu/lib/autobuild/examples<br />
*W<strong>in</strong>dows: C:\Programme<br />
Sun: /opt<br />
####################################<br />
## <strong>AutoBuild</strong>Init <strong>in</strong>itialises any rulesets needed<br />
## by <strong>AutoBuild</strong><br />
####################################<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {<br />
}<br />
####################################<br />
## <strong>AutoBuild</strong> builds the <strong>hier</strong>archy us<strong>in</strong>g whatever<br />
## means are appropriate<br />
####################################<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} {<br />
L<strong>in</strong>kAllFromTimes $<strong>templ</strong> $<strong>hier</strong><br />
}
Das <strong>AutoBuild</strong>-Script<br />
Kommentare-nicht wichtig<br />
Obligatorische Angabendas<br />
Grundgerüst<br />
Vorbereitende D<strong>in</strong>ge-wird<br />
von verschiedenen<br />
Prozeduren verlangt<br />
Aufruf e<strong>in</strong>er Prozedur, die<br />
die eigentliche Arbeit des<br />
automatischen<br />
Etikettierens macht-<strong>hier</strong> ist<br />
es die Prozedur<br />
L<strong>in</strong>kAllFromTimes, die alle<br />
Segmente auf den<br />
zeitgebundenen Ebenen<br />
nach ihren Zeitpunkten<br />
assoziiert (L<strong>in</strong>ks setzt)<br />
package require emu::autobuild<br />
####################################<br />
## <strong>AutoBuild</strong>Init <strong>in</strong>itialises any rulesets needed<br />
## by <strong>AutoBuild</strong><br />
####################################<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {<br />
{<br />
}<br />
####################################<br />
## <strong>AutoBuild</strong> builds the <strong>hier</strong>archy us<strong>in</strong>g whatever<br />
## means are appropriate<br />
####################################<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} <strong>hier</strong>} {<br />
{<br />
L<strong>in</strong>kAllFromTimes $<strong>templ</strong> $<strong>hier</strong><br />
$<strong>hier</strong><br />
}
Das <strong>AutoBuild</strong>-Script-Zeichensetzung<br />
_ Leerstelle<br />
↵ Zeilenwechsel<br />
package_require_emu::autobuild↵<br />
emu::autobuild<br />
####################################<br />
## <strong>AutoBuild</strong>Init <strong>in</strong>itialises any rulesets needed<br />
## by <strong>AutoBuild</strong><br />
####################################<br />
<strong>proc</strong>_<strong>AutoBuild</strong>Init_{<strong>templ</strong>}_{↵<br />
{<br />
{<br />
↵<br />
} ↵<br />
####################################<br />
## <strong>AutoBuild</strong> builds the <strong>hier</strong>archy us<strong>in</strong>g whatever<br />
## means are appropriate<br />
####################################<br />
<strong>proc</strong>_<strong>AutoBuild</strong>_{<strong>templ</strong>_<strong>hier</strong>}_{↵<br />
{<br />
{<br />
L<strong>in</strong>kAllFromTimes_$<strong>templ</strong>_$<strong>hier</strong> $<strong>hier</strong><br />
↵<br />
} ↵
L<strong>in</strong>kAllFromTimes<br />
<strong>AutoBuild</strong> Prozedur L<strong>in</strong>kAllFromTimes
<strong>AutoBuild</strong> Prozeduren mal anders<br />
Szenario: Nach der Vorlesung verlasse ich die Uni und frage mich wie es jetzt weitergeht<br />
package require emu::autobuild<br />
Prozeduren des Pakets:<br />
- bef<strong>in</strong>den sich <strong>in</strong> den Dateien im<br />
Verzeichnis …/Emu/lib/autobuild/tcl<br />
- s<strong>in</strong>d teilweise dokumentiert <strong>in</strong><br />
…\Emu\doc\emu\html\ch08s02.html<br />
Es können auch neue Prozeduren<br />
selbst programmiert werden.<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {<br />
Paket von Möglichkeiten:<br />
KaffeeTr<strong>in</strong>kenGehen {ich jetzt mitWem}<br />
ZurUbGehen {ich jetzt}<br />
MitDemBusNachHause {ich jetzt wannMgl}<br />
erfahreWannNächsterBusFährt<br />
Vorbereitung {ich}<br />
}<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} {<br />
Ausführung {ich jetzt}<br />
L<strong>in</strong>kAllFromTimes $<strong>templ</strong> $<strong>hier</strong><br />
}<br />
ZurUbGehen ich jetzt
<strong>AutoBuild</strong> Prozeduren mal anders<br />
Paket von Möglichkeiten:<br />
KaffeeTr<strong>in</strong>kenGehen {ich jetzt mitWem}<br />
ZurUbGehen {ich jetzt}<br />
MitDemBusNachHause {ich jetzt wannMgl}<br />
erfahreWannNächsterBusFährt<br />
Vorbereitung {ich}<br />
merkeDir wannMgl<br />
wannMgl = erfahreWannNächsterBusFährt<br />
Ausführung {ich jetzt}<br />
merkeDir wannMgl<br />
MitDemBusNachHause ich jetzt wannMgl
MapLevels<br />
t h -> t<br />
p h -> p<br />
k h -> k<br />
<strong>AutoBuild</strong> Prozedur MapLevels Can Pho $rules
MapLevels<br />
package require emu::autobuild Paket von Möglichkeiten:<br />
KaffeeTr<strong>in</strong>kenGehen {ich jetzt mitWem}<br />
ZurUbGehen {ich jetzt}<br />
MitDemBusNachHause {ich jetzt wannMgl}<br />
erfahreWannNächsterBusFährt<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {<br />
global rules<br />
set rules [ReadLevelRules rules.txt]<br />
}<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} {<br />
global rules<br />
MapLevels $<strong>templ</strong> $<strong>hier</strong> Can Pho $rules<br />
}<br />
Vorbereitung {ich}<br />
merkeDir wannMgl<br />
wannMgl = erfahreWannNächsterBusFährt<br />
Ausführung {ich jetzt}<br />
merkeDir wannMgl<br />
MitDemBusNachHause ich jetzt wannMgl
<strong>AutoBuild</strong> Komb<strong>in</strong>ationen<br />
package require emu::autobuild<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {<br />
global rules<br />
set rules [ReadLevelRules rules.txt]<br />
}<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} {<br />
global rules<br />
L<strong>in</strong>kFromTimes $<strong>templ</strong> $<strong>hier</strong><br />
MapLevels $<strong>templ</strong> $<strong>hier</strong> Can Pho $rules<br />
Paket von Möglichkeiten:<br />
KaffeeTr<strong>in</strong>kenGehen {ich jetzt mitWem}<br />
ZurUbGehen {ich jetzt}<br />
MitDemBusNachHause {ich jetzt wannMgl}<br />
erfahreWannNächsterBusFährt<br />
Vorbereitung {ich}<br />
merkeDir wannMgl<br />
wannMgl = erfahreWannNächsterBusFährt<br />
Ausführung {ich jetzt}<br />
merkeDir wannMgl<br />
ZurUbGehen ich jetzt<br />
MitDemBusNachHause ich jetzt wannMgl<br />
}
L<strong>in</strong>kAllFromTimes + MapLevels<br />
<strong>AutoBuild</strong> Prozedur L<strong>in</strong>kAllFromTimes<br />
<strong>AutoBuild</strong> Prozedur MapLevels Can Pho $rules
Vorteile und Nachteile<br />
Sehr schnell<br />
Macht ke<strong>in</strong>e menschlichen Fehler<br />
(vertippen, vergessen)<br />
Kriterien s<strong>in</strong>d immer konsistent<br />
<strong>AutoBuild</strong>-Scripts müssen erst<br />
geschrieben werden<br />
Fehleranfällig, da sich die<br />
Sprache nicht immer an die<br />
Regeln hält<br />
Kann nicht spontan auf<br />
Ausnahmefälle reagieren<br />
Ausnahmen können nachprogrammiert werden<br />
Fehleranfälligkeit kann somit verr<strong>in</strong>gert werden
Zusammenfassung<br />
Automatische Etikettierung<br />
Das automatische Etikettieren ist e<strong>in</strong>e schnelle Methode<br />
für den Aufbau e<strong>in</strong>er Sprachdatenbank, dennoch sollten<br />
auch die Nachteile nicht ignoriert werden.<br />
Das automatische Etikettieren funktioniert über <strong>AutoBuild</strong>-<br />
Scripts- selbsteditierte Textdateien.
Zusammenfassung<br />
<strong>AutoBuild</strong>-Script<br />
<strong>AutoBuild</strong>-Script enthalten die Zeilen:<br />
package require emu::autobuild, e<strong>in</strong> Paket mit e<strong>in</strong>er<br />
Auswahl an Prozeduren<br />
<strong>proc</strong> <strong>AutoBuild</strong>Init {<strong>templ</strong>} {…}, <strong>hier</strong> werden vorbereitend<br />
verschiedene D<strong>in</strong>ge angegeben, die <strong>in</strong> der eigentlichen<br />
<strong>AutoBuild</strong> Prozedur benötigt werden.<br />
<strong>proc</strong> <strong>AutoBuild</strong> {<strong>templ</strong> <strong>hier</strong>} {…} , die eigentliche<br />
<strong>AutoBuild</strong> Prozedur, <strong>in</strong> der Prozeduren aus dem<br />
emu::autobuild Paket bzw. selbst programmierte<br />
Prozeduren aufgerufen werden.
Zusammenfassung<br />
Anwendung von <strong>AutoBuild</strong>-Scripts<br />
Um e<strong>in</strong> <strong>AutoBuild</strong>-Script auf Äußerungen e<strong>in</strong>er<br />
Sprachdatenbank anzuwenden, muss der Pfad zum Script<br />
<strong>in</strong> der Template-Datei unter Variables-<strong>AutoBuild</strong><br />
angegeben werden.<br />
(<strong>AutoBuild</strong>-Scripts können mit dem EMU-Tool <strong>AutoBuild</strong>-e<strong>in</strong><br />
Wizard auch auf Sprachdatenbanken angewendet werden<br />
ohne sie <strong>in</strong> der Template-Datei anzugeben mit dem Nachteil:<br />
ke<strong>in</strong>e direkte Fehlerüberprüfung)