# Distributed under the terms of the GNU General Public License version 2 # or any later version. # ==================================================================== # # P L A I N S C R E E D I S A M B I G U A T O R # ==================================================================== # # ==================================================================== # Plains Cree language technology project 2013- # # Alberta Language Technology Lab, University of Alberta # # ========== # # Delimiters # # ========== # DELIMITERS = "<.>" "" "" "<...>" "<¶>"; #PARENTHESES = "<$(>" "<$)>" "<$[>" "<$]>" "<${>" "<$}>" "<$«>" "<$»>" ; # ============= # # Tags and sets # # ============= # SETS # I define end of clause and beginning of clause in a way so that the file # may be read both by the CG-2 and the vislcg formalisms. LIST BOS = (>>>) (); LIST EOS = (<<<) (); # CG3 doesn´t function without >>> and <<< ! # Tags declared as single-membered LISTs # ====================================== # Parts of speech # --------------- LIST BOS = (>>>) (); LIST EOS = (<<<) (); # vislcg and CG-2 together. LIST N = N ; LIST V = V ; LIST Ipc = Ipc ; LIST Interj = Interj ; LIST Adv = Adv ; LIST CC = CC ; LIST CS = CS ; LIST AN = AN ; LIST IN = IN ; LIST AI = AI ; LIST II = II ; LIST TA = TA ; LIST TI = TI ; LIST Cnj = Cnj ; LIST ConNeg = ConNeg ; LIST Cond = Cond ; LIST Def = Def ; LIST Interr = Interr ; LIST Del = Del ; LIST Dim = Dim ; LIST Dim/Der = Dim/Der ; LIST Dist = Dist ; LIST Fut = Fut ; LIST Imm = Imm ; LIST Imp = Imp ; LIST Incl = Incl ; LIST Ind = Ind ; LIST Inf = Inf ; LIST Int = Int ; LIST Loc = Loc ; LIST Med = Med ; LIST Neg = Neg ; LIST Num = Num ; LIST Obv = Obv ; LIST Pos = Pos ; LIST Prf = Prf ; LIST Pron = Pron ; LIST Prox = Prox ; LIST Prs = Prs ; LIST Prt = Prt ; LIST Qst = Qst ; LIST Sbj = Sbj ; LIST Prop = Prop ; LIST Dem = Dem ; LIST Num = Num ; LIST Pers = Pers ; LIST Sg = Sg ; LIST SgO = SgO ; LIST 12PlO = 12PlO ; LIST Pl = Pl ; LIST PlO = PlO ; LIST 12Pl = 12Pl ; LIST 1Pl = 1Pl ; LIST 1PlO = 1PlO ; LIST 1Sg = 1Sg ; LIST 1SgO = 1SgO ; LIST 2Pl = 2Pl ; LIST 2PlO = 2PlO ; LIST 2Sg = 2Sg ; LIST 2SgO = 2SgO ; LIST 3Pl = 3Pl ; LIST 3PlO = 3PlO ; LIST 3Sg = 3Sg ; LIST 3SgO = 3SgO ; LIST 4SgPlO = 4SgPlO ; LIST 4Pl = 4Pl ; LIST 4Sg/Pl = 4Sg/Pl ; LIST 4PlO = 4PlO ; LIST 4Sg = 4Sg ; LIST 4SgO = 4SgO ; LIST 4Sg/PlO = 4Sg/PlO ; LIST 5Sg = 5Sg ; LIST X = X ; LIST Px12Pl = Px12Pl ; LIST Px1Pl = Px1Pl ; LIST Px1Sg = Px1Sg ; LIST Px2Pl = Px2Pl ; LIST Px2Sg = Px2Sg ; LIST Px3Pl = Px3Pl ; LIST Px3Sg = Px3Sg ; LIST Px4Pl = Px4Pl ; LIST Px4Sg = Px4Sg ; LIST CLB = CLB ; LIST PUNCT = PUNCT ; LIST LEFT = LEFT ; LIST RIGHT = RIGHT ; LIST Guess = Guess ; LIST Der/Dim = Der/Dim ; LIST COMMA = "," ; LIST ¶ = ¶; LIST DEPVERB = ("ê-.*"r) ; # Syntactic tags # -------------- LIST @ACTOR = @ACTOR ; LIST @ = @ACTOR> ; LIST @GOAL = @GOAL ; LIST @ = @GOAL> ; LIST @INS = @INS ; LIST @ = @INS> ; LIST @+FAUXV = @+FAUXV ; LIST @+FMAINV = @+FMAINV ; LIST @-FMAINV = @-FMAINV ; LIST @-FAUXV = @-FAUXV ; LIST @PRED = @PRED ; LIST @PRED-II = @PRED-II ; LIST @PRED-AI = @PRED-AI ; LIST @PRED-TI = @PRED-TI ; LIST @PRED-TA = @PRED-TA ; LIST @ADVL = @ADVL ; LIST @ADVL> = @ADVL> ; LIST @ = @N> ; LIST @ = @P> ; LIST @HNOUN = @HNOUN ; LIST @INTERJ = @INTERJ ; LIST @Num> = @Num> ; LIST @ = @Pron> ; LIST @OBJ = @OBJ ; LIST @ = @OBJ> ; LIST @OPRED = @OPRED ; LIST @ = @OPRED> ; LIST @PCLE = @PCLE ; LIST @SPRED = @SPRED ; LIST @ = @SPRED> ; LIST @SUBJ = @SUBJ ; LIST @ = @SUBJ> ; LIST @ = @OBL> ; LIST @APP = @APP ; LIST @APP-N< = @APP-N< ; LIST @APP-Pron< = @APP-Pron< ; LIST @APP>Pron = @APP>Pron ; LIST @APP-Num< = @APP-Num< ; LIST @APP-ADVL< = @APP-ADVL< ; LIST @VOC = @VOC ; LIST @CVP = @CVP ; LIST @CNP = @CNP ; LIST @FS-VFIN< = @FS-VFIN< ; LIST @? = @? ; LIST @?? = @?? ; LIST 3 = 3Sg 3Pl ; LIST non3 = 1Sg 2Sg 1Pl 12Pl 2Pl ; LIST ABSN = (".*win"r) (".*wina"r) ; LIST TEMPORALN = "kîsikâw" "askîwin" ; LIST SYNTAG = @+FAUXV @+FMAINV @-FAUXV @-FMAINV @N @>Num @>P @>Pron @ACT @ACT> @ADVL @ADVL> @APP @APP-ADVL< @APP-N< @APP-Num< @APP-Pron< @APP>Pron @CNP @CVP @FS-VFIN< @GOAL @GOAL> @HNOUN @INS @INS> @INTERJ @N< @Num< @OBJ @OBJ> @OPRED @OPRED> @P< @PCLE @Pron< @SPRED @SPRED> @SUBJ @SUBJ> @VOC ; # Initials # -------- LIST INITIAL = "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" "á" "æ" "ø" "å" "ö" "ä" ; LIST CAP-INITIAL = "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" "Á" "Æ" "Ø" "Å" "Ö" "Ä" ; # Tag sets # ======== SETS # ======== # Word or not # ----------- LIST WORD = N V Ipc Interj Pron ; # Verb sets # --------- LIST VFIN = (V 1Sg) (V 2Sg) (V 3Sg) (V 4Sg) (V 5Sg) (V 1Pl) (V 2Pl) (V 3Pl) (V 4Pl) (V 5Pl) (V 4Sg/Pl) (V 5Sg/Pl) ; # Verbs and their complements # - - - - - - - - - - - - - - SET NOT-VERB = WORD - V ; SET NOT-NOUN = WORD - N ; SET NUMBERGENDER = (AN Sg) OR (AN Pl) OR (IN Sg) OR (IN Pl) OR (AN Obv) ; # Here come the rules # BEFORE-SECTIONS SECTION MAP:PrepNR @

