Les messages WhatsApp ne ressemblent pas aux emails professionnels. Vos clients écrivent vite, depuis leur téléphone, souvent en marchant ou entre deux activités. Le résultat : des abréviations ("bjr", "stp", "pk"), des fautes d'orthographe fréquentes ("j'ai commender", "livraion"), et parfois des messages qui ne contiennent que des chiffres ou des emojis. Un chatbot qui ne comprend que du français parfait rate 40% de ses conversations.
Ce guide vous donne les outils et techniques pour rendre votre chatbot robuste face à l'imprécision linguistique naturelle des messages WhatsApp africains.
La taxonomie des erreurs WhatsApp africaines
Catégorie 1 : Abréviations SMS héritage (universelles)
Ces abréviations viennent de l'ère des SMS et sont universelles en France et en Afrique francophone :
| Abréviation | Signification | Fréquence |
|---|---|---|
| bjr / bj | bonjour | Très haute |
| bsr | bonsoir | Haute |
| stp / svp | s'il vous plaît | Très haute |
| pk / pq | pourquoi | Haute |
| bn | bien / bonne | Moyenne |
| pr | pour | Haute |
| ds | dans | Moyenne |
| qd | quand | Haute |
| koi / quoi | quoi | Haute |
| cb / cmb | combien | Haute |
| ms | mais | Haute |
| tlm | tout le monde | Moyenne |
| tt | tout | Haute |
| bcp | beaucoup | Haute |
| tjrs | toujours | Moyenne |
| nrv | énervé | Moyenne |
| dsl | désolé | Haute |
| pbl / pb | problème | Très haute |
| ct / c'est | c'est | Haute |
| ya / y'a | il y a | Très haute |
Catégorie 2 : Abréviations africaines spécifiques
Ces formes sont plus répandues en Afrique subsaharienne francophone :
| Abréviation | Signification | Marché |
|---|---|---|
| "wesh" | salut/oh | CI, Maghreb |
| "fé" | fait | CI |
| "defo" | définitivement | CI |
| "po" | pas / peu | CI, SN |
| "ya" | il y a / j'ai | CI |
| "c vs" | c'est vous | Général |
| "kk chose" | quelque chose | Général |
| "mm" | même | Général |
| "ac" | avec | Général |
| "ler" / "1er" | premier | Général |
Catégorie 3 : Fautes d'orthographe fréquentes
Les fautes les plus communes dans les messages WhatsApp africains :
# Fautes d'orthographe fréquentes → forme correcte
SPELLING_CORRECTIONS = {
# Verbes mal orthographiés
"commender": "commander",
"commandé": "commandé",
"livraion": "livraison",
"livaison": "livraison",
"recevoir": "recevoir",
"rembourser": "rembourser",
"anulé": "annulé",
"anullé": "annulé",
"payement": "paiement",
# Noms fréquents mal orthographiés
"comande": "commande",
"coli": "colis",
"produis": "produit",
"adrese": "adresse",
"numero": "numéro",
"portefeuil": "portefeuille",
"probleme": "problème",
"reponse": "réponse",
# Accents manquants (très fréquent sur mobile)
"deja": "déjà",
"meme": "même",
"ete": "été", # Contexte-dépendant
"a cause": "à cause",
"pret": "prêt",
# Confusion consonantique
"en tout cas": "en tout cas",
"sela": "cela",
"sa": "ça", # Attention, "sa" est aussi un article wolof
}
Catégorie 4 : Messages ultra-courts ou cryptiques
Certains messages sont extrêmement courts et difficiles à interpréter sans contexte :
- "?" → Demande d'information générale ou réponse en attente
- "non" → Refus d'une option proposée
- "ok" → Accord/confirmation
- "1" → Sélection de la première option (habitude des bots IVR)
- Juste un numéro → Probablement un numéro de commande
Implémentation : couche de robustesse orthographique
Solution 1 : Dictionnaire de corrections statique
import re
from typing import Tuple
class TextRobustnessLayer:
"""Couche de robustesse pour les messages WhatsApp africains"""
def __init__(self):
# Charger dictionnaires
self.abbreviations = ABBREVIATIONS_DICT # Dictionnaire complet
self.spelling_corrections = SPELLING_CORRECTIONS
self.african_normalizations = AFRICAN_DICT # Nouchi, wolof, darija
def preprocess(self, text: str, market: str = None) -> Tuple[str, dict]:
"""
Pipeline de preprocessing complet.
Retourne le texte normalisé et les métadonnées de transformation.
"""
original = text
transforms = []
# Étape 1 : Normalisation basique
text = text.strip()
text = re.sub(r'\s+', ' ', text) # Espaces multiples → simple
# Étape 2 : Expansion des abréviations
text_lower = text.lower()
for abbr, expansion in self.abbreviations.items():
# Chercher le mot entier (éviter "pr" dans "prêt")
pattern = r'\b' + re.escape(abbr) + r'\b'
if re.search(pattern, text_lower):
text = re.sub(pattern, expansion, text, flags=re.IGNORECASE)
transforms.append({'type': 'abbreviation', 'from': abbr, 'to': expansion})
# Étape 3 : Correction orthographique
for wrong, correct in self.spelling_corrections.items():
if wrong in text.lower():
text = re.sub(re.escape(wrong), correct, text, flags=re.IGNORECASE)
transforms.append({'type': 'spelling', 'from': wrong, 'to': correct})
# Étape 4 : Normalisation africaine si marché spécifié
if market:
text = self._apply_african_normalization(text, market)
return text, {
'original': original,
'normalized': text,
'transforms': transforms,
'was_modified': text.lower() != original.lower()
}
def _apply_african_normalization(self, text: str, market: str) -> str:
market_dict = self.african_normalizations.get(market, {})
for local_term, french_term in market_dict.items():
text = text.replace(local_term, french_term)
return text
Solution 2 : Correction orthographique avec spaCy + pyenchant
Pour une correction plus robuste et contextuelle :
# Installation : pip install spacy pyenchant
# python -m spacy download fr_core_news_sm
import spacy
import enchant
nlp = spacy.load('fr_core_news_sm')
spellchecker = enchant.Dict('fr_FR')
def spacy_spell_correct(text: str) -> str:
"""Correction orthographique contextuelle avec spaCy"""
doc = nlp(text)
corrected_tokens = []
for token in doc:
if token.is_alpha and not spellchecker.check(token.text):
suggestions = spellchecker.suggest(token.text)
if suggestions:
# Prendre la première suggestion seulement si très proche
best_suggestion = suggestions[0]
# Vérifier que la correction ne change pas le sens radicalement
if levenshtein_distance(token.text.lower(), best_suggestion.lower()) <= 2:
corrected_tokens.append(best_suggestion)
continue
corrected_tokens.append(token.text)
return ' '.join(corrected_tokens)
Gestion des messages numériques et emoji-only
// Handler pour messages spéciaux
function handleSpecialMessages(message, conversationState) {
// Message contenant uniquement un numéro
if (/^\d+$/.test(message.trim())) {
if (conversationState.expecting === 'menu_choice') {
return { type: 'menu_selection', value: parseInt(message) };
}
if (conversationState.expecting === 'order_number' || message.length >= 8) {
return { type: 'order_number', value: message };
}
return { type: 'unknown_number', value: message };
}
// Message emoji uniquement
const emojiRegex = /^[\u{1F000}-\u{1FFFF}\u{2600}-\u{27BF}\s]+$/u;
if (emojiRegex.test(message.trim())) {
// Mapper les emojis fréquents à des intentions
const emojiIntents = {
'👍': 'confirmation',
'👎': 'refus',
'❓': 'demande_information',
'🛍️': 'achat',
'📦': 'suivi_commande',
'💸': 'probleme_paiement',
'😡': 'insatisfaction',
'😊': 'satisfaction'
};
for (const [emoji, intent] of Object.entries(emojiIntents)) {
if (message.includes(emoji)) {
return { type: 'emoji_intent', intent, original: message };
}
}
return { type: 'emoji_unknown', original: message };
}
return null; // Message texte normal, traiter classiquement
}
Pour approfondir, consultez notre article sur le NLP en français africain et notre guide sur le chatbot WhatsApp guide complet.
FAQ
Q: Faut-il corriger les fautes d'orthographe avant de les envoyer à un LLM comme GPT-4 ?
A: GPT-4 et Claude sont déjà très robustes face aux fautes d'orthographe et aux abréviations — ils comprennent généralement l'intention même avec des messages très imparfaits. La normalisation orthographique est plus utile pour les modèles NLP classiques (détection d'intention par mots-clés ou embeddings) qui sont moins tolérants aux variantes.
Q: Combien d'abréviations faut-il couvrir pour avoir un impact significatif ?
A: Les 50 abréviations les plus fréquentes (liste ci-dessus) couvrent 80-85% des cas dans la plupart des marchés africains francophones. Un dictionnaire de 200 abréviations couvre 95%+ des cas. Au-delà, le rendement marginal décroît. Commencez par les 50 essentielles, mesurez l'impact, et élargissez si nécessaire.
Q: La correction orthographique automatique peut-elle créer des faux positifs (corriger un mot correct) ?
A: Oui, c'est le risque principal. "Sa" en wolof-français peut signifier "votre/ton" et non pas "ça" en français. "Dem" peut être un nom propre ou le verbe wolof "partir". Configurez des listes de mots à ne pas corriger (exemptions) pour les termes dialectaux courants, et limitez la correction aux fautes clairement lexicales.
Q: Comment gérer les messages en majuscules (signifiant souvent de la frustration) ?
A: Deux traitements en parallèle : (1) normalisation casse pour l'analyse du contenu textuel (tout passer en minuscules), (2) calcul du ratio majuscules/minuscules comme signal de sentiment avant la normalisation. Un message comme "JAMAIS REÇU MA COMMANDE ET C'EST INACCEPTABLE" doit déclencher une alerte sentiment avant toute normalisation.
La robustesse linguistique n'est pas un luxe — c'est une nécessité pour tout chatbot WhatsApp déployé en Afrique. Quelques heures de configuration de ces couches de normalisation améliorent drastiquement les taux de compréhension.
Créez votre chatbot robuste avec Whakup et configurez vos flows pour comprendre tous vos clients, quelle que soit leur orthographe.

Co-fondateur de Whakup, Arthur accompagne les entreprises africaines dans leur transformation digitale via WhatsApp depuis 2022. Passionné par le growth marketing et l'entrepreneuriat en Afrique francophone.
Prêt à passer à l'action ?
Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.
Démarrer l'essai gratuitArticles similaires
Abandon de flows WhatsApp : comprendre et réduire le taux d'abandon
Analyser et réduire l'abandon de flows dans votre chatbot WhatsApp. Identifier les étapes problématiques, comprendre les causes et appliquer les corrections pour améliorer la complétion.
Benchmark WhatsApp Marketing en Afrique par secteur : données 2025
Benchmarks WhatsApp Marketing par secteur d'activité en Afrique : e-commerce, banque, santé, tourisme, immobilier. Taux d'ouverture, conversion et satisfaction pour vous situer.
Conversation analytics WhatsApp : créer un tableau de bord de pilotage
Construire un tableau de bord analytics pour piloter votre chatbot WhatsApp. Métriques clés, visualisations, alertes automatiques et reporting pour décideurs africains.