+ Grammatik-Konvertierer

Der GrammatikKonverter konvertiert eine geeignete DCG-Grammatik (für Prolog) in eine kontextfreie Grammatik, die man für HTK benutzen kann.

folgende Schritte sind dafür nötig:

  1. alle Dateien in Prolog per consult() einlesen.
  2. parseFiles(['datei1.pl','datei2.pl'],'htk-grammar.txt').
  3. wortListe(['datei1.pl','datei2.pl'],'wortliste.txt').

Die Regeln in der DCG-Grammatik dürfen zum Beispiel folgende Form haben:

  • rhs(attr1,attr2)-->lhs1(attr1),lhs2(attr2).
  • oder rhs-->[wort1,wort2].
  • oder rhs-->a,b,{uninteressanter,kram}.
  • oder rhs-->[X],{lex_praedikat(X)}.
wobei lex_praedikat als Wörterbuch-Prädikat(lexical) deklariert sein muss, damit beim Konvertieren ein lex_praedikat aufgerufen wird und X tatsächlich einen Wert bekommt.

In der Grammatik-Datei würde das dann so aussehen:
:- multifile(lexical/1).

lexical(raum2).

n(RaumNr)-->[Raum],{raum2(Raum,RaumNr)}.

raum2(Teeküche,999).

Die Deklaration mit :- multifile(lexical/1) ist notwendig, damit die Einträge für das lexical-Prädikat in den Dateien stehen können, in denen auch die jeweiligen Prädikate stehen.

+ Unterstützung für Subkategorisierung Die auf diese Weise erzeugte Grammatik hat keine Informationen, die in den Argumentstellen der Nichtterminale stehen -- also bei rhs(attr1,attr2) wird nur $rhs erzeugt.

Mit dem Prädikat schema kann man vorgeben, wie parseFiles (bzw. rhsTranslate) die Informationen in den Argumentstellen verwursten soll: Mit

:- multifile(schema/2).

schema(n(_,form(Num,Gen,Kas)),[n,Num,Gen,Kas]).

n(sg,m,nom)-->[diplomandenraum].
wird dann statt $n das zusammengesetzte Symbol $n_sg_m_nom erzeugt. -- YannickVersley - 17 Jan 2003

(pl2htk.pl ist jetzt im CVS zu finden)
Warning: Can't find topic NatInt.WebLeftBarExample

 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback