[Index] [Back] [Forward]


Kapitel 2 : Der Grammatikformalismus


Der CAT2-Formalismus beruht wie die meisten modernen Grammatikformalismen auf der Unifikation von Merkmalsstrukturen. Diese sind Bestandteil der Repräsentation linguistischer Objekte während der Analyse und Synthese von Texten, und werden in den Regeln der Grammatiken beschrieben. Der folgende Abschnitt umreißt den Umfang des CAT2-Formalismus, angefangen von der Darstellung der linguistischen Objekte, über die Bestandteile einer Grammatik (Generatoren und Translatoren), bis hin zur Unifikation von Merkmalsstrukturen und der Verwendung von Constraints zu deren Beschreibung.


2.1 Linguistische Strukturen


Entsprechend den im vorigen Abschnitt angesprochenen unterschiedlichen Ebenen der Repräsentation werden im CAT2 auch die dazugehörigen linguistischen Strukturen unterschieden. Es findet eine Einteilung in morphologische Objekte, syntaktische Strukturen und relationale Darstellungsformen statt.

Ein morphologisches Objekt besteht aus einer Liste von einzelnen Wörtern. Ein Wort wird durch eine oder, im Fall einer Mehrdeutigkeit, durch mehrere Merkmalsstrukturen repräsentiert.

Beispiel 2.1: Darstellung eines morphologischen Objektes

[ 
  [{'word#'=1,string=the,lex=art,cat=det,type=def,agr={per=3}}],
  
  [{'word#'=2,string=council,lex=council,cat=n,agr={num=sing,per=3}}] 
]

Auf der syntaktischen Ebene werden Wörter, Phrasen oder Sätze als Bäume im Sinne ihrer Konstituentenstruktur dargestellt. Jeder Knoten eines solchen Syntaxbaumes wird dabei durch eine Merkmalsstruktur repräsentiert. Baumstrukturen auf der relationalen Ebene unterscheiden sich rein syntaktisch nicht von den Syntaxbäumen. Man unterscheidet zwischen syntaktischen und relationalen Ebenen, unabhängig von rein pragmatischen Gesichtspunkten, wegen der unterschiedlichen Erstellungsmöglichkeit der Strukturen. Syntaxbäume entstehen während des Analyseschrittes aus morphologischen Strukturen mittels eines Parsers. Relationale Strukturen entstehen immer nur durch Transformation aus anderen Baumstrukturen.

Beispiel 2.2: Darstellung einer Baumstruktur

{cat=np,det=def,agr={num=sing,per=3}}.
[
 {'word#'=1,string=the,lex=art,cat=det,type=def,agr={per=3,num=sing}},

 {'word#'=2,string=council,lex=council,cat=n,agr={num=sing,per=3}}
]


2.2 Generatoren


In einer CAT2-Grammatik dienen die Generatoren der Definition von wohlgeformten linguistischen Strukturen. Welche Repräsentationsebene von einem Generator beschrieben wird, muß mit einer Compilerdirektive festgelegt werden.

     @level( LEVEL / TYPE / LANGUAGE ).
    
     LEVEL    ... Name der Repraesentationsebene 
     TYPE     ... morph, syntactic, relational 
     LANGUAGE ... Bezeichnung der Sprache

Ein Generator G kann formal definiert werden als ein Tupel aus einer nichtleeren Menge von Konstruktoren B und einer möglicherweise leeren Menge von Filtern F.

G = <B,F>

B-Regeln

Die Konstruktoren werden B-Regeln genannt. B-Regeln definieren die möglichen Teilbäume einer Repräsentationsebene. Jede B-Regel hat einen Namen. Sie beschreibt einen Teilbaum mit der Wurzel <root> und einer geordneten, möglicherweise leeren Liste unmittelbarer Tochterknoten <bbody>. Jeder Knoten wird durch eine Merkmalsstruktur <fbd> beschrieben. Die Beschreibung mehrerer möglicher Teilbäume kann in einer Regel erfolgen. Dies erreicht man durch die Verwendung von Operatoren zur Disjunktion ';' und Implikation '>>', durch die Nutzung von Quantifikatoren und von Variablen. Als Quantifikatoren dienen '^' zur Kennzeichnung der Optionalität, '*' für beliebig häufiges Auftreten eines bzw. einer Liste von Knoten und '+' für beliebiges, aber mindestens einmaliges Vorkommen.

Beispiel 3: B-Regel

np   = {cat=np,det=T,agr=A}.[ ^{cat=det,type=T,agr=A},
                              ^{cat=num,agr=A},
                               {cat=n,agr=A} ].


Tabelle 2.1: BNF-Notation von B-Regeln


F-Regeln

Filter bzw. F-Regeln arbeiten auf Teilbäumen, die von den B-Regeln des Generators erzeugt wurden. Sie werden benutzt, um weitere Merkmale hinzuzufügen oder nicht wohlgeformte Strukturen auszufiltern. Sie besitzen eine ähnliche Form wie B-Regeln, jedoch sind sie nicht darauf beschränkt, nur unmittelbare Tochterknoten zu beschreiben, sie können beliebig tiefe Strukturen abbilden. In F-Regeln können Quantifikatoren auch ohne nähere Spezifikation des zugehörigen Knotens auftreten. '*' hat die gleiche Bedeutung wie '*{}' usw.

