Mova0.6 pre-release⌕
☰
home / docs / repo-docs / The Mova dialect: a UD metadialect, treebanks and converters

The Mova dialect: a UD metadialect, treebanks and converters

This page covers mova, Mova's internal dialect of Universal Dependencies: why it exists, what it is built from, how treebanks and dialects are organized in the repository, the convert rule language and its commands, how converters are verified, and what training on it requires.

What it is

UD treebanks are annotated in different dialects:

Merged as they are, they would teach the model contradictions. So there is one internal dialect, mova, the English UD metadialect used by en and annot. Converter rules rewrite supported dependency-tree fields into it and back and can be checked in both directions; coverage is limited to the rules present in dialects/ and treebanks/, and enhanced DEPS are carried through unchanged. UD labels are an export table, not internal identifiers; enrichments go in MISC (Entity=, Cxn=).

The mova dialect

Base: UD 2.18 with EWT conventions. This is how en and annot annotate; the registry is en/data/ud-registry-en.tsv.

Layers on top:

Selection rule: take whatever is more consistent and more informative and converts to the standard without loss. A lossy target is only an export target, never the base.

Folders

treebanks/cards.tsv            — one fact row per UD treebank: licence, genres, layers, sizes, links, paper ids
treebanks/INDEX.md             — the index rendered from cards.tsv
treebanks/<lang>/<treebank>/   — Mova's notes on a treebank (lang is the ISO code, as in UD files)
  seeds.md                     — annotation conventions, differences from mova, known errors; one section per seed
  convert.md                   — converter rules between mova and the treebank's dialect, both directions
dialects/<id>/                 — representations and versions: mova, ud-2.18, ud-next, ud-2.14 (present);
                                 (other representations get a folder when they have rules)
  README.md, seeds/*.md, convert.md — the decisions, one seed per file, converter rules

Non-UD treebanks (PTB, OntoNotes, SUSANNE…) also go in treebanks/. Their data is often closed (LDC); we take the guidelines and seeds, and only open data.

The converter rule language (convert)

It is the seed rule language (The English layer) plus from: and to: lines and set actions. The engine is en::convert; it reuses node and condition parsing and binding enumeration from en::expert.

rule: eslspok.tmod
what: :tmod → :unmarked (UD 2.15)
from: eslspok
to: mova
match: t[rel=obl:tmod|obl:npmod]
set: t[rel=obl:unmarked]
source: UD 2.15, #1028

Fields: required rule, from, to, match, set, source; optional what, require, unless. A rule applies to a binding where every require clause holds and no unless clause holds. An unknown or repeated field, or from = to, is a parse error. A block tagged ```convert-todo is not read: this disables a rule that cannot be written yet.

set actions: node[action, action]; node[action], only on nodes from match; a node may be named twice.

A comma in the value of feats+=, lemma=, misc+= is part of the value (feats+=PronType=Int,Rel); a piece without = after a comma joins the previous action, after ; it is an error. A comma in a match condition value is not supported.

Fail-fast values: rel, upos, xpos are checked against the Rel, UPos, Tag enumerations; feats+=X=V against Feat; in feats-=X and feats+=X=@v the feature must be known; an unknown action, a node not from match, or head= pointing to itself is an error.

How rules are applied:

Lossless reading (en::conllu::Doc) keeps comments and all raw columns, with a Sentence view for matching. Writing without edits gives identical bytes on every English UD treebank (test full_round_trip_all_english_treebanks). Format violations are errors with a line number: CR, a comment inside a sentence, not 10 columns, non-consecutive word numbers, an unknown relation.

Commands:

The rules folder can be anything: dialects/, treebanks/, the whole repo or one file. A parse error in any convert.md inside it stops both commands. Hidden folders and target are skipped.

Verifying converters

The converter in dialects/ud-2.14 maps :tmod/:npmod ↔ :unmarked. The direction mova → ud-2.14 is lossy: the choice between :tmod and :npmod is reconstructed by ordered rules (measure, time lexemes, dates, the rest) and is sometimes wrong. All other columns return exactly; the analysis is in Converter mova ↔ ud-2.14.

Training on the metadialect

Training inputs must pass the licence gate (training data and licences). en convert-check reports round-trip differences for the configured converters; a passing round trip does not establish annotator accuracy or full equivalence of representations. The converter works on CoNLL-U dependency trees; training a union of every treebank, generalizing the parser beyond English, constituency, CCG, HPSG and meaning-graph conversion, and an annotation more abstract than the UD layer are not implemented by these commands.

This page in Markdown → https://md.mova.elamur.ai/free/en/docs/repo-docs/dialect/