1
0
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:
aarne
2013-09-28 03:06:55 +00:00
parent 573654e125
commit e5fe5d55c9
7 changed files with 59 additions and 40 deletions

View File

@@ -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} ;

View File

@@ -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} ;

View File

@@ -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 "检查" ;

View File

@@ -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

View File

@@ -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

View File

@@ -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
}

View File

@@ -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} ;