O'Donnell 2015: English derivational morphology #
First study file using the FG-family substrate from
Morphology/FragmentGrammars/. Demonstrates the API on
the central empirical contrast of [OD15] Chapter 7
(Fig 7.3, p. 262): the productivity contrast between the highly
productive English nominaliser -ness and the unproductive -ion
and -ate.
Empirical content #
The book's Chapter 7 load-bearing claim is qualitative:
-ness:Adj>N is productive; -ion:V>N and -ate:BND>V are not.
On Fig 7.3 (p. 262), only the FG model places -ness in its top-5
productive suffixes; all four competing models (DMPCFG, MAG, DOP1,
ENDOP) rank -ion first or second, and three of those (DMPCFG, DOP1,
ENDOP) also wrongly elevate -ate (pp. 261–263). Table 7.1 (p. 265)
adds that only FG correlates strongly with Baayen's hapax-based
productivity estimators. Suffix.productivityIndex encodes a strict
ordering ness > ion > ate; the ion > ate half is a tie-break
(both are unproductive on novel forms but -ate is structurally more
restricted), not part of [OD15]'s central contrast.
Note that -ate is not a nominaliser — it is a verb-forming
suffix that selects bound stems (e.g. segregate from bound
segregat-). The toy grammar below reflects this: rAte produces
V, not N, with a BND (bound-stem) nonterminal as its argument.
The three suffixes are grouped here by being the central derivational
contrast of [OD15] Ch 7, not by sharing an output category.
DMPCFG critique (Ch 7) #
The DMPCFG model bases its productivity inferences on the token
frequency of suffixes ([OD15] Ch 7, p. 268). Per
[OD15] Fig 7.4 (p. 267), -ion has roughly an order
of magnitude more CELEX tokens than -ness, so a learned DMPCFG
posterior places -ion above -ness in productivity — exactly the
failure mode [OD15] uses to discriminate FG from
DMPCFG. The pseudo-counts in dmpcfgFromObserved are stipulated
to track the empirical productivity (via productivityIndex),
not learned from a corpus. Two PMF-form theorems below
(…_prior_lt and …_lt_of_count_gap) make the prior + flip
dichotomy Lean-checkable.
References #
- [OD15] Ch 6–7.
The three suffixes #
[OD15] Chapter 7's central productivity contrast (pp. 261–263). The terms "productive" and "unproductive" are pre-theoretic descriptions consistent with the literature the book reviews; the data below commits to nothing about why one suffix is productive and another is not.
The three English derivational suffixes of the Chapter 7 contrast.
- -ness (Adj>N): "perhaps the most commonly-discussed productive suffix in English" (p. 261); pine-scented → pine-scentedness.
- -ion (V>N): high type and token frequency but unproductive on novel verbs — the competing models' "obviously absurd prediction" is that it attaches to arbitrary verbs, producing *meetion "a MEETING event" (pp. 261–262).
- -ate (BND>V): a verb-forming suffix "restricted, by its categorial definition, from attaching to anything besides bound stems" (p. 263), e.g. segregate from bound segregat-.
Instances For
Equations
- ODonnell2015.instDecidableEqSuffix x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- ODonnell2015.instReprSuffix = { reprPrec := ODonnell2015.instReprSuffix.repr }
Equations
- ODonnell2015.instReprSuffix.repr ODonnell2015.Suffix.ness prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Suffix.ness")).group prec✝
- ODonnell2015.instReprSuffix.repr ODonnell2015.Suffix.ion prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Suffix.ion")).group prec✝
- ODonnell2015.instReprSuffix.repr ODonnell2015.Suffix.ate prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Suffix.ate")).group prec✝
Instances For
A pre-theoretic productivity index for the three suffixes — higher
is more productive. Coding ness > ion > ate reproduces the ordering
implied by [OD15] Chapter 7 (Fig 7.3 and the §7.3.1.1
discussion). The ion > ate direction is a tie-break: both are
unproductive on novel forms, but ate is structurally more restricted
(bound stems only), so we rank it strictly lower.
Equations
Instances For
The pre-theoretic strict ordering on the three suffixes by productivity. Any theory of productivity that purports to account for the [OD15] Chapter 7 data must reproduce this ordering; failure to do so falsifies the theory against the data (this is exactly the discriminator deployed against DMPCFG / MAG / DOP1 / ENDOP in Fig 7.3, all of which place -ion in their top 5).
Equations
Instances For
Frequency-spectrum statistics (Fig 7.4, pp. 267–268) #
The book's distributional evidence: -ness has the "large number of rare events" (LNRE) shape characteristic of a productive process — a spectrum "sharply peaked at low-frequency forms"; -ion's spectrum has few hapaxes and spreads its mass through higher frequency ranges (cf. §1.2.6 and Fig 1.1 on unproductive -ity/-th). Fig 7.4 reports spectra for -ness and -ion only; the book gives no spectrum for -ate, whose unproductivity is categorial (bound stems only).
Corpus statistics for a suffix in the Chapter 7 training corpus (CELEX-derived): word types, word tokens, hapax legomena.
- wordTypes : ℕ
- wordTokens : ℕ
- hapaxes : ℕ
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ODonnell2015.instReprSpectrumStats = { reprPrec := ODonnell2015.instReprSpectrumStats.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
-ness: 1024 word types, 15,568 tokens, 350 hapaxes ([OD15] pp. 267–268). LNRE-shaped: hapax-rich, spectrum peaked at frequency 1 (Fig 7.4, left).
Equations
- ODonnell2015.nessStats = { wordTypes := 1024, wordTokens := 15568, hapaxes := 350 }
Instances For
-ion: 1117 word types, 162,573 tokens, 83 hapaxes ([OD15] pp. 267–268). Not LNRE-shaped: hapax-poor, mass spread toward higher frequencies (Fig 7.4, right).
Equations
- ODonnell2015.ionStats = { wordTypes := 1117, wordTokens := 162573, hapaxes := 83 }
Instances For
-ness is hapax-richer than -ion (350/1024 vs 83/1117) — the
distributional fingerprint of productivity that Baayen's hapax-based
estimators measure and that the FG model exploits (p. 268). Stated by
cross-multiplication to stay in Nat.
-ness has the higher type–token ratio (1024/15,568 vs 1117/162,573): -ion's distribution is dominated by reuse of high-frequency existing words, not novel coinage.
-ion has more than an order of magnitude more tokens than -ness — the token-frequency gap that misleads DMPCFG, which "bases productivity inferences purely on the token frequency of suffixes" (p. 268).
Toy CFG #
Equations
- ODonnell2015.instDecidableEqSym x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.adj prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.adj")).group prec✝
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.v prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.v")).group prec✝
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.bnd prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.bnd")).group prec✝
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.ness prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.ness")).group prec✝
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.ion prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.ion")).group prec✝
- ODonnell2015.instReprSym.repr ODonnell2015.Sym.ate prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.Sym.ate")).group prec✝
Instances For
Equations
- ODonnell2015.instReprSym = { reprPrec := ODonnell2015.instReprSym.repr }
Equations
- ODonnell2015.instDecidableEqSuffixNT x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- ODonnell2015.instReprSuffixNT.repr ODonnell2015.SuffixNT.N prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.SuffixNT.N")).group prec✝
- ODonnell2015.instReprSuffixNT.repr ODonnell2015.SuffixNT.A prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.SuffixNT.A")).group prec✝
- ODonnell2015.instReprSuffixNT.repr ODonnell2015.SuffixNT.V prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.SuffixNT.V")).group prec✝
- ODonnell2015.instReprSuffixNT.repr ODonnell2015.SuffixNT.BND prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ODonnell2015.SuffixNT.BND")).group prec✝
Instances For
Equations
- ODonnell2015.instReprSuffixNT = { reprPrec := ODonnell2015.instReprSuffixNT.repr }
Rule N → A · ness.
Equations
- ODonnell2015.rNess = { input := ODonnell2015.SuffixNT.N, output := [Symbol.nonterminal ODonnell2015.SuffixNT.A, Symbol.terminal ODonnell2015.Sym.ness] }
Instances For
Rule N → V · ion.
Equations
- ODonnell2015.rIon = { input := ODonnell2015.SuffixNT.N, output := [Symbol.nonterminal ODonnell2015.SuffixNT.V, Symbol.terminal ODonnell2015.Sym.ion] }
Instances For
Rule V → BND · ate. Reflects [OD15]'s -ate:BND>V
classification (p. 261): -ate is a verb-forming suffix that
selects bound stems, not a noun-forming suffix.
Equations
- ODonnell2015.rAte = { input := ODonnell2015.SuffixNT.V, output := [Symbol.nonterminal ODonnell2015.SuffixNT.BND, Symbol.terminal ODonnell2015.Sym.ate] }
Instances For
Rule A → adj.
Equations
- ODonnell2015.rAdj = { input := ODonnell2015.SuffixNT.A, output := [Symbol.terminal ODonnell2015.Sym.adj] }
Instances For
Rule V → v.
Equations
- ODonnell2015.rV = { input := ODonnell2015.SuffixNT.V, output := [Symbol.terminal ODonnell2015.Sym.v] }
Instances For
Rule BND → bnd.
Equations
- ODonnell2015.rBnd = { input := ODonnell2015.SuffixNT.BND, output := [Symbol.terminal ODonnell2015.Sym.bnd] }
Instances For
The toy CFG: nominalisation via -ness (from adjective) or
-ion (from verb), verb formation via -ate (from bound stem).
Equations
- One or more equations did not get rendered due to their size.
Instances For
DecidableEq for the grammar's NT projection — needed by
DMPCFG's typeclass arguments. Not synthesised automatically
because suffixGrammar.NT is a structure projection that the
typeclass solver does not reduce to SuffixNT.
Bridge from data layer + DMPCFG instance #
Per-rule pseudo-count for the toy grammar. The three
productivity-bearing rules get productivityIndex + 1 (so
ness ↦ 3, ion ↦ 2, ate ↦ 1), inheriting both the strict
ordering and any future revision of Suffix.productivityIndex.
The three structural selectional rules get a neutral 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A DMPCFG over suffixGrammar whose per-rule pseudo-counts are
derived from Suffix.productivityIndex (the qualitative productivity
ranking). The connection is structural: revising productivityIndex
changes the pseudo-counts here in lockstep.
Equations
- ODonnell2015.dmpcfgFromObserved = { pseudo := ODonnell2015.pseudoVal, pseudo_pos := ODonnell2015.dmpcfgFromObserved._proof_1 }
Instances For
Plumbing: named N-bucket witnesses + parametric pseudoVal lemma #
The N-LHS bucket of suffixGrammar is nonempty (rNess ∈ it).
Required for mapWeightPMF and mapWeight_sum_eq_one_of_lhs.
All four LHS buckets of suffixGrammar are nonempty: every
nonterminal in this toy grammar has at least one rule expanding
it (N has rNess + rIon, A has rAdj, V has rAte + rV, BND has rBnd).
Required to construct dmpcfgFromObserved.posteriorMAP D
as a full MultinomialPCFG suffixGrammar (the structure carries
the typeclass [∀ a, Nonempty (G.RulesWithLHS a)] because
PMFs over empty supports don't exist).
Theorems #
The FG-family API exemplified on the toy grammar: any DMPCFG
over suffixGrammar assigns probability 1 — and hence positive
probability — to the empty corpus. Direct corollary of
DMPCFG.corpusProb_zero.
Structural drift sentry: a stronger productivity ranking
(moreProductiveThan) implies a larger DMPCFG pseudo-count for the
corresponding rule. Propagates moreProductiveThan through
pseudoVal, so this breaks if Suffix.productivityIndex is revised
in a way that contradicts the rule-level encoding.
The central failure mode [OD15] Ch 7 documents
(p. 268; Fig 7.4 p. 267 supplies the CELEX evidence). DMPCFG
posterior MAP weights track pseudo + count, so any corpus
where rIon derivations exceed rNess derivations by more than
1 makes DMPCFG's PMF rank rIon above rNess — directly
contradicting moreProductiveThan ness ion. The +1 threshold
reflects the pseudo-count gap (pseudoVal rNess − pseudoVal rIon = 3 − 2 = 1); once corpus counts overcome the prior gap,
frequency dominates.
O'Donnell's CELEX numbers in Fig 7.4 (-ion: ~162k tokens vs
-ness: ~16k tokens) leave the gap an order of magnitude larger
than +1, so the conclusion holds for realistic data; the
hypothesis is the abstract minimum that suffices.
Prior PMF (empty corpus): DMPCFG correctly orders the N-rules of
suffixGrammar. With no data, the posterior IS the prior (per
mapWeight_zero), and the prior IS the per-LHS-normalised
pseudo-counts. Since pseudoVal rNess > pseudoVal rIon by
construction, the PMF mass at rNess exceeds that at rIon.
The first half of the [OD15] Ch 7 critique of DMPCFG: it does not start wrong. The model's failure mode is data-driven, not prior-driven.
Bridge demo. The same prior comparison stated as a fact about
dmpcfgFromObserved.posteriorMAP 0 — a MultinomialPCFG suffixGrammar
derived from the DMPCFG via the conjugate-prior collapse.
This is the proof-of-life that the DMPCFG → MultinomialPCFG
bridge cashes out: any DMPCFG-side PMF fact translates straight
to a MultinomialPCFG-side fact about the posterior MAP, via
posteriorMAP_rulePMF. Future cross-paper consumers (Albright-Hayes,
Bybee, dual-route) can target MultinomialPCFG and have their
theorems automatically apply to DMPCFG-derived posteriors.
The full [OD15] Ch 7 critique of DMPCFG, in one theorem. Two facts that look contradictory but aren't:
- Without data (empty corpus), DMPCFG's PMF over the N-rules
ranks
rNessaboverIon— matching the data-layerproductivityIndex. - Given a corpus with sufficiently many
rIonderivations (more thanrNessby more than the pseudo-count gap of 1), the PMF flips and ranksrIonaboverNess— contradicting the empirical productivity ordering [OD15] reports for English.
Per Ch 7 (Fig 7.4 p. 267), DMPCFG is built with the right prior
but bases its posterior on pseudo + count, so when CELEX-scale
token frequencies hit the model the data overwhelms the prior
and the posterior ranking flips. The fix the book proposes —
Fragment Grammars — gives a different posterior structure that
doesn't collapse productivity into raw frequency.
The Probabilistic Elsewhere Condition (§5.5.3) #
[OD15] §5.5.3 (pp. 189–191) derives the Elsewhere Condition —
"also known as Pāṇini's principle, pre-emption, the subset principle,
or the blocking principle" — from probabilistic inference alone: rules
define distributions over the forms they generate, so a rule whose
support properly includes another's "must assign lower probability to
each of those forms, on average" (conservation of belief), and
conditioning preserves the preference. The book quotes
[Kip73]'s formulation — prefer r₂ when
Inputs(r₂) ⊂ Inputs(r₁) — which is Morphology.Exponence.Rule's
specificity order (applicability-set inclusion, Exponence.toPreorder).
Formalized in the uniform-generation case, where the preference is
pointwise rather than on average: nested supports give the narrower
rule a strictly higher generation probability at every shared form
(genProb_lt_of_ssubset), and a likelihood-maximal rule among a
vocabulary's generators is an Elsewhere winner
(maxGenProb_isElsewhereWinner) — no nesting or comparability
assumption needed, because card-minimality forces ⊆-minimality. Since
higher probability is smaller support (genProb_le_iff_card_le), this is
the size principle as a specificity score in the shared core:
selectByCard_isElsewhereWinner runs Exponence.selectBy on the
dualized support cardinality, discharging the core's conditional
soundness law via Finset.eq_of_subset_of_card_le.
Uniform generation probability over a finite support — the uniform case of [OD15] §5.5.3's rules-as-distributions.
Equations
- ODonnell2015.genProb s c = if c ∈ s then (↑s.card)⁻¹ else 0
Instances For
The pointwise probabilistic Elsewhere Condition: at every shared form, a properly narrower rule assigns strictly higher probability.
Uniform generation probability ranks supports by cardinality at a shared form: a rule assigns at least as much probability iff its support is no larger. The monotone bridge from maximum-likelihood selection to the support-cardinality specificity score — maximizing probability is minimizing support cardinality.
A finitely supported rule: an exponent with a finite set of forms it can generate.
- exponent : F
The exponent.
- supp : Finset Ctx
The forms the rule generates.
Instances For
A finitely supported rule exposes the shared exponence core interface
(Morphology.Exponence.Rule): applicability is support membership.
Equations
- ODonnell2015.instRuleFinRule = { exponent := ODonnell2015.FinRule.exponent, Applies := fun (r : ODonnell2015.FinRule Ctx F) (c : Ctx) => c ∈ r.supp }
Equations
- ODonnell2015.instDecidableRelFinRuleApplies r c = Finset.decidableMem c r.supp
The size principle as a specificity score ([OD15]
§5.5.3): selecting the finitely supported rule of least support
cardinality — dualized so smaller supports win the argmax — through
the shared core's Exponence.selectBy yields an Elsewhere winner.
Minimizing support cardinality is maximizing uniform generation
probability (genProb_le_iff_card_le), so this is Elsewhere selection as
maximum-likelihood inference, on record as a score.
Elsewhere selection is maximum-likelihood inference
([OD15] §5.5.3): a rule maximizing uniform generation
probability at c among a vocabulary's generators is an Elsewhere
winner of the corresponding vocabulary. Maximizing probability is
minimizing support cardinality (genProb_le_iff_card_le), whence
card-minimality forces ⊆-minimality — the same reasoning
selectByCard_isElsewhereWinner routes through the core's score.