fixed problems with position of Dutch negation

This commit is contained in:
andrea.christina.unger
2015-07-21 12:48:09 +00:00
parent 3d22d05bdc
commit b70f55ed2e
8 changed files with 53 additions and 46 deletions

View File

@@ -16,12 +16,12 @@ concrete ExtraDut of ExtraDutAbs = CatDut **
ComplVPIVV v vpi =
insertInf (vpi.s ! v.isAux) (
predVGen v.isAux v) ; ----
predVGen v.isAux BeforeObjs v) ; ----
--{-
-- insertExtrapos vpi.p3 (
-- insertInf vpi.p2 (
-- insertObj vpi.p1 (
-- predVGen v.isAux v))) ;
-- predVGen v.isAux vpi.negPos v))) ;
---}
--
-- PPzuAdv cn = {s = case cn.g of {
@@ -122,7 +122,7 @@ lin
lin
NominalizeVPSlashNP vpslash np =
--False for negation place; doesn't matter because vp.a1 ! Pos is chosen
let vp : ResDut.VP = insertObjNP np.isPron False (\\_ => appPrep vpslash.c2.p1 np.s) vpslash ;
let vp : ResDut.VP = insertObjNP np.isPron AfterObjs (\\_ => appPrep vpslash.c2.p1 np.s) vpslash ;
agrDef : Agr = agrP3 Sg ;
compl : Str = vp.n0 ! agrDef ++ vp.a1 ! Pos ++ vp.n2 ! agrDef ++ vp.s.prefix ;
inf : Str = vp.inf.p1 ;

View File

@@ -4,7 +4,7 @@ concrete IdiomDut of Idiom = CatDut **
flags optimize=all_subs ;
lin
ImpersCl vp = mkClause "'t" (agrP3 Sg) vp ;
ImpersCl vp = mkClause "het" (agrP3 Sg) vp ; -- cunger: 't -> het
GenericCl vp = mkClause "men" (agrP3 Sg) vp ;
CleftNP np rs = mkClause "'t" (agrP3 Sg)
@@ -41,7 +41,7 @@ concrete IdiomDut of Idiom = CatDut **
vvp = insertExtrapos vpi.p3 (
insertInf vpi.p2 (
insertObj vpi.p1 (
predVGen True v))) ;
predVGen True vp.negPos v))) ;
in
{s = (mkClause "we" {g = Utr ; n = Pl ; p = P1} vvp).s !
Pres ! Simul ! Pos ! Inv

View File

@@ -52,7 +52,7 @@ lin heffen_V = mkV "heffen" "hief" "hieven" "geheven" ;
lin helpen_V = mkV "helpen" "hielp" "hielpen" "geholpen" ;
lin heten_V = mkV "heten" "heette" "heetten" "geheten" ;
lin hijsen_V = mkV "hijsen" "hees" "hesen" "gehesen" ;
lin hoeven_V = mkV "hoeven" "hoeft" "hoeven" "hoefde" "hoefden" "gehoefd" ;
lin hoeven_V = mkV "hoef" "hoeft" "hoeven" "hoefde" "hoefden" "gehoefd" ;
lin houden_V = mkV "houden" "hield" "hielden" "gehouden" ;
lin houwen_V = mkV "houwen" "houwde" "houwden" "gehouwen" ;
lin jagen_V = mkV "jagen" "joeg" "joegen" "gejaagd" ;

View File

@@ -45,7 +45,7 @@ lin
married_A2 = mkA2 (mkA "getrouwd") (mkPrep "met") ;
mother_N2 = mkN2 (mkN "moeder") ;
now_Adv = mkAdv "nu" ;
paint_V2A = mkV2A (mkV "schilderen" "schildert") noPrep ;
paint_V2A = mkV2A (mkV "schilderen" "schildert") ;
paris_PN = mkPN "Parijs" ;
red_A = mkA "rood" ;
say_VS = mkVS zeggen_V ;
@@ -246,7 +246,7 @@ queen_N = mkN "koningin" utrum ;
question_N = mkN "vraag" utrum ;
radio_N = mkN "radio" utrum ;
rain_N = mkN "regen" utrum ;
rain_V0 = mkV "regenen" ;
rain_V0 = mkV "regen" "regent" "regenen" "regende" "regenden" "geregend" ;
read_V2 = mkV2 lezen_V ;
ready_A = mkA "klaar" ;
reason_N = mkN "reden" utrum ;

View File

@@ -485,8 +485,11 @@ oper
-- sein_V = MorphoDut.sein_V ** {lock_V = <>} ;
-- werden_V = MorphoDut.werden_V ** {lock_V = <>} ;
--
prepV2 : V -> Prep -> V2 ;
prepV2 : V -> Prep -> V2 ;
prepV2 v c = lin V2 (v ** {c2 = <c.s,True>}) ; --if it has prep, needed for word order (place of negation)
noprepV2 : V -> V2 ;
noprepV2 v = lin V2 (v ** {c2 = <[],False>}) ;
-- dirV2 v = prepV2 v (mkPrep [] accusative) ;
-- datV2 v = prepV2 v (mkPrep [] dative) ;
--
@@ -504,23 +507,23 @@ oper
mkV2V = overload {
mkV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = False}) ;
mkV2V : V -> V2V = \v -> lin V2V (prepV2 v (mkPrep []) ** {isAux = False}) ;
mkV2V : V -> V2V = \v -> lin V2V (noprepV2 v ** {isAux = False}) ;
} ;
auxV2V = overload {
auxV2V : V -> Prep -> V2V = \v,p -> lin V2V (prepV2 v p ** {isAux = True}) ;
auxV2V : V -> V2V = \v -> lin V2V (prepV2 v (mkPrep []) ** {isAux = True}) ;
auxV2V : V -> V2V = \v -> lin V2V (noprepV2 v ** {isAux = True}) ;
} ;
mkV2S = overload {
mkV2S : V -> Prep -> V2S = \v,p -> lin V2S (prepV2 v p) ;
mkV2S : V -> V2S = \v -> lin V2S (prepV2 v (mkPrep [])) ;
mkV2S : V -> V2S = \v -> lin V2S (noprepV2 v) ;
} ;
mkV2A = overload {
mkV2A : V -> Prep -> V2A = \v,p -> lin V2A (prepV2 v p) ;
mkV2A : V -> V2A = \v -> lin V2A (prepV2 v (mkPrep [])) ;
mkV2A : V -> V2A = \v -> lin V2A (noprepV2 v) ;
} ;
mkV2Q = overload {
mkV2Q : V -> Prep -> V2Q = \v,p -> lin V2Q (prepV2 v p) ;
mkV2Q : V -> V2Q = \v -> lin V2Q (prepV2 v (mkPrep [])) ;
mkV2Q : V -> V2Q = \v -> lin V2Q (noprepV2 v) ;
} ;

