A first attempt at the copula

Having got OpenCCG working, we can now start doing what we’re here for. To say “Calum is a teacher”, or “I am a teacher”, you have to say the at-first-glance rather odd:

  • ‘S e tidsear a th’ann Calum.
  • ‘S e tidsear a th’annam.

The unwary might translate those as “It is a teacher that is in Calum” and “It is a teacher that is in me”, but really tha + ann means “there is”. annam is a preposition marked for person, which I don’t think I’ve mentioned before. I’ve kind of implemented this, but it does overgenerate like mad. Overgeneration is when your grammar allows sentences that aren’t grammatical.

copula.ccg contains the grammar so far. Here are some highlights:This is my feature set so far. EMPH applies to the emphatic and unemphatic forms of the pronoun. EXIS, which doesn’t quite work yet, marks existential clauses.

feature {
NUM<2>: sg pl;
GEND<2>: masc fem;
PERS<2>: 1st 2nd 3rd;
EMPH<2>: emph unemph;
PROP<2>: proper common;
EXIS<2>: exis+ exis-;
}

I have a rather small word list, with tidsear (teacher) and ball-parlamaid as common nouns, and Calum, Somhairle and Sine (pronounced Sheena) as personal names, and is, s and tha as copula, copula and Bi – a special type for a peculiar verb, respectively:

word is:Cop;
word s:Cop;
word tidsear:N;
word ball-parlamaid:N;
word annam:PP;
word Calum:Name;
word Somhairle:Name;
word Sine:Name;
word th:Bi;
word tha:Bi;
word a:Rel;
word pre:P {
ann: exis+;
air: exis-;
}
word pro1:Pro {
mi: 1st sg unemph;
thu: 2nd sg unemph;
e: 3rd sg unemph masc;
i: 3rd sg unemph fem;
}
word pro2:ProEmph {
mise: 1st sg emph;
thusa: 2nd sg emph;
esan: 3rd sg emph masc;
}

and the actual grammatical machinery to get at least some examples working:

family Bi(V) {
entry: s<1>/pp<2>;
}
family P { entry: pp<2>/np<2>; }
family Pro {entry: np<2>[unemph];}
family ProEmph { entry: np<2>[emph]; }
family N { entry: np<2>[common]; }
family Name { entry: np<2>[proper]; }
family Cop(V) {
entry: (s<1>/np<2>[emph])/np<2>[proper];
entry: (s<1>/np<2>[unemph 3rd masc sg])/np<2>[exis+];
}
family NP { entry: np<2>/np<2>; }
family PP { entry: pp<2>; }
family Rel { entry: (np\np)/s; }

I don’t have a particularly smart account of NPs here. But it’s a start. Also, I can’t work out how to get apostrophes in.

To do: make sure that it doesn’t overgenerate for non-existential clauses. I’m not sure, for example, that tha air Calum is an S, although tha ann Calum is.

This entry was posted in grammar. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *