Aɣbalu — Kabyle for the source, the fountainhead.
Natural language processing for Kabyle (Taqbaylit, ISO 639-3 kab, BCP-47 kab-Latn), a
Northern Berber language of Kabylia, Algeria with roughly 5–7 million speakers. The corpus
is the primary artifact; the models are built on top of it.
Kabyle has an unusual resource profile: it is speech-rich and text-poor. Common Voice v26.0 holds 571.29 validated hours of it — 10th of 294 locales — while the entire clean Kabyle web crawl is smaller than a single Tatoeba export.
The text that exists is also damaged in a specific, measurable way. Both seed corpora carry
systematic homoglyph corruption: Greek ε U+03B5 standing in for Latin ɛ U+025B in 2.60%
and 3.19% of rows. Kabyle legitimately uses ɣ ɛ ḥ ḍ ṣ ṭ ẓ ṛ č ǧ ţ, and the emphatic and
spirantised distinctions carry meaning, so the repair has to be a versioned normalisation
layer rather than a character filter.
Eleven repositories on the Hugging Face Hub under agbalu.
Every model loads with transformers and torch alone, without this repository.
| Model | ||
|---|---|---|
Masinissa-31M |
encoder | 90.51% on gold POS, against a most-frequent-tag baseline of 83.42% |
Amrouche-1.3B |
translation | beats NLLB-1.3B in all four directions; eng→kab 36.34 chrF++ |
Fadhma-300M |
speech recognition | CER 8.01 / WER 25.65 over 888 unseen speakers |
Belaid-31M |
punctuation and casing | macro-F1 0.793 |
Juba-27M |
Latin ↔ Tifinagh, with schwa restoration | 94.22% sentence exact match |
Mammeri-Tok |
tokenizer | ten vocabularies, 8k–32k |
| Dataset | |
|---|---|
KabBench |
2,009 MT pairs (326 repaired) and 1,500 LID rows across six Berber languages |
KabLex |
366,892 lexicon entries and 25,642 pronunciations |
KabInflect |
336,151 inflected forms over 6,198 paradigms |
KabTifinagh |
497,944 script-conversion pairs |
KabSentiment |
15,000 rows, three balanced classes |
Weights are Apache-2.0. Text keeps its upstream licences, so each card carries the licence composition of the data behind it, the decontamination result, and the defects that are not inferable from the artifact.
Kabyle means Kabyle. Tashelhit (shi), Central Atlas Tamazight (tzm), Tarifit (rif),
Tamasheq (taq) and Shawiya (shy) are related but distinct languages, and datasets
labelled "Tamazight" routinely mix them.
That is measured here rather than asserted. On a balanced Latin-script set, NLLB's own
language identifier labels 87.2% of Tashelhit, 93.2% of Tarifit and 95.2% of Central
Atlas Tamazight as kab_Latn — and it is the identifier that gated the bitext mining
behind most published Kabyle parallel data. Sibling sources are registered in a separate
file under a schema that refuses kab, so one cannot enter the corpus by accident.
make installPython ≥ 3.12.
make help lists every target. The three that matter first:
make checkThe gate: ruff check, ruff format --check, mypy --strict, and the full pytest suite.
It must pass with zero findings before anything is committed.
make registryValidates the corpus registry against its schema. SIBLINGS=1 validates the Berber sibling
registry instead.
make cleanDeletes every tool cache and all bytecode.
A family of subcommands is one target with a variable — make bench TASK=pos, not
make bench-pos — and defaults live in each CLI's argparse rather than in the Makefile,
so there is one copy of each.
src/agbalu/ one sub-package per pipeline stage, each with its own cli.py
modal_app/ remote GPU execution; all training runs here
tests/ unit/ and integration/, mirroring src
resources/ registries, lookup tables, schemas — versioned YAML
tools/ standalone scripts, no package
data/ raw/ (immutable) → interim/ → processed/
artifacts/ checkpoints, weights, exports
configs/ hyperparameters and environment settings
Data and model bytes are never committed. Provenance lives in
resources/corpus_registry.yaml, where every source
carries its licence, size, URI and checksum; reproduction lives in code.
Apache-2.0 for the code and the released weights — see LICENSE. Data retains its upstream licences, which the registry records per source alongside a redistribution class.