mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
After checkign with tests, identified problems, fixed some - eg more fine-grained animNumSizeNum
This commit is contained in:
@@ -130,7 +130,7 @@ lin
|
||||
let ap=adjFormsAdjective a in
|
||||
let as_n_units=(how_IAdv.s
|
||||
++ card.s ! Neut ! Inanimate ! Nom
|
||||
++ cn.s ! numSizeNum Nom card.size ! (numSizeCase Nom card.size)) in { --? Nom?
|
||||
++ cn.s ! animNumSizeNum cn.anim Nom card.size ! (numSizeCase Nom card.size)) in { --? Nom?
|
||||
s=\\gn,anim,cas=> ap.s!gn!anim!cas ++ as_n_units ;
|
||||
short=\\a=> ap.short ! a ++ as_n_units ;
|
||||
preferShort=PreferFull ;
|
||||
@@ -140,7 +140,7 @@ lin
|
||||
-- : Card -> CN -> NP -> NP ; -- x ounces of this flour
|
||||
n_units_of_NP card cn np = {
|
||||
s = \\cas => card.s ! Neut ! Inanimate ! cas
|
||||
++ cn.s ! numSizeNum cas card.size ! (numSizeCase cas card.size)
|
||||
++ cn.s ! animNumSizeNum cn.anim cas card.size ! (numSizeCase cas card.size)
|
||||
++ np.s ! Gen ;
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g (numSizeNumber card.size)) P3
|
||||
@@ -150,7 +150,7 @@ lin
|
||||
s=\\n,cas=> cn.s ! n ! cas
|
||||
++ "на"
|
||||
++ card.s ! Neut ! Inanimate ! Nom
|
||||
++ cn_unit.s ! numSizeNum Nom card.size ! numSizeCase Nom card.size
|
||||
++ cn_unit.s ! animNumSizeNum cn_unit.anim Nom card.size ! numSizeCase Nom card.size
|
||||
} ;
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
@@ -25,7 +25,7 @@ lin
|
||||
beer_N = mkN "пиво" neuter inanimate ;
|
||||
beg_V2V = dirV2 (mkV imperfective transitive "просить" "прошу" "просит" "4c");
|
||||
belly_N = mkN "живот" ;
|
||||
big_A = (mkAltShort (mkA "большой" "больше") (mkA "великий")) ;
|
||||
big_A = (mkAltShort (mkA "большой" "больше" "4b") (mkA "великий")) ;
|
||||
bike_N = mkN "велосипед" ;
|
||||
bird_N = mkN "птица" feminine animate ;
|
||||
bite_V2 = mkV2 (mkV imperfective "кусать" "кусаю") ;
|
||||
@@ -59,7 +59,7 @@ lin
|
||||
cheese_N = mkN "сыр" ;
|
||||
child_N = (mkNAltPl (mkN "ребёнок" masculine animate "3*a") (mkN "деть")) ** {pins="детьми"};
|
||||
church_N = mkN "церковь" feminine animate "8*e" ;
|
||||
city_N = mkN "город" ;
|
||||
city_N = mkN "город" masculine inanimate "1c(1)" ;
|
||||
clean_A = mkA "чистый" "чище";
|
||||
clever_A = mkA "умный" "" "1*a/b";
|
||||
close_V2 = mkV2 (mkV imperfective "закрывать" "закрываю");
|
||||
@@ -196,7 +196,7 @@ lin
|
||||
music_N = mkN "музыка" ;
|
||||
name_N = mkN "имя" neuter inanimate "8°c";
|
||||
narrow_A = mkA "узкий" "уже" "3*a/c'";
|
||||
near_A = mkA "близкий" "ближе";
|
||||
near_A = mkA "близкий" "ближе" "3*a/c'";
|
||||
neck_N = mkN "шея" feminine inanimate "6a";
|
||||
new_A = mkA "новый" ;
|
||||
newspaper_N = mkN "газета" ;
|
||||
@@ -246,7 +246,7 @@ lin
|
||||
rub_V2 = mkV2 (mkV imperfective "тереть" "тру" "трёт");
|
||||
rubber_N = mkN "резина" ;
|
||||
rule_N = mkN "правило" ;
|
||||
run_V = mkV imperfective intransitive "бегать" "бегу" "бежит" ;
|
||||
run_V = mkV imperfective intransitive "бегать" "бегаю" "бегает" ;
|
||||
salt_N = mkN "соль" ;
|
||||
sand_N = (mkNplus (mkN "песок" masculine inanimate "3*b")) ** {sptv="песку"} ;
|
||||
say_VS = mkVS (mkV imperfective "говорить" "говорю" "говорит") ;
|
||||
|
||||
@@ -11,7 +11,7 @@ lin
|
||||
let n = numSizeNumber det.size in {
|
||||
s=case det.type of {
|
||||
_ => \\cas => det.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size
|
||||
++ cn.s ! animNumSizeNum cn.anim cas det.size ! numSizeCase cas det.size
|
||||
} ;
|
||||
pron=False ;
|
||||
a=Ag (gennum cn.g (forceMaybeNum cn.mayben n)) P3
|
||||
@@ -99,7 +99,7 @@ lin
|
||||
DetQuantOrd quant num ord = {
|
||||
s=\\g,a,cas => num.s ! g ! a ! cas
|
||||
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas
|
||||
++ (adjFormsAdjective ord).s ! gennum quant.g (numSizeNum cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
||||
++ (adjFormsAdjective ord).s ! gennum quant.g (animNumSizeNum Inanimate cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
||||
type=quant.type ;
|
||||
g=quant.g ;
|
||||
c=quant.c ;
|
||||
|
||||
@@ -254,8 +254,7 @@ lin pot01 = {
|
||||
attr => table {
|
||||
hund => \\ g, a, c => case <g, a, c> of {
|
||||
<_, _, (Nom|VocRus|Acc)> => "сто";
|
||||
<_, _, (Gen|Ptv|Dat|Pre|Loc)> => "ста";
|
||||
<_, _, Ins> => "сотней"
|
||||
<_, _, (Gen|Ptv|Dat|Ins|Pre|Loc)> => "ста"
|
||||
} ;
|
||||
_ => \\ g, a, c => []
|
||||
} ;
|
||||
@@ -383,7 +382,7 @@ lin pot2as3 n = {
|
||||
|
||||
-- : Sub1000 -> Sub1000000 ; -- m * 1000
|
||||
lin pot3 n = { -- TODO: fix cases like: 111000, 100000
|
||||
s = \\g, a, c => n.s ! attr ! Fem ! a ! c ++ mille.s ! numSizeNum c n.size ! numSizeCase c n.size ;
|
||||
s = \\g, a, c => n.s ! attr ! Fem ! a ! c ++ mille.s ! animNumSizeNum Animate c n.size ! numSizeCase c n.size ;
|
||||
o = prependPF (case n.just1 of {
|
||||
False => n.s ! attr ! Neut ! Inanimate ! Gen ++ BIND ;
|
||||
True => ""
|
||||
@@ -397,9 +396,9 @@ lin pot3 n = { -- TODO: fix cases like: 111000, 100000
|
||||
-- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
||||
lin pot3plus n m = {
|
||||
s = \\g, a, c => n.s ! attr ! Fem ! a ! c
|
||||
++ mille.s ! numSizeNum c n.size ! numSizeCase c n.size
|
||||
++ mille.s ! animNumSizeNum Animate c n.size ! numSizeCase c n.size
|
||||
++ m.s ! indep ! g ! a ! c ;
|
||||
o = prependPF (n.s ! attr ! Neut ! Inanimate ! Nom ++ mille.s ! numSizeNum Nom n.size ! numSizeCase Nom n.size)
|
||||
o = prependPF (n.s ! attr ! Neut ! Inanimate ! Nom ++ mille.s ! animNumSizeNum Animate Nom n.size ! numSizeCase Nom n.size)
|
||||
(m.o ! indep) ; -- TODO: chk
|
||||
just1 = False ;
|
||||
size = Num5
|
||||
|
||||
@@ -66,7 +66,7 @@ lin
|
||||
|
||||
-- : IDet -> CN -> IP ; -- which five songs
|
||||
IdetCN idet cn = caseTableToRecord (\\cas => idet.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas idet.size ! numSizeCase cas idet.size)
|
||||
++ cn.s ! animNumSizeNum cn.anim cas idet.size ! numSizeCase cas idet.size)
|
||||
(Ag (gennum cn.g (forceMaybeNum cn.mayben (numSizeNumber idet.size))) P3) cn.anim ;
|
||||
|
||||
-- : IDet -> IP ; -- which five
|
||||
|
||||
@@ -1433,18 +1433,20 @@ oper
|
||||
= \ns -> case ns of {Num1 => Sg ; NumAll | Num2_4 | Num5 => Pl} ;
|
||||
|
||||
-- The following two used in tandem to form the word, controlled by numeral
|
||||
numSizeNum : Case -> NumSize -> Number
|
||||
= \cas,ns -> case <cas,ns> of {
|
||||
<Nom|Acc,Num2_4> => Sg ;
|
||||
<_,Num1> => Sg ;
|
||||
animNumSizeNum : Animacy -> Case -> NumSize -> Number
|
||||
= \anim,cas,ns -> case <anim,cas,ns> of {
|
||||
<Animate,Acc,Num2_4> => Pl ;
|
||||
<Inanimate,Acc,Num2_4> => Sg ;
|
||||
<_,Nom,Num2_4> => Sg ;
|
||||
<_,_,Num1> => Sg ;
|
||||
_ => Pl
|
||||
} ;
|
||||
numSizeCase : Case -> NumSize -> Case
|
||||
= \cas,ns -> case <cas,ns> of {
|
||||
<Nom,Num1 | NumAll> => Nom ;
|
||||
<Nom,Num2_4 | Num5> => Gen ;
|
||||
<Acc,Num1 | NumAll> => Nom ;
|
||||
<Acc,Num2_4 | Num5> => Gen ;
|
||||
<Acc,Num2_4> => Gen ;
|
||||
<Acc,Num5> => Gen ;
|
||||
_ => cas
|
||||
} ;
|
||||
numSizeGenAgr : NumSize -> Gender -> Person -> Agr
|
||||
@@ -1458,7 +1460,7 @@ oper
|
||||
|
||||
applyPrep : ComplementCase -> NounPhrase -> Str
|
||||
= \prep,np -> case <np.pron, prep.hasPrep, prep.c> of {
|
||||
<True, True, Gen|Dat|Acc|Ins|Ptv> => prep.s ++ "н" ++ BIND ++ (np.s ! prep.c) ;
|
||||
<True, True, Gen|Dat|Acc|Ins|Ptv|Loc> => prep.s ++ "н" ++ BIND ++ (np.s ! prep.c) ;
|
||||
_ => prep.s ++ np.s ! prep.c
|
||||
} ;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ lin
|
||||
-- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and
|
||||
CNSymbNP det cn xs = {
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size
|
||||
++ cn.s ! animNumSizeNum cn.anim cas det.size ! numSizeCase cas det.size
|
||||
++ xs.s ;
|
||||
pron=False ;
|
||||
a=Ag (gennum cn.g (forceMaybeNum cn.mayben ((numSizeNumber det.size)))) P3
|
||||
|
||||
@@ -130,6 +130,14 @@ gt UseQCl (TTAnt ? ASimul) ? (QuestSlash whatSg_IP (SlashVP (UsePron she_Pron) (
|
||||
gt UseQCl (TTAnt ? ASimul) PPos (QuestIComp (CompIAdv when_IAdv) (MassNP (UseN apple_N))) | l -treebank
|
||||
gt UseQCl (TTAnt ? ASimul) PNeg (QuestIAdv when_IAdv (ImpersCl (AdvVP UseCopula (PrepNP part_Prep (MassNP (UseN apple_N)))))) | l -treebank
|
||||
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a write_V2) (DetCN (DetQuant DefArt (NumCard (NumDigits (IDig D_1)))) (UseN woman_N)) )) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a write_V2) (DetCN (DetQuant DefArt (NumCard (NumDigits (IDig D_2)))) (UseN woman_N)) )) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a write_V2) (DetCN (DetQuant DefArt (NumCard (NumDigits (IDig D_5)))) (UseN woman_N)) )) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a write_V2) (DetCN (DetQuant (PossPron youSg_Pron) NumSg) (UseN woman_N)))) | l -treebank
|
||||
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (UseComp (CompNP (DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot3 (pot2plus pot01 (pot0as1 (pot0 n2)))))))))))) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (UseComp (CompNP (DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot3 (pot2 ?)))))))))) | l -treebank
|
||||
|
||||
gt ImpVP (UseCopula) | l -treebank
|
||||
gt CountNP many_Det (MassNP (UseN city_N)) | l -treebank
|
||||
gt CountNP many_Det (UsePron they_Pron) | l -treebank
|
||||
|
||||
@@ -27,6 +27,27 @@ This would require some Russian-specific (though quite straightforwward) Pron ->
|
||||
|
||||
## Not clear
|
||||
|
||||
> gt UseCl (TTAnt TPres ASimul) PPos (ExistNP (MassNP (bottle_of_CN (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 ?)))))))) (UseN ashes_N))))) | l
|
||||
linking ... OK
|
||||
Languages: AllRus
|
||||
бутылка этих двух пепла существует
|
||||
|
||||
** UseCl (TTAnt TPres ASimul) PPos (have_name_Cl (DetNP (DetQuant (PossPron i_Pron) NumSg)) somebody_NP)
|
||||
LangRus-NEW> моего имя кто-то
|
||||
|
||||
** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a like_V2) (DetNP (DetQuant (PossPron he_Pron) NumSg))))
|
||||
LangRus-NEW> нравишься его
|
||||
|
||||
** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a speak_V2) (DetNP (DetQuant (PossPron ∅) NumSg))))
|
||||
LangRus-NEW> говоришь на его
|
||||
|
||||
** UseCl (TTAnt TPres ASimul) PPos (ExistNPAdv somebody_NP (timeHourMinute twoHour (NumNumeral (num (pot2as3 (pot1as2 (pot1 ∅)))))))
|
||||
LangRus-NEW> кто-то в 2:двадцать существует
|
||||
LangRus-OLD> [ExistNPAdv]
|
||||
|
||||
** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a write_V2) (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))))) (UseN worm_N))))
|
||||
LangRus-NEW> пишешь этих двух червя
|
||||
|
||||
> l UttS (AdvS (AdAdv quite_Adv (ComparAdvAdj less_CAdv narrow_A everything_NP)) (UseCl (TTAnt TPres ASimul) PNeg (ExistNP something_NP)))
|
||||
довольно менее узко , чем всё что &+ -то не существует
|
||||
|
||||
@@ -95,3 +116,8 @@ should be: стоодиннадцатитысячное
|
||||
ста &+ тысячное
|
||||
should be: стотысячное
|
||||
|
||||
## Optimization
|
||||
|
||||
+ Slash2V3 1492992 (107136,31)
|
||||
+ Slash3V3 1492992 (107136,31)
|
||||
+ SlashV2VNP 71663616 (214272,62)
|
||||
|
||||
Reference in New Issue
Block a user