SangoNMT: Parameter-Efficient Domain Adaptation of NLLB-200 for Sango
The first dedicated Sango-French neural machine translation system, directly addressing the "Sango Problem" identified by Meta's NLLB-200 project — the failure of massively multilingual scaling for a linguistically isolated Creole language.
Paper: SangoNMT: Parameter-Efficient Domain Adaptation of NLLB-200 for Sango, an Isolated Creole Language (Submitted, 2026)
The Sango Problem
The NLLB-200 project (
NLLB Team, 2022) identified Sango as a
uniquely difficult outlier among Creole languages. In their analysis (Table 11), Sango was the
only Creole language for which no similar high-resource language could be found to aid cross-lingual transfer training:
| Language | Bitext BLEU | Mined BLEU | xsim Error | Similar Language |
|---|
| Haitian Creole | 26.1 | 29.2 | Low | French |
| Nigerian Pidgin | 13.3 | 19.8 | Medium | English |
| Sango | 4.8 | 5.3 | 8.6% | None found |
Source: NLLB Team (2022), Table 11
This linguistic isolation — Sango is an Ubangian-derived creole with no closely related high-resource language — means that cross-lingual transfer strategies that benefit other low-resource languages simply do not work for Sango.
Results
In-Domain Evaluation (Biblical Test Set)
| Model / Configuration | BLEU | chrF++ | Training Data |
|---|
| NLLB-200-600M (our baseline, step 0) | 2.38 | 12.18 | — (zero-shot) |
| NLLB-200-600M + Sango-LoRA (ours) | 22.21 | 43.06 | 21,125 human-translated pairs |
Our Sango-LoRA achieves 22.21 BLEU on the in-domain Biblical test set — a dramatic improvement from the 2.38 step-0 baseline on the same domain.
General-Domain Evaluation (FLORES-200)
To provide a fair cross-domain comparison, we also evaluated on the FLORES-200 benchmark:
| Model | Direction | BLEU | chrF++ |
|---|
| NLLB-200 (base) | fr → sg | 7.50 | 34.27 |
| NLLB-200 (base) | sg → fr | 7.01 | 25.15 |
| NLLB-200 (base) | Average | 7.25 | 29.71 |
| + Sango-LoRA | fr → sg | 6.76 | 32.92 |
| + Sango-LoRA | sg → fr | 6.35 | 25.60 |
| + Sango-LoRA | Average | 6.55 | 29.26 |
| Retention | 90.3% | 98.5% |
The fine-tuned model retains ~90% of BLEU and ~99% of chrF++ on the general domain, confirming that domain-specific fine-tuning does not catastrophically degrade general capability. The model is a domain specialist: it excels at Biblical/formal Sango while preserving most general translation ability.
NLLB-200 Official Benchmarks (for reference)
| Model | BLEU | Data Size | Source |
|---|
| NLLB-200 (bitext only) | 4.8 | 282K mined | NLLB Team, Table 11 |
| NLLB-200 (bitext + mined) | 5.3 | 1.9M mined | NLLB Team, Table 11 |
Note: NLLB-200 scores are on the FLORES benchmark (general domain). Our in-domain score of 22.21 is on the Biblical test set. See the FLORES evaluation above for a same-benchmark comparison.
Translation Examples
All translations verified by a native Sango speaker.
French → Sango
| French | Sango | Domain |
|---|
| Au commencement Dieu créa les cieux et la terre. | Na tongo nda ni, Nzapa asara yayu na sese. | Biblical |
| Tu aimeras le Seigneur ton Dieu de tout ton cœur. | Mo ye Kota Gbia Nzapa ti mo na be ti mo kue. | Biblical |
| Je suis satisfait du resultat. | Ye so asi anzere na mbi mingi. | Everyday |
Sango → French
| Sango | French | Domain |
|---|
| Na tongo nda ni, Nzapa asara yayu na sese. | Au commencement Dieu créa les cieux et la terre. | Biblical |
| Nzapa abaa so ye ni ayeke nzoni. | Et Dieu vit que cela était bon. | Biblical |
| So zo la! | C'est une personne! | Everyday |
Usage
Python (Transformers)
1from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
2
3model_name = "alaminerca/nllb-sango-french"
4tokenizer = AutoTokenizer.from_pretrained(model_name)
5model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
6
7# French → Sango
8text = "Au commencement Dieu créa les cieux et la terre."
9tokenizer.src_lang = "fra_Latn"
10inputs = tokenizer(text, return_tensors="pt", max_length=256, truncation=True)
11translated = model.generate(
12 **inputs,
13 forced_bos_token_id=tokenizer.convert_tokens_to_ids("sag_Latn"),
14 max_new_tokens=256,
15 num_beams=3
16)
17print(tokenizer.decode(translated[0], skip_special_tokens=True))
18
19# Sango → French
20text_sg = "Na tongo nda ni, Nzapa asara yayu na sese."
21tokenizer.src_lang = "sag_Latn"
22inputs = tokenizer(text_sg, return_tensors="pt", max_length=256, truncation=True)
23translated = model.generate(
24 **inputs,
25 forced_bos_token_id=tokenizer.convert_tokens_to_ids("fra_Latn"),
26 max_new_tokens=256,
27 num_beams=3
28)
29print(tokenizer.decode(translated[0], skip_special_tokens=True))
Gradio (Quick Demo)
1import gradio as gr
2from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
3
4model_name = "alaminerca/nllb-sango-french"
5tokenizer = AutoTokenizer.from_pretrained(model_name)
6model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
7
8def translate(text, direction):
9 if direction == "French → Sango":
10 tokenizer.src_lang = "fra_Latn"
11 tgt_id = tokenizer.convert_tokens_to_ids("sag_Latn")
12 else:
13 tokenizer.src_lang = "sag_Latn"
14 tgt_id = tokenizer.convert_tokens_to_ids("fra_Latn")
15 inputs = tokenizer(text, return_tensors="pt", max_length=256, truncation=True)
16 output = model.generate(**inputs, forced_bos_token_id=tgt_id, max_new_tokens=256, num_beams=3)
17 return tokenizer.decode(output[0], skip_special_tokens=True)
18
19gr.Interface(fn=translate, inputs=["text", gr.Radio(["French → Sango", "Sango → French"])], outputs="text").launch()
About Sango
Sango (ISO 639-3: sag) is the national language of the Central African Republic (CAR), spoken as a lingua franca by approximately 5.5 million people. It serves alongside French as an official language since 1991.
Sango is a creole-like language derived from Ngbandi (Ubangian language family). It spread along the Ubangi River as a trade language before European colonization. Key linguistic features include:
- Tonal: 3 distinctive tones (high, mid, low)
- Minimal morphology: only 3 productive affixes
- SVO word order with key connectives ti (subordinating) and na (coordinating/locative)
- 91.3% African-origin vocabulary (only 6.8% French borrowings)
Despite its importance, Sango is virtually absent from NLP research — not represented in major benchmarks like MasakhaNER or AfriSenti, and with fewer than 300 Wikipedia articles.
Training Details
| Parameter | Value |
|---|
| Base model | facebook/nllb-200-distilled-600M |
| Method | LoRA (Low-Rank Adaptation) |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0.05 |
| Target modules | q_proj, v_proj |
| Trainable parameters | 2,359,296 / 617,433,088 (0.38%) |
| Training data | 21,125 pairs (42,250 bidirectional) |
| Epochs | 3 |
| Batch size | 4 per device × 8 gradient accumulation = 32 effective |
| Learning rate | 2e-4 (cosine schedule, 5% warmup) |
| Max sequence length | 256 tokens |
| Precision | FP16 (mixed) |
| Hardware | NVIDIA Tesla T4 (16 GB VRAM) |
| Training time | ~80 minutes |
Dataset
SFPC (Sango-French Parallel Corpus) — the first quality-filtered, verse-aligned Sango-French parallel corpus.
- Source: Sango Bible (Tënë ti Nzâpä, 2010) aligned with French Darby Bible
- Size: 21,125 parallel pairs
- Split strategy: Book-level (not random) to prevent data leakage
- Train: 18,423 pairs | Validation: 862 pairs | Test: 1,840 pairs
- Quality filtering: Length ratio, minimum length, content presence (849 pairs removed)
- License: CC-BY-4.0
Limitations
- Domain specificity: The model is trained exclusively on Biblical text. It excels in this domain but does not improve over the base model on general-domain text (FLORES-200). Performance on casual, conversational Sango — which involves heavy code-switching with French — is expected to be lower.
- Register gap: Written Sango is almost exclusively formal. No large corpora of conversational Sango exist.
- Tonal information: Sango is tonal, but tone is inconsistently marked in writing. The corpus does not systematically encode tonal distinctions.
- Evaluation scope: Our FLORES-200 evaluation shows the model is a domain specialist, not a general-purpose improvement. Mixed-domain fine-tuning is a priority for future work.
Citation
1@article{mouhamad2026sangonmt,
2 title={SangoNMT: Parameter-Efficient Domain Adaptation of NLLB-200 for Sango, an Isolated Creole Language},
3 author={Mouhamad, Alim Al-Amine and Alkhodre, Ahmad B. and Alsaawy, Yazed},
4 year={2026},
5 note={Submitted}
6}
🇫🇷 En Français
SangoNMT est le premier système dédié de traduction automatique neuronale Sango-Français. Il résout le « problème Sango » identifié par le projet NLLB-200 de Meta — Sango étant la seule langue créole pour laquelle aucune langue à haute ressource similaire n'a pu être trouvée.
En utilisant seulement 21 125 paires de traduction humaine de haute qualité issues de la Bible, nous obtenons 22,21 BLEU sur l'évaluation en domaine grâce à l'adaptation LoRA de seulement 0,38% des paramètres du modèle. Notre évaluation sur FLORES-200 montre que le modèle conserve environ 90% de sa capacité générale tout en acquérant une expertise de domaine spécialisée.
Authors
Alim Al-Amine Mouhamad — Department of Computer Science, Islamic University of Madinah, KSA
Ahmad B. Alkhodre — Department of Computer Science, Islamic University of Madinah, KSA
Yazed Alsaawy — Department of Computer Science, Islamic University of Madinah, KSA
This model is released as a research contribution to advance NLP for underserved African languages. We welcome community feedback and collaboration.