CoolFace
Datasetpublic

alaminerca/sango-french-bible-parallel

SFPC: Sango-French Parallel Corpus The first quality-filtered, verse-aligned Sango-French parallel corpus, constructed for neural machine translation research. This dataset directly addresses the "Sango Problem" identified by Meta's NLLB-200 project — the failure of cross-lingual transfer for a linguistically isolated Creole language. Associated resources: Model: alaminerca/nllb-sango-french Demo: Sango-French Translator Paper: SangoNMT: Parameter-Efficient Domain Adaptation of… See the full description on the dataset page: https://huggingface.co/datasets/alaminerca/sango-french-bible-parallel.

sourceHugging Facecc-by-4.0updated 5mo agoView on Hugging Face
1likes31downloads
Dataset Card

SFPC: Sango-French Parallel Corpus

The first quality-filtered, verse-aligned Sango-French parallel corpus, constructed for neural machine translation research. This dataset directly addresses the "Sango Problem" identified by Meta's NLLB-200 project — the failure of cross-lingual transfer for a linguistically isolated Creole language.

Associated resources:


Dataset Summary

StatisticValue
Total verse pairs21,125
Bidirectional examples42,250
LanguagesSango (sagLatn) ↔ French (fraLatn)
DomainBiblical text
Source textsSango Bible (Tënë ti Nzâpä, 2010) + French Darby Bible
LicenseCC-BY-4.0

Splits

SplitBooksVerse PairsBidirectional Examples
TrainRemaining (all genres)18,42336,846
ValidationRuth, Jonah, Philippians, Ecclesiastes, Mark8621,724
TestEsther, Amos, Galatians, Proverbs, John1,8403,680
Total66 books21,12542,250

Splits are at book level (not random) to prevent data leakage. Adjacent Bible verses share vocabulary and themes; random splitting would inflate evaluation scores. Validation and test books cover all five major Biblical genres.


Data Format

Each example is a JSON object with the following fields:

json
{
  "id": "genesis_1_1_fr2sg",
  "source_lang": "fra_Latn",
  "target_lang": "sag_Latn",
  "source_text": "Au commencement Dieu créa les cieux et la terre.",
  "target_text": "Na tongo nda ni, Nzapa asara yayu na sese.",
  "book": "Genesis",
  "chapter": 1,
  "verse": 1
}
FieldDescription
idUnique identifier: {book}_{chapter}_{verse}_{direction}
source_langSource language code (NLLB format): fra_Latn or sag_Latn
target_langTarget language code (NLLB format): sag_Latn or fra_Latn
source_textSource sentence
target_textTarget (reference) sentence
bookBiblical book name
chapterChapter number
verseVerse number

The dataset is bidirectional: each verse pair appears twice (French→Sango and Sango→French), enabling a single model to translate in both directions.


Construction Pipeline

The corpus was constructed through a four-stage pipeline:

  1. 1.PDF Extraction — Text extracted from Sango and French Bible PDFs using PyMuPDF with regex-based verse identification
  2. 2.Verse-Level Alignment — Verses aligned by standardized book-chapter-verse addresses across both Bibles
  3. 3.Encoding Normalization — Systematic UTF-8 mojibake patterns corrected (40+ known corruption patterns)
  4. 4.Quality Filtering — Three filters applied: minimum 10 characters per side, length ratio within 1:3 to 3:1, content presence in both languages. Removed 849 pairs (3.9%)

Alignment Statistics

StatisticValue
Total verse addresses27,768
Successfully aligned20,690
Sango only (no French match)5,081
French only (no Sango match)1,997
Alignment rate74.5%

Genre Distribution

GenreTrainValidationTest
Narrative15,842144250
Prophecy7,94482210
Gospel3,3961,0621,508
Poetry/Wisdom2,3003441,502
Epistle2,68892210
Apocalyptic622
Law4,054

Counts are bidirectional examples.


Text Length Statistics

SplitMean (chars)MinMax
Train173171,874
Validation15428678
Test13512648

Usage

python
from datasets import load_dataset

dataset = load_dataset("alaminerca/sango-french-bible-parallel")

# Access splits
train = dataset["train"]
val = dataset["validation"]
test = dataset["test"]

# Example
print(train[0])

Use with NLLB-200

python
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

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

# Get a test example
example = dataset["test"][0]
tokenizer.src_lang = example["source_lang"]

inputs = tokenizer(example["source_text"], return_tensors="pt", max_length=256, truncation=True)
tgt_id = tokenizer.convert_tokens_to_ids(example["target_lang"])
output = model.generate(**inputs, forced_bos_token_id=tgt_id, max_new_tokens=256, num_beams=3)
print(tokenizer.decode(output[0], skip_special_tokens=True))

About Sango

Sango (ISO 639-3: sag) is the national language of the Central African Republic, spoken by approximately 5.5 million people. It is a creole-like language derived from Ngbandi (Ubangian family), characterized by tonal distinctions, minimal morphology, and SVO word order.

The NLLB-200 project identified Sango as the only Creole language for which no similar high-resource language could be found for cross-lingual transfer, resulting in the lowest Creole performance (5.3 BLEU with 1.9M mined sentences). This dataset provides high-quality, human-translated parallel data as an alternative to noisy mined data.


Limitations

  • Domain: Biblical text only. The formal register of Biblical Sango differs from everyday conversational usage.
  • Register: Written Sango is almost exclusively formal; this corpus reflects that bias.
  • Tone: Sango is tonal but tone markings are inconsistent in the source texts.
  • Coverage: 66 of 73 standard Biblical books (some books had 0% alignment rate).

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}
}

Authors

Alim Al-Amine Mouhamad, Ahmad B. Alkhodre, Yazed Alsaawy — Department of Computer Science, Islamic University of Madinah, KSA