1
0
forked from GitHub/gf-core

Chinese verbal adjective predication and repeated verb questions

This commit is contained in:
aarne
2013-10-08 14:19:16 +00:00
parent 227b9ef0a8
commit 0e14ae92e8
7 changed files with 53 additions and 19 deletions

View File

@@ -1,8 +1,9 @@
concrete ExtraChi of ExtraChiAbs = CatChi ** concrete ExtraChi of ExtraChiAbs = CatChi **
open ResChi, Coordination, Prelude in { open ResChi, Coordination, Prelude in {
flags coding = utf8 ;
lincat lincat
Aspect = {s : Str ; a : ResChi.Aspect} ;
VPS = {s : Str} ; VPS = {s : Str} ;
[VPS] = {s1,s2 : Str} ; [VPS] = {s1,s2 : Str} ;
VPI = {s : Str} ; --- ??? VPI = {s : Str} ; --- ???
@@ -27,4 +28,28 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
GenRP nu cn = {s = cn.s ++ relative_s} ; ---- ?? GenRP nu cn = {s = cn.s ++ relative_s} ; ---- ??
-----------------------
-- Chinese-only extras
lincat
Aspect = {s : Str ; a : ResChi.Aspect} ;
lin
PredBareAP np ap = case ap.hasAdA of {
True => mkClause np.s (insertObj (mkNP ap.s) (predV nocopula [])) ;
False => mkClause np.s (insertObj (mkNP ap.s) (predV hen_copula []))
} ;
QuestRepV cl = {
s = \\p,a =>
let
v = cl.vp.verb ;
verb = case a of {
APlain => v.s ++ v.neg ++ v.sn ;
APerf => v.s ++ "不" ++ v.sn ++ v.pp ;
ADurStat => v.s ++ "不" ++ v.sn ;
ADurProg => v.dp ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.s ++ v.neg ++ v.sn ++ v.ep
}
in
cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl
} ;
} }

View File

@@ -8,4 +8,10 @@ abstract ExtraChiAbs = Cat,
** { ** {
cat cat
Aspect ; Aspect ;
fun
PredBareAP : NP -> AP -> Cl ; -- adjectival predication without copula
QuestRepV : Cl -> QCl ; -- V neg V question
} ; } ;

View File

@@ -11,12 +11,9 @@ concrete QuestionChi of Question = CatChi **
s = \\p,a => ip.s ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl s = \\p,a => ip.s ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl
} ; } ;
QuestSlash ip cls = { QuestSlash ip cls = mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) [] ;
s =\\p,a => appPrep cls.c2 cls.np ++ cls.vp ! p ! a ++
possessive_s ++ di_s ++ ip.s
} ;
QuestIAdv iadv cl = {s = \\p,a => cl.np ++ iadv.s ++ cl.vp ! p ! a} ; QuestIAdv iadv cl = mkClauseCompl cl.np (insertAdv iadv cl.vp) [] ;
QuestIComp icomp np = {s = \\p,a => np.s ++ icomp.s} ; ---- order QuestIComp icomp np = {s = \\p,a => np.s ++ icomp.s} ; ---- order

View File

