From e20bf3c0a7938eb8cf2389e10c28a96f4a5d77f0 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 28 Feb 2014 16:13:12 +0000 Subject: [PATCH] chunking module attached to NDPredTrans. Might be a nice alternative to robustness. But the current version uses variants too much. --- lib/src/experimental/Chunk.gf | 48 +++++++++++++++++++ lib/src/experimental/ChunkEng.gf | 64 ++++++++++++++++++++++++++ lib/src/experimental/NDPredTrans.probs | 51 ++++++++++---------- lib/src/experimental/NDTrans.gf | 2 +- lib/src/experimental/NDTransEng.gf | 2 +- 5 files changed, 141 insertions(+), 26 deletions(-) create mode 100644 lib/src/experimental/Chunk.gf create mode 100644 lib/src/experimental/ChunkEng.gf diff --git a/lib/src/experimental/Chunk.gf b/lib/src/experimental/Chunk.gf new file mode 100644 index 000000000..cea0b5611 --- /dev/null +++ b/lib/src/experimental/Chunk.gf @@ -0,0 +1,48 @@ +abstract Chunk = RGLBase - [Pol,Tense], NDPred ** { + +cat + Chunks ; + Chunk ; + +fun + OneChunk : Chunk -> Chunks ; + PlusChunk : Chunk -> Chunks -> Chunks ; + + ChunkPhr : Chunks -> Phr ; + +fun + + AP_Chunk : AP -> Chunk ; + AdA_Chunk : AdA -> Chunk ; + Adv_Chunk : Adv -> Chunk ; + AdV_Chunk : AdV -> Chunk ; + AdN_Chunk : AdN -> Chunk ; + CN_Pl_Chunk : CN -> Chunk ; + CN_Sg_Chunk : CN -> Chunk ; + CN_Pl_Gen_Chunk : CN -> Chunk ; + CN_Sg_Gen_Chunk : CN -> Chunk ; + Conj_Chunk : Conj -> Chunk ; + IAdv_Chunk : IAdv -> Chunk ; + IP_Chunk : IP -> Chunk ; + NP_Chunk : NP -> Chunk ; + NP_Gen_Chunk : NP -> Chunk ; + Numeral_Chunk : Numeral -> Chunk ; + Ord_Chunk : Ord -> Chunk ; + Predet_Chunk : Predet -> Chunk ; + Prep_Chunk : Prep -> Chunk ; + RP_Chunk : RP -> Chunk ; + Subj_Chunk : Subj -> Chunk ; + VP_Chunk : VP -> Chunk ; + VP_np_Chunk : PrVP_np -> Chunk ; + VP_none_Chunk : PrVP_none -> Chunk ; + VP_s_Chunk : PrVP_s -> Chunk ; + + neg_Chunk : Chunk ; + copula_Chunk : Chunk ; + past_copula_Chunk : Chunk ; + future_Chunk : Chunk ; + cond_Chunk : Chunk ; + perfect_Chunk : Chunk ; + past_perfect_Chunk : Chunk ; + +} \ No newline at end of file diff --git a/lib/src/experimental/ChunkEng.gf b/lib/src/experimental/ChunkEng.gf new file mode 100644 index 000000000..997376204 --- /dev/null +++ b/lib/src/experimental/ChunkEng.gf @@ -0,0 +1,64 @@ +concrete ChunkEng of Chunk = + RGLBaseEng - [Pol,Tense], + NDPredEng + + ** open (PI=PredInstanceEng), ResEng, Prelude in { + +lincat + Chunks = {s : Str} ; + Chunk = {s : Str}; + +lin + OneChunk c = c ; + PlusChunk c cs = cc2 c cs ; + +---- ChunkPhr c = c ; + +lin + + + AP_Chunk ap = allAgrSS (\a -> ap.s ! a) ; + AdA_Chunk ada = ada ; + Adv_Chunk adv = adv ; + AdV_Chunk adv = adv ; + AdN_Chunk adn = adn ; + CN_Pl_Chunk cn = ss (cn.s ! Pl ! Nom) ; + CN_Sg_Chunk cn = ss (cn.s ! Sg ! Nom) ; + CN_Pl_Gen_Chunk cn = ss (cn.s ! Pl ! Gen) ; + CN_Sg_Gen_Chunk cn = ss (cn.s ! Sg ! Gen) ; + Conj_Chunk conj = ss conj.s2 ; + IAdv_Chunk iadv = iadv ; + IP_Chunk ip = ss (ip.s ! NCase Nom) ; + NP_Chunk np = ss (np.s ! NCase Nom) | ss (np.s ! NPAcc) ; + NP_Gen_Chunk np = ss (np.s ! NCase Gen) | ss (np.s ! NPNomPoss) ; + Numeral_Chunk num = ss (num.s ! NCard ! Nom) | ss (num.s ! NCard ! Gen) ; + Ord_Chunk ord = ss (ord.s ! Nom) | ss (ord.s ! Gen) ; + Predet_Chunk predet = predet ; + Prep_Chunk prep = prep ; + RP_Chunk rp = ss (rp.s ! RC Neutr (NCase Nom)) | ss (rp.s ! RPrep Masc) ; ---- + Subj_Chunk subj = subj ; + VP_none_Chunk, VP_np_Chunk, VP_s_Chunk = \vp -> + let verb = vp.v ! (PI.VASgP1 | PI.VASgP3 | PI.VAPl) + in + allAgrSS (\a -> + verb.p1 ++ verb.p2 ++ vp.adV ++ verb.p3 ++ vp.part ++ + vp.adj ! a ++ vp.c1 ++ vp.obj1.p1 ! a ++ vp.c2 ++ vp.obj2.p1 ! a ++ vp.adv ++ vp.ext + ) ; + neg_Chunk = ss "not" | ss "doesn't" | ss "don't" ; + copula_Chunk = ss "is" | ss "are" | ss "am" ; + past_copula_Chunk = ss "was" | ss "were" ; + future_Chunk = ss "will" ; + cond_Chunk = ss "would" ; + perfect_Chunk = ss "has" | ss "have" ; + past_perfect_Chunk = ss "had" ; + + +oper + allAgrSS : (Agr -> Str) -> SS = \f -> + ss (f (AgP3Sg Masc)) ; +---- | ss (f (AgP3Sg Fem)) | ss (f (AgP3Sg Neutr)) | +---- ss (f (AgP1 Sg)) | ss (f (AgP1 Pl)) | ss (f (AgP2 Sg)) | ss (f (AgP2 Pl)) | +---- ss (f (AgP3Pl)) ; + + +} \ No newline at end of file diff --git a/lib/src/experimental/NDPredTrans.probs b/lib/src/experimental/NDPredTrans.probs index b4daa1e67..959ded144 100644 --- a/lib/src/experimental/NDPredTrans.probs +++ b/lib/src/experimental/NDPredTrans.probs @@ -53360,7 +53360,6 @@ zealand_PN 1.8658456945610598e-5 zimbabwe_PN 1.8658456945610598e-5 zoe_PN 1.8658456945610598e-5 zurich_PN 2.9853531112976957e-4 -PhrUtt 1.0 PNeg 2.5657769160446448e-2 PPos 0.9743422308395535 AgentPastPartAP_none 1.4729709824716454e-4 @@ -65214,28 +65213,32 @@ work_VV 1.8203883495145632e-3 write_VV 3.6407766990291263e-4 NoVoc 0.99 VocNP 0.01 -AP 3.030247037335075e-3 -AdA 9.109495956621799e-4 -AdV 4.7404486565341235e-3 -Adv 5.328685581035249e-3 -CN 0.12420511332822734 -Conj 1.153607720713571e-2 -Det 6.831013306700838e-2 -IAdv 2.5406809209644978e-5 -IP 7.206294975826576e-5 -N 0.12385449936113424 -NP 0.16918717612092532 -Num 7.879021089499412e-2 -Ord 7.825297236570654e-4 -Predet 2.7716519137794524e-4 -Prep 4.62935160899013e-2 -Pron 1.4304957469001383e-2 -Quant 7.624860609005836e-2 -RP 3.649803628461909e-3 -RS 4.061393937658158e-3 -PrS 5.144324534570353e-2 -Subj 5.751177721092363e-4 +AP_Chunk 3.030247037335075e-3 +AdA_Chunk 9.109495956621799e-4 +AdV_Chunk 4.7404486565341235e-3 +Adv_Chunk 5.328685581035249e-3 +CN_Chunk 0.12420511332822734 +Conj_Chunk 1.153607720713571e-2 +IAdv_Chunk 2.5406809209644978e-5 +IP_Chunk 7.206294975826576e-5 +NP_Chunk 0.16918717612092532 +Num_Chunk 7.879021089499412e-2 +Ord_Chunk 7.825297236570654e-4 +Predet_Chunk 2.7716519137794524e-4 +Prep_Chunk 4.62935160899013e-2 +RP_Chunk 3.649803628461909e-3 +Subj_Chunk 5.751177721092363e-4 +VP_Chunk 0.1 +PhrUtt 0.99 +PhrChunk 0.01 +OneChunk 0.8 +PlusChunk 0.2 -V 2.0368869914365196e-2 -V2 2.869445032137304e-2 +neg_Chunk 5.751177721092363e-4 +copula_Chunk 5.751177721092363e-4 +past_copula_Chunk 5.751177721092363e-4 +future_Chunk 5.751177721092363e-4 +cond_Chunk 5.751177721092363e-4 +perfect_Chunk 5.751177721092363e-4 +past_perfect_Chunk 5.751177721092363e-4 diff --git a/lib/src/experimental/NDTrans.gf b/lib/src/experimental/NDTrans.gf index 26ac686b6..e841cd374 100644 --- a/lib/src/experimental/NDTrans.gf +++ b/lib/src/experimental/NDTrans.gf @@ -4,7 +4,7 @@ abstract NDTrans = NDLift ,Extensions [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] ,Dictionary - [Pol,Tense] - + ,Chunk ** { flags startcat=Phr; diff --git a/lib/src/experimental/NDTransEng.gf b/lib/src/experimental/NDTransEng.gf index 48f291afd..718e021b0 100644 --- a/lib/src/experimental/NDTransEng.gf +++ b/lib/src/experimental/NDTransEng.gf @@ -4,7 +4,7 @@ concrete NDTransEng of NDTrans = NDLiftEng ,ExtensionsEng [CN,NP,AdA,AdV,CompoundCN,AdAdV,UttAdV,ApposNP] ,DictionaryEng - [Pol,Tense] - + ,ChunkEng ** open ResEng, PredInstanceEng, Prelude, (Pr = PredEng) in { flags