CCG Intonation and Information Structure #
@cite{steedman-2000}'s theory of how prosodic structure aligns with CCG derivations.
Insight #
CCG's "spurious ambiguity" is not spurious: different derivations correspond to different Information Structures, disambiguated by intonation in speech.
The sentence "Anna married Manny" has multiple CCG derivations:
- [Anna] [married Manny] — traditional subject-predicate
- [Anna married] [Manny] — via composition: theme "Anna married _", rheme "Manny"
Intonation selects among these:
- "ANNA married" (L+H* LH%) "MANNY" (H* LL%) → theme/rheme split at "married"
Prosodic Marking #
- Pitch accents (H*, L+H*): Mark focus/contrast at word level
- Terminal contours (phrase accent + boundary tone): Mark prosodic phrase edges (@cite{beckman-pierrehumbert-1986} §4)
- Information feature (theta/rho): Projects theme/rheme through derivation
The INFORMATION feature on CCG categories.
Categories are marked as:
- θ (theta): Part of the theme
- ρ (rho): Part of the rheme
- unmarked: Unspecified (can unify with either)
- φ (phi): Phrasal (after boundary tone applies)
- θ : InfoFeature
- ρ : InfoFeature
- unmarked : InfoFeature
- φ : InfoFeature
Instances For
Equations
- CCG.Intonation.instReprInfoFeature = { reprPrec := CCG.Intonation.instReprInfoFeature.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CCG.Intonation.instDecidableEqInfoFeature x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Can two info features unify?
Equations
- CCG.Intonation.InfoFeature.unmarked.unifies x✝ = true
- x✝.unifies CCG.Intonation.InfoFeature.unmarked = true
- CCG.Intonation.InfoFeature.θ.unifies CCG.Intonation.InfoFeature.θ = true
- CCG.Intonation.InfoFeature.ρ.unifies CCG.Intonation.InfoFeature.ρ = true
- CCG.Intonation.InfoFeature.φ.unifies CCG.Intonation.InfoFeature.φ = true
- x✝¹.unifies x✝ = false
Instances For
Unify two info features
Equations
- CCG.Intonation.InfoFeature.unmarked.unify x✝ = some x✝
- x✝.unify CCG.Intonation.InfoFeature.unmarked = some x✝
- CCG.Intonation.InfoFeature.θ.unify CCG.Intonation.InfoFeature.θ = some CCG.Intonation.InfoFeature.θ
- CCG.Intonation.InfoFeature.ρ.unify CCG.Intonation.InfoFeature.ρ = some CCG.Intonation.InfoFeature.ρ
- CCG.Intonation.InfoFeature.φ.unify CCG.Intonation.InfoFeature.φ = some CCG.Intonation.InfoFeature.φ
- x✝¹.unify x✝ = none
Instances For
A CCG category with prosodic annotation.
The INFORMATION feature projects through the category:
- (Sθ\NPθ)/NPθ: All arguments and result share the same info value
- cat : Cat
- info : InfoFeature
Instances For
Equations
- CCG.Intonation.instReprProsodicCat = { reprPrec := CCG.Intonation.instReprProsodicCat.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CCG.Intonation.instDecidableEqProsodicCat.decEq { cat := a, info := a_1 } { cat := b, info := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Notation helpers
Equations
- CCG.Intonation.ProsodicCat.theme c = { cat := c, info := CCG.Intonation.InfoFeature.θ }
Instances For
Equations
- CCG.Intonation.ProsodicCat.rheme c = { cat := c, info := CCG.Intonation.InfoFeature.ρ }
Instances For
Equations
- CCG.Intonation.ProsodicCat.plain c = { cat := c, info := CCG.Intonation.InfoFeature.unmarked }
Instances For
Equations
- CCG.Intonation.ProsodicCat.phrasal c = { cat := c, info := CCG.Intonation.InfoFeature.φ }
Instances For
A prosodic lexical entry: word + pitch accent → prosodic category.
The pitch accent determines the INFORMATION feature:
- H* → ρ (rheme)
- L+H* → θ (theme)
- null → unmarked
- Other accents → ρ (default to rheme for non-theme accents)
- form : String
- cat : Cat
- accent : Features.Prosody.PitchAccent
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get the prosodic category from a lexical entry
Equations
- One or more equations did not get rendered due to their size.
Instances For
An intonational tune: pitch accent + terminal contour.
The two main tunes in English (@cite{steedman-2000}):
- L+H* L H%: Theme tune (fall-rise)
- H* L L%: Rheme tune (fall)
- accent : Features.Prosody.PitchAccent
- terminal : Features.Prosody.TerminalContour
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CCG.Intonation.instReprTune = { reprPrec := CCG.Intonation.instReprTune.repr }
Equations
- CCG.Intonation.instDecidableEqTune.decEq { accent := a, terminal := a_1 } { accent := b, terminal := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
The canonical theme tune: L+H* with continuation rise (L H%)
Equations
- CCG.Intonation.themeTune = { accent := Features.Prosody.PitchAccent.L_plus_H_star, terminal := Features.Prosody.TerminalContour.continuation }
Instances For
The canonical rheme tune: H* with declarative fall (L L%)
Equations
- CCG.Intonation.rhemeTune = { accent := Features.Prosody.PitchAccent.H_star, terminal := Features.Prosody.TerminalContour.declarative }
Instances For
Is this a theme tune?
Equations
Instances For
Is this a rheme tune?
Equations
Instances For
Prosodic forward application: X/Y + Y → X Only succeeds if INFORMATION features unify.
Equations
- One or more equations did not get rendered due to their size.
- CCG.Intonation.prosodicForwardApp x✝¹ x✝ = none
Instances For
Prosodic backward application: Y + X\Y → X Only succeeds if INFORMATION features unify.
Equations
- One or more equations did not get rendered due to their size.
- CCG.Intonation.prosodicBackwardApp x✝¹ x✝ = none
Instances For
Prosodic forward composition: X/Y + Y/Z → X/Z INFORMATION features must unify and project to result.
Equations
- One or more equations did not get rendered due to their size.
- CCG.Intonation.prosodicForwardComp x✝¹ x✝ = none
Instances For
Apply a terminal contour to a prosodic category. Converts θ/ρ marking to φ (phrasal).
Equations
- CCG.Intonation.applyBoundary { cat := cat, info := CCG.Intonation.InfoFeature.θ } x✝ = { cat := cat, info := CCG.Intonation.InfoFeature.φ }
- CCG.Intonation.applyBoundary { cat := cat, info := CCG.Intonation.InfoFeature.ρ } x✝ = { cat := cat, info := CCG.Intonation.InfoFeature.φ }
- CCG.Intonation.applyBoundary { cat := cat, info := CCG.Intonation.InfoFeature.unmarked } x✝ = { cat := cat, info := CCG.Intonation.InfoFeature.φ }
- CCG.Intonation.applyBoundary { cat := cat, info := CCG.Intonation.InfoFeature.φ } x✝ = { cat := cat, info := CCG.Intonation.InfoFeature.φ }
Instances For
A prosodic derivation step. Extends CCG derivations with prosodic information.
- lex : ProsodicLexEntry → ProsodicDeriv
- fapp : ProsodicDeriv → ProsodicDeriv → ProsodicDeriv
- bapp : ProsodicDeriv → ProsodicDeriv → ProsodicDeriv
- fcomp : ProsodicDeriv → ProsodicDeriv → ProsodicDeriv
- bcomp : ProsodicDeriv → ProsodicDeriv → ProsodicDeriv
- ftr : ProsodicDeriv → Cat → ProsodicDeriv
- boundary : ProsodicDeriv → Features.Prosody.TerminalContour → ProsodicDeriv
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get the prosodic category of a derivation
Equations
- (CCG.Intonation.ProsodicDeriv.lex a).prosodicCat = some a.prosodicCat
- (a.fapp a_1).prosodicCat = do let c1 ← a.prosodicCat let c2 ← a_1.prosodicCat CCG.Intonation.prosodicForwardApp c1 c2
- (a.bapp a_1).prosodicCat = do let c1 ← a.prosodicCat let c2 ← a_1.prosodicCat CCG.Intonation.prosodicBackwardApp c1 c2
- (a.fcomp a_1).prosodicCat = do let c1 ← a.prosodicCat let c2 ← a_1.prosodicCat CCG.Intonation.prosodicForwardComp c1 c2
- (a.bcomp a_1).prosodicCat = none
- (a.ftr a_1).prosodicCat = do let __discr ← a.prosodicCat match __discr with | { cat := x, info := i } => some { cat := CCG.forwardTypeRaise x a_1, info := i }
- (a.boundary a_1).prosodicCat = do let c ← a.prosodicCat some (CCG.Intonation.applyBoundary c a_1)
Instances For
A prosodic phrase: a derivation with a terminal contour applied.
- deriv : ProsodicDeriv
- tune : Tune
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extract Information Structure from a sequence of prosodic phrases.
The phrase with theme tune (L+H* L H%) becomes the theme. The phrase with rheme tune (H* L L%) becomes the rheme.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Prosodic CCG derivations have Information Structure. Wraps
extractInfoStructure (Option-typed because not every list of
prosodic phrases yields a coherent Theme/Rheme partition) with a
default-everything-rheme fallback.
(The previous instance : HasInfoStructure (List ProsodicPhrase) ProsodicDeriv
typeclass shape was deleted in the 0.230.489 cleanup since no caller
dispatched on the typeclass — see Features/InformationStructure.lean
for the rationale. Direct calls suffice.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CCG.Intonation.fred_L = { form := "Fred", cat := CCG.NP, accent := Features.Prosody.PitchAccent.L_plus_H_star }
Instances For
Equations
- CCG.Intonation.ate_null = { form := "ate", cat := CCG.TV, accent := Features.Prosody.PitchAccent.null }
Instances For
Equations
- CCG.Intonation.the_null = { form := "the", cat := CCG.Det, accent := Features.Prosody.PitchAccent.null }
Instances For
Equations
- CCG.Intonation.beans_H = { form := "beans", cat := CCG.N, accent := Features.Prosody.PitchAccent.H_star }
Instances For
Equations
Instances For
Equations
- CCG.Intonation.anna_L = { form := "Anna", cat := CCG.NP, accent := Features.Prosody.PitchAccent.L_plus_H_star }
Instances For
Equations
- CCG.Intonation.married_null = { form := "married", cat := CCG.TV, accent := Features.Prosody.PitchAccent.null }
Instances For
Equations
- CCG.Intonation.manny_H = { form := "Manny", cat := CCG.NP, accent := Features.Prosody.PitchAccent.H_star }
Instances For
Equations
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Check if a prosodic derivation is well-formed (simplified)
Equations
- (CCG.Intonation.ProsodicDeriv.lex a).wellFormed = true
- (a.fapp a_1).wellFormed = (a.wellFormed && a_1.wellFormed && a.prosodicCat.isSome)
- (a.bapp a_1).wellFormed = (a.wellFormed && a_1.wellFormed)
- (a.fcomp a_1).wellFormed = (a.wellFormed && a_1.wellFormed && a.prosodicCat.isSome)
- (a.bcomp a_1).wellFormed = (a.wellFormed && a_1.wellFormed)
- (a.ftr a_1).wellFormed = a.wellFormed
- (a.boundary a_1).wellFormed = (a.wellFormed && a.prosodicCat.isSome)