10.2. Flag-Diacritics
10.2.1. Unifikation
Flag-Diacritics (diakritische Merkmale)
Definition 10.2.1. Flag-Diacritics
sind Mehrzeichen-Symbole, welche zur Laufzeit an den mit ihnen beschrifteten Kantenübergängen
Instantiiierungstests und Zuweisungen an eine atomare Variable auslösen, ansonsten aber wie ein
ε-Übergang
funktionieren.
Unifikationstest an einem Kantenübergang
@U.FEATURE.VALUE@
Falls
das Merkmal FEATURE
uninstantiiert ist, unifiziere es mit dem Wert VALUE und erlaube den Kantenübergang. Falls das
Merkmal FEATURE
instantiiert ist, erlaube den Kantenübergang nur, wenn es den Wert VALUE
hat.
Einfaches Beispiel ▸▸▸
Beispiel 10.2.2 (Flag-Diacritic für Unifikationstest).
read regex [
[ a "@U.merkmal.a@" | b "@U.merkmal.b@" ]
c
[ "@U.merkmal.a@" a | "@U.merkmal.b@" b ]
];
Fragen
- Welche Wörter akzeptiert dieser reguläre Ausdruck?
- Wieviele Pfade hat das Übergangsdiagramm?
Linguistisches Beispiel in lexc ▸▸▸
Multichar_Symbols @U.ART.PRESENT@ @U.ART.ABSENT@ uN aN iN
LEXICON Root
Article ;
LEXICON Article
al @U.ART.PRESENT@ Stems ; ! Optionaler definiter Artikel
Stems ; ! Kein definiter Artikel
LEXICON Stems
kitaab Case ; ! Beispieleintrag "Buch"
LEXICON Case
u #; ! Definiter Nominativ
a #; ! Definiter Akkusativ
i #; ! Definiter Genitiv
@U.ART.ABSENT@ IndefCase ; ! Falls def. Artikel fehlt,
! folgt Suffix für indef. Artikel
LEXICON IndefCase
uN # ; ! Indefiniter Nominativ
aN # ; ! Indefiniter Akkusativ
iN # ; ! Indefiniter Genitiv
10.2.2. Weitere Operatoren
Weitere Tests
- @P.MERKMAL.WERT@: Setze MERKMAL auf WERT! (positive set) Gelingt immer.
- @C.MERKMAL@: Mache MERKMAL uninstantiiert (neutral)! (clear) Gelingt immer.
- @D.MERKMAL@: Blockiere, falls MERKMAL instantiiert ist! (disallow)
Forward-Looking Requirements
Mit Diacritics
kann die Präsenz eines nachfolgenden Elements erzwungen werden.
Ein Schlusstest
verbietet alle Pfade, bei denen eine gefordertes Merkmal noch nicht gesättigt worden ist.
LEXICON Foo
foo@P.RequireBar.ON@ CC1;
...
LEXICON Bar
bar@C.RequireBar@ CC2;
...
LEXICON TheEnd ! Endstation ALLER Lexika
@D.RequireBar@ # ;
Vorteil von Flag-Diacritics
- Nicht-lokale Abhängigkeiten lassen sich elegant
ausdrücken, indem sie in Merkmalswertbelegungen kodiert werden.
- Tests auf Flag-Diacritics sind sehr effizient
implementiert – im Unterschied zur vollen Unifikation wie sie etwa im PC-KIMMO-System
unterstützt wird.
- Flag-Diacritics lassen sich immer aus einem EA/ET eliminieren
:
xfst[1]: eliminate flag ART
- Flag-Diacritics in lexc erlauben Klassifikationen
, welche orthogonal
zu den Fortsetzungsklassen verlaufen (semantische Kriterien, Derivationbeschränkungen)
- Effizienz
: Die Grösse von Transduktoren kann mit geeigneten diakritischen Merkmalen entscheidend
beeinflusst werden. (Morphologie für Ungarisch: 5 Merkmale reduzieren 38MB Transduktor auf 5
MB [BEESLEY 1998])
10.2.3. Elimination diakritischer Merkmale
Manuelle Eliminierung von diakritischen Merkmalen
Diakritische Merkmal definieren Restriktionen
über einer Sprache:
reg Restr ~ [ ! Es darf nicht sein, dass
"@U.ART.PRESENT@" ! ein ABSENT nach einem PRESENT steht.
~ $ ["@P.ART.ABSENT@" ! Solange nicht ABSENT dazwischen positiv gesetzt
| "@C.ART@" ! oder das Merkmal ART neutralisiert ist.
]
"@U.ART.ABSENT@"
];
Vorgehen zur Eliminierung
Die Restriktion muss auf den Transduktor komponiert werden. Danach lassen sich alle diakritischen
Merkmale mit Bezug auf ART durch ε ersetzen.