How it works

LemmaJet is a compiler: heavy NLP runs once, offline; what ships is a tiny deterministic function.

1. Distill

A teacher pipeline (morphological lexicons, taggers, optional LLM disambiguation for archaic or out-of-vocabulary words) processes a corpus once and produces lemma equivalence classes weighted by corpus statistics.

2. Induce

A reversed suffix trie is built over the vocabulary, with CutAdd(cut, add) operations that capture stem alternations (for example ó↔o in Polish) and a small exception table for suppletive forms.

3. Prune

Bottom-up cost-complexity pruning trades accuracy against model size, so you can choose a profile from xxs to xl.

4. Emit

The model is emitted as a standalone ES module, Python module, TypeScript declarations and Snowball .sbl, with identical output across targets.

Stemming is treated as set partitioning: stems need not be real words, only a stable, collision-free label per lemma family. Lemma mode emits true headwords.