;============================================================================================ ;UNL-NL DEFAULT TRANSFORMATION GRAMMAR ;Documentation available at http://www.unlweb.net/wiki/Default_grammar ;============================================================================================ ;============================================================================================ ;============================================================================================ ;1. PRE-PROCESSING ;Prepares the input sentence for processing ;=========================================================================================== ;============================================================================================ ;============================================================================================ ;============================================================================================ ;2. ARBORIZATION ;Converts the syntactic network into a tree ;============================================================================================ ;============================================================================================ ;Generalization /[ACDIJNPVX]C/(%x;%y,^comp):=XB(%x;%y,+comp); /[ACDIJNPVX]A/(%x;%y,^adjt):=XB(%x;%y,+adjt); /[ACDIJNPV]S/(%x;%y,^spec):=XP(%x;%y,+spec); ;Arborization XB(%x;%y,comp)XB(%x;%z):=XB(XB(%x;%y);%z); XB(%x;%y)XB(%x;%z):=XB(XB(%x;%y);%z); XP(%x;%y)XB(%x;%z):=XP(XB(%x;%z);%y); XB(XP(%x;%y);%z):=XP(XB(%x;%z);%y); IB(%x;%y)VB(%y;%z):=IB(%x;VB(%y;%z)); ;Labeling head-driven phrase structures XB(%x,A;%y,adjt):=AA(%x;%y); XB(%x,C;%y,adjt):=CA(%x;%y); XB(%x,D;%y,adjt):=DA(%x;%y); XB(%x,I;%y,adjt):=IA(%x;%y); XB(%x,J;%y,adjt):=JA(%x;%y); XB(%x,N;%y,adjt):=NA(%x;%y); XB(%x,P;%y,adjt):=PA(%x;%y); XB(%x,V;%y,adjt):=VA(%x;%y); XB(%x,A;%y,comp):=NC(%x;%y); XB(%x,C;%y,comp):=CC(%x;%y); XB(%x,D;%y,comp):=DC(%x;%y); XB(%x,I;%y,comp):=IC(%x;%y); XB(%x,J;%y,comp):=JC(%x;%y); XB(%x,N;%y,comp):=NC(%x;%y); XB(%x,P;%y,comp):=PC(%x;%y); XB(%x,V;%y,comp):=VC(%x;%y); XB(%x,A;%y):=AA(%x;%y); XB(%x,C;%y):=CA(%x;%y); XB(%x,D;%y):=DA(%x;%y); XB(%x,I;%y):=IA(%x;%y); XB(%x,J;%y):=JA(%x;%y); XB(%x,N;%y):=NA(%x;%y); XB(%x,P;%y):=PA(%x;%y); XB(%x,V;%y):=VA(%x;%y); XP(%x,A;%y):=AS(%x;%y); XP(%x,C;%y):=CS(%x;%y); XP(%x,D;%y):=DS(%x;%y); XP(%x,I;%y):=IS(%x;%y); XP(%x,J;%y):=JS(%x;%y); XP(%x,N;%y):=NS(%x;%y); XP(%x,P;%y):=PS(%x;%y); XP(%x,V;%y):=VS(%x;%y); ;============================================================================================ ;2.1 Determiner Phrase (DP) ;============================================================================================ DB(%x;%y)DS(%x;%z):=DP(DB(%x;%y);%z); DB(%x;%y)DA(%x;%z):=DB(DB(%x;%y);%z); DB(%x;%y)DC(%x;%z):=DB(DB(%x;%y);%z); DC(%x;%y):=DB(%x;%y); DA(%x;%y):=DB(%x;%y); DS(%x;%y):=DP(%x;%y); ;============================================================================================ ;2.2 Adjective Phrase (JP) ;============================================================================================ JB(%x;%y)JS(%x;%z):=JP(JB(%x;%y);%z); JB(%x;%y)JA(%x;%z):=JB(JB(%x;%y);%z); JB(%x;%y)JC(%x;%z):=JB(JB(%x;%y);%z); JC(%x;%y):=JB(%x;%y); JA(%x;%y):=JB(%x;%y); JS(%x;%y):=JP(%x;%y); ;============================================================================================ ;2.3 Adverbial Phrase (AP) ;=========================================================================================== AB(%x;%y)AS(%x;%z):=AP(AB(%x;%y);%z); AB(%x;%y)AA(%x;%z):=AB(AB(%x;%y);%z); AB(%x;%y)AC(%x;%z):=AB(AB(%x;%y);%z); AC(%x;%y):=AB(%x;%y); AA(%x;%y):=AB(%x;%y); AS(%x;%y):=AP(%x;%y); ;============================================================================================ ;2.4 Noun Phrase (NP) ;============================================================================================ NB(%x;%y)NS(%x;%z):=NP(NB(%x;%y);%z); NB(%x;%y)NC(%x;%z):=NB(NB(%x;%y);%z); NB(%x;%y)NA(%x;%z):=NB(NB(%x;%y);%z); NC(%x;%y):=NB(%x;%y); NA(%x;%y):=NB(%x;%y); NS(%x;%y):=NP(%x;%y); ;============================================================================================ ;2.5 Prepositional Phrase (PP) ;============================================================================================ PB(%x;%y)PS(%x;%z):=PP(PB(%x;%y);%z); PB(%x;%y)PA(%x;%z):=PB(PB(%x;%y);%z); PB(%x;%y)PC(%x;%z):=PB(PB(%x;%y);%z); PC(%x;%y):=PB(%x;%y); PA(%x;%y):=PB(%x;%y); PS(%x;%y):=PP(%x;%y); ;============================================================================================ ;2.6 Verbal Phrase (VP) ;============================================================================================ VB(%x;%y)VS(%x;%z):=VP(VB(%x;%y);%z); VB(%x;%y)VA(%x;%z):=VB(VB(%x;%y);%z); VB(%x;%y)VC(%x;%z):=VB(VB(%x;%y);%z); VC(%x;%y):=VB(%x;%y); VA(%x;%y):=VB(%x;%y); VS(%x;%y):=VP(%x;%y); ;============================================================================================ ;2.7 Inflectional Phrase (IP) ;============================================================================================ IB(%x;%y)IS(%x;%z):=IP(IB(%x;%y);%z); IB(%x;%y)IA(%x;%z):=IB(IB(%x;%y);%z); IB(%x;%y)IC(%x;%z):=IB(IB(%x;%y);%z); IC(%x;%y):=IB(%x;%y); IA(%x;%y):=IB(%x;%y); IS(%x;%y):=IP(%x;%y); ;============================================================================================ ;2.8 Complementizer Phrase (CP) ;============================================================================================ CB(%x;%y)CS(%x;%z):=CP(CB(%x;%y);%z); CB(%x;%y)CA(%x;%z):=CB(CB(%x;%y);%z); CB(%x;%y)CC(%x;%z):=CB(CB(%x;%y);%z); CC(%x;%y):=CB(%x;%y); CA(%x;%y):=CB(%x;%y); CS(%x;%y):=CP(%x;%y); ;============================================================================================ ;============================================================================================ ;3. TRANSFORMATION ;Converts the deep syntactic structure into the surface syntactic structure ;============================================================================================ ;============================================================================================ IB(%x;%y)VP(%y;%z,^e):=IB(%x;%y)IS(%x;%z)VP(%y;%new,+e); (moves the specifier of IP to the position of specifier of IP) ;============================================================================================ ;============================================================================================ ;4. LINEARIZATION ;Converts the tree structure into a list structure ;============================================================================================ ;============================================================================================ ;Tree to List PP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); PP(%x;%y,IBEF):=(%y)(%x,+>BLK); PP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); PP(%x;%y,IAFT):=(%x)(%y,+>BLK); PP(%x;%y):=(%y,+>BLK)(%x,+>BLK); PB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); PB(%x;%y,IBEF):=(%y)(%x,+>BLK); PB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); PB(%x;%y,IAFT):=(%x)(%y,+>BLK); PB(%x;%y):=(%x,+>BLK)(%y,+>BLK); CP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); CP(%x;%y,IBEF):=(%y)(%x,+>BLK); CP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); CP(%x;%y,IAFT):=(%x)(%y,+>BLK); CP(%x;%y):=(%y,+>BLK)(%x,+>BLK); CB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); CB(%x;%y,IBEF):=(%y)(%x,+>BLK); CB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); CB(%x;%y,IAFT):=(%x)(%y,+>BLK); CB(%x;%y):=(%x,+>BLK)(%y,+>BLK); IP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); IP(%x;%y,IBEF):=(%y)(%x,+>BLK); IP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); IP(%x;%y,IAFT):=(%x)(%y,+>BLK); IP(%x;%y):=(%y,+>BLK)(%x,+>BLK); IB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); IB(%x;%y,IBEF):=(%y)(%x,+>BLK); IB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); IB(%x;%y,IAFT):=(%x)(%y,+>BLK); IB(%x;%y):=(%x,+>BLK)(%y,+>BLK); VP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); VP(%x;%y,IBEF):=(%y)(%x,+>BLK); VP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); VP(%x;%y,IAFT):=(%x)(%y,+>BLK); VP(%x;%y):=(%y,+>BLK)(%x,+>BLK); VB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); VB(%x;%y,IBEF):=(%y)(%x,+>BLK); VB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); VB(%x;%y,IAFT):=(%x)(%y,+>BLK); VB(%x;%y):=(%x,+>BLK)(%y,+>BLK); NP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); NP(%x;%y,IBEF):=(%y)(%x,+>BLK); NP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); NP(%x;%y,IAFT):=(%x)(%y,+>BLK); NP(%x;%y):=(%y,+>BLK)(%x,+>BLK); NB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); NB(%x;%y,IBEF):=(%y)(%x,+>BLK); NB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); NB(%x;%y,IAFT):=(%x)(%y,+>BLK); NB(%x;%y):=(%x,+>BLK)(%y,+>BLK); JP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); JP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); JP(%x;%y):=(%y,+>BLK)(%x,+>BLK); JB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); JB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); JB(%x;%y):=(%x,+>BLK)(%y,+>BLK); AP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); AP(%x;%y,IBEF):=(%y)(%x,+>BLK); AP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); AP(%x;%y,IAFT):=(%x)(%y,+>BLK); AP(%x;%y):=(%y,+>BLK)(%x,+>BLK); AB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); AB(%x;%y,IBEF):=(%y)(%x,+>BLK); AB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); AB(%x;%y,IAFT):=(%x)(%y,+>BLK); AB(%x;%y):=(%x,+>BLK)(%y,+>BLK); DP(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); DP(%x;%y,IBEF):=(%y)(%x,+>BLK); DP(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); DP(%x;%y,IAFT):=(%x)(%y,+>BLK); DP(%x;%y):=(%y,+>BLK)(%x,+>BLK); DB(%x;%y,BEF):=(%y,+>BLK)(%x,+>BLK); DB(%x;%y,IBEF):=(%y)(%x,+>BLK); DB(%x;%y,AFT):=(%x,+>BLK)(%y,+>BLK); DB(%x;%y,IAFT):=(%y)(%x,+>BLK); DB(%x;%y):=(%x,+>BLK)(%y,+>BLK); ;============================================================================================ ;============================================================================================ ;5. MORPHOLOGICAL GENERATION ;Generates the inflections ;============================================================================================ ;============================================================================================ ;Inflections (%x,^inflected,FLX):=(%x,!FLX,+inflected); ;============================================================================================ ;============================================================================================ ;6. POST-PROCESSING ;Post-edits the list output ;============================================================================================ ;============================================================================================ ;Resolving scopes ((%x)(%y)(%z)(%w)):=(%x)(%y)(%z)(%w); ((%x)(%y)(%z)):=(%x)(%y)(%z); ((%x)(%y)):=(%x)(%y); ;Resolving >BLK (inserting blank spaces) (%x,>BLK)(%y,^BLK,^PUT,^STAIL):=(%x,->BLK)(" ",+BLK)(%y); ;Resolving >COMMA (inserting comma) (%x,>COMMA):=(%x,->COMMA)(",",PUT=COMMA,+>BLK); ;Resolving EMARK (%x,EMARK)(%y,^STAIL):=(%y)(%x);