CoolFace
Modelpublic

alaminerca/nllb-sango-french

sourceHugging Facecc-by-4.0updated 5mo agoView on Hugging Face
0likes9downloads
Model Card

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.

[Try the Live Demo →](https://huggingface.co/spaces/alaminerca/sango-french-translator)

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:

LanguageBitext BLEUMined BLEUxsim ErrorSimilar Language
Haitian Creole26.129.2LowFrench
Nigerian Pidgin13.319.8MediumEnglish
Sango4.85.38.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 / ConfigurationBLEUchrF++Training Data
NLLB-200-600M (our baseline, step 0)2.3812.18— (zero-shot)
NLLB-200-600M + Sango-LoRA (ours)22.2143.0621,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:

ModelDirectionBLEUchrF++
NLLB-200 (base)fr → sg7.5034.27
NLLB-200 (base)sg → fr7.0125.15
NLLB-200 (base)Average7.2529.71
+ Sango-LoRAfr → sg6.7632.92
+ Sango-LoRAsg → fr6.3525.60
+ Sango-LoRAAverage6.5529.26
Retention90.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)

ModelBLEUData SizeSource
NLLB-200 (bitext only)4.8282K minedNLLB Team, Table 11
NLLB-200 (bitext + mined)5.31.9M minedNLLB 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

FrenchSangoDomain
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

SangoFrenchDomain
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)

python
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_name = "alaminerca/nllb-sango-french"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# French → Sango
text = "Au commencement Dieu créa les cieux et la terre."
tokenizer.src_lang = "fra_Latn"
inputs = tokenizer(text, return_tensors="pt", max_length=256, truncation=True)
translated = model.generate(
    **inputs,
    forced_bos_token_id=tokenizer.convert_tokens_to_ids("sag_Latn"),
    max_new_tokens=256,
    num_beams=3
)
print(tokenizer.decode(translated[0], skip_special_tokens=True))

# Sango → French
text_sg = "Na tongo nda ni, Nzapa asara yayu na sese."
tokenizer.src_lang = "sag_Latn"
inputs = tokenizer(text_sg, return_tensors="pt", max_length=256, truncation=True)
translated = model.generate(
    **inputs,
    forced_bos_token_id=tokenizer.convert_tokens_to_ids("fra_Latn"),
    max_new_tokens=256,
    num_beams=3
)
print(tokenizer.decode(translated[0], skip_special_tokens=True))

Gradio (Quick Demo)

python
import gradio as gr
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_name = "alaminerca/nllb-sango-french"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

def translate(text, direction):
    if direction == "French → Sango":
        tokenizer.src_lang = "fra_Latn"
        tgt_id = tokenizer.convert_tokens_to_ids("sag_Latn")
    else:
        tokenizer.src_lang = "sag_Latn"
        tgt_id = tokenizer.convert_tokens_to_ids("fra_Latn")
    inputs = tokenizer(text, return_tensors="pt", max_length=256, truncation=True)
    output = model.generate(**inputs, forced_bos_token_id=tgt_id, max_new_tokens=256, num_beams=3)
    return tokenizer.decode(output[0], skip_special_tokens=True)

gr.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

ParameterValue
Base modelfacebook/nllb-200-distilled-600M
MethodLoRA (Low-Rank Adaptation)
LoRA rank16
LoRA alpha32
LoRA dropout0.05
Target modulesqproj, vproj
Trainable parameters2,359,296 / 617,433,088 (0.38%)
Training data21,125 pairs (42,250 bidirectional)
Epochs3
Batch size4 per device × 8 gradient accumulation = 32 effective
Learning rate2e-4 (cosine schedule, 5% warmup)
Max sequence length256 tokens
PrecisionFP16 (mixed)
HardwareNVIDIA Tesla T4 (16 GB VRAM)
Training time~80 minutes

Dataset

[SFPC (Sango-French Parallel Corpus)](https://huggingface.co/datasets/alaminerca/sango-french-bible-parallel) — 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

bibtex
@article{mouhamad2026sangonmt,
  title={SangoNMT: Parameter-Efficient Domain Adaptation of NLLB-200 for Sango, an Isolated Creole Language},
  author={Mouhamad, Alim Al-Amine and Alkhodre, Ahmad B. and Alsaawy, Yazed},
  year={2026},
  note={Submitted}
}

🇫🇷 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.

[Essayer la démo →](https://huggingface.co/spaces/alaminerca/sango-french-translator)


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.