mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 16:42:51 -06:00
refactored adjectives in StemFin to get correct tags in tagged/
This commit is contained in:
@@ -6,10 +6,10 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
PositA a = {
|
PositA a = {
|
||||||
s = \\_ => (snoun2nounSep {s = \\f => a.s ! Posit ! sAN f ; h = a.h}).s
|
s = \\_ => sAdjFull2nforms Posit a ;
|
||||||
} ;
|
} ;
|
||||||
ComparA a np =
|
ComparA a np =
|
||||||
let acomp = (snoun2nounSep {s = \\f => a.s ! Compar ! sAN f ; h = a.h}).s in {
|
let acomp = sAdjFull2nforms Compar a in {
|
||||||
s = \\isMod,af => case isMod of {
|
s = \\isMod,af => case isMod of {
|
||||||
True => np.s ! NPCase Part ++ acomp ! af ; -- minua isompi
|
True => np.s ! NPCase Part ++ acomp ! af ; -- minua isompi
|
||||||
_ => acomp ! af ++ "kuin" ++ np.s ! NPSep -- isompi kuin minä
|
_ => acomp ! af ++ "kuin" ++ np.s ! NPSep -- isompi kuin minä
|
||||||
@@ -19,7 +19,7 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
|
|||||||
s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPSep
|
s = \\m,af => ad.s ++ ap.s ! m ! af ++ ad.p ++ np.s ! NPSep
|
||||||
} ;
|
} ;
|
||||||
UseComparA a = {
|
UseComparA a = {
|
||||||
s = \\_ => (snoun2nounSep {s = \\f => a.s ! Compar ! sAN f ; h = a.h}).s
|
s = \\_ => sAdjFull2nforms Compar a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||||
@@ -30,13 +30,13 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
|
|||||||
|
|
||||||
ComplA2 a np = {
|
ComplA2 a np = {
|
||||||
s = \\isMod,af =>
|
s = \\isMod,af =>
|
||||||
preOrPost isMod (appCompl True Pos a.c2 np) ((snoun2nounSep {s = \\f => a.s ! Posit ! sAN f ; h = a.h}).s ! af)
|
preOrPost isMod (appCompl True Pos a.c2 np) (sAdjFull2nforms Posit a ! af)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ReflA2 a = {
|
ReflA2 a = {
|
||||||
s = \\isMod,af =>
|
s = \\isMod,af =>
|
||||||
preOrPost isMod
|
preOrPost isMod
|
||||||
(appCompl True Pos a.c2 (reflPron (agrP3 Sg))) ((snoun2nounSep {s = \\f => a.s ! Posit ! sAN f ; h = a.h}).s ! af)
|
(appCompl True Pos a.c2 (reflPron (agrP3 Sg))) (sAdjFull2nforms Posit a ! af)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SentAP ap sc = {
|
SentAP ap sc = {
|
||||||
@@ -52,7 +52,7 @@ concrete AdjectiveFin of Adjective = CatFin ** open ResFin, StemFin, Prelude in
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseA2 a = {
|
UseA2 a = {
|
||||||
s = \\_ => (snoun2nounSep {s = \\f => a.s ! Posit ! sAN f ; h = a.h}).s
|
s = \\_ => sAdjFull2nforms Posit a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
|
|||||||
n = num.n
|
n = num.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
OrdSuperl a = snoun2nounSep {s = \\nc => a.s ! Superl ! sAN nc ; h = a.h} ;
|
OrdSuperl a = {s = sAdjFull2nforms Superl a ; h = a.h} ;
|
||||||
|
|
||||||
OrdNumeralSuperl n a = -- kolmanneksi suurin
|
OrdNumeralSuperl n a = -- kolmanneksi suurin
|
||||||
{s = \\f => n.s ! NOrd (NCase Sg Transl) ++ (snoun2nounSep {s = \\nc => a.s ! Superl ! sAN nc ; h = a.h}).s ! f} ;
|
{s = \\f => n.s ! NOrd (NCase Sg Transl) ++ (snoun2nounSep {s = \\nc => a.s ! Superl ! sAN nc ; h = a.h}).s ! f} ;
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ oper
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
||||||
|
SAdjFull = {s : Degree => SAForm => Str ; h : Harmony} ;
|
||||||
|
|
||||||
|
sAdjFull2nforms : Degree -> SAdjFull -> NForm => Str = \d,a -> (snoun2nounSep {s = \\nc => a.s ! d ! sAN nc ; h = a.h}).s ;
|
||||||
|
|
||||||
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
||||||
|
|
||||||
@@ -70,7 +73,7 @@ oper
|
|||||||
sAAdv : SAForm = AAdv ;
|
sAAdv : SAForm = AAdv ;
|
||||||
sANGen : (SAForm => Str) -> Str = \a -> a ! AN (NCase Sg Gen) ;
|
sANGen : (SAForm => Str) -> Str = \a -> a ! AN (NCase Sg Gen) ;
|
||||||
|
|
||||||
mkAdj : (hyva,parempi,paras : SNoun) -> (hyvin,paremmin,parhaiten : Str) -> {s : Degree => SAForm => Str ; h : Harmony} = \h,p,ps,hn,pn,ph -> {
|
mkAdj : (hyva,parempi,paras : SNoun) -> (hyvin,paremmin,parhaiten : Str) -> SAdjFull = \h,p,ps,hn,pn,ph -> {
|
||||||
s = table {
|
s = table {
|
||||||
Posit => table {
|
Posit => table {
|
||||||
AN nf => h.s ! nf ;
|
AN nf => h.s ! nf ;
|
||||||
|
|||||||
@@ -125,6 +125,9 @@ param
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
||||||
|
SAdjFull = {s : Degree => SAForm => Str ; h : Harmony} ;
|
||||||
|
|
||||||
|
sAdjFull2nforms : Degree -> SAdjFull -> NForm => Str = \d,a -> (snoun2nounSep {s = \\nc => a.s ! d ! sAN nc ; h = a.h}).s ;
|
||||||
|
|
||||||
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,10 @@ oper
|
|||||||
oper
|
oper
|
||||||
SAForm : Type = SNForm ;
|
SAForm : Type = SNForm ;
|
||||||
SAdj : Type = SNoun ;
|
SAdj : Type = SNoun ;
|
||||||
|
SAdjFull = {s : Degree => SAForm => Str ; h : Harmony} ;
|
||||||
|
|
||||||
|
sAdjFull2nforms : Degree -> SAdjFull -> NForm => Str = \d,a ->
|
||||||
|
\\nf => tagWord (adjectiveTag ++ consTag (tagDegree d) (tagNForm nf)) (a.s ! Posit ! 0) ; ---- order diff from UD
|
||||||
|
|
||||||
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
snoun2sadj : SNoun -> SAdj = snoun2sadjComp True ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user