1
0
forked from GitHub/gf-core

fetching DictFin words by Paradigms functions

This commit is contained in:
aarne
2010-12-29 10:16:10 +00:00
parent d1301b75f1
commit fbbd1981e3
9 changed files with 116249 additions and 48574 deletions

35312
lib/src/finnish/DictCompFin.gf Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,8 @@
resource Kotus = open MorphoFin, Prelude in { resource Kotus = open MorphoFin, Prelude in {
-- interpretations of paradigms in KOTUS word list, used in DictFin.
oper vowelHarmony = vowHarmony ; oper vowelHarmony = vowHarmony ;
oper oper
@@ -292,10 +294,10 @@ oper
= c56A ; ---- = c56A ; ----
c78A : Str -> VForms -- 1 tuikkaa c78A : Str -> VForms -- 1 tuikkaa
= c56A ; ---- = c56A ; ----
c99 : Str -> {s : Str} -- 5453 öykkärimäisesti c99 : Str -> Str -- 5453 öykkärimäisesti
= \s -> {s = s} ; = \s -> s ;
c101 : Str -> {s : Str} -- pronouns etc c101 : Str -> Str -- pronouns etc
= c99 ; -- dummy = c99 ; -- dummy
-- compound nouns, latter part inflected -- compound nouns, latter part inflected

View File

@@ -69,6 +69,11 @@ oper
postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "takana" postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "takana"
casePrep : Case -> Prep ; -- just case, e.g. adessive casePrep : Case -> Prep ; -- just case, e.g. adessive
NK : Type ; -- Noun from DictFin (Kotus)
AK : Type ; -- Adjective from DictFin (Kotus)
VK : Type ; -- Verb from DictFin (Kotus)
AdvK : Type ; -- Adverb from DictFin (Kotus)
--2 Nouns --2 Nouns
-- The worst case gives ten forms. -- The worst case gives ten forms.
@@ -97,6 +102,7 @@ oper
mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
mkN : NK -> N ; -- noun from DictFin (Kotus)
} ; } ;
-- Nouns used as functions need a case, of which the default is -- Nouns used as functions need a case, of which the default is
@@ -131,6 +137,7 @@ oper
mkA : N -> A ; -- any noun made into adjective mkA : N -> A ; -- any noun made into adjective
mkA : N -> (kivempi,kivin : Str) -> A ; -- deviating comparison forms mkA : N -> (kivempi,kivin : Str) -> A ; -- deviating comparison forms
mkA : (hyva,prmpi,pras : N) -> (hyvin,pmmin,prhten : Str) -> A ; -- worst case adj mkA : (hyva,prmpi,pras : N) -> (hyvin,pmmin,prhten : Str) -> A ; -- worst case adj
mkA : AK -> A ; -- adjective from DictFin (Kotus)
} ; } ;
-- Two-place adjectives need a case for the second argument. -- Two-place adjectives need a case for the second argument.
@@ -152,6 +159,7 @@ oper
mkV : (huutaa,huusi : Str) -> V ; -- deviating past 3sg mkV : (huutaa,huusi : Str) -> V ; -- deviating past 3sg
mkV : (huutaa,huudan,huusi : Str) -> V ; -- also deviating pres. 1sg mkV : (huutaa,huudan,huusi : Str) -> V ; -- also deviating pres. 1sg
mkV : (huutaa,dan,taa,tavat,takaa,detaan,sin,si,sisi,tanut,dettu,tanee : Str) -> V ; -- worst-case verb mkV : (huutaa,dan,taa,tavat,takaa,detaan,sin,si,sisi,tanut,dettu,tanee : Str) -> V ; -- worst-case verb
mkV : VK -> V ; -- verb from DictFin (Kotus)
} ; } ;
-- All the patterns above have $nominative$ as subject case. -- All the patterns above have $nominative$ as subject case.
@@ -253,6 +261,12 @@ oper
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ; \c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ; accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
NK = {s : NForms ; lock_NK : {}} ;
AK = {s : NForms ; lock_AK : {}} ;
VK = {s : VForms ; lock_VK : {}} ;
AdvK = {s : Str ; lock_AdvK : {}} ;
mkN = overload { mkN = overload {
mkN : (talo : Str) -> N = mk1N ; mkN : (talo : Str) -> N = mk1N ;
-- \s -> nForms2N (nForms1 s) ; -- \s -> nForms2N (nForms1 s) ;
@@ -267,6 +281,7 @@ oper
: Str) -> N = mk10N ; : Str) -> N = mk10N ;
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ; mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
mkN : (oma,tunto : N) -> N = mkNN ; mkN : (oma,tunto : N) -> N = mkNN ;
mkN : (sana : NK) -> N = \w -> nForms2N w.s ;
} ; } ;
mk1A : Str -> A = \jalo -> aForms2A (nforms2aforms (nForms1 jalo)) ; mk1A : Str -> A = \jalo -> aForms2A (nforms2aforms (nForms1 jalo)) ;
@@ -446,6 +461,8 @@ oper
mkA : Str -> A = mkA_1 ; mkA : Str -> A = mkA_1 ;
mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ; mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ;
mkA : N -> (kivempaa,kivinta : Str) -> A = regAdjective ; mkA : N -> (kivempaa,kivinta : Str) -> A = regAdjective ;
mkA : (sana : AK) -> A = \w -> noun2adjDeg (nForms2N w.s) ;
-- mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ; -- mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
} ; } ;
@@ -483,6 +500,7 @@ oper
mkV : ( mkV : (
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan, huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ; huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ;
mkV : (sana : VK) -> V = \w -> vforms2V w.s ** {sc = NPCase Nom ; lock_V = <>} ;
} ; } ;
mk1V : Str -> V = \s -> mk1V : Str -> V = \s ->
@@ -566,7 +584,10 @@ oper
caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ; caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ;
dirV2 v = mk2V2 v accPrep ; dirV2 v = mk2V2 v accPrep ;
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ; mkAdv = overload {
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
mkAdv : AdvK -> Adv = \s -> {s = s.s ; lock_Adv = <>} ;
} ;
mkV2 = overload { mkV2 = overload {
mkV2 : Str -> V2 = \s -> dirV2 (mk1V s) ; mkV2 : Str -> V2 = \s -> dirV2 (mk1V s) ;

View File

@@ -1,11 +1,19 @@
main = interact (unlines . map mkOne . lines) main = interact (unlines . concatMap (prEntry . mkOne) . lines)
prEntry (f,c,w) = [
unwords [f, ":", c]
]
mkOne line = case words line of mkOne line = case words line of
_:_:_:w:c0:_ -> let c = cat c0 in unwords [mkId w ++ "_" ++ c, ":", c] _:_:_:w:c0:_ -> let c = mkCat c0 in (mkFun w c, c, w, mkLin c)
_ -> [] _ -> []
cat c = case c of mkCat = fst . catlin
"(adjektiivi)" -> "A" mkLin = snd . catlin
catlin c = case c of
"(adjektiivi)" -> "A",
"(adverbi)" -> "Adv" "(adverbi)" -> "Adv"
"(erisnimi)" -> "PN" "(erisnimi)" -> "PN"
"(interjektio)" -> "Interj" "(interjektio)" -> "Interj"
@@ -18,6 +26,7 @@ cat c = case c of
"(verbi)" -> "V" "(verbi)" -> "V"
_ -> "Junk" _ -> "Junk"
mkFun w c = mkId w ++ "_" ++ c
mkId = concatMap trim where mkId = concatMap trim where
trim c = case fromEnum c of trim c = case fromEnum c of

View File

@@ -113,8 +113,8 @@ mkRules e = do
mkFun fun cat = unwords ["fun",fun,":",cat,";"] mkFun fun cat = unwords ["fun",fun,":",cat,";"]
mkLin fun par w = case words par of mkLin fun par w = case words par of
f@"compoundNK":p:v:_ -> unwords ["lin",fun,"=",f,v,"("++ p,quoted w ++")",";"] f@"compoundNK":p:v:_ -> unwords ["lin",fun,"=","{s","=",f,v,"("++ p,quoted w ++")}",";"]
_ -> unwords ["lin",fun,"=",par,quoted w,";"] _ -> unwords ["lin",fun,"=","{s","=",par,quoted w ++"}",";"]
mkId = concatMap trim where mkId = concatMap trim where
trim c = case fromEnum c of trim c = case fromEnum c of

View File

@@ -7,5 +7,5 @@ concrete DictFin of DictFinAbs = open MorphoFin, Kotus, Prelude in {
flags coding = utf8 ; flags coding = utf8 ;
lincat NK = NForms ; AK = NForms ; VK = VForms ; AdvK = SS ; lincat NK = {s : NForms} ; AK = {s : NForms} ; VK = {s : VForms} ; AdvK = {s : Str} ;