TARGET N + Loc IF (1 Ipc BARRIER CLB) ; ##MAP @ Loc OR Ipc (*1 VFIN)(NOT 0 @P>) ; ##MAP @ADVL Loc OR Ipc (NOT 0 @

) ; ##MAP @+FMAINV VFIN ; #MAP:PRED @PRED TARGET V ; MAP:PREDII @PRED-II TARGET V + II ; MAP:PREDAI @PRED-AI TARGET V + AI ; MAP:PREDTI @PRED-TI TARGET V + TI ; MAP:PREDTA @PRED-TA TARGET V + TA ; ##MAP @N> (Pron Dem) (1 (Num) N) ; ##MAP @ TARGET Dem + AN + Sg IF (NOT 1 Obv)(1 N + AN + Sg BARRIER CLB) ; MAP:DemNANPlR @ TARGET Dem + AN + Pl IF (NOT 1 Obv)(1 N + AN + Pl BARRIER CLB) ; MAP:DemNANObvR @ TARGET Dem + AN + Obv IF (1 N + AN + Obv BARRIER CLB) ; MAP:DemNINSgR @ TARGET Dem + IN + Sg IF (1 N + IN + Sg BARRIER CLB) ; MAP:DemNINPlR @ TARGET Dem + IN + Pl IF (1 N + IN + Pl BARRIER CLB) ; #êkoni and nouns MAP:ekoniR @ TARGET AN + Sg IF (0 (".?êkonik"r))(1 N + AN + Sg OR Pron + AN + Sg) ; MAP:ekoniR @ TARGET AN + Pl IF (0 (".?êkonik"r))(1 N + AN + Pl OR Pron + AN + Pl) ; MAP:ekoniR @ TARGET AN + Obv IF (0 (".?êkoni"r))(1 N + AN + Obv OR Pron + AN + Obv) ; MAP:ekoniR @ TARGET IN + Sg IF (0 (".?êkoni"r))(1 N + IN + Sg OR Pron + IN + Sg) ; MAP:ekoniR @ TARGET IN + Pl IF (0 (".?êkoni"r))(1 N + IN + Pl OR Pron + IN + Pl) ; MAP:NAMES @N> TARGET Prop IF (0 Prop)(1 Prop); ## Residential School ##ACTor and goal rules for 3 and 3’ animate nouns MAP:TAACTorR @ TARGET N + AN + Sg IF (NOT 0 Loc)(NOT 0 Obv)(*1 TA + 3Sg BARRIER V OR CLB) ; MAP:TAACTorR @ TARGET N + AN + Pl IF (NOT 0 Loc)(NOT 0 Obv)(*1 TA + 3Pl BARRIER V OR CLB) ; MAP:TAGOAL3R @ TARGET N + AN + Sg IF (NOT 0 Loc)(NOT 0 Obv)(*1 TA + 3SgO BARRIER V OR CLB) ; MAP:TAGOAL3R @ TARGET N + AN + Pl IF (NOT 0 Loc)(NOT 0 Obv)(*1 TA + 3PlO BARRIER V OR CLB) ; MAP:TAGOALObvR @ TARGET N + Obv IF (NOT 0 Loc)(*1 TA + 4Sg/PlO BARRIER V OR CLB) ; MAP:TAACTObvR @ TARGET N + Obv IF (NOT 0 Loc)(*1C TA + 4Sg/Pl BARRIER V OR CLB) ; ##MAP:AITIACTorR @ TARGET Interr IF (*1 AI OR TI + 3Pl OR 3Sg BARRIER CLB) ; #TI and AI actors nouns MAP:AITIACTSgR @ TARGET N + AN + Sg IF (NOT 0 Loc)(NOT 0 Obv)(*1 AI + 3Sg OR TI + 3Sg BARRIER V OR CLB) ; MAP:AITIACTPlR @ TARGET N + AN + Pl IF (NOT 0 Loc)(*1 AI + 3Pl OR TI + 3Pl BARRIER V OR CLB) ; MAP:AITIACTorR @ TARGET N + Obv IF (NOT 0 Loc)(*1C AI + 4Sg/Pl OR TI + 4Sg/Pl BARRIER V OR CLB) ; #TI Goals INANIMATE NOUNS MAP:TIGOAL @ TARGET N + IN IF (NOT 0 Loc)(*1 TI BARRIER V OR CLB) ; #II actors MAP:IIACTor3R @ TARGET N + IN + Sg IF (NOT 0 Loc)(*1 II + 3Sg BARRIER N + IN OR V OR CLB) ; MAP:IIACTor3R @ TARGET N + IN + Pl IF (NOT 0 Loc)(*1 II + 3Pl BARRIER N + IN OR V OR CLB) ; MAP:IIACTor4R @ TARGET N + IN + Px3Sg OR Px3Pl IF (NOT 0 Loc)(*1 II + 4Sg OR II + 4Pl BARRIER N + IN OR V OR CLB) ; ##PRONOMINAL ACTORS MAP:AITITADem3SgACTR @) LINK (*-1 AI + 3Sg OR TI + 3Sg OR TA + 3Sg BARRIER V OR CLB)) ; MAP:AITITADem3SgACTL @ACTOR> TARGET Pron + AN + Sg IF ((NOT 0 @) LINK (*1 AI + 3Sg OR TI + 3Sg OR TA + 3Sg BARRIER V OR CLB)) ; MAP:AITITADem3PlACTR @) LINK (*-1 AI + 3Pl OR TI + 3Pl OR TA + 3Pl BARRIER V OR CLB)) ; MAP:AITITADem3PlACTL @ACTOR> TARGET Pron + AN + Pl IF ((NOT 0 @) LINK (*1 AI + 3Pl OR TI + 3Pl OR TA + 3Pl BARRIER V OR CLB)) ; MAP:AITITADemOBVACTR @) LINK (*-1C AI + 4Sg/Pl OR TI + 4Sg/Pl OR TA + 4Sg/Pl BARRIER V OR CLB)) ; MAP:AITITADemOBVACTL @ACTOR> TARGET Pron + AN + Obv IF ((NOT 0 @) LINK (*1C AI + 4Sg/Pl OR TI + 4Sg/Pl OR TA + 4Sg/Pl BARRIER V OR CLB)) ; MAP:IIPron3SgACTR @ TARGET Pron + IN + Sg IF (*1 II + 3Sg BARRIER V OR CLB) ; MAP:IIPron3PlACTR @ TARGET Pron + IN + Pl IF (*1 II + 3Pl BARRIER V OR CLB) ; MAP:AITITAPron1SgACTR @ TARGET Pron + 1Sg IF (*1 V + 1Sg BARRIER V OR CLB) ; MAP:AITITAPron1PlACTR @ TARGET Pron + 1Pl IF (*1 V + 1Pl BARRIER V OR CLB) ; MAP:AITITAPron2SgACTR @ TARGET Pron + 2Sg IF (*1 V + 2Sg BARRIER V OR CLB) ; MAP:AITITAPron2PlACTR @ TARGET Pron + 2Pl IF (*1 V + 2Pl BARRIER V OR CLB) ; MAP:AITITAPron12PlACTR @ TARGET Pron + 12Pl IF (*1 V + 12Pl BARRIER V OR CLB) ; MAP:AITITAPron3SgACTR @ TARGET Pron + 3Sg IF (*1 AI + 3Sg OR TI + 3Sg OR TA + 3Sg BARRIER V OR CLB) ; MAP:AITITAPron3PlACTR @ TARGET Pron + 3Pl IF (*1 AI + 3Pl OR TI + 3Pl OR TA + 3Pl BARRIER V OR CLB) ; ##PRONOMINAL GOALS MAP:TIPron3GOALR @ TARGET Dem + IN IF (*1 TI BARRIER V OR CLB) ; MAP:TAPron1SgGOALR @ TARGET Pron + 1Sg IF (*1 TA + 1SgO BARRIER V OR CLB) ; MAP:TAPron1PlGOALR @ TARGET Pron + 1Pl IF (*1 TA + 1PlO BARRIER V OR CLB) ; MAP:TAPron2SgGOALR @ TARGET Pron + 2Sg IF (*1 TA + 2SgO BARRIER V OR CLB) ; MAP:TAPron2PlGOALR @ TARGET Pron + 2Pl IF (*1 TA + 2PlO BARRIER V OR CLB) ; MAP:TAPron12PlGOALR @ TARGET Pron + 12Pl IF (*1 TA + 12PlO BARRIER V OR CLB) ; MAP:TAPron3SgGOALR @ TARGET Pron + Dem + AN + Sg IF (NOT 0 Obv LINK *1 TA + 3SgO BARRIER V OR CLB) ; MAP:TAPron3PlGOALR @ TARGET Pron + Dem + AN + Pl IF (NOT 0 Obv LINK *1 TA + 3PlO BARRIER V OR CLB) ; MAP:TAPron3SgGOALR @ TARGET Pron + Pers + 3Sg IF (NOT 0 Obv LINK *1 TA + 3SgO BARRIER V OR CLB) ; MAP:TAPron3PlGOALR @ TARGET Pron + Pers + 3Pl IF (NOT 0 Obv LINK *1 TA + 3PlO BARRIER V OR CLB) ; MAP:TAObvPronGOALR @ TARGET Pron + Obv IF (*1C TA + 4Sg/PlO BARRIER V OR CLB) ; ##TEMPORAL NOUNS ##MAP:TEMPORALN @ TARGET TEMPORALN IF (*1 AI OR TI OR TA BARRIER CLB) ; ##INSTRUMENTAL NOUNS ##MAP:INSNOUN @ TARGET N IF (NOT 0 ABSN LINK *1 AI OR TI OR TA BARRIER CLB) (NOT 0 Prop) (NOT 0 @GOAL>); ##OBLIQUES MAP:OBL @ TARGET N + IN IF (NOT 0 Loc)(*1 TA OR AI BARRIER V OR CLB) ; MAP:OBL @ TARGET N + AN + Sg IF (NOT 0 Loc)(*1 AI + 3Pl OR TI + 3Pl OR AI + non3 OR TI + non3 BARRIER V OR CLB) ; MAP:OBL @OBL> TARGET N + AN + Pl IF (NOT 0 Loc)(*1 AI + 3Sg OR TI + 3Sg OR AI + non3 OR TI + non3 BARRIER V OR CLB) ; ##MAP @? (?) ; ##MAP @?? (*) (NOT 0 CLB) ; REMOVE:CleanupSyntax @?? IF (0 SYNTAG); AFTER-SECTIONS #=====# END # #=====#