Alexandre Barroso ←

The weight of the last syllable

Stress in Brazilian Portuguese is nearly well-behaved. In most non-verbal words it falls on the penultimate syllable; and it moves to the last when that one is heavy — closed, with a coda or a long vowel. Which means you can guess much of it from the right edge of the word alone, and the weight of the syllables there.

But there's a tail. Proparoxytones — stress on the antepenult — are a real minority the right edge doesn't foresee. And that's where the trap lies for a model that leans too hard on that cue: it nails the majority with room to spare and, in the same motion, erases the tail. The more categorical the edge cue, the more the proparoxytone's probability slides toward zero:

In constraint terms, it's the usual story: weight and right-alignment hand you the penult by default and the final when the end is heavy — but never the antepenult (Kager, 2004). There's no lever for it. A light syllable at the right, and the paroxytone wins:

A Harmonic Grammar tableau, all syllables light: the paroxytone wins, with stress on the penult.

A heavy final syllable, and stress jumps to it:

The same with a heavy final syllable: stress jumps to the last one, yielding an oxytone.

Notice that in both tableaux the proparoxytone loses — an architecture tied to weight and the edge simply can't reach it. And that has a consequence for whoever learns: a learner that maximizes fit to the regular pattern tends to regularize the exceptions away, unless something protects them — a lexical mark, a richer representation (Lee et al., 2025).

Worth seeing the sum: the distribution of stress over the three positions, and what categoricity does to the antepenult's tail:

pythonthe tail collapses as categoricity rises
import math
b = [0.0, 0.8, 0.4]        # positional bias: antepenult, penult, final (default = penult)
def P(w, beta):
    H = [w[i] + b[i] for i in range(3)]
    e = [math.exp(beta * h) for h in H]; Z = sum(e)
    return [x / Z for x in e]

w = [0, 0, 0]              # three light syllables
print("categoricity β    P(proparox)  P(parox)  P(oxy)")
for beta in [0.5, 1, 2, 4, 8]:
    p = P(w, beta)
    print(f"     {beta:>3}          {p[0]:.3f}      {p[1]:.3f}     {p[2]:.3f}")

In the end, certainty is a kind of forgetting. An almost-right rule rounds off the "almost" — and the tail, where the interesting exceptions live, is the first thing to go.

  1. Kager, R. (2004). Optimality Theory. Cambridge University Press.
  2. Lee, S. S., Pater, J., & Prickett, B. (2025). Representing and Learning Stress in a MaxEnt Framework. Proceedings of AMP 2023/2024.

Barroso, A. M. (2025). The weight of the last syllable. alexandrebarroso.com. https://alexandrebarroso.com/notes/the-weight-of-the-last-syllable.html

@misc{barroso2025theweightofthelastsyllable,
  author       = {Alexandre Menezes Barroso},
  title        = {The weight of the last syllable},
  year         = {2025},
  howpublished = {alexandrebarroso.com},
  url          = {https://alexandrebarroso.com/notes/the-weight-of-the-last-syllable.html},
  note         = {alexandrebarroso.com}
}