@@ -119,12 +119,12 @@ oper
hen_copula : Verb = hen_copula : Verb =
{s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- {s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
nocopula : Verb = nocopula : Verb =
{s = [] ; sn = "是" ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- {s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
adjcopula : Verb = adjcopula : Verb =
{s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- {s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
regVerb : (walk : Str) -> Verb = \v -> regVerb : (walk : Str) -> Verb = \v ->
mkVerb v "了" "着" "在" "过" "没" ; mkVerb v "了" "着" "在" "过" "不" ; -- 没" ;
noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs
@@ -189,23 +189,25 @@ oper
Clause : Type = { Clause : Type = {
s : Polarity => Aspect => Str ; s : Polarity => Aspect => Str ;
np : Str; np : Str;
vp : Polarity => Aspect => Str vp : VP
} ; } ;
mkClause = overload { mkClause = overload {
mkClause : Str -> Verb -> Clause = \np,v -> mkClauseCompl np (useVerb v) [] ; mkClause : Str -> Verb -> Clause = \np,v ->
mkClause : Str -> (Polarity => Aspect => Str) -> Str -> Clause = mkClauseCompl ; mkClauseCompl np (predV v []) [] ;
mkClause : Str -> Verb -> Str -> Clause = \subj,verb,obj -> mkClause : Str -> Verb -> Str -> Clause = \subj,verb,obj ->
mkClauseCompl subj (useVerb verb) obj ; mkClauseCompl subj (predV verb []) obj ;
mkClause : Str -> VP -> Clause = \np,vp -> mkClause : Str -> VP -> Clause = \np,vp ->
mkClauseCompl np (\\p,a => vp.prePart ++ useVerb vp.verb ! p ! a) vp.compl ; mkClauseCompl np vp [] ;
mkClause : Str -> VP -> Str -> Clause =
mkClauseCompl ;
} ; } ;
mkClauseCompl : Str -> (Polarity => Aspect => Str) -> Str -> Clause = \np,vp,compl -> { mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> {
s = \\p,a => np ++ vp ! p ! a ++ compl ; s = \\p,a => np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
np = np ; np = np ;
vp = \\p,a => vp ! p ! a ++ compl vp = vp ;
} ; } ;

View File

@@ -17,7 +17,7 @@ concrete SentenceChi of Sentence = CatChi **
} ; } ;
SlashVP np vp = SlashVP np vp =
mkClauseCompl np.s (\\p,a => vp.prePart ++ useVerb vp.verb ! p ! a) vp.compl mkClauseCompl np.s vp []
** {c2 = vp.c2} ; ** {c2 = vp.c2} ;
SlashVS np vs sslash = <mkClause np.s vs sslash.s : Clause> ** {c2 = sslash.c2} ; SlashVS np vs sslash = <mkClause np.s vs sslash.s : Clause> ** {c2 = sslash.c2} ;
@@ -25,7 +25,7 @@ concrete SentenceChi of Sentence = CatChi **
-- yet another reason for discontinuity of clauses -- yet another reason for discontinuity of clauses
AdvSlash slash adv = AdvSlash slash adv =
mkClause slash.np (<\\p,a => adv.s ++ slash.vp ! p ! a : Polarity => Aspect => Str>) [] mkClauseCompl slash.np <insertAdv adv slash.vp : VP> []
** {c2 = slash.c2} ; ** {c2 = slash.c2} ;
SlashPrep cl prep = cl ** {c2 = prep} ; SlashPrep cl prep = cl ** {c2 = prep} ;

View File

@@ -94,7 +94,7 @@ not_Predet = ssword "不" ;
otherwise_PConj = mkPConjL "还是" ; otherwise_PConj = mkPConjL "还是" ;
to_Prep = mkPrep "往" ; to_Prep = mkPrep "往" ;
have_V2 = mkV2 "有" ; have_V2 = mkV2 (mkV "有" "了" "着" "在" "过" "没") ;
yes_Utt = ss "对" ; yes_Utt = ss "对" ;
no_Utt = ss neg_s ; no_Utt = ss neg_s ;

View File

@@ -54,10 +54,14 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
PassV2 v = insertAdv (mkNP passive_s) (predV v v.part) ; ---- PassV2 v = insertAdv (mkNP passive_s) (predV v v.part) ; ----
CompAP ap = insertObj (mkNP (ap.s ++ de_s)) (predV copula []) ;
{-
CompAP ap = case ap.hasAdA of { CompAP ap = case ap.hasAdA of {
True => insertObj (mkNP ap.s) (predV nocopula []) ; True => insertObj (mkNP ap.s) (predV nocopula []) ;
False => insertObj (mkNP (ap.s ++ de_s)) (predV copula []) False => insertObj (mkNP (ap.s ++ de_s)) (predV copula [])
} ; } ;
-}
CompNP np = insertObj np (predV copula []) ; ---- CompNP np = insertObj np (predV copula []) ; ----