Tabelle 2.2: BNF-Notation von F-Regeln


Eine F-Regel ist nicht auf alle möglichen Bäume anwendbar, sondern immer nur auf solche, die die geforderte Struktur haben und in allen Teilen den Bedingungen der F-Regel genügen. Jede Knotenbeschreibung einer F-Regel wird in eine Implikation aus Bedingungsteil und Konsequenz überführt. Enthält eine Knotenbeschreibung keine Implikation, wird sie wie eine Bedingung ohne Konsequenz behandelt.

Beispiel 4: F-Regel

f={cat=s,tense=T}.[{cat=np,agr=A},{}>>{agr=A,tense=T},*].
Genügt ein Baum den Bedingungen der F-Regel, muß er auch den Konsequenzen genügen, sonst wird er von der weiteren Behandlung ausgeschlossen.

F-Regeln ohne Konsequenzen sind Defaultregeln. Sie dienen ausschließlich der Zuweisung von neuen Merkmalen.

Beispiel 5: Defaultregel

per3 = {cat=(n;det),agr={per=3}}.[]
Die Anwendung der F-Regeln auf eine Struktur wird in der Reihenfolge ausgeführt, wie sie in der Grammatik erscheinen. Diese Ordnungsrelation ermöglicht es Defaultregeln, Merkmale zu einer Struktur hinzuzufügen, und erst anschließend die Struktur von anderen Filterregeln verifizieren zu lassen. Diese Vorgehensweise ist ein prozedurales Element in dem ansonsten deklarativen Formalismus.

F-Regeln werden in der Praxis sehr extensiv benutzt, während die Menge der verwendeten B-Regeln äußerst minimal ist.


2.3 Translatoren


Die Grammatikregeln eines Translators sollen alle Baumstrukturen einer Repräsentationsebene auf Baumstrukturen einer zweiten Ebene abbilden. Welche Repräsentationsebenen ineinander überführt werden sollen, wird am Anfang des Translators mit einer Compilerdirektive festgelegt.

     @level( LEVEL1 <=> LEVEL2 ).
Für beide Repräsentationsebenen muß ein syntaktischer oder ein relationaler Generator existieren. Ein Translator kann grundsätzlich bidirektional verwendet werden. Jedoch ist es möglich, einzelne Regeln nur unidirektional anzuwenden.

Ein Translator T kann formal definiert werden als ein Tupel aus TB einer nichtleeren Menge von Strukturübersetzungsregeln, T-Regeln, und TF einer möglicherweise leeren Menge von Merkmalsübersetzungsregeln, TF-Regeln.

T = <TB,TF>

T-Regeln

Eine T-Regel besitzt eine linke und eine rechte Seite. Die beiden Seiten definieren korrespondierende Teilbäume auf den betreffenden Repräsentationsebenen. Ist eine T-Regel bidirektional anwendbar, sind die beiden Seiten durch das Zeichen '<=>' getrennt, ist nur die rechte Seite in die linke transformierbar, mit '<=', im umgekehrten Fall mit '=>'. Im Gegensatz zu B-Regel können in T-Regeln Strukturen beliebiger Tiefe beschrieben werden. Soll die Übersetzung von bestimmten Teilstrukturen eines Objekts mit Hilfe weiterer T-Regeln erfolgen, benutzt man Marker zur Kennzeichnung dieser Teilstrukturen. Es dürfen nicht alle T-Regeln eines Translators Marker enthalten, da der Transformationsprozeß sonst unendlich wäre.


Tabelle 2.2: BNF-Notation von T-Regeln


Beispiel 6: T-Regel

np = {cat=np,det=T}.
          [^{lex=art,type=T},
           ^a:{cat=num},
            b:{cat=n} ]   <=>  {cat=n}.[b,^a].        

Eine T-Regel ist auf ein Objekt anwendbar, wenn es

TF-Regeln

Die TF-Regeln gleichen in Funktion und Form den F-Regeln von Generatoren. Der entscheidende Unterschied liegt darin, daß eine TF-Regel zwei F-Regeln in sich vereinigt, eine für jede Repräsentationsebene. Sind die Bedingungsteile der F-Regeln auf Quell- und Zielobjekt anwendbar, müssen auch die Konsequenzen anwendbar sein. Genau wie bei den T-Regeln, kann auch für TF-Regeln festgelegt werden, ob sie bi- oder unidirektional arbeiten sollen.


Tabelle 2.2: BNF-Notation von TF-Regeln


Beispiel 7: TF-Regel

np_agr={cat=np}>>{agr=A,det=T}.[+] <=> {cat=n}>>{agr=A,det=T}.[+].


2.4 Common


Viele Grammatikregeln können so universell formuliert werden, daß sie in Grammatiken verschiedener Sprachen Verwendung finden. Um diese Regeln nicht in jeder Grammatik neu aufführen zu müssen, werden sie gesondert verwaltet. Diese Verwaltungsebenen werden Common genannt.

                   @common(NAME).
In andere Ebenen können sie mit der @call-Direktive eingefügt werden.
            
                   @call(NAME).               
Es ist von Vorteil, für jede universelle Regel eine eigene Common-Ebene zu definieren. Dann kann sie unabhängig von anderen Regeln in die betreffenden Grammatiken aufgenommen werden.


[Index] [Back] [Forward]