cmx-lid : le bambara, le français et l'anglais, mot par mot
**Nous publions cmx-lid, un petit modèle qui dit, mot par mot, si un texte est en bambara, en français ou en anglais. Il tourne entièrement dans le navigateur ou sur le téléphone, sans serveur. Essayez-le sur [ai.crommixmali.com/lid](https://ai.crommixmali.com/lid/).**
À Bamako, un message ressemble rarement à un manuel de grammaire. On écrit « n taara l'hôpital kunun, docteur ko n ka kɛnɛ » : j'étais à l'hôpital hier, le docteur dit que je vais bien. Deux langues, une seule phrase, et c'est la norme.
Savoir quelle langue parle chaque mot est la première brique de tout outil numérique pour le bambara. C'est ce qui permet de trier des textes pour entraîner d'autres modèles, d'envoyer un message au bon traducteur ou au bon clavier, ou de mesurer la place réelle du bambara dans ce que les gens écrivent. cmx-lid est le premier module de notre suite **cmx**, des modèles d'IA pensés pour tourner sur l'appareil.
## Pourquoi c'est plus difficile qu'il n'y paraît
Les outils génériques de détection de langue jugent une phrase entière, pas un mot. Et la plupart connaissent mal le bambara, ou pas du tout. Quatre obstacles reviennent sans cesse :
- **L'orthographe informelle.** Sur téléphone, on écrit rarement ɛ, ɔ, ɲ ou ŋ. « bɛ » devient « be » ou « bè », « dugu » devient « dougou », « cɛ » devient « tche ». Ces formes ressemblent à du français.
- **Les emprunts.** « lekɔli » vient de « l'école », « inchallah » vient de l'arabe. Faut-il les compter comme du bambara ?
- **Les petits mots ambigus.** « la », « de », « a », « ni » existent dans les deux langues, avec des sens différents.
- **Le manque de données.** Il existe très peu de textes bambara annotés mot par mot, et presque aucun message informel.
## Notre règle : l'usage, pas l'étymologie
Un mot appartient à la langue dans laquelle il est employé, pas à celle d'où il vient. C'est le choix le plus important du projet, et il tient en quelques exemples :
| Texte | Étiquette | Pourquoi |
| --- | --- | --- |
| inchallah, al-hamdoulillah | bambara | emprunts arabes intégrés, écrits en lettres latines |
| lekɔli, taabali, lopitali | bambara | mots français devenus bambara |
| n taara **opital** la | bambara | prononciation et écriture bambara |
| n taara **l'hôpital** | français | orthographe et élision françaises : c'est un vrai passage au français |
L'origine des emprunts n'est pas perdue pour autant. Elle est gardée dans une table à part (« inchallah → arabe », « lekɔli → français »), que le modèle ne voit jamais. Un futur outil pourra s'en servir, par exemple pour repérer le vocabulaire religieux.
## Comment ça marche
cmx-lid ne repose pas sur un seul gros modèle. Il enchaîne des étapes simples, de la plus sûre à la plus statistique, puis laisse les mots voisins trancher.

Une lettre comme ɛ suffit à reconnaître le bambara ; un accent comme é ou une élision comme l' signalent le français. Le reste est tranché par le lexique, puis par un petit modèle statistique de 2 Mo. Enfin, le contexte évite les faux changements de langue : un mot douteux entouré de bambara restera du bambara, sauf indice fort.
## Les données : des ressources ouvertes
cmx-lid a été entraîné uniquement sur des données publiques. Nous remercions celles et ceux qui les ont construites :
| Source | Ce qu'elle apporte | Licence |
| --- | --- | --- |
| [BAYEƐLƐMABAGA](https://github.com/RobotsMali-AI/datasets) (RobotsMali) | 47 000 phrases bambara–français alignées, issues du Corpus Bambara de Référence | CC BY-SA 4.0 |
| [Kunkado](https://huggingface.co/datasets/RobotsMali/kunkado) (RobotsMali) | 160 h de radio malienne transcrites, où les passages au français sont marqués | CC BY-SA 4.0 |
| [bambara-mt-dataset](https://huggingface.co/datasets/djelia/bambara-mt-dataset) (Djelia) | paires bambara–français et bambara–anglais | CC BY-SA 4.0 |
| [FrequencyWords](https://github.com/hermitdave/FrequencyWords) | les 10 000 mots anglais les plus fréquents | MIT |
Pour couvrir l'écriture de tous les jours, chaque mot bambara est aussi appris sous ses formes informelles : ɛ → e ou è, ɔ → o ou ò, ɲ → ny ou gn, u → ou, c → tch.
## Résultats, et leurs limites
Sur des textes jamais vus pendant l'entraînement, cmx-lid classe correctement environ 97 % des mots :
| Test | Mots bien classés |
| --- | --- |
| Textes édités bambara et français (BAYEƐLƐMABAGA) | 97,7 % |
| Bambara réécrit en orthographe informelle | 98,3 % |
| Radio malienne transcrite, avec passages au français (Kunkado) | 97,3 % |
Le chiffre le plus exigeant est la détection des passages au français dans la radio : un score F1 de 0,79. Quand cmx-lid dit « français », il a raison 88 fois sur 100, mais il manque encore environ 28 % des mots français, surtout les petits mots isolés comme « la », « de », « donc » ou « quoi ».
Autre limite : nous n'avons pas encore de jeu de test fait de vrais messages WhatsApp ou SMS. C'est là que le modèle servira le plus, et c'est notre prochaine priorité.
## Essayez-le
La démo est en ligne sur [ai.crommixmali.com/lid](https://ai.crommixmali.com/lid/). Écrivez ou collez un message : chaque mot se colore selon sa langue, et un résumé indique la langue principale et le nombre de passages d'une langue à l'autre. Le modèle pèse environ 400 Ko une fois compressé. Une fois chargé, il fonctionne hors ligne, et aucun texte ne quitte votre appareil.

Pour les développeurs, le même modèle existe en JavaScript/TypeScript et en Python, sans dépendance, et les deux versions donnent exactement les mêmes résultats.
```js
import { load } from "@crommix/lid"; // npm install @crommix/lid
const lid = await load();
lid.tag("n taara l'hôpital kunun");
// [["n","bam"], ["taara","bam"], ["l'","fra"], ["hôpital","fra"], ["kunun","bam"]]
lid.detect("je suis fatigué"); // "fra"
```
```python
import cmx_lid # pip install cmx-lid
cmx_lid.is_code_switched("réunion bɛ kɛ demain") # True
```
## La suite
cmx-lid ouvre la suite **cmx**. Les prochains modules suivront le même principe, des modèles légers qui tournent sur l'appareil :
- **cmx-asr** : transcrire la parole en bambara.
- **cmx-tts** : faire lire un texte bambara à voix haute.
- **cmx-mt** : traduire entre le bambara et le français.
Vous pouvez nous aider dès maintenant. Si vous écrivez en bambara, essayez la démo et signalez-nous les mots mal classés. Et si vous pouvez partager des messages réels, avec l'accord de leurs auteurs, ou relire des annotations, écrivez-nous : c'est ce qui rendra ces outils vraiment utiles au Mali.
## En bref
- **Ce que fait cmx-lid :** il dit, pour chaque mot, s'il est en bambara, en français ou en anglais.
- **Où il tourne :** dans le navigateur ou sur le téléphone, hors ligne, sans envoyer de données.
- **Ce qu'il vaut :** environ 97 % de mots bien classés sur des textes jamais vus.
- **Où l'essayer :** [ai.crommixmali.com/lid](https://ai.crommixmali.com/lid/). Pour l'intégrer : `npm install @crommix/lid` ou `pip install cmx-lid`.
---
*Crommix Mali S.A. est une entreprise technologique basée à Bamako. Nous construisons des outils numériques pour l'Afrique de l'Ouest, dont une suite de modèles d'IA pour le bambara et les langues du Mali. Le code de cmx-lid est sous licence Apache 2.0 ; le modèle, construit à partir de données CC BY-SA 4.0, est publié sous la même licence.*