--# -path=.:../abstract:../prelude:../common --0 Polish Lexical Paradigms -- Ilona Nowak Wintersemester 2007/08 -- 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 ( pronouns, conjunctions) are -- accessed through the resource syntax API, $Structural.gf$. -- For german and english grammar determiners are defined as -- closed categories in the file StructuralPol.gf. -- In Polish language they aren't determiners. -- The main difference between $MorphoPol.gf$ and $ParadigmsPol.gf$ is that the types -- referred to are compiled resource grammar types. I 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 I give a handful of patterns that aim to cover all -- regular cases. Then I 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 ParadigmsPol = open (Predef=Predef), Prelude, OrigMorphoPol, (MorphoPol = OrigMorphoPol), CatPol in { flags coding=utf8; oper Gender = MorphoPol.Gender; Case = MorphoPol.Case; Number = MorphoPol.Number; Animacy = MorphoPol.Animacy; Aspect = MorphoPol.Aspect; -- Voice = MorphoPol.Voice; -- Tense = Tense; Bool = Prelude.Bool; -- Used abbreviations masculineA = Masc Animate; masculineI = Masc Inanimate; masculineP = Masc Personal; feminine = Fem; neuter = Neut; nominative = Nom; genitive = Gen; dative = Dat; accusative = Acc; instrumental = Instr; -- new, is like instrumental in russian locative = Loc; -- new, is like prepositional in russian vocative = VocP; singular = Sg; plural = Pl; animate = Animate; inanimate = Inanimate; personal = Personal; true = True; false = False; --1 Nouns -- Parameters -------- Gender : Type; masculineP : Gender; -- personal masculineA : Gender; -- animate masculineI : Gender; -- inanimate feminine : Gender; neuter : Gender; -- In Polish there are as in German 3 Genders: masculine, feminine and neuter. -- But !!! in masculine declension we distinguish between: -- a) masculineP - human, but !!! they are only masculine person: -- f.e."mężczyzna" (man),"myśliwy" (hunter), "student" (student), -- "brat" (brother), "ksiądz" (pastor)), -- b) animate (they are animals), -- c) inanimate (all other nouns, "kobieta" (women), "dziewczyna" (girl) too.) -- For declension of feminine and neuter nouns, it is not important, -- if the noun is human, nonhuman, animate or inanimate. -- Only for masculine declension. -- Animacy is only for masculine Nouns. Animacy: Type; animate: Animacy; inanimate: Animacy; personal : Animacy; Case : Type; nominative : Case; genitive : Case; dative : Case; accusative : Case; instrumental : Case; locative : Case; vocative : Case; -- To abstract over case names, I defined seven cases. -- The seventh case vocative is like in english the phrase -- vocative f.e. "my darling". Vocative is defined in GF, -- so I'll define it here for Polish again, -- but later in the programs I will use the abbreviation VocP for it,. -- otherwise the program will create a problem. -- I had to do it, because it can't differ from -- polish case vocative and the vocative form, that is defined in GF. -- To abstract over number names, I define the following. Number : Type; singular : Number; plural : Number; --1 Paradigms -- Best case is for indeclinable nouns. They are: "alibi", "boa", "emu", "jury", "kakao", "menu", "zebu". mkIndeclinableNoun: Str -> Gender -> N; --function declaration mkIndeclinableNoun = \str, g -> -- function definition { s = table { SF _ _ => str }; g = g } ** {lock_N = <>}; -- Worst case gives many forms. -- Here are some common patterns. The list is far from complete. -- Here will be handled only nouns, that are in GF-lexicon. -- The very exact classification for polish nouns have 125 paradigms. -- This information is from the internet site of Grzegorz Jagodziński -- for polish grammar under http://free.of.pl/g/grzegorj/gram/pl/deklin04.htm ------------------------------------------------- ----- Abbreviation for names of declensions ----- ------------------------------------------------- -- VA1 - vowel alternation 1: o:ó, ó:o -- VA2 - vowel alternation 2: a:e, e:o, ę:o, o:e -- VA3 - vowel alternation 3: ę:ą, ą:ę -- CA - consonant alternation -- CL - consonant lengthening -- CAL - consonant alternation and lengthening -- F - feminine -- N - neuter -- MP - masculine personal -- MA - masculine animate -- MI - masculine inanimate ---------- Patterns for feminine nouns ---------- nKapiel : Str -> N; -- feminine, subject ending in "-l" nKapiel = \s -> l_End_F_1 s ** {lock_N = <>}; nLodz : Str -> N; -- feminine, subject ending in "-dź" nLodz = \x -> dzx_End_VA1_CAL_F x ** {lock_N = <>}; nSul : Str -> N; -- feminine, subject ending in "-l" nSul = \x -> l_End_VA1_F x ** {lock_N = <>}; nKonew : Str -> N; -- feminine, subject ending in "-w" nKonew = \s -> w_End_FleetingEminus_F s ** {lock_N = <>}; nWies : Str -> N; -- feminine, subject ending in "-ś" nWies = \x -> sx_End_CAL_FleetingIEminus_F x ** {lock_N = <>}; nDlon : Str -> N; -- feminine, subject ending in "-ń" nDlon = \x -> nx_End_CAL_F x ** {lock_N = <>}; nSiec : Str -> N; -- feminine, subject ending in "-ć" (sieć),"-ść" (miłość) nSiec = \x -> cx_End_CAL_F_1 x ** {lock_N = <>}; nDrzwi : Str -> N; -- drzwi, wnętrzności, usta nDrzwi = \x -> onlyPlNoun x ** {lock_N = <>}; nKosc : Str -> N; -- feminine, subject ending in "-ść"(kość), "-ć" (nić), nKosc = \x -> cx_End_CAL_F_2 x ** {lock_N = <>}; nNoc : Str -> N; -- feminine, subject ending in "-c", "-cz", "-rz", "-ż" nNoc = \s -> hardened_End_F_1 s ** {lock_N = <>}; nWesz : Str -> N; -- feminine, subject ending in "-sz" nWesz = \s -> sz_End_FleetingEminus_F s ** {lock_N = <>}; nKrolowa : Str -> N; -- feminine, subject ending in "-wa", but also for "księżna" nKrolowa = \s -> wa_na_End_F s ** {lock_N = <>}; nReka : Str -> N; -- feminine "ręka", irregularly noun nReka = \x -> k_End_Unregulary_VA3_CA_F x ** {lock_N = <>}; nApteka : Str -> N; -- feminine, subject ending in "-k", -"g", consonant alternation k:c, g:dz nApteka = \s -> g_k_End_CA_F s ** {lock_N = <>}; nDroga : Str -> N; -- feminine, subject ending in "g", consonant alternation d:dz, vowel alternation o:ó nDroga = \s -> g_End_VA1_CA_F s ** {lock_N = <>}; nMatka : Str -> N; -- feminine, subject ending in -k,consonant alternation k:c, fleeting e nMatka = \s -> k_End_CA_FleetingEplus_F s ** {lock_N = <>}; nZiemia : Str -> N; -- feminine, subject ending in "-ia" nZiemia = \s -> ia_End_F_1 s ** {lock_N = <>}; nFala : Str -> N; -- feminine, subject ending in "-l" nFala = \s -> l_End_F_2 s ** {lock_N = <>}; nLilia : Str -> N; -- feminine, subject ending in "-ia" nLilia = \s -> ia_End_F_2 s ** {lock_N = <>}; nKobieta : Str -> N; -- feminine, subject ending in "-t" nKobieta = \s -> hard_End_CAL_F s ** {lock_N = <>}; nLiczba : Str -> N; -- feminine, subject ending in "-b", "-p", "-n" nLiczba = \s -> hard_End_CL_F s ** {lock_N = <>}; nSila : Str -> N; -- feminine, subject ending in "-ł", "-r" nSila = \s -> hard_End_CA_F s ** {lock_N = <>}; nDoba : Str -> N; -- feminine, subject ending in "-b", "-p" nDoba = \s -> hard_End_VA1_CL_F s ** {lock_N = <>}; nWoda : Str -> N; -- feminine, subject ending in "-d" nWoda = \s -> hard_End_VA1_CAL_F s ** {lock_N = <>}; nSzkola : Str -> N; -- feminine, subject ending in "-oła", "-ra" nSzkola = \s -> hard_End_VA1_CA_F s ** {lock_N = <>}; nWojna : Str -> N; -- feminine, subject ending in two consonants: jn, łz, łn, ćm,żw nWojna = \s -> hard_End_CL_FleetingEplus_F s ** {lock_N = <>}; nWiosna : Str -> N; -- feminine, subject ending in two consonants: sn nWiosna = \s -> sn_End_CAL_FleetingIEplus_F s ** {lock_N = <>}; nMgla : Str -> N; -- feminine, subject ending in "-gł" nMgla = \x -> hard_l_End_CA_FleetingIEplus_F x ** {lock_N = <>}; nGwiazda : Str -> N; -- feminine, subject ending in "-zd" nGwiazda = \s -> zd_st_End_VA2_CAL_F s ** {lock_N = <>}; nUlica : Str -> N; -- feminine, subject ending mainly in "-c", but also in "-ż", "-rz", "-dz" nUlica = \s -> hardened_End_F_2 s ** {lock_N = <>}; nOwca : Str -> N; -- feminine, subject ending in "-c" nOwca = \x -> c_End_FleetingIEplus_F x ** {lock_N = <>}; -------- Patterns for neuter nouns ---------- nDanie : Str -> N; -- neuter, subject ending in "-ni" nDanie = \s -> ci_ni_week_End_CA_N s ** {lock_N = <>}; nSerce : Str -> N; -- neuter, subject ending in a hardened consonant "-c", "-rz" nSerce = \s -> hardened_End_N s ** {lock_N = <>}; nNasienie : Str -> N; -- neuter, subject ending in "-ni" (only for "nasienie") nNasienie = \x -> ni_End_VA2_N x ** {lock_N = <>}; nMorze : Str -> N; -- neuter, subject ending in "-rz", "-ż" nMorze = \x -> rz_zx_End_VA1_N x ** {lock_N = <>}; nImie : Str -> N; -- neuter, subject ending in "-ę" nImie = \x -> ex_End_VA2_N x ** {lock_N = <>}; nCiele : Str -> N; -- neuter, subject ending in "-ę" nCiele = \s -> ex_End_VA3_N s ** {lock_N = <>}; nUdo : Str -> N; -- neuter, subject ending in hard consonant + "o" nUdo = \s -> hard_End_CAL_N s ** {lock_N = <>}; nPiwo : Str -> N; -- neuter, subject ending in a hard consonant + "o" nPiwo = \s -> hard_End_CL_N s ** {lock_N = <>}; nZero : Str -> N; -- neuter, subject ending in "-r" nZero = \s -> r_End_CA_N s ** {lock_N = <>}; nNiebo : Str -> N; -- neuter, declension for "niebo" nNiebo = \x -> niebo_Unregulary_N x ** {lock_N = <>}; nTlo : Str -> N; -- neuter, subject ending in "-ło" nTlo = \s -> lx_End_CA_FleetingEplus_N s ** {lock_N = <>}; nZebro : Str -> N; -- neuter, subject ending in "-r" nZebro = \s -> hard_End_CA_FleetingEplus_N s ** {lock_N = <>}; nOkno : Str -> N; -- neuter, subject ending in "-n" nOkno = \s -> n_End_CL_FleetingIEplus_N s ** {lock_N = <>}; nGniazdo : Str -> N; -- neuter, subject ending in "-zd", "-st" nGniazdo = \s -> hard_End_VA_CAL_N s ** {lock_N = <>}; nWojsko : Str -> N; -- neuter, subject ending in "-k" nWojsko = \s -> k_End_CL_N s ** {lock_N = <>}; nJajo : Str -> N; -- neuter, subject ending in "-j" nJajo = \s -> j_End_N s ** {lock_N = <>}; nJablko : Str -> N; -- neuter, subject ending in "-k" nJablko = \s -> k_End_CL_FleetingEplus_N s ** {lock_N = <>}; nStudio : Str -> N; -- neuter, subject ending in "-n" nStudio = \s -> o_End_N s ** {lock_N = <>}; nDziecko : Str -> N; -- neuter, subject ending in "-n" nDziecko = \s -> k_End_CAL_N s ** {lock_N = <>}; nUcho : Str -> N; -- neuter, subject ending in "-ch" nUcho = \x -> ch_End_Unregulary_CA_N x ** {lock_N = <>}; nOko : Str -> N; -- neuter, subject ending in "-k" nOko = \x -> k_End_Unregulary_CAL_N x ** {lock_N = <>}; ---- Patterns for personal masculine nouns ------ nFacet : Str -> N; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-i" nFacet = \s -> hard_End_CAL_MP_1 s ** {lock_N = <>}; nArab : Str -> N; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-y" nArab = \s -> hard_End_CAL_MP_2 s ** {lock_N = <>}; nPrzyjaciel : Str -> N; -- masculine personal, subject ending in a hard consonant "-l" nPrzyjaciel = \s -> przyjaciel_VA1_VA2_CA_MP s ** {lock_N = <>}; nKowal : Str -> N; -- masculine personal, subject ending in a hard consonant "-l" nKowal = \s -> l_End_MP s ** {lock_N = <>}; nLekarz : Str -> N; -- masculine personal ending in -rz, -ż, -cz, -sz (piekarz, lekarz, papież, tłumacz, piwosz) nLekarz = \s -> hardened_End_MP s ** {lock_N = <>}; nKrol : Str -> N; -- masculine personal, subject ending in "-ul" nKrol = \s -> ul_End_MP s ** {lock_N = <>}; nMaz : Str -> N; -- masculine personal nMaz = \s -> maz_MP s ** {lock_N = <>}; nWrog : Str -> N; -- masculine personal, subject ending in "-g"; only for "wróg" nWrog = \s -> wrog_VA1_CL_MP s ** {lock_N = <>}; -- nCzlowiek : Str -> N; -- masculine personal -- nCzlowiek = \s -> ul_End_MP s ** {lock_N = <>}; nKsiadz : Str -> N; -- masculine personal nKsiadz = \s -> ksiadz_VA3_CA_MP s ** {lock_N = <>}; nOjciec : Str -> N; -- masculine personal for "ojciec" nOjciec = \s -> ciec_End_CA_FleetingIEminus_MP s ** {lock_N = <>}; nBrat : Str -> N; -- masculine personal nBrat = \s -> hard_End_CAL_MP s ** {lock_N = <>}; nBog : Str -> N; -- masculine personal nBog = \s -> bog_VA1_CAL_MP s ** {lock_N = <>}; nChlopiec : Str -> N; -- masculine personal nChlopiec = \s -> iec_End_CA_FleetingIEminus_MP s ** {lock_N = <>}; nMezczyzna : Str -> N; -- masculine personal nMezczyzna = \s -> zna_End_CAL_MP s ** {lock_N = <>}; ------------------- Patterns for animate masculine nouns ------- nKon : Str -> N; -- masculine animate, for "koń" nKon = \s -> kon_CAL_MA s ** {lock_N = <>}; nWaz : Str -> N; -- masculine animate, for "wąż" nWaz = \s -> waz_VA3_MA s ** {lock_N = <>}; nPtak : Str -> N; -- masculine animate, subject ending in "-k" nPtak = \s -> k_End_CL_MA s ** {lock_N = <>}; nKot : Str -> N; -- masculine animate, for "kot" nKot = \s -> kot_CAL_MA s ** {lock_N = <>}; nPies : Str -> N; -- masculine animate, for "pies" nPies = \s -> pies_CL_FleetingIEminus_MA s ** {lock_N = <>}; ------------------ Patterns for inanimate masculine nouns ----- nBat : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nBat = \s -> vowel_hard_CAL_MI s ** {lock_N = <>}; nChleb : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nChleb = \s -> vowel_hard_CL_MI s ** {lock_N = <>}; nSer : Str -> N; -- masculine inanimate, subject ending in "-r" nSer = \s -> r_End_CA_MI s ** {lock_N = <>}; nZab : Str -> N; -- masculine inanimate, subject ending in "-ąb" nZab = \s -> ab_End_VA3_CL_MI s ** {lock_N = <>}; nKosciol : Str -> N; -- masculine inanimate, for "kosciół" nKosciol = \s -> kosciol_VA1_VA2_CA_MI s ** {lock_N = <>}; nCien : Str -> N; -- masculine inanimate, subject ending in a week consonant nCien = \s -> week_End_CAL_MI s ** {lock_N = <>}; nPien : Str -> N; -- masculine inanimate, subject ending in a week consonant nPien = \s -> week_End_CAL_FleetingIEminus_MI s ** {lock_N = <>}; nLisc : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nLisc = \s -> lisc_CAL_MI s ** {lock_N = <>}; nKoc : Str -> N; -- masculine inanimate, subject ending in a hardened consonant nKoc = \s -> hardened_End_MI_1 s ** {lock_N = <>}; nWiersz : Str -> N; -- masculine inanimate, subject ending in a hardened consonant nWiersz = \s -> hardened_End_MI_2 s ** {lock_N = <>}; nDzien : Str -> N; -- masculine inanimate, for "dzień" nDzien = \s -> dzien_MI s ** {lock_N = <>}; nKajak : Str -> N; -- masculine inanimate, subject ending in -g or -k nKajak = \s -> g_k_End_CL_MI_1 s ** {lock_N = <>}; nMlotek : Str -> N; -- masculine inanimate, subject ending in -ek nMlotek = \s -> k_End_CL_FleetingEminus_MI s ** {lock_N = <>}; nMiech : Str -> N; -- masculine inanimate, subject ending in -ch nMiech = \s -> ch_End_MI s ** {lock_N = <>}; nSad : Str -> N; -- masculine inanimate, subject ending in a hard consonant nSad = \s -> hard_End_CAL_MI s ** {lock_N = <>}; nDym : Str -> N; -- masculine inanimate, subject ending in a hard consonant nDym = \s -> hard_End_CL_MI s ** {lock_N = <>}; nWal : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nWal = \s -> hard_End_CA_MI s ** {lock_N = <>}; nDol : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nDol = \s -> hard_End_VA1_CA_MI s ** {lock_N = <>}; nOgrod : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nOgrod = \s -> hard_End_VA1_CAL_MI s ** {lock_N = <>}; nKwiat : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nKwiat = \s -> hard_End_VA2_CAL_MI s ** {lock_N = <>}; nLas : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nLas = \s -> hard_End_VA2_CL_MI s ** {lock_N = <>}; nWiatr : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nWiatr = \s -> wiatr_VA2_CA_MI s ** {lock_N = <>}; nPopiol : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nPopiol = \s -> popiol_VA2_CA_MI s ** {lock_N = <>}; nPokoj : Str -> N; -- masculine inanimate, subject ending in -ój nPokoj = \s -> onlySgNoun s ** {lock_N = <>}; nGaj : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant j nGaj = \s -> vowel_j_or_handened_End_MI s ** {lock_N = <>}; nBrzeg : Str -> N; -- masculine inanimate, subject ending in -g or -k nBrzeg = \s -> g_k_End_CL_MI_2 s ** {lock_N = <>}; nRok : Str -> Str -> N; -- masculine inanimate for "rok", form in pl irregular nRok = \s, t -> rok_UnregularyPl_CL_MI s t ** {lock_N = <>}; nProg : Str -> N; -- masculine inanimate, subject ending in -óg nProg = \s -> ug_End_VA1_CL_MI s ** {lock_N = <>}; nStatek : Str -> N; -- masculine inanimate, subject ending in -ek nStatek = \s -> k_End_CL_FleetingEmins_MI s ** {lock_N = <>}; nDom : Str -> N; -- masculine inanimate, subject ending in -ch and for dom nDom = \s -> ch_End_dom_MI s ** {lock_N = <>}; };