Takes an English sentence and produces the same sentence with only the main
verb translated to German, positioned where German grammar puts it:
She has eaten the apple already. -> She has the apple already gegessen.
I get up early on weekdays. -> I stehe early on weekdays auf.
Do you drink coffee? -> Trinkst you coffee?
This is not translation — it is a constrained edit for diglot-weave language
learning, where readers acquire vocabulary and word order from context while
still reading their own language.
Model
Fine-tuned Helsinki-NLP/opus-mt-en-de
(MarianMT, 74M params), weight-averaged across the best runs ("soup"),
exported to int8 ONNX for in-browser use with transformers.js.
~25ms/sentence with beam 4 on CPU.
Evaluation
1,421-row held-out set, all 20 German word-order constructions, leak-checked
(0.1% near-duplicate contamination). "Honest" = the German verb is semantically
right (valid synonyms allowed) and correctly placed.
architecture
size
exact
honest
dictionary substitution (baseline)
—
21.9%
—
one-shot gemma-3-270m
270M
65.4%
73.8%
this model
74M
67.3%
75.4%
one-shot EuroLLM-1.7B
1.7B
71.3%
79.3%
The dictionary baseline scores 0% on every construction where the verb
moves — it cannot move a word. A 6×-bigger German-specialised LLM gains only
4 points of "honest" over this model at 20× the size.
Training data
32,159 examples generated with Claude across a 20-construction × 39-verb-group
grid, every row structurally validated (only the verb may change; multiset
comparison of the non-verb tokens). Published separately as the verbweave
dataset. Training data is LLM-generated, so LLM German is the accuracy ceiling.
Limitations
Separable and reflexive verbs are the hard cases (both halves of
stehe … auf must be recalled).
Informal du register from the training data occasionally disagrees with
MT's formal Sie.
English input only; sentence-level (no document context).