Polydesk-logotype
Polydesk.ai — Header

Hate Speech Detection

La hate speech detection (détection du discours haineux) est une tâche de classification de texte qui consiste à identifier automatiquement les contenus exprimant ou incitant à la haine, à la violence ou à la discrimination envers un individu ou un groupe sur la base de caractéristiques telles que l’origine ethnique, la religion, le genre, l’orientation sexuelle ou le handicap.

Hate Speech Detection en bref
Catégorie
NLP / Classification / Modération de contenu / Trust & Safety
Tâches
Binaire (hate/not-hate), multi-classe (hate/offensive/neutral), multi-label (cibles)
Approches
BERT/RoBERTa fine-tuné, LLMs (LLaMA, GPT, Mistral), Perspective API, classifieurs ML
Datasets
HateXplain, Davidson, Jigsaw, HASOC, Dynamically Generated, IndoHateMix
Métriques
F1-score (macro), Precision, Recall
Lié à
Sentiment Analysis, Emotion Detection, Fake News Detection

Un problème NLP parmi les plus difficiles

Détecter le discours haineux semble simple en surface (repérer les insultes), mais c’est en réalité l’une des tâches de NLP les plus complexes. Le même mot peut être haineux dans un contexte et anodin dans un autre. Le discours haineux codé utilise délibérément des euphémismes et des mots de passe pour échapper aux filtres. Le sarcasme et l’ironie brouillent les frontières. Et les normes de ce qui constitue un discours haineux varient selon les cultures, les plateformes et les cadres juridiques.

Quelques exemples illustrent cette complexité : « retourne dans ton pays » est clairement haineux ; « ces gens sont un problème » est ambigu sans contexte ; « les hommes sont des déchets » peut être du discours haineux ou de l’hyperbole satirique selon le contexte ; et les communautés en ligne développent constamment de nouveaux codes et symboles pour exprimer la haine tout en échappant à la détection.

Taxonomie du discours haineux

La classification ne se limite pas à un simple binaire hate/not-hate. Les systèmes modernes distinguent plusieurs niveaux et dimensions :

Niveaux de classification

Hate speech (discours haineux) : contenu qui attaque directement un individu ou un groupe sur la base de caractéristiques protégées (race, religion, genre, orientation sexuelle, handicap, etc.).

Offensive language (langage offensant) : contenu vulgaire, insultant ou grossier qui n’est pas spécifiquement dirigé contre un groupe protégé. La distinction entre offensive et haineux est l’une des plus difficiles à automatiser.

Toxic language (langage toxique) : terme plus large englobant tout contenu qui dégrade la qualité d’une conversation en ligne (attaques personnelles, trolling, provocation).

Microagression : commentaires subtils qui expriment un préjugé implicite sans être ouvertement haineux. Extrêmement difficile à détecter automatiquement.

Cibles du discours haineux

La classification par cible est essentielle pour la modération fine :

Cible Exemples de datasets Particularités
Race / Ethnie HateXplain, Davidson Vocabulaire codé en constante évolution
Religion HASOC, Islamophobia datasets Contexte géopolitique complexe
Genre / Sexisme CallMeSexist, sEXism Frontière floue avec le sexisme « ordinaire »
Orientation sexuelle Jigsaw Identity Réappropriation de termes par les communautés
Handicap Sous-représenté dans les datasets Vocabulaire capacitiste souvent ignoré
Individu (cyberharcèlement) USElectionHate Nécessite un contexte sur la cible

Évolution des méthodes de détection

ML classique (2015-2019)

Les premières approches utilisaient des features linguistiques manuelles (présence de mots-clés haineux, ratio de majuscules, densité d’insultes) combinées à des classifieurs comme SVM, régression logistique ou Random Forest. Le dataset de Davidson et al. (2017), avec 25 000 tweets annotés en 3 classes (hate, offensive, neither), est devenu la référence. Ces approches atteignent des F1 de 85-90% mais dépendent lourdement de lexiques de mots haineux, faciles à contourner par des variantes orthographiques.

Deep learning (2017-2022)

