forked from GitHub/gf-core
refined the types Adv and Prep in Chi to control the presence of the zai auxiliary
This commit is contained in:
@@ -4,7 +4,7 @@ concrete AdverbChi of Adverb = CatChi **
|
||||
lin
|
||||
PositAdvAdj a = {s = a.s ; advType = ATManner} ;
|
||||
|
||||
PrepNP prep np = ss (appPrep prep np.s) ** {advType = ATPlace} ; --- should depend on prep, np ? or treat in ExtraChi ?
|
||||
PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType} ; --- should depend on np too ?
|
||||
|
||||
ComparAdvAdj cadv a np = ss (a.s ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner} ;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
||||
lin
|
||||
|
||||
ConjS c = conjunctDistrSS (c.s ! CSent) ;
|
||||
ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = ATPlace} ; ---- ??
|
||||
ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = as.advType} ; ---- ??
|
||||
ConjNP c = conjunctDistrSS (c.s ! CPhr CNPhrase) ;
|
||||
ConjAP c as = conjunctDistrSS (c.s ! CPhr CAPhrase) as ** {monoSyl = False} ;
|
||||
ConjRS c = conjunctDistrSS (c.s ! CSent) ;
|
||||
@@ -12,8 +12,8 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
||||
|
||||
BaseS = twoSS ;
|
||||
ConsS = consrSS duncomma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS duncomma ;
|
||||
BaseAdv x y = twoSS x y ** {advType = x.advType} ; ---- ??
|
||||
ConsAdv x xs = consrSS duncomma x xs ** {advType = x.advType} ; ---- ??
|
||||
BaseNP = twoSS ;
|
||||
ConsNP = consrSS duncomma ;
|
||||
BaseAP = twoSS ;
|
||||
@@ -23,7 +23,7 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[Adv] = {s1,s2 : Str ; advType : AdvType} ;
|
||||
[NP] = {s1,s2 : Str} ;
|
||||
[AP] = {s1,s2 : Str} ;
|
||||
[RS] = {s1,s2 : Str} ;
|
||||
|
||||
@@ -491,7 +491,7 @@ rate_N = mkN "率" ;
|
||||
bond_N = mkN "券" ;
|
||||
zoological_A = mkA "关于动物" ;
|
||||
time_N = mkN "时间" ;
|
||||
presidentMasc_N = mkN "" ; --?? Don't understand
|
||||
--* presidentMasc_N = mkN "" ; --?? Don't understand
|
||||
week_N = mkN "星期" ;
|
||||
investor_N = mkN "投资者" ;
|
||||
into_Prep = mkPrep "成" ;
|
||||
@@ -502,7 +502,7 @@ analyst_N = mkN "分析人士" ;
|
||||
make_V2 = mkV2 "使" ;
|
||||
cent_N = mkN "一分钱" ;
|
||||
only_Adv = mkAdv "只有" ;
|
||||
anyPl_Det = mkpDet "" ; --?? Don't understand
|
||||
--* anyPl_Det = mkpDet "" ; --?? Don't understand
|
||||
not_Adv = mkAdv "不" ;
|
||||
interest_N = mkN "利息" ;
|
||||
group_N = mkN "团" ;
|
||||
@@ -512,7 +512,7 @@ do_V = mkV "做" ;
|
||||
program_N = mkN "节目" ;
|
||||
recent_A = mkA "最近" ;
|
||||
firm_N = mkN "公司" ;
|
||||
officialMasc_N = mkN "" ; --?? Don't understand
|
||||
--* officialMasc_N = mkN "" ; --?? Don't understand
|
||||
fund_N = mkN "基金" ;
|
||||
unit_3_N = mkN "单元" ;
|
||||
yesterday_N = mkN "昨天" ;
|
||||
@@ -696,7 +696,7 @@ employee_N = mkN "职员" ;
|
||||
credit_N = mkN "信用" ;
|
||||
continue_VV = mkVV "继续" ;
|
||||
note_N = mkN "笔记" ;
|
||||
customerMasc_N = mkN "" ; --?? Don't understand
|
||||
--* customerMasc_N = mkN "" ; --?? Don't understand
|
||||
spend_V = mkV "花费" ;
|
||||
transaction_N = mkN "交易" ;
|
||||
about_AdN = mkAdN "关于" ;
|
||||
@@ -724,7 +724,7 @@ believe_VS = mkVS "相信" ;
|
||||
proposal_N = mkN "建议" ;
|
||||
political_A = mkA "政治性" ;
|
||||
base_V2 = mkV2 "垒" ;
|
||||
amp_Conj = mkConj "" ;
|
||||
amp_Conj = mkConj "&" ;
|
||||
pay_V = mkV "交纳" ;
|
||||
nation_N = mkN "国家" ;
|
||||
out_of_Prep = mkPrep "在什么以外" ;
|
||||
@@ -1285,7 +1285,7 @@ improvement_N = mkN "改善" ;
|
||||
himself_NP = mkNPword "他自己" ;
|
||||
commodity_N = mkN "商品" ;
|
||||
attract_V2 = mkV2 "吸引" ;
|
||||
unchanged_A = mkA "" ;
|
||||
--* unchanged_A = mkA "" ;
|
||||
traditional_A = mkA "传统" ;
|
||||
texas_PN = mkPN "德州" ;
|
||||
sense_N = mkN "感应" ;
|
||||
@@ -1302,7 +1302,7 @@ negotiation_N = mkN "谈判" ;
|
||||
key_A = mkA "关键" ;
|
||||
indeed_Adv = mkAdv "的确" ;
|
||||
appeal_N = mkN "上诉" ;
|
||||
researcherMasc_N = mkN "" ;
|
||||
--* researcherMasc_N = mkN "" ;
|
||||
phone_N = mkN "电话" ;
|
||||
need_N = mkN "需要" ;
|
||||
institutional_A = mkA "机构" ;
|
||||
@@ -1838,7 +1838,7 @@ outlook_N = mkN "展望" ;
|
||||
once_AdV = mkAdV "一次" ;
|
||||
match_V2 = mkV2 "比拟" ;
|
||||
leadership_N = mkN "领导" ;
|
||||
in_toto_Adv = mkAdv "" ; -- ?? Don't undertstand
|
||||
--* in_toto_Adv = mkAdv "" ; -- ?? Don't undertstand
|
||||
highway_N = mkN "公路" ;
|
||||
head_V = mkV "率领" ;
|
||||
exact_A = mkA "确切" ;
|
||||
@@ -1881,7 +1881,7 @@ chapter_N = mkN "章" ;
|
||||
cause_N = mkN "原因" ;
|
||||
ban_V2 = mkV2 "禁止" ;
|
||||
arrangement_N = mkN "安排" ;
|
||||
americanMasc_N = mkN "" ; -- ?? Don't understand
|
||||
--* americanMasc_N = mkN "" ; -- ?? Don't understand
|
||||
try_V = mkV "试图" ;
|
||||
taxpayer_N = mkN "纳税人" ;
|
||||
stop_V2 = mkV2 "停" ;
|
||||
@@ -2258,7 +2258,7 @@ resistance_N = mkN "阻力" ;
|
||||
reputation_N = mkN "声誉" ;
|
||||
putt_V2 = mkV2 "推杆" ;
|
||||
pharmaceutical_A = mkA "药方" ;
|
||||
perform_V = mkV "" ;
|
||||
--* perform_V = mkV "" ;
|
||||
numerous_A = mkA "众多" ;
|
||||
modern_A = mkA "现代" ;
|
||||
impossible_A = mkA "不可能" ;
|
||||
@@ -3633,7 +3633,7 @@ virus_N = mkN "病毒" ;
|
||||
uphold_V2 = mkV2 "坚持" ;
|
||||
unspecified_A = mkA "不明" ;
|
||||
unrelated_A = mkA "无关" ;
|
||||
understand_V = mkV "" ;
|
||||
understand_V = mkV "了解" ;
|
||||
tremor_N = mkN "震" ;
|
||||
transition_N = mkN "过渡" ;
|
||||
touch_N = mkN "触摸" ;
|
||||
@@ -4866,7 +4866,7 @@ watch_V2V = mkV2V "看" ;
|
||||
wane_V = mkV "没落" ;
|
||||
walk_V2 = mkV2 "走" ;
|
||||
visual_A = mkA "看" ;
|
||||
v_and_a_N = mkN "" ; -- ?? Don't understand
|
||||
--* v_and_a_N = mkN "" ; -- ?? Don't understand
|
||||
upward_A = mkA "向上" ;
|
||||
until_Subj = mkSubj "直到" ;
|
||||
unsolicited_A = mkA "不请自来" ;
|
||||
@@ -4909,7 +4909,7 @@ shore_V2 = mkV2 "支撑" ;
|
||||
shell_N = mkN "外壳" ;
|
||||
shape_V2 = mkV2 "塑造" ;
|
||||
shape_V = mkV "塑" ;
|
||||
shah_N = mkN "" ; -- ?? Don't understand
|
||||
--* shah_N = mkN "" ; -- ?? Don't understand
|
||||
seniority_N = mkN "排行" ;
|
||||
select_V = mkV "选择" ;
|
||||
scope_N = mkN "范围" ;
|
||||
@@ -4984,7 +4984,7 @@ invade_V2 = mkV2 "入侵" ;
|
||||
intensive_A = mkA "紧张" ;
|
||||
intensity_N = mkN "强度" ;
|
||||
intensify_V = mkV "强化" ;
|
||||
instruct_V2 = mkV2 "" ;
|
||||
--* instruct_V2 = mkV2 "" ;
|
||||
install_V = mkV "安装" ;
|
||||
inspection_N = mkN "检查" ;
|
||||
inspect_V2 = mkV2 "检查" ;
|
||||
|
||||
@@ -50,7 +50,8 @@ oper
|
||||
mkV2 : Str -> V2
|
||||
= \s -> case s of {
|
||||
v + "+" + p => lin V2 (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = word p}) ;
|
||||
v + "*" + p => lin V2 (regVerb v ** {c2 = ResChi.mkPreposition p [] ; hasPrep = True ; part = []}) ;
|
||||
v + "*" + p => lin V2 (regVerb v **
|
||||
{c2 = ResChi.mkPreposition p [] (getAdvType p) ; hasPrep = True ; part = []}) ;
|
||||
_ => lin V2 (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []})
|
||||
} ;
|
||||
mkV2 : V -> V2
|
||||
@@ -123,15 +124,17 @@ oper
|
||||
|
||||
mkAdv = overload {
|
||||
mkAdv : Str -> Adv
|
||||
= \s -> lin Adv {s = word s ; advType = ATPlace} ;
|
||||
= \s -> lin Adv {s = word s ; advType = getAdvType s} ;
|
||||
mkAdv : Str -> AdvType -> Adv
|
||||
= \s,at -> lin Adv {s = word s ; advType = at} ;
|
||||
} ;
|
||||
|
||||
AdvType : Type
|
||||
= ResChi.AdvType ;
|
||||
placeAdvType : AdvType
|
||||
= ATPlace ;
|
||||
placeAdvType : AdvType -- without "在" included
|
||||
= ATPlace False ;
|
||||
zai_placeAdvType : AdvType -- with "在" included
|
||||
= ATPlace True ;
|
||||
timeAdvType : AdvType
|
||||
= ATTime ;
|
||||
mannerAdvType : AdvType
|
||||
@@ -139,9 +142,11 @@ oper
|
||||
|
||||
mkPrep = overload { -- first pre part, then optional post part
|
||||
mkPrep : Str -> Prep
|
||||
= \s -> lin Prep (ResChi.mkPreposition s []) ;
|
||||
= \s -> lin Prep (ResChi.mkPreposition s [] (getAdvType s)) ;
|
||||
mkPrep : Str -> Str -> Prep
|
||||
= \s,t -> lin Prep (ResChi.mkPreposition s t) ;
|
||||
= \s,t -> lin Prep (ResChi.mkPreposition s t (getAdvType s)) ;
|
||||
mkPrep : Str -> Str -> AdvType -> Prep
|
||||
= \s,t,a -> lin Prep (ResChi.mkPreposition s t a) ;
|
||||
} ;
|
||||
|
||||
mkInterj : Str -> Interj
|
||||
|
||||
@@ -62,7 +62,7 @@ resource ResChi = ParamX ** open Prelude in {
|
||||
|
||||
-- Write the characters that constitute a word separately. This enables straightforward tokenization.
|
||||
|
||||
bword : Str -> Str -> Str = \x,y -> x ++ y ; -- change to x + y to treat words as single tokens
|
||||
bword : Str -> Str -> Str = \x,y -> x + y ; -- change to x + y to treat words as single tokens
|
||||
|
||||
word : Str -> Str = \s -> case s of {
|
||||
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a b)))))) ;
|
||||
@@ -87,7 +87,7 @@ param
|
||||
CPosType = CAPhrase | CNPhrase | CVPhrase ;
|
||||
DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de"
|
||||
|
||||
AdvType = ATPlace | ATTime | ATManner ;
|
||||
AdvType = ATPlace Bool | ATTime | ATManner ; -- ATPlace True = has zai_s already
|
||||
|
||||
-- parts of speech
|
||||
|
||||
@@ -118,6 +118,8 @@ oper
|
||||
regVerb : (walk : Str) -> Verb = \v ->
|
||||
mkVerb v "了" "着" "在" "过" "没" ;
|
||||
|
||||
noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs
|
||||
|
||||
mkVerb : (v : Str) -> (pp,ds,dp,ep,neg : Str) -> Verb = \v,pp,ds,dp,ep,neg ->
|
||||
{s = word v ; pp = pp ; ds = ds ; dp = dp ; ep = ep ; neg = neg} ;
|
||||
|
||||
@@ -224,18 +226,25 @@ oper
|
||||
pronNP : (s : Str) -> NP = \s -> {
|
||||
s = word s
|
||||
} ;
|
||||
|
||||
Preposition = {prepPre : Str ; prepPost : Str ; advType : AdvType} ;
|
||||
|
||||
mkPreposition : Str -> Str -> Preposition = \s1,s2 -> {
|
||||
mkPreposition : Str -> Str -> AdvType -> Preposition = \s1,s2,at -> {
|
||||
prepPre = word s1 ;
|
||||
prepPost = word s2
|
||||
prepPost = word s2 ;
|
||||
advType = at
|
||||
} ;
|
||||
|
||||
getAdvType : Str -> AdvType = \s -> case s of {
|
||||
"在" + _ => ATPlace True ; -- certain that True
|
||||
_ => ATPlace False -- uncertain whether ATPlace
|
||||
} ;
|
||||
|
||||
mkSubj : Str -> Str -> {prePart : Str ; sufPart : Str} = \p,s -> {
|
||||
prePart = word p ;
|
||||
sufPart = word s
|
||||
} ;
|
||||
|
||||
Preposition = {prepPre : Str ; prepPost : Str} ;
|
||||
|
||||
-- added by AR
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ lin
|
||||
|
||||
very_AdA = ssword "非常" ;
|
||||
|
||||
by8means_Prep = mkPrep [] "旁边" ;
|
||||
by8means_Prep = mkPrep [] "旁边" mannerAdvType ;
|
||||
-- in_Prep = mkPrep "里" []; --- in Paris
|
||||
in_Prep = mkPrep "在" "中" ; --- in the house, the car, etc
|
||||
possess_Prep = mkPrep [] "的" ;
|
||||
@@ -66,12 +66,12 @@ lin
|
||||
|
||||
|
||||
above_Prep = mkPrep [] "上边" ;
|
||||
after_Prep = mkPrep [] "以后" ;
|
||||
after_Prep = mkPrep [] "以后" timeAdvType ;
|
||||
under_Prep = mkPrep [] "下" ;
|
||||
why_IAdv = mkIAdvL "为什么" ;
|
||||
too_AdA = mkAdA "太" ;
|
||||
|
||||
before_Prep = mkPrep [] "之前" ;
|
||||
before_Prep = mkPrep [] "之前" timeAdvType ;
|
||||
between_Prep = mkPrep [] "之间" ;
|
||||
but_PConj = mkPConjL "但是" ;
|
||||
|
||||
@@ -83,7 +83,7 @@ but_PConj = mkPConjL "但是" ;
|
||||
can8know_VV = mkV "会" [] [] [] [] "不" ; ----
|
||||
|
||||
|
||||
except_Prep = mkPrep "以外" "除了" ;
|
||||
except_Prep = mkPrep "以外" "除了" mannerAdvType ;
|
||||
for_Prep = mkPrep "为了" ;
|
||||
from_Prep = mkPrep "从" ;
|
||||
in8front_Prep = mkPrep zai_s "前边" ;
|
||||
@@ -125,9 +125,9 @@ both7and_DConj = {s = table { -- modified by chenpeng 11.19
|
||||
}
|
||||
} ;
|
||||
|
||||
by8agent_Prep = mkPrep "被" ; -- by for agent in passive
|
||||
by8agent_Prep = mkPrep "被" [] mannerAdvType; -- by for agent in passive
|
||||
-- [mark] 被
|
||||
during_Prep = mkPrep "在" "期间" ; -- [mark] often equivalent to nothing
|
||||
during_Prep = mkPrep "在" "期间" timeAdvType ; -- [mark] often equivalent to nothing
|
||||
-- translation for "he swam during this summer. " and "he swam this summer." are often the same
|
||||
|
||||
either7or_DConj = {s = table { -- modified by chenpeng 11.19
|
||||
@@ -173,7 +173,7 @@ therefore_PConj = ssword "因此" ;
|
||||
through_Prep = mkPrep "通过" ;
|
||||
which_IQuant = mkIQuant "哪" ;
|
||||
--which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context
|
||||
without_Prep = mkPrep "没有" ;
|
||||
without_Prep = mkPrep "没有" [] mannerAdvType ;
|
||||
youPol_Pron = ssword "您" ; -- polite you
|
||||
|
||||
}
|
||||
|
||||
@@ -43,7 +43,8 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
|
||||
(insertObj (mkNP (infVP vp)) (predV v v.part)) ** {c2 = vp.c2 ; isPre = vp.isPre} ;
|
||||
|
||||
AdvVP vp adv = case adv.advType of {
|
||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
||||
ATPlace True => insertAdv adv vp ; -- he sleeps on the table (zai - shang)
|
||||
_ => insertAdv (ss (zai_V.s ++ adv.s)) vp -- he sleeps in the house / today
|
||||
} ;
|
||||
|
||||
@@ -59,12 +60,16 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
|
||||
|
||||
CompCN cn = insertObj cn (predV copula []) ; ----
|
||||
|
||||
CompAdv adv = insertObj adv (predV zai_V []) ;
|
||||
CompAdv adv = case adv.advType of {
|
||||
ATPlace True => insertObj adv (predV noVerb []) ;
|
||||
_ => insertObj adv (predV zai_V [])
|
||||
} ;
|
||||
|
||||
VPSlashPrep vp prep = vp ** {c2 = prep ; isPre = True} ;
|
||||
|
||||
AdvVPSlash vp adv = case adv.advType of {
|
||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
||||
ATPlace True => insertAdv adv vp ; -- he sleeps on the table
|
||||
_ => insertAdv (ss (zai_V.s ++ adv.s)) vp -- he sleeps in the house / today
|
||||
} ** {c2 = vp.c2 ; isPre = vp.isPre} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user