mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-11 13:59:31 -06:00
269 lines
7.8 KiB
HTML
269 lines
7.8 KiB
HTML
<html>
|
|
<body>
|
|
<i> Produced by
|
|
gfdoc - a rudimentary GF document generator.
|
|
(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.
|
|
</i>
|
|
<p>
|
|
<h1> Finnish Lexical Paradigms</h1>
|
|
|
|
<p>
|
|
Aarne Ranta 2003
|
|
<p>
|
|
This is an API to the user of the resource grammar
|
|
for adding lexical items. It give shortcuts for forming
|
|
expressions of basic categories: nouns, adjectives, verbs.
|
|
|
|
Closed categories (determiners, pronouns, conjunctions) are
|
|
accessed through the resource syntax API, <tt>Structural.gf</tt>.
|
|
<p>
|
|
The main difference with <tt>MorphoFin.gf</tt> is that the types
|
|
referred to are compiled resource grammar types. We have moreover
|
|
had the design principle of always having existing forms, not
|
|
stems, as string arguments of the paradigms, not stems.
|
|
<p>
|
|
This is the path to read the grammar from the same directory.
|
|
# -path=.:../abstract:../../prelude
|
|
<p>
|
|
The following modules are presupposed:
|
|
<pre>
|
|
resource ParadigmsFin = open Prelude, SyntaxFin, ResourceFin in {
|
|
</pre>
|
|
|
|
<h2> Parameters </h2>
|
|
<p>
|
|
To abstract over gender, number, and (some) case names,
|
|
we define the following identifiers.
|
|
<pre>
|
|
oper
|
|
human : Gender ;
|
|
nonhuman : Gender ;
|
|
|
|
singular : Number ;
|
|
plural : Number ;
|
|
|
|
nominative : Case ;
|
|
genitive : Case ;
|
|
partitive : Case ;
|
|
inessive : Case ;
|
|
elative : Case ;
|
|
illative : Case ;
|
|
adessive : Case ;
|
|
ablative : Case ;
|
|
allative : Case ;
|
|
</pre>
|
|
|
|
<h2> Nouns</h2>
|
|
Worst case: give ten forms and the semantic gender.
|
|
In practice just a couple of forms are needed, to define the different
|
|
stems, vowel alternation, and vowel harmony.
|
|
<pre>
|
|
oper
|
|
mkN :
|
|
(talo,talon,talona,taloa,taloon,taloina,taloissa,talojen,taloja,taloihin
|
|
: Str) -> Gender -> N ;
|
|
</pre>
|
|
|
|
Nouns with partitive <i>a</i>/<i>ä</i> are a large group.
|
|
To determine for grade and vowel alternation, three forms are usually needed:
|
|
singular nominative and genitive, and plural partitive.
|
|
Examples: <i>talo</i>, <i>kukko</i>, <i>huippu</i>, <i>koira</i>, <i>kukka</i>, <i>syylä</i>, <i>särki</i>...
|
|
<pre>
|
|
nKukko : (kukko,kukon,kukkoja : Str) -> N ;
|
|
</pre>
|
|
|
|
For convenience, we define 1-argument paradigms as producing the
|
|
nonhuman gender; the following function changes this:
|
|
<pre>
|
|
humanN : N -> N ;
|
|
</pre>
|
|
|
|
A special case are nouns with no alternations:
|
|
the vowel harmony is inferred from the last letter,
|
|
which must be one of <i>o</i>, <i>u</i>, <i>ö</i>, <i>y</i>.
|
|
<pre>
|
|
nTalo : (talo : Str) -> N ;
|
|
</pre>
|
|
|
|
Another special case are nouns where the last two consonants
|
|
undergo regular weak-grade alternation:
|
|
<i>kukko - kukon</i>, <i>rutto - ruton</i>, <i>hyppy - hypyn</i>, <i>sampo - sammon</i>,
|
|
<i>kunto - kunnon</i>, <i>sisältö - sisällön</i>, .
|
|
<pre>
|
|
nLukko : (lukko : Str) -> N ;
|
|
</pre>
|
|
|
|
<i>arpi - arven</i>, <i>sappi - sapen</i>, <i>kampi - kammen</i>;<i>sylki - syljen</i>
|
|
<pre>
|
|
nArpi : (arpi : Str) -> N ;
|
|
nSylki : (sylki : Str) -> N ;
|
|
</pre>
|
|
|
|
Foreign words ending in consonants are actually similar to words like
|
|
<i>malli</i>/<i>mallin</i>/<i>malleja</i>, with the exception that the <i>i</i> is not attached
|
|
to the singular nominative. Examples: <i>linux</i>, <i>savett</i>, <i>screen</i>.
|
|
The singular partitive form is used to get the vowel harmony. (N.B. more than
|
|
1-syllabic words ending in <i>n</i> would have variant plural genitive and
|
|
partitive forms, like <i>sultanien</i>/<i>sultaneiden</i>, which are not covered.)
|
|
<pre>
|
|
nLinux : (linuxia : Str) -> N ;
|
|
</pre>
|
|
|
|
Nouns of at least 3 syllables ending with <i>a</i> or <i>ä</i>, like <i>peruna</i>, <i>tavara</i>,
|
|
<i>rytinä</i>.
|
|
<pre>
|
|
nPeruna : (peruna : Str) -> N ;
|
|
</pre>
|
|
|
|
The following paradigm covers both nouns ending in an aspirated <i>e</i>, such as
|
|
<i>rae</i>, <i>perhe</i>, <i>savuke</i>, and also many ones ending in a consonant
|
|
(<i>rengas</i>, <i>kätkyt</i>). The singular nominative and essive are given.
|
|
<pre>
|
|
nRae : (rae, rakeena : Str) -> N ;
|
|
</pre>
|
|
|
|
The following covers nouns with partitive <i>ta</i>/<i>tä</i>, such as
|
|
<i>susi</i>, <i>vesi</i>, <i>pieni</i>. To get all stems and the vowel harmony, it takes
|
|
the singular nominative, genitive, and essive.
|
|
<pre>
|
|
nSusi : (susi,suden,sutta : Str) -> N ;
|
|
</pre>
|
|
|
|
Nouns ending with a long vowel, such as <i>puu</i>, <i>pää</i>, <i>pii</i>, <i>leikkuu</i>,
|
|
are inflected according to the following.
|
|
<pre>
|
|
nPuu : (puu : Str) -> N ;
|
|
</pre>
|
|
|
|
One-syllable diphthong nouns, such as <i>suo</i>, <i>tie</i>, <i>työ</i>, are inflected by
|
|
the following.
|
|
<pre>
|
|
nSuo : (suo : Str) -> N ;
|
|
</pre>
|
|
|
|
Many adjectives but also nouns have the nominative ending <i>nen</i> which in other
|
|
cases becomes <i>s</i>: <i>nainen</i>, <i>ihminen</i>, <i>keltainen</i>.
|
|
To capture the vowel harmony, we use the partitive form as the argument.
|
|
<pre>
|
|
nNainen : (naista : Str) -> N ;
|
|
</pre>
|
|
|
|
The following covers some nouns ending with a consonant, e.g.
|
|
<i>tilaus</i>, <i>kaulin</i>, <i>paimen</i>, <i>laidun</i>.
|
|
<pre>
|
|
nTilaus : (tilaus,tilauksena : Str) -> N ;
|
|
</pre>
|
|
|
|
Special case:
|
|
<pre>
|
|
nKulaus : (kulaus : Str) -> N ;
|
|
</pre>
|
|
|
|
The following covers nouns like <i>nauris</i> and adjectives like <i>kallis</i>, <i>tyyris</i>.
|
|
The partitive form is taken to get the vowel harmony.
|
|
<pre>
|
|
nNauris : (naurista : Str) -> N ;
|
|
</pre>
|
|
|
|
Separately-written compound nouns, like <i>sambal oelek</i>, <i>Urho Kekkonen</i>,
|
|
have only their last part inflected.
|
|
<pre>
|
|
nComp : Str -> N -> N ;
|
|
</pre>
|
|
|
|
Nouns used as functions need a case, of which by far the commonest is
|
|
the genitive.
|
|
<pre>
|
|
mkFun : N -> Case -> Fun ;
|
|
fGen : N -> Fun ;
|
|
</pre>
|
|
|
|
Proper names can be formed by using declensions for nouns.
|
|
The plural forms are filtered away by the compiler.
|
|
<pre>
|
|
mkPN : N -> PN ;
|
|
</pre>
|
|
|
|
<h2> Adjectives</h2>
|
|
Non-comparison one-place adjectives are just like nouns.
|
|
<pre>
|
|
mkAdj1 : N -> Adj1 ;
|
|
</pre>
|
|
|
|
Two-place adjectives need a case for the second argument.
|
|
<pre>
|
|
mkAdj2 : N -> Case -> Adj2 ;
|
|
</pre>
|
|
|
|
Comparison adjectives have three forms. The comparative and the superlative
|
|
are always inflected in the same way, so the nominative of them is actually
|
|
enough (except for the superlative <i>paras</i> of <i>hyvä</i>).
|
|
<pre>
|
|
mkAdjDeg : (kiva : N) -> (kivempaa,kivinta : Str) -> AdjDeg ;
|
|
</pre>
|
|
|
|
<h2> Verbs</h2>
|
|
<p>
|
|
The fragment only has present tense so far, but in all persons.
|
|
The worst case needs five forms, as shown in the following.
|
|
<pre>
|
|
mkV : (tulla,tulen,tulee,tulevat,tulkaa,tullaan : Str) -> V ;
|
|
</pre>
|
|
|
|
A simple special case is the one with just one stem and no grade alternation.
|
|
It covers e.g. <i>sanoa</i>, <i>valua</i>, <i>kysyä</i>.
|
|
<pre>
|
|
vValua : (valua : Str) -> V ;
|
|
</pre>
|
|
|
|
With two forms, the following function covers a variety of verbs, such as
|
|
<i>ottaa</i>, <i>käyttää</i>, <i>löytää</i>, <i>huoltaa</i>, <i>hiihtää</i>, <i>siirtää</i>.
|
|
<pre>
|
|
vKattaa : (kattaa, katan : Str) -> V ;
|
|
</pre>
|
|
|
|
When grade alternation is not present, just a one-form special case is needed
|
|
(<i>poistaa</i>, <i>ryystää</i>).
|
|
<pre>
|
|
vOstaa : (ostaa : Str) -> V ;
|
|
</pre>
|
|
|
|
The following covers
|
|
<i>juosta</i>, <i>piestä</i>, <i>nousta</i>, <i>rangaista</i>, <i>kävellä</i>, <i>surra</i>, <i>panna</i>.
|
|
<pre>
|
|
vNousta : (nousta, nousen : Str) -> V ;
|
|
</pre>
|
|
|
|
This is for one-syllable diphthong verbs like <i>juoda</i>, <i>syödä</i>.
|
|
<pre>
|
|
vTuoda : (tuoda : Str) -> V ;
|
|
</pre>
|
|
|
|
The verbs <i>be</i> and the negative auxiliary are special.
|
|
<pre>
|
|
vOlla : V ;
|
|
vEi : V ;
|
|
</pre>
|
|
|
|
Two-place verbs need a case, and can have a pre- or postposition.
|
|
At least one of the latter is empty, <tt>[]</tt>.
|
|
<pre>
|
|
mkTV : V -> Case -> (prep,postp : Str) -> TV ;
|
|
</pre>
|
|
|
|
If both are empty, the following special function can be used.
|
|
<pre>
|
|
tvCase : V -> Case -> TV ;
|
|
</pre>
|
|
|
|
Verbs with a direct (accusative) object
|
|
are special, since their complement case is finally decided in syntax.
|
|
<pre>
|
|
tvDir : V -> TV ;
|
|
</pre>
|
|
|
|
The definitions should not bother the user of the API. So they are
|
|
hidden from the document.
|
|
</body>
|
|
</html>
|