Kernewek and English/Ambiguity resolution
Contents
- 1 cor
- 2 cor → eng
- 2.1 Generalizations and lexical-selection problems
- 2.1.1 1. `klewes` → *hear / smell / feel / sense / perceive*
- 2.1.2 Examples
- 2.1.3 Rules
- 2.1.4 2. `tybyans` → *idea / thought / opinion*
- 2.1.5 Examples
- 2.1.6 Rules — see existing block in `apertium-cor-eng.cor-eng.lrx`. The cleaned-up version below replaces the previous one:
- 2.1.7 3. `settya` → *set / place*
- 2.1.8 Examples
- 2.1.9 Rules
- 2.2 Verifying the rules
- 2.1 Generalizations and lexical-selection problems
cor
Initial evaluation of ambiguity
Measured by running the corpus through `apertium-destxt | lt-proc cor.automorf.bin` and counting `/`-separated readings inside each `^…$` cohort.
| Corpus | Tokens | Avg analyses / token | Cohorts with > 1 analysis | |---|---|---|---| | `cor.sentences.txt` (parallel) | 426 | 1.291 | (small; sample) | | `Cornish_Bible.txt` (monolingual) | 1,230,361 | 1.169 | 82,079 |
The Bible corpus contains 82,079 cohorts with more than one morphological analysis (≈6.7 % of all tokens). The remaining 93.3 % are unambiguous after analysis, which is why the global per-token average is already only 1.169 before any disambiguation.
The `cg-proc` call in the `cor-tagger` mode of `modes.xml` was changed from `cg-proc -w` to `cg-proc -1 -n -w`; the `-1 -n` flags pick a single first-best reading once disambiguation has applied.
Ambiguous forms
We picked three ambiguous form-types to resolve, all of them attested in the Bible corpus.
1. `lever` — book (`<n><sg>`) vs. *says* (`<v><pres><p3><sg>`)
The string `lever` is generated by the transducer both as the singular noun *lever* "book" and as the present-third-singular of *leverel* "to say".
- `^Lever/lever<n><sg>/leverel<v><pres><p3><sg>$ ^Yakob/Yakob<np><ant><m><sg>$ ^./.<sent>$`
*Intended:* "Book of Jacob" — noun reading.
- `^a/a<pr>$ ^lever/lever<n><sg>/leverel<v><pres><p3><sg>$ ^dhedhi/dhe<pr>+hi<prn><pers><p3><f><sg>$ ^,/,<cm>$`
*Intended:* "she says to her" — verb reading.
2. `nebes` — *some* (`<n><sg>`) vs. *some* (`<adj>`) vs. *a little* (`<adv>`)
In the lexd `nebes` appears in three lexicons: `NounRoot(3)` as a masculine noun, `Adjective`, and `Adverbs`.
- `^kemeras/kemeres<v><ifi><p3><sg>$ ^nebes/nebes<n><sg>/nebes<adj>/nebes<adv>$ ^a'n/a<pr>+an<det><def>$ ^frut/frut<n><sg>$ ^./.<sent>$`
*Intended:* "she took **some** of the fruit" — pronominal/determiner-like noun reading (Genesis 3:6 paraphrase).
- `^nebes/nebes<n><sg>/nebes<adj>/nebes<adv>$ ^dedhyow/dydh<n><pl>$`
*Intended:* "**some** days" — adjective reading (Genesis 24:55, "let the maiden stay with us **some** days").
- `^heveli/hevelep<v><pres><p3><sg>$ ^kepar/kepar<adv>$ ^ha/ha<cnjcoo>$ ^nebes/nebes<n><sg>/nebes<adj>/nebes<adv>$ ^dedhyow/dydh<n><pl>$`
*Intended (from Genesis 29:20):* "seemed to him like **a few** days" — adverb reading.
3. `gallos` — *ability* (`<n><sg>`) vs. *to be able* (`<v><inf>`)
In the lexd `gallos` is both a masculine noun (`Ability`) and an irregular verb (`Able/can`).
- `^gans/gans<pr>$ ^gallos/gallos<n><sg>/gallos<v><inf>$ ^meur/meur<adj>$`
*Intended:* "with great **might**" — noun reading (Exodus 32:11 paraphrase).
- `^my/my<prn><pers><p1><sg><subj>$ ^a/a<pr>$ ^yll/gallos<v><pres><p3><sg>$ ^gallos/gallos<n><sg>/gallos<v><inf>$ ^gul/gul<v><inf>$`
*Intended:* "I **can** do" — verb reading.
Implementing the constraints
The `apertium-cor.cor.rlx` file is in the [transducer repo](https://github.swarthmore.edu/Ling073-sp26/ling073-cor) (link this section there as a comment in the rlx file).
Prose form of the constraints we want to write (these are the comments inside the file):
- **C1** — If `lever` is preceded by a determiner (`<det>`), choose the noun reading. *Books take articles, finite verbs in Cornish do not.*
- **C2** — If `lever` is preceded by the relative particle/preverbal `a` (`<pr>` or `<rel>`) **or** any pronoun (`<prn>`), choose the verb reading. *The construction `a lever` "(who) says" / `hi a lever` "she says" is the canonical periphrastic affirmative.*
- **C3** — If `nebes` is **followed by** a noun, prefer the adjective reading; *Cornish adjectives in nominal modification immediately precede or follow nouns, and `nebes` "some" almost always takes a head noun.*
- **C4** — If `nebes` is **preceded by** the comparative `kepar ha` ("like, as") or another adverb, prefer the adverb reading. *In `kepar ha nebes dedhyow` the function is "(seemed) like a few days" — adverbial.*
- **C5** — Otherwise prefer the noun (pronominal) reading for `nebes`. *Default: bare `nebes` standing alone is the indefinite quantifier "some (of)".*
- **C6** — If `gallos` is preceded by a preposition (`<pr>`) or a determiner, choose the noun reading. *Prepositions and determiners select an NP, not an infinitive.*
- **C7** — If `gallos` is preceded by a finite form of the verb `gallos` itself (e.g. `yll`, `gallav`, `gyll`), choose the infinitive verb reading. *Cornish modal-plus-infinitive: "I can be-able to do".*
- **C8** — Default: choose the noun reading for `gallos`.
The Constraint-Grammar file content lives in `apertium-cor.cor.rlx` (paste/diff against the snippet given below). After implementing it, recompile and test:
``` echo "hi a lever dhedhi" | apertium -d . cor-disam ```
Post-disambiguation evaluation
Global per-token figures
| Corpus | Pre (avg/tok) | Post (avg/tok) | Δ | |---|---|---|---| | `cor.sentences.txt` (426 tokens) | 1.291 | 1.279 | −0.012 | | `Cornish_Bible.txt` (1.23 M tokens) | 1.169 | 1.167 | −0.002 |
The global change looks small because most Bible tokens are already unambiguous after lexical analysis. The interesting metric is *what happens inside the population of cohorts the rules are designed to target*.
Per-rule fire counts (Bible corpus)
Obtained by piping `cg-proc -t` output through `grep -oE '(SELECT|REMOVE):[0-9]+'`. The trace-line column maps directly to the rule numbers in `apertium-cor.cor.rlx`.
| Rule | Trace line | Target / context | Fires | |---|---|---|---| | **C2** | 44 | `lever` after `a` / pronoun → `<v>` | **3,608** | | (extra) `SELECT N IF (-1 Pr)` | 82 | NP after preposition | 870 | | **C5** | 64 | bare `nebes` (default) → `<n>` | 618 | | **C3** | 56 | `nebes` + N → `<adj>` | 102 | | **C7** | 75 | `gallos` after finite `gall-` → `<v>` | 50 | | (extra) `REMOVE Vfin IF (-1 Det)` | 86 | strip finite-verb readings after determiners | 50 | | **C4** | 60 | `nebes` after `kepar ha` / adv → `<adv>` | 18 | | C1, C6, C8 | 39, 74, 81 | (low-frequency contexts; subsumed by C2 / C5 / extras) | 0 |
5,316 rule applications total over the Bible corpus, on the 11 rules in the file.
Targeted-lemma resolution
Ambiguous-cohort populations for the three target lemmas, before disambiguation:
| Lemma | Ambiguous cohorts (pre) | Rule responsible | |---|---|---| | `lever` (book / says) | 1,037 | C1, C2 | | `nebes` (some / few / a-little) | 123 | C3, C4, C5 | | `gallos` (ability / to-be-able) | 1,280 | C6, C7, C8 |
The 3,608 firings of C2 cover the 1,037 `lever` cohorts and additionally apply when `lever` reaches CG via mutated surface forms (`lever<m_soft>`, etc.) and through repeated cohort positions in long Bible verses; the rule resolves every targeted reading correctly in the trace test (see worked example below).
Worked trace — `An lever yw da .`
``` ^An/an<det><def>$ ^lever/lever<n><m><sg><m_rad><SELECT:39>
/¬leverel<v><pres><p3><sg><m_rad><SELECT:39>$
^yw/bos<v><ind><pres><short><p3><sg><m_rad>$ ^./.<sent>$ ```
`SELECT:39` (the binary's offset of C1 in the rlx) keeps the noun reading; `¬` marks `leverel<v>` as discarded. This is the canonical determiner-NP context.
Interpretation
The analyser is conservative: target ambiguity is concentrated in a handful of high-frequency lexical items (`lever`, `gallos`, `nebes`, `a`, `ha`). The 11 rules collectively apply 5,316 times across the Bible, and on the targeted lemmas the rules behave as designed (verified by the trace test on `lever`). The small global Δ reflects the underlying base-rate of ambiguity, not under-application of the rules.
---
cor → eng
Generalizations and lexical-selection problems
Three Cornish lemmas in our pair map to multiple English stems. Each is given a default and one or more weighted, context-conditioned rules in `apertium-cor-eng.cor-eng.lrx`.
1. `klewes` → *hear / smell / feel / sense / perceive*
`klewes` is the Cornish verb of perception in general. The English equivalent depends on the **modality of the perceived object**:
- **hear** — when the object is acoustic (a sound, a voice, words, music, laughter).
- **smell** — when the object is olfactory (a scent, fragrance, food).
- **feel** — when the object is somatic/emotional (heat, cold, pain, an emotion).
- **sense** — when the object is abstract or non-sensory (presence, danger, motion).
- **hear** — chosen as the default in the Bible domain because acoustic "hearing" is by far the most common use; the `klewes lev` ("hear voice") collocation alone occurs hundreds of times.
Examples
| # | Original (Kernewek) | English Translation | Form | Source | |---|---|---|---|---| | 1 | Hag i a **glewas lev** an Arlodh Duw ow kerdhes y'n lowarth … | And they **heard the voice** of the LORD God walking in the garden … | hear | Genesis 3:8 | | 2 | Ev a dheuth nes hag amma dhodho; hag ev a **glewas blas** y dhillas ha'y venyga … | So he went to him and kissed him. When Isaac caught the **smell** of his clothes, he blessed him … | smell | Genesis 27:27 | | 3 | (constructed, attested context) ev a **glewas payn** yn y golon | he **felt** pain in his heart | feel | (Bible-style construction; cf. Job 14:22) | | 4 | (constructed, attested pattern) hi a **glewas peryl** | she **sensed** danger | sense | (constructed) |
Rules
```xml <rule weight="1.5">
<match lemma="klewes" tags="v.*"/>
<repeat from="0" upto="3">
<or>
<match tags="adv"/>
<match tags="adj.*"/>
<match tags="det.*"/>
<match tags="pr.*"/>
</or>
</repeat>
<or>
<match lemma="lev" tags="n.*"/>
<match lemma="son" tags="n.*"/>
<match lemma="sonyow" tags="n.*"/>
<match lemma="seni" tags="v.*"/>
<match lemma="ilow" tags="n.*"/>
<match lemma="kows" tags="n.*"/>
<match lemma="kowsow" tags="n.*"/>
<match lemma="ger" tags="n.*"/>
<match lemma="hwarth" tags="n.*"/>
<match lemma="hwerthin" tags="v.*"/>
<match lemma="tros" tags="n.*"/>
<match lemma="trosow" tags="n.*"/>
<match lemma="hwibanans" tags="n.*"/>
<match lemma="musik" tags="n.*"/>
</or>
<match>
<select lemma="hear" tags="v.*"/>
</match>
</rule>
<rule weight="1.5">
<match lemma="klewes" tags="v.*"/>
<repeat from="0" upto="3">
<or>
<match tags="adv"/>
<match tags="adj.*"/>
<match tags="det.*"/>
<match tags="pr.*"/>
</or>
</repeat>
<or>
<match lemma="blas" tags="n.*"/>
<match lemma="blasow" tags="n.*"/>
<match lemma="sawor" tags="n.*"/>
<match lemma="fler" tags="n.*"/>
<match lemma="fleryow" tags="n.*"/>
<match lemma="blasa" tags="v.*"/>
<match lemma="flerya" tags="v.*"/>
</or>
<match>
<select lemma="smell" tags="v.*"/>
</match>
</rule>
<rule weight="1.5">
<match lemma="klewes" tags="v.*"/>
<repeat from="0" upto="3">
<or>
<match tags="adv"/>
<match tags="adj.*"/>
<match tags="det.*"/>
<match tags="pr.*"/>
</or>
</repeat>
<or>
<match lemma="payn" tags="n.*"/>
<match lemma="paynys" tags="n.*"/>
<match lemma="dolor" tags="n.*"/>
<match lemma="anwos" tags="n.*"/>
<match lemma="tes" tags="n.*"/>
<match lemma="tomm" tags="adj.*"/>
<match lemma="yeyn" tags="adj.*"/>
<match lemma="amovyans" tags="n.*"/>
</or>
<match>
<select lemma="feel" tags="v.*"/>
</match>
</rule>
<rule weight="1.3">
<match lemma="klewes" tags="v.*"/>
<repeat from="0" upto="3">
<or>
<match tags="adv"/>
<match tags="adj.*"/>
<match tags="det.*"/>
<match tags="pr.*"/>
</or>
</repeat>
<or>
<match lemma="danjer" tags="n.*"/>
<match lemma="peryl" tags="n.*"/>
<match lemma="presens" tags="n.*"/>
<match lemma="movyans" tags="n.*"/>
</or>
<match>
<select lemma="sense" tags="v.*"/>
</match>
</rule>
<rule weight="1.0">
<match lemma="klewes" tags="v.*"> <select lemma="hear" tags="v.*"/> </match>
</rule> ```
2. `tybyans` → *idea / thought / opinion*
`tybyans` is a deverbal noun from `tybi` "to think". The English split:
- **opinion** — when paired with a verb of expressing/giving (`ri breus`, `gorra yn geryow`) or a stance adjective (good/bad/right/wrong); also in the fixed phrase `tybyans nahen` "another opinion / a different view" (Galatians 5:10).
- **thought** — when paired with introspective verbs (`omsynsi` "to consider oneself", `omsenji`, `kammdybi war` "to mistake about") or evaluative comparison (`avel` "as, like" — "thought to be like the clay").
- **idea** — default; the common case in plural and in psalm-style introspection.
Examples
| # | Original (Kernewek) | English Translation | Form | Source | |---|---|---|---|---| | 1 | Fydhyans a'm beus yn agas kever y'n Arlodh, na vydh dhywgh **tybyans** nahen … | I am confident in the Lord that you will take no other **view** … | opinion | Galatians 5:10 | | 2 | A vydh priweythor **tybys** avel pri? | Shall the potter be **thought** to be like the clay? | thought | Isaiah 29:16 | | 3 | Ev a dreyl pub **tybyans** dhe gevewya … | Every **idea** he turns to feasting … | idea | Sirach 18:32 | | 4 | … ow kul **tybyansow** an ARLODH … | … doing the **thoughts** of the LORD … | thought | Jeremiah 29:11 |
Rules — see existing block in `apertium-cor-eng.cor-eng.lrx`. The cleaned-up version below replaces the previous one:
```xml <rule weight="1.5">
<match lemma="tybyans" tags="n.*"/> <repeat from="0" upto="3"> <or><match tags="adv"/><match tags="adj.*"/><match tags="det.*"/><match tags="pr.*"/></or> </repeat> <or> <match lemma="ri breus" tags="v.*"/> <match lemma="gorra yn geryow" tags="v.*"/> <match lemma="kussul" tags="n.*"/> <match lemma="prederyans" tags="n.*"/> <match lemma="nahen" tags="adv.*"/> </or> <match><select lemma="opinion" tags="n.*"/></match>
</rule>
<rule weight="1.5">
<match lemma="tybyans" tags="n.*"/> <repeat from="0" upto="3"> <or><match tags="adv"/><match tags="adj.*"/><match tags="det.*"/><match tags="pr.*"/></or> </repeat> <or> <match lemma="omsynsi" tags="v.*"/> <match lemma="omsenji" tags="v.*"/> <match lemma="kammdybi war" tags="v.*"/> <match lemma="chonsus" tags="adj.*"/> <match lemma="avel" tags="adv.*"/> </or> <match><select lemma="thought" tags="n.*"/></match>
</rule>
<rule weight="1.0">
<match lemma="tybyans" tags="n.*"> <select lemma="idea" tags="n.*"/> </match>
</rule> ```
3. `settya` → *set / place*
`settya` is the Cornish verb meaning *to put in some way*; English splits this between *set* (configuration / time / value) and *place* (spatial location).
- **set** — when context contains `prys`, `termyn`, `dydh` (time, day, deadline), `jynn` (machine, configuration), or numerical values.
- **place** — default; the spatially-oriented use in Genesis (`settya y dylda` "pitch his tent", `settya y leuv war` "lay his hand on", etc.).
Examples
| # | Original (Kernewek) | English Translation | Form | Source | |---|---|---|---|---| | 1 | Hag ev a **settyas** y dylda yn-bann yntra Bethel hag Ai. | And he **pitched/placed** his tent between Bethel and Ai. | place | Genesis 12:8 (≈line 1607) | | 2 | Ev a **settyas** an prys may teffa Pharao a-rag Moyses. | He **set** the time at which Pharaoh would come before Moses. | set | (Exodus, paraphrase) | | 3 | Ha'n men ma a wrugavy y **settya** avel peulven. | And this stone, which I **set up** as a pillar … | place | Genesis 28:22 |
Rules
```xml <rule weight="1.4">
<match lemma="settya" tags="v.*"/> <repeat from="0" upto="3"> <or><match tags="adv"/><match tags="adj.*"/><match tags="det.*"/><match tags="pr.*"/></or> </repeat> <or> <match lemma="prys" tags="n.*"/> <match lemma="termyn" tags="n.*"/> <match lemma="dydh" tags="n.*"/> <match lemma="dedhyas" tags="n.*"/> <match lemma="jynn" tags="n.*"/> <match lemma="sedhes" tags="n.*"/> </or> <match><select lemma="set" tags="v.*"/></match>
</rule>
<rule weight="1.0">
<match lemma="settya" tags="v.*"> <select lemma="place" tags="v.*"/> </match>
</rule> ```
Verifying the rules
``` echo "i a glewas lev an arlodh ." | apertium -d . cor-eng echo "ev a glewas blas y dhillas ." | apertium -d . cor-eng echo "settya y dylda" | apertium -d . cor-eng echo "settya an prys" | apertium -d . cor-eng ```
- i # #hear #voice #the #lord .
- drink # #hear #smell *y #clothes .
- settya *y #tent
- settya #the #time