Versuch 7: Suche und Suchparameter
In diesem Versuch sollen Sie mehr über die Möglichkeiten der Objekte für die Erkennung lernen. Da es bei der Erkennung darum geht, aus der unendlichen Anzahl möglicher Satzhypothesen die richtige herauszusuchen, sprechen wir in diesem Zusammenhang auch von der Suche.
Schauen Sie sich bitte in Ruhe den Script test.tcl an. Verändern Sie diesen Script bitte nicht (sondern nur Kopien). Dieser Script führt einen Suchlauf durch, macht danach ein lattice rescoring und berechnet die Wortakkuratheit für die erkannten Hypothesen.
Unser Testset von über 800 Sätzen ist zu umfangreich. Schneiden sie daher die ersten 10 Zeilen von ../step1/testIDs aus und schreiben Sie sie in testIDs.
Test mit Lattice Rescoring.
Um dafür zu kompensieren, dass das akustische Modell eine W'Dichte ist, das Sprachmodell aber eine W'Funktion, gibt es zwei Parameter, um die Scores des Sprachmodells an die des akustischen Modells anzupassen. Die Wortübergangsstrafe lp und das Sprachmodellgewicht lz. Ein höheres Sprachmodellgewicht gibt dem Sprachmodell mehr Einfluss, eine höhere Wortübergangsstrafe sorgt dafür, dass weniger Wörter erkannt werden. Das Sprachmodellgewicht wird über
svmap configure -lz xy die Wortübergangsstrafe durch
svmap configure -wordPen xy eingestellt.
Aufgabe 7.1:
Wortübergangsstrafe (wordPen): mögliche Werte sind positiv oder negativ. Wir fangen deshalb mit 0 an. Gewichtung des Sprachmodels (lz): alle Werte sind positiv. Zudem sollte die Strafe vom Sprachmodel etwa in die Größenordnung des akustischen Scores für ein Wort fallen. Wir wählen deshalb 16 als Anfangswert für baseLp; Testen Sie das 10-Sätze Testset mit dem Script test.tcl. Legen Sie dazu in Ihrem steps Verzeichnis ein Unterverzeichnis test an. Falls Dateien, die im Testscript verwendet werden, noch nicht erzeugt wurden (früherer Versuch, andere Tutorial-steps), tun Sie das jetzt. Leiten Sie die Erkennerausgaben in eine Datei um, damit Sie sie in Ruhe anschauen und mit denen späterer Läufe vergleichen können: time janus test.tcl >& logfile-1 & Das Kommando time vor den Namen des Programms geschrieben gibt nach Ablauf des Programms an, wie lange der Test gelaufen ist. Lesen Sie die man-page zu timewährend der Test läuft (in einem anderen Fenster, damit Sie die Ausgabe von time nicht versehentlich überschreiben). |
Fragen zur Aufgabe 7.1:
|
Einstellung der Gewichtung der Sprachmodelle
Aufgabe 7.2: Die mit Hilfe des Lattice-Passes gefundenen besten Werte für lz und lp passen oft besser als die ursprünglich für verwendeten Werte. Deshalb würde man vielleicht bessere Graphen bekommen, wenn man gleich mit diesen Werten testen würde. Also nehmen wir die besten lz und lp aus dem Lattice-Rescoring für einen weiteren Test.
Kopieren Sie sich test.tcl auf test-2.tcl, und verändern Sie test-2.tcl so, dass für den normalen Suchlauf lz=16 und wordPen=-8 ist. Sinnvolle Werte für lzList sind nun {2 4 8 16 32 64 128} und für lpList {-32 -16 -8 -4 0}; verändern Sie bitte auch diese. Starten Sie dann den nächsten Test: time janus test-2.tcl >& logfile-2 & |
Fragen zur Aufgabe 7.2:
Normalerweise würde man noch mit feinerer Granularität weitersuchen, hat aber bei diesem Testset (nur 10 Sätze) wenig Sinn. Wenn der Abstand der Sprachmodellparameter des normalen Suchlaufs besten Paar in der lz,lp-Matrix sehr groß ist, sollte man die Sprachmodellparameter nicht direkt ersetzen, sondern einen Wert dazwischen ausprobieren (der Suchraum ist nicht sehr glatt). |
Hinweise zum Einstellen der Sprachmodelle:
|
Einstellen der Pruning-Beams: Anleitung
Es gibt viele Beams in Janus, um möglichst effiziente Systeme bauen zu können:
Zur leichteren Kontrolle können wir das Verhältnis des morph-, state-, und wordBeams einfach so lassen wie in den Voreinstellungen und die Werte linear skalieren. topN gibt die Anzahl der Wortenden, die maximal zu einem Zeitpunkt aktiv sein dürfen; sinnvolle Werte liegen zwischen 10 und 30 für Vorführsysteme (schnell aber schlecht) und 50 bis 200 für Evaluationssysteme. Diese Werte hängen natürlich auch von der Anzahl der Wörter im Vokabular ab. Mehr als 10% der Vokabulargröße ist selten sinnvoll. 2 Faustregeln zur Einstellung von Beams:
Die Grobeinstellung dieser Werte kann man mit diesen beiden Regeln per Intervallschachtelung gut auf 10 Sätzen machen, die aber unterschiedlich schwierig und nach Möglichkeit von verschiedenen Sprechern sein sollten. Später sollte man gelegendlich ausprobieren ob die Beams gut eingestellt sind indem man 1) oder 2) auf einem vollen Testset ausprobiert. |
Beams einstellen
Aufgabe 7.3: Erzeugen Sie aus dem Script secondTest-2.tcl den Script secondTest-3a.tcl, indem Sie die Werte für alle Beams halbieren, und den Script secondTest-3b.tcl, indem Sie die Werte für alle Beams vierteln.
Lassen Sie die neuen Tests laufen, und leiten Sie die Ausgaben in neue Dateien um. Vergleichen Sie die Erkennerausgaben mit denen von Aufgabe 7.2. |
Fragen zu Aufgabe 7.3:
|
Hand-In
Schicken Sie bis zum Abgabetermin die Antworten auf die Fragen von allen Aufgaben an Sebastian Stüker. |