Russian Lexical Paradigms

Last update: 2007-07-06 10:39:50 CEST



Produced by gfdoc - a rudimentary GF document generator. (c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.

Janna Khegai 2003--2006

This is an API for the user of the resource grammar for adding lexical items. It gives functions for forming expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are accessed through the resource syntax API, Structural.gf.

The main difference with MorphoRus.gf is that the types referred to are compiled resource grammar types. We have moreover had the design principle of always having existing forms, rather than stems, as string arguments of the paradigms.

The structure of functions for each word class C is the following: first we give a handful of patterns that aim to cover all regular cases. Then we give a worst-case function mkC, which serves as an escape to construct the most irregular words of type C.

The following modules are presupposed:

    resource ParadigmsRus = open 
      (Predef=Predef), 
      Prelude, 
      MorphoRus,
      CatRus,
      NounRus
      in {
    
    flags  coding=utf8 ;

Parameters

To abstract over gender names, we define the following identifiers.

    oper
      Gender : Type ;
      masculine : Gender ;
      feminine  : Gender ;
      neuter    : Gender ;

To abstract over case names, we define the following.

      Case : Type ;
    
      nominative    : Case ;
      genitive      : Case ;
      dative        : Case ;
      accusative    : Case ; 
      instructive   : Case ;
      prepositional : Case ;

In some (written in English) textbooks accusative case is put on the second place. However, we follow the case order standard for Russian textbooks. To abstract over number names, we define the following.

      Number : Type ;
    
      singular : Number ;
      plural   : Number ;
    
      Animacy: Type ; 
    
      animate: Animacy;
      inanimate: Animacy; 

Nouns

Best case: indeclinabe nouns: кофе, пальто, ВУЗ.

      mkN : overload {

The regular function captures the variants for some popular nouns endings below:

        mkN : Str -> N ;

This function is for indeclinable nouns.

        mkN : Str -> Gender -> Animacy -> N ; 

Worst case - give six singular forms: Nominative, Genetive, Dative, Accusative, Instructive and Prepositional; corresponding six plural forms and the gender. May be the number of forms needed can be reduced, but this requires a separate investigation. Animacy parameter (determining whether the Accusative form is equal to the Nominative or the Genetive one) is actually of no help, since there are a lot of exceptions and the gain is just one form less.

        mkN : (nomSg,_,_,_,_,_,_,_,_,_,_,prepPl : Str) -> Gender -> Animacy -> N ; 

мужчина, мужчины, мужчине, мужчину, мужчиной, мужчине мужчины, мужчин, мужчинам, мужчин, мужчинами, мужчинах

      } ;

Here are some common patterns. The list is far from complete. Feminine patterns.

      nMashina   : Str -> N ;    -- feminine, inanimate, ending with "-а", Inst -"машин-ой"
      nEdinica   : Str -> N ;    -- feminine, inanimate, ending with "-а", Inst -"единиц-ей"
      nZhenchina : Str -> N ;    -- feminine, animate, ending with "-a"
      nNoga      : Str -> N ;    -- feminine, inanimate, ending with "г_к_х-a"
      nMalyariya : Str -> N ;    -- feminine, inanimate, ending with "-ия"   
      nTetya     : Str -> N ;    -- feminine, animate, ending with "-я"   
      nBol       : Str -> N ;    -- feminine, inanimate, ending with "-ь"(soft sign)     

Neuter patterns.

      nObezbolivauchee : Str -> N ;   -- neutral, inanimate, ending with "-ee" 
      nProizvedenie : Str -> N ;   -- neutral, inanimate, ending with "-e" 
      nChislo : Str -> N ;   -- neutral, inanimate, ending with "-o" 
      nZhivotnoe : Str -> N ;    -- masculine, inanimate, ending with "-ень"

Masculine patterns. Ending with consonant:

      nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ел"- "пеп-ла"
    
      nBrat: Str -> N ;   -- animate, брат-ья
      nStul: Str -> N ;    -- same as above, but inanimate
      nMalush : Str -> N ; -- малышей
      nPotolok : Str -> N ; -- потол-ок - потол-ка
    
     -- the next four differ in plural nominative and/or accusative form(s) :
      nBank: Str -> N ;    -- банк-и (Nom=Acc)
      nStomatolog : Str -> N ;  -- same as above, but animate
      nAdres     : Str -> N ;     -- адрес-а (Nom=Acc)
      nTelefon   : Str -> N ;     -- телефон-ы (Nom=Acc)
    
      nNol       : Str -> N ;    -- masculine, inanimate, ending with "-ь" (soft sign)
      nUroven    : Str -> N ;    -- masculine, inanimate, ending with "-ень"

Nouns used as functions need a preposition. The most common is with Genitive.

      mkFun  : N -> Prep -> N2 ;
      mkN2 : N -> N2 ;
      mkN3 : N -> Prep -> Prep -> N3 ;

Proper names.

      mkPN : overload {
        mkPN : Str -> PN ; 
        mkPN : Str -> Gender -> Animacy -> PN ;          -- "Иван", "Маша"
        mkPN : N -> PN ;
      } ;

Adjectives

Non-comparison (only positive degree) one-place adjectives need 28 (4 by 7) forms in the worst case: (Masculine | Feminine | Neutral | Plural) ** ** (Nominative | Genitive | Dative | Accusative Inanimate | Accusative Animate | Instructive | Prepositional) Notice that 4 short forms, which exist for some adjectives are not included in the current description, otherwise there would be 32 forms for positive degree. The regular function captures the variants for some popular adjective endings below. The first string agrument is the masculine singular form, the second is comparative: Invariable adjective is a special case, with only on string needed.

       mkA : overload {
         mkA : Str -> A ;          -- khaki, mini, hindi, netto
         mkA : Str -> Str -> A ;
       } ;

Some regular patterns depending on the ending.

       AStaruyj : Str -> Str -> A ;            -- ending with "-ый"
       AMalenkij : Str -> Str -> A ;           -- ending with "-ий", Gen - "маленьк-ого"
       AKhoroshij : Str -> Str -> A ;          -- ending with "-ий", Gen - "хорош-его"
       AMolodoj : Str -> Str -> A ;            -- ending with "-ой", 
                                               -- plural - молод-ые"
       AKakoj_Nibud : Str -> Str -> Str -> A ; -- ending with "-ой", 
                                               -- plural - "как-ие"

Two-place adjectives need a preposition and a case as extra arguments.

       mkA2 : A -> Str -> Case -> A2 ;  -- "делим на"

Comparison adjectives need a positive adjective (28 forms without short forms). Taking only one comparative form (non-syntactic) and only one superlative form (syntactic) we can produce the comparison adjective with only one extra argument - non-syntactic comparative form. Syntactic forms are based on the positive forms.

Adverbs

Adverbs are not inflected.

      mkAdv : Str -> Adv ;

Verbs

In our lexicon description (Verbum) there are 62 forms: 2 (Voice) by { 1 (infinitive) + [2(number) by 3 (person)](imperative) + [ [2(Number) by 3(Person)](present) + [2(Number) by 3(Person)](future) + 4(GenNum)(past) ](indicative)+ 4 (GenNum) (subjunctive) } Participles (Present and Past) and Gerund forms are not included, since they fuction more like Adjectives and Adverbs correspondingly rather than verbs. Aspect is regarded as an inherent parameter of a verb. Notice, that some forms are never used for some verbs.

    Voice: Type; 
    Aspect: Type; 
    Bool: Type;
    Conjugation: Type ;
    
    first:   Conjugation; -- "гуля-Ешь, гуля-Ем"
    firstE:  Conjugation; -- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)  
    second:  Conjugation; -- "вид-Ишь, вид-Им"
    mixed:   Conjugation; -- "хоч-Ешь - хот-Им"
    dolzhen: Conjugation; -- irregular
    
    true:  Bool;
    false: Bool;
    
    active: Voice ;
    passive: Voice ;
    imperfective: Aspect;
    perfective: Aspect ;  

Common conjugation patterns are two conjugations: first - verbs ending with -ать/-ять and second - -ить/-еть. Instead of 6 present forms of the worst case, we only need a present stem and one ending (singular, first person): я люб-лю, я жд-у, etc. To determine where the border between stem and ending lies it is sufficient to compare first person from with second person form: я люб-лю, ты люб-ишь. Stems shoud be the same. So the definition for verb любить looks like: regV Imperfective Second люб лю любил люби любить;

There is no one-argument case.

      mkV : overload {
        mkV : Aspect -> Conjugation -> (stemPrsSgP1,endPrsSgP1,pastSgP1,imp,inf : Str) -> V ; 

The worst case need 6 forms of the present tense in indicative mood (я бегу, ты бежишь, он бежит, мы бежим, вы бежите, они бегут), a past form (singular, masculine: я бежал), an imperative form (singular, second person: беги), an infinitive (бежать). Inherent aspect should also be specified.

       mkV : Aspect -> (presSgP1,presSgP2,presSgP3,presPlP1,presPlP2,presPlP3,pastSgMasc,imp,inf: Str) -> V ;
    
      } ;

Two-place verbs

Two-place verbs, and the special case with direct object. Notice that a particle can be included in a V.

      mkV2 : overload { 
        mkV2 : V -> V2 ;                    -- "видеть", "любить"
        mkV2 : V   -> Str -> Case -> V2 ;   -- "войти в дом"; "в", accusative
      } ;

Three-place verbs

       tvDirDir : V -> V3 ; 
       mkV3     : V -> Str -> Str -> Case -> Case -> V3 ; -- "сложить письмо в конверт"                            

The definitions should not bother the user of the API. So they are hidden from the document.