opus-mt-en-pie: English to Para-Indo-European

Translates English into Para-Indo-European, a speakable Proto-Indo-European.

Proto-Indo-European, the ancestor of most languages of Europe and much of South Asia, was never written down; linguists reconstruct it from its daughters and disagree on many details. Para-Indo-European follows one reconstruction and answers every open question with one stated choice, kept everywhere. That makes it a para-language: a variety that could plausibly have been spoken alongside the real one, not a claim about exactly what was said. Every choice, with its main alternative, is on the positions page.

It has reconstructed roots, eight cases, aspect instead of tense, a real mediopassive and verb-final word order, spelled in a plain orthography a phone keyboard can type (h x f for the three laryngeals, written and said between consonants too: pxtéer "father"; c j jh for the palatals, q v vh for the labiovelars, doubled vowels for length).

  • Try it: the Space runs this model in the browser, with the engine, speech and a word-by-word breakdown.
  • Learn it: the course on Linguardia, where each word's popup shows its root and whether it is attested, derived or coined.

Version 3: an audited lexicon and PIE sentence conventions

Every word marked attested was checked against LIV², Mallory & Adams, NIL and the branch dictionaries by one reviewer and every proposed change by a second: 287 forms corrected (consonant series, laryngeals, wrong roots for the sense), 98 thin attestations downgraded, 87 declensions and genders fixed. Neuter consonant stems, pronoun ablatives and numerals up to a million are now made by rule. The training sentences follow PIE rather than Germanic phrasing: "X has Y" is "to X is Y", yes/no questions keep the verb last, comparatives take the ablative, and neuter plural subjects take a singular verb. 4,000 numeral sentences were added.

Coinages are built only on PIE roots: "far-" words (phone, television, radio) use *kʷel- "far", spelled qél-, not Greek tēle: phone is qélwoqax "far-voice". Because the model writes word keys and the engine spells them, lexicon fixes like this reach the output without retraining.

Version 2: the model writes a grammar plan, the engine spells it

The model does not write finished words. It writes which word, in which case or person, in which order:

I'm drinking alcohol with my family.
-> my%ins.sg.n kin#ins.sg with alcohol#acc.sg drink@1sg.prs .
-> Hméyoh jénhesh kóm médhupaawrom píbfox.

The language's grammar engine turns the plan into words (engine/engine.js, with the lexicon in engine/engine-lex.json; a line-for-line port of the Python engine, identical on all 218,045 forms). So every word form is one the grammar actually makes, and a display can show exactly what each piece of a word is. A key the lexicon does not have (the model reaching past what it knows, e.g. skyscraper#acc.sg) cannot be spelled, which makes an unknown word visible instead of a confident wrong guess.

Plan syntax: word@person.mood[.mid] verb, word#case.number noun, word%[cmp.|sup.]case.number.gender adjective, word$case pronoun, N! numeral, a bare word is a particle or postposition, =qe attaches "and".

Usage

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tok = AutoTokenizer.from_pretrained("linguardia/opus-mt-en-pie")
model = AutoModelForSeq2SeqLM.from_pretrained("linguardia/opus-mt-en-pie")
batch = tok([">>pie<< Perkunos struck the serpent with his stone."], return_tensors="pt")
plan = tok.batch_decode(model.generate(**batch, num_beams=5), skip_special_tokens=True)[0]
# 'perkwunos#nom.sg iz$gen stone#ins.sg serpent#acc.sg strike@3sg.aor .'
import * as Engine from './engine/engine.js'
Engine.init(await (await fetch('./engine/engine-lex.json')).json())
Engine.render(plan)   // 'Pérqunos tósyo xcmnéh hóvhim vhénet.'

The >>pie<< prefix is required: it is the target-language token added for this finetune.

Training data

Every target is a tagged analysis the engine compiles and validates, so the target side is correct by construction with respect to the language's own grammar and lexicon.

source pairs
Sentences written with tagged analyses (home life, work, people and stories, PIE myth and culture, modern life) 6,316
Sentences for the common-English vocabulary added in version 2 7,233
Numeral sentences (version 3) 4,000
(all written sentences weighted x3)
Meaning frames realised in both English and the engine, with semantic-class constraints 109,994

Version 2 adds about 2,700 lexemes so the language has a way to say nearly every word among the 10,000 most common in everyday English sentences: about 2,200 English synonyms were mapped onto existing words, and the rest got an attested PIE root, an ordinary PIE derivation, or a transparent compound on the coinage system (vehicles on wagon, buildings on house, devices on the instrument suffix, electric on power, distilled drink on fire: alcohol médhupaawrom "mead-fire"). It never borrows. Every root's consonant series was audited against the standard reconstructions.

None of the 2,000 course sentences used for evaluation appear in training.

Evaluation

On held-out sentences from the course, plans spelled by the engine, against references respelled with the audited lexicon and conventions:

model split sentences chrF BLEU exact match plans fully spellable
version 3 dev 1,000 72.18 45.63 30.4% 95.3%
version 3 test 1,000 72.93 45.32 30.1% 96.0%
version 2 dev 1,000 70.88 44.19 26.8% 95.6%
version 2 test 1,000 72.40 44.66 27.3% 96.5%

Version 3 is the checkpoint with the lowest validation loss (step 3,000 of a 2-epoch run).

Limits

  • Para-Indo-European is a reconstruction of a reconstruction. Treat output as a well-informed guess, not attested speech.
  • Rare modern words outside the lexicon come out as an English key the engine cannot spell; coin them in the lexicon.
  • Long or complex English (several clauses, rare idioms) degrades quickly; the training sentences are short.
  • English articles, tense nuances and phrasal verbs are mapped onto PIE categories, so some distinctions are lost.

Licence

Base model Helsinki-NLP/opus-mt-en-mul, Apache-2.0. Training data, engine and lexicon by linguardia. This finetune: Apache-2.0.

Downloads last month
29
Safetensors
Model size
77M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for linguardia/opus-mt-en-pie

Finetuned
(39)
this model

Space using linguardia/opus-mt-en-pie 1