View File

@@ -388,7 +388,7 @@ param
a = {g = g ; n = n ; p = p}
} ;
het_Pron : Pronoun = mkPronoun "'t" "'t" "ze" "hij" "hem" "zijn" "zijne" Neutr Sg P3 ;
het_Pron : Pronoun = mkPronoun "het" "het" "ze" "hij" "hem" "zijn" "zijne" Neutr Sg P3 ; -- cunger: 't -> het
-- Complex $CN$s, like adjectives, have strong and weak forms.
@@ -475,6 +475,8 @@ param
_ => AAttr
} ;
param NegPosition = BeforeObjs | AfterObjs | BetweenObjs;
oper VP : Type = {
s : VVerb ;
a1 : Polarity => Str ; -- niet
@@ -482,15 +484,14 @@ param
n2 : Agr => Str ; -- je vrouw
a2 : Str ; -- vandaag
isAux : Bool ; -- is a double infinitive
negBeforeObj : Bool ; -- ik schoop X niet ; ik houd niet van X ; dat is niet leuk
negPos : NegPosition ; -- ik schoop X niet ; ik houd niet van X ; dat is niet leuk
inf : Str * Bool ; -- zeggen (True = non-empty)
ext : Str -- dat je komt
} ;
predV : VVerb -> VP = predVGen False ;
predV : VVerb -> VP = predVGen False AfterObjs;
predVGen : Bool -> VVerb -> VP = \isAux, verb -> {
predVGen : Bool -> NegPosition -> VVerb -> VP = \isAux, negPos, verb -> {
s = verb ;
a1 : Polarity => Str = negation ;
n0 : Agr => Str = \\a => case verb.vtype of {
@@ -499,8 +500,8 @@ param
} ;
n2 : Agr => Str = \\a => [] ;
a2 : Str = [] ;
isAux = isAux ; ----
negBeforeObj = False ;
isAux = isAux ;
negPos = negPos ;
inf : Str * Bool = <[],False> ;
ext : Str = []
} ;
@@ -512,18 +513,18 @@ param
-- Extending a verb phrase with new constituents.
--when we call it with a normal VP, just copy the negBeforeObj field of the vp
insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> insertObjNP False vp.negBeforeObj obj vp;
--when we call it with a normal VP, just copy the negPos field of the vp
insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> insertObjNP False vp.negPos obj vp;
--this is needed when we call insertObjNP in ComplSlash: VPSlash is a subtype of VP so it works
insertObjNP : Bool -> Bool -> (Agr => Str) -> VP -> VP = \isPron,negBeforeObj,obj,vp -> {
insertObjNP : Bool -> NegPosition -> (Agr => Str) -> VP -> VP = \isPron,negPos,obj,vp -> {
s = vp.s ;
a1 = vp.a1 ;
n0 = \\a => case isPron of {True => obj ! a ; _ => []} ++ vp.n0 ! a ;
n2 = \\a => case isPron of {False => obj ! a ; _ => []} ++ vp.n2 ! a ;
a2 = vp.a2 ;
isAux = vp.isAux ;
negBeforeObj = negBeforeObj ;
negPos = negPos ;
inf = vp.inf ;
ext = vp.ext
} ;
@@ -535,7 +536,7 @@ param
n2 = vp.n2 ;
a2 = vp.a2 ;
isAux = vp.isAux ;
negBeforeObj = vp.negBeforeObj ;
negPos = vp.negPos ;
inf = vp.inf ;
ext = vp.ext
} ;
@@ -547,7 +548,7 @@ param
n2 = vp.n2 ;
a2 = vp.a2 ++ adv ;
isAux = vp.isAux ;
negBeforeObj = vp.negBeforeObj ;
negPos = vp.negPos ;
inf = vp.inf ;
ext = vp.ext
} ;
@@ -559,7 +560,7 @@ param
n2 = vp.n2 ;
a2 = vp.a2 ;
isAux = vp.isAux ;
negBeforeObj = vp.negBeforeObj ;
negPos = vp.negPos ;
inf = vp.inf ;
ext = vp.ext ++ ext
} ;
@@ -571,7 +572,7 @@ param
n2 = vp.n2 ;
a2 = vp.a2 ;
isAux = vp.isAux ; ----
negBeforeObj = vp.negBeforeObj ;
negPos = vp.negPos ;
inf = <inf ++ vp.inf.p1, True> ;
ext = vp.ext
} ;
@@ -603,9 +604,10 @@ param
obj0 = vp.n0 ! agr ;
obj = vp.n2 ! agr ;
part = vp.s.particle ;
compl = case vp.negBeforeObj of {
True => neg ++ obj0 ++ obj ++ part ++ vp.a2 ++ vp.s.prefix ;
_ => obj0 ++ obj ++ neg ++ part ++ vp.a2 ++ vp.s.prefix
compl = case vp.negPos of {
BeforeObjs => neg ++ obj0 ++ obj ++ part ++ vp.a2 ++ vp.s.prefix ;
AfterObjs => obj0 ++ obj ++ neg ++ part ++ vp.a2 ++ vp.s.prefix ;
BetweenObjs => obj0 ++ neg ++ obj ++ part ++ vp.a2 ++ vp.s.prefix
} ;
inf : Str =
case <vp.isAux, vp.inf.p2, a> of {

View File

@@ -20,11 +20,13 @@ concrete SentenceDut of Sentence = CatDut ** open ResDut, Prelude in {
verb = vp.s.s ! ps.p1 ;
inf = vp.inf.p1 ;
in
case vp.negBeforeObj of {
True => verb ++ ps.p2 ++ vp.a1 ! pol ++ vp.n0 ! agr ++
case vp.negPos of {
BeforeObjs => verb ++ ps.p2 ++ vp.a1 ! pol ++ vp.n0 ! agr ++
vp.n2 ! agr ++ vp.a2 ++ inf ++ vp.ext ;
_ => verb ++ ps.p2 ++ vp.n0 ! agr ++ vp.n2 ! agr ++
vp.a1 ! pol ++ vp.a2 ++ inf ++ vp.ext
AfterObjs => verb ++ ps.p2 ++ vp.n0 ! agr ++ vp.n2 ! agr ++
vp.a1 ! pol ++ vp.a2 ++ inf ++ vp.ext ;
BetweenObjs => verb ++ ps.p2 ++ vp.n0 ! agr ++ vp.a1 ! pol ++ vp.n2 ! agr ++
vp.a2 ++ inf ++ vp.ext
} ;
} ;

View File

@@ -12,13 +12,13 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
insertExtrapos vpi.p3 (
insertInf vpi.p2 (
insertObj vpi.p1 (
predVGen v.isAux (v2v v)))) ; ---- subtyp
predVGen v.isAux vp.negPos (v2v v)))) ; ---- subtyp
ComplVS v s =
insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ;
ComplVQ v q =
insertExtrapos (q.s ! QIndir) (predV v) ;
ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predV v) ;
ComplVA v ap = insertObj (\\ _ => ap.s ! APred) (predVGen False BetweenObjs v) ;
SlashV2a v = predV (v2v v) ** {c2 = v.c2} ;
@@ -37,13 +37,13 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
in
insertExtrapos vpi.p3 (
insertInf vpi.p2 (
insertObj vpi.p1 ((predVGen v.isAux v)))) ** {c2 = v.c2} ;
insertObj vpi.p1 ((predVGen v.isAux vp.negPos v)))) ** {c2 = v.c2} ;
SlashV2A v ap =
insertObj (\\_ => ap.s ! APred) (predVv v) ** {c2 = v.c2} ;
insertObj (\\_ => ap.s ! APred) (predVGen False BetweenObjs (v2v v)) ** {c2 = v.c2} ;
--vp.c2.p2: if the verb has a preposition or not
ComplSlash vp np = insertObjNP np.isPron vp.c2.p2 (\\_ => appPrep vp.c2.p1 np.s) vp ;
ComplSlash vp np = insertObjNP np.isPron (case vp.c2.p2 of {True => BeforeObjs; False => vp.negPos}) (\\_ => appPrep vp.c2.p1 np.s) vp ;
SlashVV v vp =
let
@@ -52,7 +52,7 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
insertExtrapos vpi.p3 (
insertInf vpi.p2 (
insertObj vpi.p1 (
predVGen v.isAux (v2v v)))) ** {c2 = vp.c2} ;
predVGen v.isAux vp.negPos (v2v v)))) ** {c2 = vp.c2} ;
SlashV2VNP v np vp =
let
@@ -62,13 +62,13 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
insertInf vpi.p2 (
insertObj vpi.p1 (
insertObj (\\_ => appPrep v.c2.p1 np.s) (
predVGen v.isAux v)))) ** {c2 = v.c2} ;
predVGen v.isAux vp.negPos v)))) ** {c2 = v.c2} ;
-- True, because negation comes before copula complement
-- BeforeObjs, because negation comes before copula complement
-- "ik ben niet groot" but "ik begrijp hem niet"
UseComp comp = insertObjNP False True comp.s (predV zijn_V) ; -- agr not used
UseComp comp = insertObjNP False BeforeObjs comp.s (predV zijn_V) ; -- agr not used
UseCopula = predV zijn_V ;
UseCopula = predV zijn_V;
CompCN cn = {s = \\a => cn.s ! Strong ! NF a.n Nom} ;
CompAP ap = {s = \\_ => ap.s ! APred} ;