diff --git a/lib/src/api/Constructors.gf b/lib/src/api/Constructors.gf index cfe1a6cfb..119f8eac7 100644 --- a/lib/src/api/Constructors.gf +++ b/lib/src/api/Constructors.gf @@ -330,8 +330,10 @@ incomplete resource Constructors = open Grammar in { --% = \t,p -> TUseCl t ASimul p ; --% mkS : Ant -> Pol -> Cl -> S --% = \a,p -> TUseCl TPres a p ; --% - mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S -- she wouldn't have slept --: + mkS : (Tense) -> (Ant) -> (Pol) -> Cl -> S -- she wouldn't have slept = \t,a -> TUseCl t a ; --% + mkS : Temp -> Pol -> Cl -> S -- she wouldn't have slept --: + = UseCl ; --% -- Sentences can be combined with conjunctions. This can apply to a pair -- of sentences, but also to a list of more than two. diff --git a/lib/src/finnish/frequency/Freq.hs b/lib/src/finnish/frequency/Freq.hs index d25c44fa6..49ada5862 100644 --- a/lib/src/finnish/frequency/Freq.hs +++ b/lib/src/finnish/frequency/Freq.hs @@ -6,7 +6,8 @@ main = do let funSet = S.fromList (map (head . words) (lines kotus)) mapM_ putStrLn $ concatMap (prEntry funSet . mkOne) $ lines src -stoplist = S.fromList ["ei","olla","ei_ihme","eikä"] +stoplist = S.fromList + ["ei","olla","ei_ihme","eikä","ettei","ellei","vaikkei","muttei","miksei","jollei","jottei"] prEntry funSet (f,c,w,p@(k,n),i) = if n == 0 then [] else [ unwords ["fun",f, " : ", c,";"], diff --git a/lib/src/finnish/frequency/FreqGrammarFin.gf b/lib/src/finnish/frequency/FreqGrammarFin.gf new file mode 100644 index 000000000..d1325ac95 --- /dev/null +++ b/lib/src/finnish/frequency/FreqGrammarFin.gf @@ -0,0 +1,73 @@ +--# -path=.:alltenses:.. + +concrete FreqGrammarFin of FreqGrammarFinAbs = + LexiconFin, --- + StructuralFin - --- +--- FreqFin - +[ + everybody_NP, + everything_NP, +-- somebody_NP +-- something_NP + nobody_NP, + nothing_NP +], +TenseX +** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), Prelude in { + +lincat + Clause = {subj : NP ; vp : VP} ; + Part = Adv ; + +lin + ClauseS part temp pol cl = + mkS temp pol (mkCl (mkNP cl.subj part) cl.vp) ; + SubjKinS part temp pol cl = + mkS temp pol (mkCl (mkNP (mkNP cl.subj (kin.s ! pol.p)) part) cl.vp) ; + VerbKinS part temp pol cl = + mkS temp pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ; + AdvKinS part temp pol adv cl = + mkS temp pol (mkCl (mkNP cl.subj part) (mkVP (mkVP cl.vp adv) (kin.s ! pol.p))) ; + PreAdvS part temp pol adv cl = + mkS adv (mkS part (mkS temp pol (mkCl cl.subj cl.vp))) ; + PreAdvKinS part temp pol adv cl = + mkS adv (mkS part (mkS (kin.s ! pol.p) (mkS temp pol (mkCl cl.subj cl.vp)))) ; + PreAdvSubjKinS part temp pol adv cl = + mkS adv (mkS part (mkS temp pol (mkCl (mkNP cl.subj (kin.s ! pol.p)) cl.vp))) ; + PreAdvVerbKinS part temp pol adv cl = + mkS adv (mkS part (mkS temp pol (mkCl cl.subj (mkVP cl.vp (kin.s ! pol.p))))) ; + PreAdvAdvKinS part temp pol adv1 adv2 cl = + mkS adv1 (mkS part (mkS temp pol (mkCl cl.subj (mkVP (mkVP cl.vp adv2) (kin.s ! pol.p))))) ; + + +--- AnterVerbS part kin t pol cl = +--- mkS t anteriorAnt pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ; + + PredV np v = {subj = np ; vp = mkVP v} ; + + FPrepNP prep np = mkAdv prep np ; + FDetCN cn = mkNP the_Det (lin CN cn) ; + FAdjCN a cn = mkCN (lin A a) (lin CN cn) ; + + FUsePron p = mkNP p ; + FUseN n = mkCN n ; + +--- TransV v = P.mkV2 (lin V v) ; + + noPart = P.mkAdv [] ; + han_Part = P.mkAdv (glueTok "han") ; + pa_Part = P.mkAdv (glueTok "pa") ; + pas_Part = P.mkAdv (glueTok "pas") ; + ko_Part = P.mkAdv (glueTok "ko") ; + kos_Part = P.mkAdv (glueTok "kos") ; + kohan_Part = P.mkAdv (glueTok "kohan") ; + pahan_Part = P.mkAdv (glueTok "pahan") ; + + +oper + kin : {s : R.Polarity => Adv} = + {s = table {R.Pos => P.mkAdv (glueTok "kin") ; R.Neg => P.mkAdv (glueTok "kaan")}} ; + + glueTok : Str -> Str = \s -> "&!" ++ s ; + +} diff --git a/lib/src/finnish/frequency/FreqGrammarFinAbs.gf b/lib/src/finnish/frequency/FreqGrammarFinAbs.gf new file mode 100644 index 000000000..2af333535 --- /dev/null +++ b/lib/src/finnish/frequency/FreqGrammarFinAbs.gf @@ -0,0 +1,50 @@ +abstract FreqGrammarFinAbs = + Lexicon, --- + Structural - --- +--- FreqFinAbs - +[ + everybody_NP, + everything_NP, +-- somebody_NP +-- something_NP + nobody_NP, + nothing_NP +], +Tense +** { + +flags startcat = S ; + +cat + Clause ; Part ; + +fun + ClauseS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juo nyt + SubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- arikinhan juo nyt + VerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juokin nyt + AdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- arihan juo nytkin + PreAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nytkinhän ari juo + PreAdvS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juo + PreAdvSubjKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän arikin juo + PreAdvVerbKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juokin + PreAdvAdvKinS : Part -> Temp -> Pol -> Adv -> Adv -> Clause -> S ; -- nythän ari juo täälläkin + +--- AnterVerbS : Part -> PartKin -> Tense -> Pol -> Clause -> S ; -- arihan onkin juonut +--- doesn't put in right place + + PredV : NP -> V -> Clause ; + PredV2 : NP -> V2 -> NP -> Clause ; + PredObjV2 : NP -> V2 -> NP -> Clause ; + + FPrepNP : Prep -> NP -> Adv ; + FDetCN : CN -> NP ; + FAdjCN : A -> CN -> CN ; + + FUsePron : Pron -> NP ; + FUseN : N -> CN ; + +--- TransV : V -> V2 ; + + noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part, kohan_Part, pahan_Part : Part ; + +} diff --git a/lib/src/finnish/frequency/particles.txt b/lib/src/finnish/frequency/particles.txt new file mode 100644 index 000000000..7dc8ae515 --- /dev/null +++ b/lib/src/finnish/frequency/particles.txt @@ -0,0 +1,32 @@ +-- AR 29/12/2010 + +Pas ::= pas | pa | han | kos | ko | kohan | pahan -- free +Kin ::= kin/kaan -- dep. on polarity + +-- declaratives and questions + +ari Pas? ei? (juo Kin maitoa nyt | juo maitoa Kin nyt | juo maitoa nyt Kin?) +maitoa Pas? ei? (ari Kin juo nyt | ari juo Kin nyt | ari juo nyt Kin?) +nyt Pas? ei? (ari Kin juo maitoa | ari juo Kin maitoa | ari juo maitoa Kin?) + +ari Kin Pas? ei? juo maitoa nyt +maitoa Kin Pas? ari ei? juo nyt +nyt Kin Pas? ari ei? juo maitoa + +juo Pas? (ari Kin maitoa nyt | ari maitoa Kin nyt | ari maitoa nyt Kin?) +ei Pas? (ari Kin juo maitoa nyt | ari juo Kin maitoa nyt | ari juo maitoa Kin nyt | + ari juo maitoa nyt Kin?) + +-- imperatives + +juo Pas-? (ari Kin maitoa nyt | ari maitoa Kin nyt | ari maitoa nyt Kin?) +älä Pas-? (ari Kin juo maitoa nyt | ari juo Kin maitoa nyt | ari juo maitoa Kin nyt + | ari juo maitoa nyt Kin?) + +Pas- ::= pa | pas | han | pahan + +-- negation word + +*enkään, *etkään, *eikään, ?emmekään, ?ettekään, ?eivätkään (quite some Google hits) + +