2.5 Merkmalsstrukturen
Grundsätzlich muß man zwischen den Merkmalsstrukturen
unterscheiden, die
ein konkretes linguistisches Objekt repräsentieren und den
Merkmalsstrukturbeschreibungen (MSBs), die in den Grammatikregeln verwendet werden.
Merkmalsstrukturen enthalten Attribut-Werte-Paare für die verschiedensten
linguistischen Merkmale. MSBs dagegen verwenden
Constraints, die die Menge der beschriebenen Merkmalsstrukturen
einschränken sollen.
Arten von Constraints
In CAT2 können zur Zeit sechs verschiedene Arten von Constraints
in MSBs verwendet werden.
Positive Constraints < attr > = < val >
Positive Constraints entsprechen einfachen Attribut-Werte-Paaren in
Merkmalsstrukturen. Sie weisen bei der Unifikation den Merkmalen einer
Merkmalsstruktur konkrete Werte zu.
Existentielle Constraints < attr > == < val >
Ein existentielles Constraint unterscheidet sich von einem positiven
Constraint nur dadurch, daß es für die Unifizierbarkeit fordert,
daß das betreffende Merkmal zum Zeitpunkt der Unifikation schon in der
Merkmalsstruktur vorhanden ist.
Negative Constraints < attr > ~= < val >
Negative Constraints besitzen einen eigenen Operator. Damit kann die
Negation nicht direkt innerhalb disjunktiver Werte auftreten. Doppelte
Negation, d.h. Negation innerhalb eines negativen komplexen Constraints ist
nicht erlaubt.
Disjunktive Constraints
< attr > =
( < val1 > ; ... ;
< valn > )
Ein disjunktives Constraint kann beliebig viele, auch komplexe Werte
umfassen.
Implikative Constraints
< attr > = < cond > >> < cons >
Implikative Constraints sind nur für komplexe Merkmale sinnvoll.
Bedingung und Konsequenz können also einfache oder disjunktiv verknüpfte
MSBs sein.
Verkettende Constraints
< attr > =
( < seg1 > + ... +
< segn > )
Verkettende Constraints dienen einzig und allein der Zerlegung und
Zusammensetzung von Zeichenketten.
Damit sind die Werte < segi > auf Zeichenketten und Variablen
beschränkt, bzw. auf Disjunktionen solcher Werte.
Feste Attribut- und Wertenamen
In MSBs können beliebige Namen für Attribute und
Werte gewählt werden. Nur bei einigen wenigen Attributen und Werten legt
der CAT2-Formalismus ihre Semantik fest und diese sollten auch nicht in einer
anderen Bedeutung verwendet werden.
lex
Das Attribut lex muß in jeder atomaren B-Regel vorkommen, d.h. in jedem
Lexikoneintrag, und repräsentiert das Lexem. Normalerweise ist der Wert
dieses Merkmals der Stamm oder die Wurzel des jeweiligen Wortes.
punct = {lex=end, string='.',cat=punct,mode=decl}.[]
string
Das Attribut string dient als externer Schlüssel für den Zugriff
auf das
Lexikon. Beim Einlesen der Token der Quellsprache wird die Zeichenkette, die
zu einem Wort gehört jeweils im Attribut string abgelegt.
Mittels dieses Attributs wird dann der passende Lexikoneintrag gesucht.
Der Rat verabschiedete den Beschluss.
[{string=der},
{string='Rat'},
{string=verabschiedete},
{string=den},
{string='Beschluss'}
{string='.'}
]
word#
Jedem Wort wird eine Nummer zugewiesen, die seiner Stellung im Satz
entspricht. Diese Nummer wird im Attribut 'word#' gespeichert.
Der Rat verabschiedete den Beschluss.
[{string=der,'word#'=1},
{string='Rat','word#'=2},
{string=verabschiedete,'word#'=3},
{string=den,'word#'=4},
{string='Beschluss','word#'=5}
{string='.','word#'=6}
]
@num
Der Wert '@num' wird dem Attribut lex automatisch
zugewiesen, wenn ein Wort der Eingabe als Zahl erkannt wurde.
99 Luftballons
[{string=99, 'word#'=1, lex='@num'},
{string='Luftballons', 'word#'=2}
]
@unknown
Der Wert '@unknown' wird dem Attribut lex automatisch
zugewiesen, wenn ein Wort der Eingabe nicht erkannt werden konnte.
Dies geschieht zum Beispiel bei Schreibfehlern, Eigennamen oder noch nicht
im Lexikon erfaßten Wörtern.
$index
Der Wert '$index' kann jedem Attribut zugewiesen werden. Während der
Unifikation mit einer Merkmalsstruktur wird damit eine Funktion aufgerufen,
die einen internen Zähler hochsetzt und die entstandene Zahl anstelle von
'$index' als Wert des Merkmals einsetzt.