Mova0.5 pre-release⌕
☰
home / docs / docs / The SLM derives its own tree rules

The SLM derives its own tree rules

world induce <train.conllu>... --dev <dev.conllu> --test <test.conllu>... --out <dir> [--iters N] [--min N] (world/src/induce.rs) — transformation-based, error-driven learning (after Brill 1995) of label rules on top of the parser. Features are level-1 knowledge, not words: part of speech of the word and its head, finiteness, position, whether the head has a subject or another object, matrix intransitivity, speech/motion verb class, light verbs, the absurdity matrix scores (OBJ, SUBJ in the real or tale layer), idiom kind, measure/time nouns, archaic adverbs, animacy, punctuation around. Candidates are conjunctions of 1–3 atoms built from the parser's label errors; the greedy loop takes the best fixed − broken with precision ≥ 0.85, applies it and repeats. Every rule is printed as a sentence with its counts.

Rules are scoped like the matrix layers: domain rules — everything induced on the training domain; general rules — those that do not hurt a dev set of another domain.

Speed and the GPU mode (2026-10-15)

The scoring runs on numbers and threads, with atoms cached across iterations. With --features gpu and MOVA_EXEC=gpu, break counting runs as an exact CUDA kernel. Rules and reports are identical in both modes. Timings are in docs/gpu-exec.md: at 152 k sentences, 10 iterations take 5 min 39 s on the CPU and 33 s on the GPU. MOVA_TIMING=1 prints the phases.

On the data of 2026-10-15 (train EWT + ESLSpok + the agreed school train, parsed by the en model en.bin, which was trained on the same kind of data), the inducer finds only 3 rules at 54 k sentences and 10 at 152 k. Train LAS is 90.4 / 91.3: the parser already fits its training sets, so few label-only errors pass --min 8 and precision 0.85. The rules change nothing on EWT dev (79.88), the school test (90.68) or EWT test (80.62). For the inducer to learn something, it needs errors the parser does not already know: text the parser has never seen, with gold or teacher trees.

Runs (2026-10-02)

Train on the parser's errors where it has not seen the text (training on EWT train finds only 2 rules: the parser has memorised it, LAS 93.65).

runtrainrulestales test LASEWT test LAS
v1EWT train + tales even276.85 → 77.03 (p < 0.001)79.82 → 79.82
v3, domain rulestales even (1 044 sentences)1276.85 → 77.32 (p < 0.001)79.82 → 79.79
v3, general rules (not hurting EWT dev)same876.85 → 77.17 (p < 0.001)79.82 → 79.84
hand-written repairs v4 (world absurd-repair)—476.85 → 76.9879.82 → 79.82

The first rule found in every run is the inverted subject — "obj → nsubj IF the head is a speech/motion verb, not an idiom, no comma or quote before" — rediscovered without being told, and better than the hand-written version (56 fixed / 2 broken on the tales test). Others: nsubj:pass → nsubj when the head has another object; parataxis → conj; obj → obl:unmarked for measure/time nouns the matrix finds absurd as objects; nsubj → obl:unmarked for a measure/time noun when the verb already has a subject. Rules: rules.tsv.

Next: induce on more held-out domains (EWT folds parsed by a model that did not see them), structural rules (head changes), and wire the domain/general rule sets into the reader in place of the hand-written repairs.

Hidden rules come back (2026-10-02)

world rediscover <book-list> [--sentences N] [--iters K] — leave-one-out over the shipped rules: the teacher parses book sentences with all rules, the student without one hidden rule; the inducer turns the student into the teacher with no gold. On 8 000 sentences from public-domain books: 12 of 12 hidden rules rediscovered, each as the same rule (e.g. obj → nsubj for speech/motion verbs: 182 fixed, 0 broken). Caveat: the hidden rules were induced in the same feature space, so this checks that the inducer is stable and finds them from unlabelled books; the harder test is hiding the hand-written repairs (other formulations) or a piece of knowledge (a matrix layer, the idiom base) and seeing what the inducer finds instead.

What each piece of knowledge gives the inducer (ablation, 2026-10-02)

INDUCE_WITHOUT=<group> world induce … hides one feature group; same train (tales even), same tests.

hiddenrulestales test, domain rulestales test, general rulesEWT test, general rules
nothing1277.3277.1779.84
syntax (finiteness, position, subject/object of the head)677.1176.8979.82
matrix (OBJ, SUBJ, intransitivity)877.2577.0179.82
verb classes (speech/motion, light verbs)1077.2377.2179.86
noun lists (measure/time, archaic, animacy)1077.2977.1479.83
punctuation around1077.3077.1479.86
idioms1277.3277.1879.86

(no repairs: tales 76.85, EWT 79.82.) Syntax and the matrix carry the most: without them the inducer finds half or two thirds of the rules and loses a third to a half of the gain. Verb classes partly substitute for each other (the general set even gains without them). Idioms give nothing to label repair — they matter for the absurdity alarms and the meanings, not for labels. Differences between rows are small (tens of words); the "nothing" row against no repairs is significant (p < 0.001).

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