1
0
forked from GitHub/gf-core

started grammar extending FreqFin with tricky clitic syntax

This commit is contained in:
aarne
2010-12-29 22:04:52 +00:00
parent 5d84849e70
commit 01e0dac456
5 changed files with 160 additions and 2 deletions

View File

@@ -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.

View File

@@ -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,";"],

View File

@@ -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 ;
}

View File

@@ -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 ;
}

View File

@@ -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)