Jpn19.01.15

This commit is contained in:
lizazim
2015-01-19 09:51:31 +00:00
parent 993014699f
commit eab989c1d7
6 changed files with 737 additions and 72 deletions

View File

@@ -1,59 +1,144 @@
concrete ChunkJpn of Chunk = {} ;
{-
---- TODO: everything. Since CatJpn.Utt is not {s : Str}, nothing works in the functor
CatJpn, ExtensionsJpn [VPS,VPI] **
ChunkFunctor
concrete ChunkJpn of Chunk = CatJpn, ExtensionsJpn [VPS,VPI] **
ChunkFunctor[Chunk, Chunks, OneChunk, PlusChunk, ChunkPhr,
AdA_Chunk, AdV_Chunk, AdN_Chunk, PConj_Chunk, Symb_Chunk,
fullstop_Chunk, exclmark_Chunk, questmark_Chunk, comma_Chunk,
colon_Chunk, semicolon_Chunk, quote_Chunk, lpar_Chunk,
rpar_Chunk, dash_Chunk]
with (Syntax = SyntaxJpn), (Extensions = ExtensionsJpn) **
open
SyntaxJpn, (E = ExtensionsJpn), Prelude,
ResJpn, (P = ParadigmsJpn) in {
oper
emptyNP : NP = mkNP [] ;
flags coding = utf8 ;
-- exceptions to functor
lincat
VC = {s : Speaker => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Str ;
te, ba : Speaker => Polarity => Str} ;
lin
Conj_Chunk conj = ss (conj.s ! CSent).s2 ;
Numeral_Nom_Chunk num = ss (num.s ++ ge_s) ;
CN_Pl_Chunk cn = cn ;
Subj_Chunk subj = ss (subj.prePart ++ subj.sufPart) ;
Prep_Chunk prep = ss (prep.prepPre ++ prep.prepPost) ;
Predet_Chunk predet = predet ;
AP_Chunk ap = {s = (mkUtt ap).s ! Wa ! Resp} ;
Adv_Chunk adv = {s = adv.s ! Resp} ;
S_Chunk s = {s = s.s ! Wa ! Resp} ;
SSlash_Chunk sslash = {s = sslash.s ! Resp} ;
QS_Chunk qs = {s = qs.s ! Wa ! Resp} ;
CN_Pl_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Pl ! Resp} ;
CN_Sg_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Sg ! Resp} ;
CN_Pl_Gen_Chunk = CN_Pl_Chunk ;
CN_Sg_Gen_Chunk = CN_Sg_Chunk ;
Conj_Chunk conj = {s = conj.s} ;
Det_Chunk det = {s = det.quant ! Resp ++ det.num ++ det.postpositive} ;
IAdv_Chunk iadv = {s = iadv.s ! Resp} ;
IP_Chunk ip = {s = ip.s_subj ! Resp} ;
NP_Nom_Chunk np = {s = (mkUtt np).s ! Wa ! Resp} ;
NP_Acc_Chunk, NP_Gen_Chunk = NP_Nom_Chunk ;
Numeral_Nom_Chunk num = {s = num.s} ;
Numeral_Gen_Chunk = Numeral_Nom_Chunk ;
Ord_Nom_Chunk ord = {s = ord.attr} ;
Ord_Gen_Chunk = Ord_Nom_Chunk ;
Predet_Chunk predet = {s = predet.s} ;
Prep_Chunk prep = {s = prep.s} ;
RP_Nom_Chunk rp = {s = rp.s ! Resp} ;
RP_Gen_Chunk, RP_Acc_Chunk = RP_Nom_Chunk ;
Subj_Chunk subj = {s = subj.s} ;
VPS_Chunk vps = {s = vps.prepositive ! Resp ++ vps.obj ! Resp ++ vps. prep ++
vps.verb ! SomeoneElse ! Inanim ! Resp} ;
VPI_Chunk vpi = {s = vpi.prepositive ! Resp ++ vpi.obj ! Resp ++ vpi. prep ++
vpi.verb ! SomeoneElse ! Inanim } ;
refl_SgP1_Chunk, refl_SgP2_Chunk, refl_SgP3_Chunk,
refl_PlP1_Chunk, refl_PlP2_Chunk, refl_PlP3_Chunk = ss "自分" | ss "自分自身" ; -- "jibun" | "jibunjishin"
neg_Chunk = ss "ない" | ss "しない" | ss "ではない" | ss "ません" | ss "ないで" ;
copula_Chunk, future_Chunk = ss "です" | ss "だ" ;
copula_neg_Chunk, future_neg_Chunk = ss "ではない" | ss "ではありません" ;
copula_inf_Chunk = ss "です" | ss "だ" ;
past_copula_Chunk = ss "でした" | ss "だった" ;
past_copula_neg_Chunk = ss "ではありませんでした" | ss "ではなかった" ;
cond_Chunk = copula_Chunk ; -- no "would" in Japanese
cond_neg_Chunk = copula_neg_Chunk ;
perfect_Chunk = past_copula_Chunk ** (ss "てしまった" | ss "ちゃった" | ss "でしまった" |
ss "じゃった" | ss "ことがある" | ss "ことがあります") ;
perfect_neg_Chunk = past_copula_neg_Chunk ** (ss "てしまわない" | ss "でしまわない" |
ss "ことがありません" | ss "ことがない") ;
past_perfect_Chunk = perfect_Chunk ;
past_perfect_neg_Chunk = perfect_neg_Chunk ;
V2_V v2 = lin VC {
s = \\sp => v2.s ;
a_stem = \\sp => v2.a_stem ;
i_stem = \\sp => v2.i_stem ;
te = \\sp => v2.te ;
ba = \\sp => v2.ba
} ;
VA_V va = lin VC {
s = \\sp => va.s ;
a_stem = \\sp => va.a_stem ;
i_stem = \\sp => va.i_stem ;
te = \\sp => va.te ;
ba = \\sp => va.ba
} ;
VQ_V, VS_V = V2_V ;
VV_V vv = lin VC {
s = vv.s ;
a_stem = vv.a_stem ;
i_stem = vv.i_stem ;
te = vv.te ;
ba = vv.ba
} ;
V3_V v3 = lin VC {
s = v3.s ;
a_stem = v3.a_stem ;
i_stem = v3.i_stem ;
te = v3.te ;
ba = v3.ba
} ;
V2A_V v2a = lin VC {
s = \\sp => v2a.s ;
a_stem = \\sp => v2a.a_stem ;
i_stem = \\sp => v2a.i_stem ;
te = \\sp => v2a.te ;
ba = \\sp => v2a.ba
} ;
V2Q_V, V2S_V, V2V_V = V2A_V ;
UseVC t p vc = lin VPS {
verb = \\sp,a,st => case t.a of {
Simul => vc.s ! sp ! st ! t.t ! p.b ;
Anter => case t.t of {
TFut => vc.s ! sp ! st ! TPres ! p.b ;
_ => vc.s ! sp ! st ! TPast ! p.b
}
} ;
a_stem = \\sp,a,st => vc.a_stem ! sp ;
i_stem = \\sp,a,st => vc.i_stem ! sp ;
te = \\sp,a,st => vc.te ! sp ! p.b ;
ba = \\sp,a,st => vc.ba ! sp ! p.b ;
prep = "" ;
obj = \\st => "" ;
prepositive = \\st => ""
} ;
}
{-
emptyNP : NP = lin NP {s = \\st => "" ;
prepositive = \\st => "" ;
needPart = False ;
changePolar = False ;
meaning = SomeoneElse ;
anim = Inanim} ;
lin
NP_Acc_Chunk np = np ;
NP_Gen_Chunk np = ss (np.s ++ de_s) ;
VPI_Chunk vpi = vpi ;
copula_inf_Chunk = ss copula_s ;
refl_SgP1_Chunk = ss reflPron ;
refl_SgP2_Chunk = ss reflPron ;
refl_SgP3_Chunk = ss reflPron ;
refl_PlP1_Chunk = ss reflPron ;
refl_PlP2_Chunk = ss reflPron ;
refl_PlP3_Chunk = ss reflPron ;
neg_Chunk = ss neg_s ;
copula_Chunk = ss copula_s ;
copula_neg_Chunk = ss (neg_s ++ copula_s) ;
past_copula_Chunk = ss "了" ;
past_copula_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
future_Chunk = ss copula_s ; ----
future_neg_Chunk = ss (neg_s ++ copula_s) ;
cond_Chunk = ss copula_s ; ----
cond_neg_Chunk = ss (neg_s ++ copula_s) ;
perfect_Chunk = ss "了" ;
perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
past_perfect_Chunk = ss "了" ;
past_perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ;
}
-}