# Copyright (c) 2004 by Palo Alto Research Center. All rights reserved. # ============================================================================ # USAGE: xfst -l [ThisFile] # ============================================================================ define LowChar [a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z]; define UppChar [A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z]; define Char [ LowChar | UppChar ]; define Vowel [a|e|i|o|u]; define Consonant LowChar - Vowel ; echo >>> define stems define LowStem LowChar LowChar+; # all characters lower case define UpStem UppChar UppChar+; # all characters upper case define CapStem UppChar LowChar+; # create stems by blocking certain ending morphology define AdjStem LowStem ; define VerbStem LowStem ; define NounStem LowStem ; # ============================================================= # Verbs define CatTag [ %+Verb | %+Noun | %+Adj ] ; define VerbTags %+Verb [ %+Pres %+Non3sg | %+Inf | %+Pres %+3sg | %+Past | %+Prog ]; define Verb VerbStem VerbTags ; define RealizeVerb [ [ [ %+Pres %+Non3sg | %+Inf ] -> 0 ] | [ [ %+Pres %+3sg ] -> s ] | [ %+Past -> e d ] | [ %+Prog -> i n g ] ] ; # =========================================================== # Morphographemic rules define SilentE e -> 0 || Vowel Consonant _ CatTag Vowel ; define Geminate [ [ p -> p p || Vowel _ CatTag Vowel ] | [ b -> b b || Vowel _ CatTag Vowel ] | [ c -> c k || Vowel _ CatTag Vowel ] ] ; define Morphographemic Geminate .o. SilentE; define BetterVerb [ Verb .o. RealizeVerb .o. Morphographemic .o. CatTag -> 0 ]; define guesser [ # adverbs LowStem l y %+Adv:0 # adjective | AdjStem %+Adj:0 | AdjStem 0:e 0:r %+Adj:0 %+Compar:0 | AdjStem 0:e 0:s 0:t %+Adj:0 %+Super:0 # common nouns | NounStem %+Noun:0 %+Sg:0 | NounStem 0:s %+Noun:0 %+Pl:0 # proper nouns | CapStem %+Noun:0 %+Proper:0 %+Sg:0 | UpStem %+Noun:0 %+Proper:0 %+Sg:0 # verbs | BetterVerb # | VerbStem %+Verb:0 %+Pres:0 %+Non3sg:0 # | VerbStem %+Verb:0 %+Inf:0 # | VerbStem 0:s %+Verb:0 %+Pres:0 %+3sg:0 # | VerbStem 0:e 0:d %+Verb:0 %+Past:0 # | VerbStem 0:i 0:n 0:g %+Verb:0 %+Prog:0 ]; # put the guesser on the stack push guesser ; # save the machine save better.english.fst quit