Les modèles de deep learning ont supprimé le besoin de lexiques manuels. Les BiLSTM avec des embeddings Word2Vec spécifiques au domaine (entraînés sur des corpus de discours haineux) atteignent 93% de F1, car les embeddings capturent les sens connotés des mots dans ce contexte spécifique. L’arrivée de BERT a marqué un tournant : BERT fine-tuné atteint 96% de F1 sur les datasets combinés, grâce à sa compréhension contextuelle bidirectionnelle.

Le framework TARGE (LLM-powered explainable hate speech detection, PMC 2025) illustre l’état de l’art de cette période : il utilise Mistral-7B pour extraire des rationales (explications) du texte, RoBERTa pour encoder ces features, et DistilBERT pour la classification finale. Le résultat est un système qui non seulement classifie mais explique sa décision, en alignant ses rationales avec celles des annotateurs humains.

LLMs (2023-aujourd’hui)

Les grands modèles de langage changent la donne en hate speech detection grâce à deux atouts majeurs : une compréhension contextuelle plus profonde (ils saisissent le sarcasme, l’ironie, les références culturelles) et la capacité de fonctionner avec très peu de données étiquetées.

Les résultats de la recherche récente sont clairs :

LLMs > BERT dans la plupart des scénarios : une étude à grande échelle (arXiv, 2024) sur 5 datasets montre que ChatGPT avec un prompt de raisonnement surpasse RoBERTa fine-tuné sur HateXplain (F1 0.82 vs 0.66 pour BERT). Les LLMs open source fine-tunés font encore mieux : LLaMA-3.1-8B fine-tuné surpasse les modèles BERT même entraîné sur seulement 10% des données disponibles.

LLMs open source > GPT-4o-mini : une étude de 2025 (arXiv) montre que les LLMs open source fine-tunés (LLaMA-3.1-8B, Mistral-7B, InternLM-2.5-7B, Qwen2.5-7B) surpassent GPT-4o-mini en zero-shot, tout en offrant les avantages de la transparence et de la personnalisation.

Multilingue amélioré : une étude sur la détection multilingue (anglais, espagnol, urdu) montre que GPT-3.5 Turbo atteint des F1 de 0.87 (anglais), 0.85 (espagnol) et 0.81 (urdu), surpassant tous les classifieurs traditionnels et la plupart des modèles Transformer.

Perspective API de Google L’API Perspective (Jigsaw / Google) est le service le plus déployé commercialement pour la détection de toxicité en ligne. Elle fournit des scores de toxicité, d’insulte, de menace et d’identité attack en temps réel via API. Cependant, les études récentes montrent que les LLMs fine-tunés surpassent Perspective sur la plupart des benchmarks de hate speech, surtout pour le discours haineux codé et les contenus multilingues. Perspective reste pertinente comme baseline et comme solution plug-and-play sans infrastructure ML.

Datasets de référence

Dataset Taille Classes Langue(s) Particularité
HateXplain ~20 000 posts Hate / Offensive / Normal + rationales EN Annotations explicatives (rationales)
Davidson (2017) ~25 000 tweets Hate / Offensive / Neither EN Le plus cité, baseline historique
Jigsaw Toxic ~160 000 commentaires Multi-label (toxic, severe toxic, obscene, threat, insult, identity hate) EN Grande taille, multi-label
HASOC Variable (shared task annuel) HOF / NOT, subtypes EN, HI, DE, MR Multilingue, shared task FIRE
IndoHateMix ~15 000 posts Hate / Not-hate + cibles Hindi-English code-mixed Code-mixing, translittération
Dynamically Generated ~41 000 entrées 4 rounds adversariaux EN Dataset adversarial progressif
Biais dans les datasets de hate speech Les datasets de discours haineux souffrent de biais systématiques documentés. Le dataset Davidson sur-annote les tweets contenant le « n-word » comme haineux même quand ils sont utilisés par la communauté afro-américaine dans un contexte non haineux. Le dataset Jigsaw présente des biais identitaires : les phrases mentionnant certains groupes sont plus souvent classées comme toxiques indépendamment du contexte. Ces biais se propagent aux modèles entraînés dessus. La recherche sur les datasets « dynamically generated » (où des annotateurs adversariaux tentent de tromper le modèle en temps réel) vise à réduire ces biais.

Défis techniques spécifiques

Discours haineux implicite et codé

Le discours haineux explicite (insultes directes) est relativement facile à détecter. Le vrai défi est le discours haineux implicite : métaphores déshumanisantes (« ces cafards »), dogwhistles (mots-codes compris uniquement par les initiés), références culturelles codées, et négation apparente (« je ne suis pas raciste, mais… »).

Les LLMs sont nettement meilleurs que BERT pour capturer ces nuances, grâce à leur pré-entraînement sur des corpus massifs qui incluent des discussions sur ces phénomènes. Cependant, les dogwhistles les plus récents échappent encore à la détection car ils n’existaient pas dans les données de pré-entraînement.

Dépendance au contexte

Le même texte peut être haineux ou non selon le contexte : qui parle (réappropriation de termes par les communautés concernées), à qui (entre amis vs. en public), sur quelle plateforme (un forum de débat politique vs. un espace jeunesse), et dans quel cadre culturel. Les systèmes actuels peinent à intégrer ces dimensions contextuelles, ce qui explique le taux persistant de faux positifs sur les contenus provenant de communautés marginalisées qui discutent de leur propre expérience.

Multilingue et code-mixing

Le discours haineux en ligne est massivement multilingue. Le code-mixing (mélange de langues dans un même message) est la norme dans de nombreuses communautés en ligne (hinglish, spanglish, franglais). Les modèles entraînés sur l’anglais seul échouent face à ces contenus. XLM-RoBERTa et les LLMs multilingues (GPT, Claude, Mistral) améliorent significativement la couverture, mais les langues à faibles ressources restent sous-traitées.

Évasion adversariale

Les utilisateurs contournent activement les filtres via des substitutions de caractères (« h@te », « n1gger »), l’insertion de caractères invisibles, le leetspeak, les images de texte, et l’utilisation de nouveaux euphémismes. L’augmentation de données par LLM (Computing, Springer 2025) aide à couvrir ces variantes : un LLM génère des exemples synthétiques qui maintiennent le style original tout en introduisant de la diversité, améliorant les F1 de BERT et DeBERTa de 5 à 13 points sur les plus petits datasets.

Implémenter la détection

Démarrage rapide : Perspective API

# pip install google-api-python-client
from googleapiclient import discovery

client = discovery.build(
    "commentanalyzer", "v1alpha1",
    developerKey="YOUR_API_KEY",
    discoveryServiceUrl="https://commentanalyzer.googleapis.com/$discovery/rest?version=v1alpha1"
)

analyze_request = {
    'comment': {'text': 'Votre texte à analyser'},
    'requestedAttributes': {
        'TOXICITY': {},
        'IDENTITY_ATTACK': {},
        'INSULT': {},
        'THREAT': {}
    },
    'languages': ['fr']
}

response = client.comments().analyze(body=analyze_request).execute()
toxicity = response['attributeScores']['TOXICITY']['summaryScore']['value']

Production : BERT/DeBERTa fine-tuné

from transformers import AutoModelForSequenceClassification, AutoTokenizer

# Modèle pré-entraîné sur la toxicité
model_name = "unitary/toxic-bert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# Pour le français, fine-tuner CamemBERT sur vos données
# ou utiliser un modèle multilingue comme xlm-roberta-base

LLM avec prompt de raisonnement

prompt = """Analysez le texte suivant et déterminez s'il contient
du discours haineux.

Classification :
- HATE_SPEECH : attaque directe contre un groupe protégé
- OFFENSIVE : langage vulgaire/insultant sans cibler un groupe
- NEUTRAL : ni haineux ni offensant

Pour HATE_SPEECH, identifiez également :
- La cible (race, religion, genre, orientation, autre)
- Le type (insulte, déshumanisation, menace, incitation)
- Le niveau d'implicite (explicite, implicite, codé)

Texte : [texte à analyser]

Répondez en JSON avec votre classification et votre raisonnement."""

Performances comparées

Les performances varient fortement selon le dataset, la granularité de la classification et la langue :

Modèle HateXplain (F1) Davidson (F1) Multilingue (F1 moyen) Coût relatif
SVM + TF-IDF ~0.60 ~0.85 ~0.70 Très faible
BiLSTM + domain embeddings ~0.70 ~0.93 ~0.75 Faible
BERT fine-tuné ~0.66 ~0.96 ~0.80 Moyen
Perspective API ~0.65 ~0.88 ~0.75 Gratuit (limites)
ChatGPT (raisonnement) ~0.82 ~0.90 ~0.85 Élevé (API)
LLaMA-3.1-8B fine-tuné ~0.85 ~0.95 ~0.87 Moyen (GPU)

L’écart entre BERT (0.66) et LLaMA fine-tuné (0.85) sur HateXplain est particulièrement révélateur : HateXplain contient beaucoup de discours haineux implicite et contextuel, exactement le type de contenu où les LLMs excellent. Sur Davidson, un dataset avec plus de hate speech explicite, l’écart est beaucoup plus réduit.

Point important : même les meilleurs modèles sont limités par l’accord inter-annotateurs des datasets. Sur HateXplain, le kappa de Cohen entre annotateurs est d’environ 0.60-0.65. Un modèle ne peut pas faire mieux que le consensus humain sur lequel il est évalué.

Enjeux éthiques et réglementaires

Liberté d’expression vs. protection : la frontière entre discours haineux et opinion controversée est un sujet de débat permanent. Les systèmes automatiques ne devraient pas être l’arbitre unique. La meilleure pratique est une modération hybride : détection automatique pour le tri initial, validation humaine pour les cas ambigus.

Biais des modèles : les classifieurs de hate speech héritent des biais de leurs données d’entraînement. Des études montrent que les modèles classent plus souvent comme toxiques les tweets en AAVE (African American Vernacular English) que les tweets équivalents en anglais standard. L’audit régulier des biais (par groupe démographique, par dialecte) est essentiel.

Cadre réglementaire : en Europe, le Digital Services Act (DSA) impose aux plateformes des obligations de modération et de transparence sur les systèmes automatiques de détection. La loi française contre la haine en ligne et le NetzDG allemand imposent des délais de retrait. Ces réglementations renforcent la demande pour des systèmes fiables et explicables.

Explicabilité : pour que la modération automatique soit acceptée, les décisions doivent être explicables. Le framework TARGE et les approches LLM avec raisonnement répondent à cette exigence en fournissant les rationales de la classification, alignées avec le jugement humain.

Applications

Modération de plateformes sociales : Facebook/Meta, X, YouTube, TikTok déploient des systèmes de détection à l’échelle de milliards de contenus par jour. La combinaison de classifieurs rapides (pour le filtrage de masse) et de LLMs (pour les cas subtils) est l’architecture dominante.

Modération de communautés en ligne : forums, sections commentaires de médias, plateformes de jeux. La détection en temps réel avec des seuils configurables par communauté permet d’adapter la modération au contexte.

Veille et recherche : les chercheurs en sciences sociales utilisent la détection automatique pour mesurer l’évolution du discours haineux dans le temps, identifier les campagnes coordonnées et étudier les dynamiques de radicalisation.

Compliance réglementaire : les entreprises soumises au DSA européen ou aux réglementations nationales utilisent la détection automatique pour documenter leurs efforts de modération et générer les rapports de transparence exigés.

Verdict

La hate speech detection a considérablement progressé grâce aux LLMs. Les modèles fine-tunés (LLaMA-3.1, Mistral-7B) surpassent désormais BERT et les API commerciales comme Perspective sur la plupart des benchmarks, y compris en multilingue et en code-mixing. Le principal avantage des LLMs est la compréhension du contexte implicite, qui était le talon d’Achille des approches précédentes.

Cependant, la tâche reste intrinsèquement difficile car elle repose sur des jugements contextuels et culturels que même les humains ne partagent pas toujours. Le taux de désaccord inter-annotateurs sur les datasets de hate speech (20-40% selon les études) fixe un plafond de performance théorique. La meilleure approche est hybride : détection automatique pour le tri à grande échelle, validation humaine pour les cas ambigus, et audit régulier des biais.

Pour un projet concret en français, commencez par Perspective API comme baseline (gratuit, rapide, supporte le français), puis évaluez un LLM en zero-shot (Claude ou GPT-5.4) pour les cas subtils. Si le volume justifie un modèle dédié, fine-tunez un XLM-RoBERTa ou un LLM open source sur vos données annotées.


Questions fréquentes sur la hate speech detection

Quelle est la différence entre hate speech et offensive language ?

Le hate speech cible spécifiquement un individu ou un groupe sur la base de caractéristiques protégées (race, religion, genre, etc.) avec l’intention de discriminer, d’humilier ou d’inciter à la violence. Le langage offensant est vulgaire, grossier ou insultant sans cibler spécifiquement un groupe protégé. « Va te faire voir » est offensant ; « les [groupe] sont tous des [insulte] » est du hate speech. Cette distinction est cruciale juridiquement mais difficile à automatiser, surtout quand le discours haineux est implicite. Les meilleurs modèles (LLMs fine-tunés) atteignent environ 85-90% de F1 sur cette distinction ternaire.

Les LLMs sont-ils meilleurs que BERT pour la hate speech detection ?

Oui, de manière convaincante. Les études récentes convergent : LLaMA-3.1-8B fine-tuné surpasse BERT même avec seulement 10% des données d’entraînement. ChatGPT avec un prompt de raisonnement atteint F1 0.82 là où BERT se limite à 0.66 sur HateXplain. L’avantage des LLMs est la compréhension du discours haineux implicite, codé et contextuel. En revanche, BERT reste plus rapide et moins coûteux en inférence. Pour la production à haut volume (millions de messages/jour), BERT ou DistilBERT fine-tuné en première ligne avec un LLM en seconde ligne pour les cas ambigus est l’architecture recommandée.

Comment détecter le hate speech en français ?

Trois options principales : (1) Perspective API de Google supporte le français nativement pour la toxicité et les attaques identitaires. (2) XLM-RoBERTa fine-tuné sur des données françaises offre de bonnes performances multilingues. (3) Les LLMs (Claude, GPT-5.4, Mistral) gèrent le français en zero-shot. Le dataset HASOC inclut quelques ressources multilingues. Pour le français spécifiquement, le corpus du projet CyberHate (CNRS) et les données de modération de plateformes françaises peuvent servir de base d’entraînement, bien que les ressources restent limitées comparées à l’anglais.

Comment réduire les faux positifs sur le discours des communautés marginalisées ?

C’est un problème documenté : les modèles classent souvent comme haineux les discussions de communautés marginalisées sur leur propre expérience, ou la réappropriation de termes péjoratifs. Solutions : utiliser des datasets qui incluent explicitement ces cas comme « non-haineux » (comme HateXplain avec ses rationales), auditer les performances par groupe démographique, intégrer le contexte de l’auteur quand c’est possible (historique, communauté), et privilégier les LLMs qui comprennent les nuances de réappropriation. L’évaluation target-wise (analyser les performances séparément par cible du discours haineux) est essentielle pour identifier ces biais.

L’augmentation de données par LLM améliore-t-elle la détection ?

Oui, significativement. Une étude Springer (Computing, 2025) montre que l’augmentation par LLM (génération d’exemples synthétiques qui maintiennent le style original) améliore les F1 de 5 à 13 points sur les petits datasets, surtout pour les modèles BERT et DeBERTa. L’augmentation par GPT-3 évite le surapprentissage même avec un facteur de multiplication de 7x et améliore la couverture de l’espace d’embedding de 15%. C’est particulièrement utile pour les langues à faibles ressources et les types de hate speech rares (handicapisme, discrimination par âge) où les données annotées sont insuffisantes.

Polydesk.ai — Footer