Recursive AI
onenlpDocs

onenlp docs

Everything about OneNLP 1.0.0: getting started, the model packages, tokenizers and segmentation, rule matching, recognizers and language ID, the fast, distilled and base-size accurate tiers, embeddings, training, file formats and every measured result. These docs are for OneNLP 1.0.0, read from main at commit 59bd14c after the v1.0.0 tag (documentation changes only).

Models

The fast tierThe fast tier is a per-language pipeline built on a small hash-embedding encoder: each head reads vectors made from the hashed lower-cased form, prefix, suffix and shape of every token, mixed by a few window layers (and, for some languages, one bidirectional LSTM layer). It…The distilled accurate tierRecursiveAI.OneNlp.Models.Multilingual: one six-layer, width-384 student of mmBERT-base (35.5 M weights, distilled in PyTorch from mmBERT-base and exported once; recipes/accurate/student-v1), fine-tuned with per-language heads for English, German, French, Spanish, Portuguese…The base-size accurate tierRecursiveAI.OneNlp.Models.Multilingual.Large shares one fine-tuned mmBERT-base encoder across 84 UD languages, with entity heads for 19. It is distinct from .Models.Multilingual, the distilled model covering nine languages. The full language list is…The accurate-tier encoderHow an exported transformer becomes an IEncoder, what was measured, and what can and cannot be trained. Tools are in tools/accurate/ and tools/OneNlp.Accurate/; the recipe is recipes/accurate/en-tagging/.The accurate-tier corpusThe languages the accurate tier is trained on, as recipes/accurate/common/corpus.json describes them (written by tools/accurate/make_corpus_spec.py from the fetched files; licence verdicts in ud-licences.md). Release r2.18 of Universal Dependencies.Parser and noun chunksNormative for the parser head (RecursiveAI.OneNlp.Neural.Components.Parser) and Doc.NounChunks.Open-type entitiesEntity types named at run time: Nlp.Entities(text, "person", "organization"), with a threshold Nlp.Entities(text, ["contract party"], 0.1f), or OpenEntityRecognizer.Recognize(doc, types) on a document you tokenized.Classification and span categoriesTwo heads for labels you define: TextClassifier gives a document one or several categories, and SpanCategorizer labels spans of a document, including spans that overlap or nest. Both sit on any encoder (the fast encoder by default), train with Train (training.md) and are…Sentence embeddingsIEmbedder (core) turns text into a fixed-length vector; SentenceEmbedder (RecursiveAI.OneNlp.Neural) runs a sentence-transformers-format model on OneModel. Nlp.Embed is the happy path over the default model in RecursiveAI.OneNlp.Models.Embeddings.

Measured results

Results tableOne table of what is measured, what it is measured against, and whether it holds. Every number is copied from a file in this repository, named in the "Source" column or the section heading; nothing here was measured for this page. Rows that lose, and gaps, are listed in their…ResultsMeasured rows. The tokenizer speed rows below are final: they were taken in one benchmark-queue group per machine, alone on the machine, with bench/scripts/tokenizer-rows.sh. Speed numbers elsewhere on this page are indicative until they are re-measured alone on the machine.Base-size accurate tier: every rowIntervals: 95% bootstrap, 1,000 resamples, seed 20261106. The published reference passes when it is no higher than our upper bound; these are not paired intervals against the reference. Gold and raw input are never crossed. A missing reference is not a pass. The reference UD…Distilled accurate tier: every rowEvery row of the distilled accurate tier, RecursiveAI.OneNlp.Models.Multilingual, per language and input mode, with the fast tier and the published Stanza, UDPipe 2 and Trankit numbers beside it. Every row is information: the base-size tier is the one that gates.x64 speed rowsMeasured 2026-11-08 on an AMD Ryzen 9 7950X3D (16 physical cores, 32 logical), x64 Linux 7.0.0-38-generic, .NET SDK 10.0.403, runtime 10.0.14. Available ISA: SSE4.2, AVX2, AVX-512F/BW/VL, FMA and BMI2. CPU inference only; no GPU used. OneNLP 0.4.0-preview.1 source build…Tokenizer speed: x64See speed-x64.md for machine, input hashes, versions and method. Speedup is comparator time divided by ours. Load is information, not gated.MeasurementHow OneNLP scores its own output, how it puts confidence intervals on scores, and how a results row is judged against a reference. The scorers live in src/OneNlp/Scoring/; the command-line tool that turns predictions into results rows is tools/OneNlp.Eval/.Published reference resultsNumbers for the accurate tier to be judged against, copied from the sources named in each row, nothing re-run. Every number is an F1 (or accuracy where the source says so) × 100.Model provenanceEvery trained model, ours or a baseline we train for comparison, ships with a provenance log. The log is a Markdown file named PROVENANCE.md next to the recipe that produced the model; it is packed into the model package's notices. It answers four questions: what data went…