forked from GitHub/gf-core
Chinese verbal adjective predication and repeated verb questions
This commit is contained in:
@@ -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
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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} ;
|
||||||
|
|||||||
@@ -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 ;
|
||||||
|
|||||||
@@ -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 []) ; ----
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user