From e9eeb9cfa47e880505e8cb650edcd6b9486f9ee8 Mon Sep 17 00:00:00 2001 From: bjorn Date: Fri, 9 May 2008 19:16:56 +0000 Subject: [PATCH] Added short forms of adjectives to resource/russian. There is still no way to get at them through the resource API. I'm not sure what the AI should be. Also, I think that some of the forms are wrong, but it's not clear to me exactly what classes of words each paradigm is for. --- lib/resource/russian/MorphoRus.gf | 47 ++++++++++++++++++++++++++++--- lib/resource/russian/ResRus.gf | 11 +++++--- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/lib/resource/russian/MorphoRus.gf b/lib/resource/russian/MorphoRus.gf index 14f446558..978a782b3 100644 --- a/lib/resource/russian/MorphoRus.gf +++ b/lib/resource/russian/MorphoRus.gf @@ -1861,7 +1861,11 @@ oper totDet: Adjective = {s = table { AF Prepos2 _ (ASg Neut) => "том"; AF Prepos _ APl => "тех" ; AF Prepos2 _ APl => "тех" ; - AdvF => "то" + AFShort (ASg Masc) => "тот"; + AFShort (ASg Fem) => "та"; + AFShort (ASg Neut) => "то"; + AFShort APl => "те"; + AdvF => "то" } } ; @@ -1896,6 +1900,10 @@ oper odinDet: Adjective = {s = table { AF Prepos2 _ (ASg Neut) => "одном"; AF Prepos _ APl => "одних"; AF Prepos2 _ APl => "одних"; + AFShort (ASg Masc) => "один"; + AFShort (ASg Fem) => "одна"; + AFShort (ASg Neut) => "одно"; + AFShort APl => "одни"; AdvF => "одно" } } ; @@ -1931,6 +1939,10 @@ oper etotDet: Adjective = {s = table { AF Prepos2 _ (ASg Neut) => "этом"; AF Prepos _ APl => "этих"; AF Prepos2 _ APl => "этих"; + AFShort (ASg Masc) => "этот"; + AFShort (ASg Fem) => "эта"; + AFShort (ASg Neut) => "это"; + AFShort APl => "эти"; AdvF => "это" } } ; @@ -1965,7 +1977,11 @@ oper vesDet: Adjective = {s = table { AF Prepos _ (ASg Neut) => "всём"; AF Prepos2 _ (ASg Neut) => "всём"; AF Prepos _ APl => "всех" ; - AF Prepos2 _ APl => "всех" ; + AF Prepos2 _ APl => "всех"; + AFShort (ASg Masc) => "весь"; + AFShort (ASg Fem) => "вся"; + AFShort (ASg Neut) => "всё"; + AFShort APl => "все"; AdvF => "полностью" } } ; @@ -2001,10 +2017,16 @@ oper uy_j_EndDecl : Str -> Adjective = \s ->{s = table { AF Prepos2 _ (ASg Neut) => s + "ом"; AF Prepos _ APl => s + "ых"; AF Prepos2 _ APl => s + "ых"; + AFShort (ASg Masc) => s; + AFShort (ASg Fem) => s + "а"; + AFShort (ASg Neut) => s + "о" ; + AFShort APl => s + "ы"; AdvF => s +"о" } } ; +{- +-- Commented out since I don't know what the short forms are oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table { AF Nom _ (ASg Masc) => s+"ий"; AF Nom _ (ASg Fem) => s+"ья"; @@ -2039,6 +2061,7 @@ oper ti_j_EndDecl : Str -> Adjective = \s ->{s = table { AdvF => s + "ье" } } ; +-} --oper shi_j_EndDecl : Str -> Adjective = \s ->{s = table { -- AF Nom _ (ASg Masc) => s+"ий"; @@ -2116,6 +2139,10 @@ oper ij_EndK_G_KH_Decl : Str -> Adjective = \s ->{s = table { AF Prepos2 _ (ASg Neut) => s+"ом"; AF Prepos _ APl => s+"их"; AF Prepos2 _ APl => s+"их"; + AFShort (ASg Masc) => s; + AFShort (ASg Fem) => s + "а"; + AFShort (ASg Neut) => s + "о" ; + AFShort APl => s + "и"; AdvF => s + "о" } } ; @@ -2123,12 +2150,12 @@ oper ij_EndK_G_KH_Decl : Str -> Adjective = \s ->{s = table { oper shij_End_Decl : Str -> Adjective = \s ->{s = table { AF Nom _ (ASg Masc) => s+"ий"; AF Nom _ (ASg Fem) => s+"ая"; - AF Nom _ (ASg Neut) => s+"ое"; + AF Nom _ (ASg Neut) => s+"ее"; AF Nom _ APl => s+"ие"; AF Acc Animate (ASg Masc) => s+"его"; AF Acc Inanimate (ASg Masc) => s+"ий"; AF Acc _ (ASg Fem) => s+"ую"; - AF Acc _ (ASg Neut) => s+"ое"; + AF Acc _ (ASg Neut) => s+"ее"; AF Acc Animate APl => s+"их"; AF Acc Inanimate APl => s+"ие"; AF Gen _ (ASg Masc) => s+"его"; @@ -2151,6 +2178,10 @@ oper shij_End_Decl : Str -> Adjective = \s ->{s = table { AF Prepos2 _ (ASg Neut) => s+"ем"; AF Prepos _ APl => s+"их"; AF Prepos2 _ APl => s+"их"; + AFShort (ASg Masc) => s; + AFShort (ASg Fem) => s + "а"; + AFShort (ASg Neut) => s + "е" ; + AFShort APl => s + "и"; AdvF => s + "о" } } ; @@ -2189,6 +2220,10 @@ oper i_oj_EndDecl : Str -> Str -> Adjective = \s, chastica ->{s = table { AF Prepos2 _ (ASg Neut) => s+"ом"+ chastica ; AF Prepos _ APl => s+"их" + chastica; AF Prepos2 _ APl => s+"их" + chastica; + AFShort (ASg Masc) => s; + AFShort (ASg Fem) => s + "а"; + AFShort (ASg Neut) => s + "о" ; + AFShort APl => s + "и"; AdvF => s + "о" } } ; @@ -2225,6 +2260,10 @@ oper uy_oj_EndDecl : Str -> Adjective = \s ->{s = table { AF Prepos2 _ (ASg Neut) => s+"ом"; AF Prepos _ APl => s+"ых"; AF Prepos2 _ APl => s+"ых"; + AFShort (ASg Masc) => s; + AFShort (ASg Fem) => s + "а"; + AFShort (ASg Neut) => s + "о" ; + AFShort APl => s + "ы"; AdvF => s + "о" } } ; diff --git a/lib/resource/russian/ResRus.gf b/lib/resource/russian/ResRus.gf index 3d314309d..1364883ed 100644 --- a/lib/resource/russian/ResRus.gf +++ b/lib/resource/russian/ResRus.gf @@ -283,8 +283,11 @@ oper --2 For $Adjective$ + +-- The short form is only inflected in gender and number. +-- Fixing this would require changing the Degree type. param - AdjForm = AF Case Animacy GenNum | AdvF; + AdjForm = AF Case Animacy GenNum | AFShort GenNum | AdvF; oper Complement = {s2 : Str ; c : Case} ; @@ -323,13 +326,13 @@ oper genGNum : GenNum -> Gender = \gn -> case gn of { ASg Fem => Fem; ASg Masc => Masc; _ => Neut } ; oper numAF: AdjForm -> Number = \af -> - case af of { AdvF => Sg; AF _ _ gn => (numGNum gn) } ; + case af of { AdvF => Sg; AFShort gn => numGNum gn; AF _ _ gn => (numGNum gn) } ; oper genAF: AdjForm -> Gender = \af -> - case af of { AdvF => Neut; AF _ _ gn => (genGNum gn) } ; + case af of { AdvF => Neut; AFShort gn => genGNum gn; AF _ _ gn => (genGNum gn) } ; oper caseAF: AdjForm -> Case = \af -> - case af of { AdvF => Nom; AF c _ _ => c } ; + case af of { AdvF => Nom; AFShort _ => Nom; AF c _ _ => c } ; -- The Degree parameter should also be more complex, since most Russian -- adjectives have two comparative forms: