Ukrainian stress combiner (combiner-v1)

A small learned scorer over the pipeline's tiers. For each candidate reading of an ambiguous word, it sees:

  • what every tier said about it;
  • which reading the fixed tier order chose.

It overrules the tier order only when it prefers another reading by a margin.

Input and output

32 features per candidate. wiki-stress/ml/src/ukstress_ml/combiner.py defines them; model.pt carries the list, and the list is part of the model:

group features
lexicon rank, capitalisation
morphology tier its pick; the tagger's agreement with the reading's case, number, gender and part of speech
cross-encoder probability of the candidate
token classifier probability of the candidate, the form's training count, how one-sided its training rows were
narrator prior share of audiobook narrators who said this reading, and how many said anything
readings whether the readings are told apart by sense, by grammar, or as proper nouns
tier order its answer, crossed with the tier that gave it
  • Model: one hidden layer of 32 tanh units, softmax across a token's candidates.
  • Output: a reading and its probability.
  • Gate τ = 0.2: it departs from the tier order only when its preferred reading's probability beats the tier order's reading by τ.
  • Unseen tiers: tiers that were added after training (the agreement repair) are always kept.
from ukstress_ml.combiner import Combiner, Assets
combiner = Combiner("uk-stress-combiner/model.pt")
assets = Assets.load("uk-stress-combiner")   # readings.jsonl, audio_prior.json, classifier_profile.json

In the API it is off by default. A request enables it with "combiner": true.

Training

  • Data: labelled tokens from two sources.
    • Common Voice uk, with audio gold at ranker confidence ≥ 0.99, split 60/20/20 by sentence.
    • The dev half of the lang-uk benchmark, human gold, weighted ×4.
  • Features: computed by running every tier independently over those tokens.
  • Model selection: the hidden size and weight decay were chosen on dev (cv + lang-uk). τ was then chosen as the largest dev gain on Common Voice that costs lang-uk no more than 0.3 points.
  • Hardware: CPU, about 1 min.
  • Reproducibility: retrained from the same features, it is byte-identical to the released model.pt.

Evaluation

Held-out test splits, the tier order against the combiner:

test tier order combiner
Common Voice test (3,001 tokens) 92.74% 94.77%
its top-200 forms (2,058) 96.06% 97.57%
lang-uk test half (748) 83.96% 83.96%

Limitations

  • Tied to the other models. It was trained on the outputs of these exact tier models. A different cross-encoder or classifier shifts its features and needs a retrained combiner.
  • Modern-text gold. It helps on audio-gold tests. On the project's small modern-text gold it scored 97.27% against the tier order's 98.07%, so it ships switched off.
  • Features at request time. It needs every tier's opinion, which the service computes once per request and caches.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support