You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Tengsoaba 1.7B

tengsoaba-1.7b is a compact instruction-tuned model for French ↔ Mooré (mos), built by BurkimbIA. It is trained to follow a small set of structured tasks on Mooré, a low-resource language of Burkina Faso.

A 4B version of the same model, same seven tasks, is published at burkimbia/tengsoaba-4b. It scores +13.9 chrF on French → Mooré and is the better choice when the target is Mooré.

The name refers to the tẽng-soaba, the master of the land: the custodian of the earth among the Nyonyonsé, the autochthonous people of the region who kept ritual authority over the land.

Tasks

The model is multi-task. Each request uses a structured prompt with a <task> tag, an <instruction>, and a typed <input>.

Task Input → Output
translate_fr_to_moore French → Mooré translation
translate_moore_to_fr Mooré → French translation
correct_moore Noisy Mooré → corrected Mooré (spelling / OCR / ASR errors)
quality_judgment A FR-Mooré pair → correct / incorrect / a verifier + short reason
terminology French term → Mooré term (domain-adapted)
standardize_moore Mooré → standard orthography

Prompt format

The model expects the same structured prompts it was trained on. Example for French → Mooré:

<task>translate_fr_to_moore</task>
<instruction>Traduis le contenu en moore naturel et correct. Produis uniquement la traduction.</instruction>
<alphabet lang="mos">a, ã, b, d, e, ẽ, ɛ, f, g, h, i, ĩ, ɩ, k, l, m, n, o, õ, p, r, s, t, u, ũ, ʋ, v, w, y, z</alphabet>
<input lang="fr">Bonjour, comment allez-vous ?</input>

Usage

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "burkimbia/tengsoaba-1.7b"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, dtype=torch.float16, device_map="cuda")

prompt = (
    "<task>translate_fr_to_moore</task>\n"
    "<instruction>Traduis le contenu en moore naturel et correct. "
    "Produis uniquement la traduction.</instruction>\n"
    "<alphabet lang=\"mos\">a, ã, b, d, e, ẽ, ɛ, f, g, h, i, ĩ, ɩ, k, l, m, n, o, õ, "
    "p, r, s, t, u, ũ, ʋ, v, w, y, z</alphabet>\n"
    "<input lang=\"fr\">Bonjour, comment allez-vous ?</input>"
)

# apply_chat_template returns a dict on transformers >= 5, so tokenize separately.
text = tok.apply_chat_template(
    [{"role": "user", "content": prompt}],
    tokenize=False, add_generation_prompt=True, enable_thinking=False,
)
ids = tok(text, return_tensors="pt").to(model.device)
out = model.generate(**ids, max_new_tokens=192, num_beams=2, do_sample=False)
print(tok.decode(out[0][ids["input_ids"].shape[1]:], skip_special_tokens=True).strip())

Recommended decoding: num_beams=2, no repetition penalty.

Measured 2026-08-24 on 30 held-out pairs from the test split of burkimbia/fr_mos_annotated_split_v2, chrF:

Decoding fr→mos mos→fr seconds
num_beams=4, repetition_penalty=1.05 29.2 34.1 84
num_beams=4 28.0 34.1 84
num_beams=2 27.4 32.8 34
greedy, repetition_penalty=1.05 25.6 31.2 17
greedy 24.5 31.4 25
greedy, repetition_penalty=1.15 22.2 32.4 19

num_beams=4 scores highest but costs 5x greedy. num_beams=2 takes two thirds of the gain for a third of the extra cost and is the better default; use 4 when quality matters more than latency.

Do not raise repetition_penalty above 1.05. At 1.15, fr→mos drops to 22.2 chrF, the worst of eight configs. The small gain at 1.05 does not transfer to the 4B sibling model, where any repetition penalty is harmful; measure per checkpoint rather than inheriting a default.

Limitations

  • Low-resource. Mooré has little digital text; the model can produce disfluent or wrong output, especially on long or out-of-domain sentences.
  • It invents word forms. Checked against the 129k-pair training corpus on 2026-08-24: several outputs contain words with zero occurrences in it (yonbẽ, wulga, marke, ne-yẽe). The output looks like Mooré and uses only alphabet-valid characters, which makes invented forms hard to spot without a speaker.
  • It translates, it does not converse. A question asked in Mooré that is not a translation request comes back as a restatement of the question, not an answer. Use it through the <task> prompts above.
  • Tone is not written in the Mooré orthography, so homographs exist; the model can pick the wrong sense.
  • quality_judgment is a heuristic aid, not a definitive verdict.
  • Outputs should be reviewed by a Mooré speaker before any downstream use.
Downloads last month
35
Safetensors
Model size
2B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support