Ce guide explique comment configurer la classification des sentiments et des émotions dans Discourse AI et comment utiliser les rapports pour explorer les publications de votre communauté.
Niveau d’utilisateur requis : Administrateur pour la configuration ; administrateur ou modérateur pour consulter les rapports.
La classification des sentiments et des émotions vous permet d’explorer les tendances dans les discussions de votre communauté :
- Le sentiment classe les publications comme positives, neutres ou négatives.
- L’émotion attribue des scores sur 28 étiquettes, incluant la gratitude, la curiosité, la colère et la tristesse.
Ce sont des fonctionnalités distinctes. Vous pouvez activer l’une, l’autre ou les deux, et choisir un backend de classification différent pour chacune. Les rapports comptent le nombre de publications classées, pas les personnes uniques ni les types de personnalité. Utilisez-les pour trouver des discussions intéressantes à lire, et non comme substitut à la compréhension de leur contexte.
Avant de commencer
Vous devez activer Discourse AI via discourse_ai_enabled et configurer un backend de classification.
Hébergé par Discourse ? Votre site dispose peut-être déjà d’endpoints de classification dédiés provisionnés. Vérifiez la configuration existante avant de la modifier. Contactez team@discourse.org si vous avez besoin d’aide concernant la disponibilité, la configuration des endpoints ou les limites de traitement historique.
Auto-hébergé ? Configurez un endpoint dédié compatible, un agent IA avec un modèle de langage, ou un modèle de décision. L’activation de la fonctionnalité ne fournit pas à elle seule un service d’inférence.
Examinez la politique de confidentialité, les règles de rétention et les coûts de votre fournisseur avant d’activer le traitement automatique. La classification envoie le texte des publications au backend sélectionné. Les captures d’écran ci-dessous utilisent des publications fictives sur un site de test et un modèle de décision ; elles ne recommandent pas ce fournisseur pour du contenu communautaire privé.
Configurer le sentiment et les émotions
- Ouvrez Admin → Plugins → AI → Features.
- Ouvrez « Sentiment and emotion » (Sentiment et émotion).
- Sous « Sentiment », sélectionnez « Enabled » (Activé) si vous souhaitez la classification positive, neutre et négative. Cela contrôle
ai_sentiment_enabled. - Choisissez son « Backend » et configurez l’endpoint, l’agent ou le modèle correspondant comme décrit ci-dessous.
- Sous « Emotion », sélectionnez « Enabled » (Activé) si vous souhaitez la classification des émotions. Cela contrôle
ai_sentiment_emotion_enabled. - Choisissez son backend et configurez-le indépendamment.
- Définissez les limites de traitement en arrière-plan décrites dans la section suivante.
- Cliquez sur « Submit » (Soumettre) et vérifiez que vos sélections ont été enregistrées.
Cet exemple utilise un modèle de décision pour les deux fonctionnalités. « Posts per hour » (Publications par heure) est volontairement réglé sur 0 pour suspendre l’analyse automatique lors des tests. Utilisez une valeur positive pour traiter automatiquement les nouvelles publications et l’historique.
Utiliser des endpoints de classification dédiés
Choisissez « Dedicated classification endpoint » (Endpoint de classification dédié) pour chaque fonctionnalité que vous souhaitez exécuter avec un modèle dédié. Suivez « Configure dedicated classification endpoints » (Configurer les endpoints de classification dédiés) pour accéder au paramètre ai_sentiment_model_configs.
Les modèles dédiés de référence sont :
| Fonctionnalité | Modèle |
|---|---|
| Sentiment | cardiffnlp/twitter-roberta-base-sentiment-latest |
| Émotion | SamLowe/roberta-base-go_emotions |
Chaque entrée de configuration identifie son classification_type (sentiment ou emotion), model_name, endpoint et api_key. Fournissez une entrée distincte pour chaque classifieur dédié utilisé. Gardez les identifiants privés ; ne les incluez pas dans les posts d’assistance ou les captures d’écran.
Consultez Self-hosting sentiment and emotion for Discourse AI (Auto-hébergement du sentiment et des émotions pour Discourse AI) pour le déploiement du serveur d’inférence. Activez et sélectionnez chaque fonctionnalité séparément en utilisant les contrôles ci-dessus.
Le backend dédié attend une API de classification compatible. Copier un endpoint Anthropic, une API de chat OpenAI ou Azure Language dans ce paramètre ne le rend pas compatible. Un test de connexion réussi pour un modèle de langage ailleurs dans Discourse ne teste pas un endpoint de sentiment dédié.
Utiliser un agent IA ou un modèle de décision
Pour « LLM agent » (Agent LLM), sélectionnez un agent classifieur approprié avec un modèle de langage configuré. Discourse inclut des agents classifieurs de sentiment et d’émotions. Un agent conversationnel général n’est pas un substitut à un agent configuré pour retourner les scores d’étiquettes attendus.
Pour « Decision model » (Modèle de décision), configurez et testez d’abord un modèle de décision compatible, puis sélectionnez-le pour chaque fonctionnalité activée. Un modèle de décision ne nécessite pas de modèle de langage conversationnel séparé pour cette classification.
Les requêtes aux agents et aux modèles de décision peuvent entraîner des frais ou consommer des crédits du fournisseur. Examinez les règles de traitement des données du modèle sélectionné avant de l’assigner à une fonctionnalité traitée automatiquement.
Contrôler le traitement et la couverture historique
Une tâche planifiée vérifie les publications avec des classifications manquantes toutes les cinq minutes. Les nouvelles publications et l’historique partagent cette analyse ; les résultats ne sont pas nécessairement disponibles immédiatement après la publication. Il n’y a pas de nombre minimum de publications ou de jours avant que les données n’apparaissent : une seule publication classée avec succès peut contribuer.
| Contrôle | Paramètre du site | Défaut | Effet |
|---|---|---|---|
| Publications par heure | ai_sentiment_backfill_maximum_posts_per_hour |
240 |
Nombre approximatif de publications traitées par heure. 0 arrête l’analyse planifiée, y compris pour les nouvelles publications. |
| Limite d’âge des publications (jours) | ai_sentiment_backfill_post_max_age_days |
60 |
Analyser les publications créées dans cette fenêtre d’âge. 0 signifie aujourd’hui, pas un historique illimité. |
Augmentez la limite d’âge pour inclure des publications plus anciennes. La tâche planifiée traite les résultats manquants au fil du temps ; sélectionner une plage de dates de rapport plus ancienne ne classe pas soi-même cet historique.
Le taux est approximatif, ce n’est pas une limite exacte de requêtes ou de dépenses. Activer les deux classifieurs peut entraîner deux requêtes par publication. Les requêtes échouées ou les refus peuvent être réessayés. Les publications modifiées sont vérifiées séparément et ne sont pas contrôlées par le taux ou les limites d’âge de l’analyse planifiée.
Les messages privés, les publications supprimées, les sujets supprimés et les types de publications non standard sont exclus de l’analyse de remplissage historique planifiée. L’exclusion des messages privés dans le scanner et les rapports ne garantit pas tous les chemins de classification : la tâche de publication modifiée n’applique pas le même filtre sur les messages privés. Tenez-en compte avant de configurer un fournisseur externe.
Explorer le sentiment par catégorie ou tag
- Ouvrez Admin → Reports → Sentiment analysis (Analyse du sentiment), ou visitez
/admin/reports/sentiment_analysissur votre site. - Sélectionnez les dates de début et de fin.
- Choisissez « Category » (Catégorie) ou « Tag » (Tag) pour grouper les résultats.
- Utilisez le filtre de catégorie ou de tag correspondant pour affiner les résultats. Le filtrage par catégorie fournit également une option pour inclure les sous-catégories.
- Lisez le total de chaque groupe et sa répartition positive, négative et neutre.
- Cliquez sur la ligne d’un groupe pour inspecter son graphique et les publications sous-jacentes.
L’exemple contient neuf publications classées : trois positives, trois négatives et trois neutres. Les publications neutres sont incluses dans ce rapport.
Dans la vue détaillée :
- Sélectionnez « All » (Tout), « Positive » (Positif), « Neutral » (Neutre) ou « Negative » (Négatif) pour filtrer les publications chargées.
- Ouvrez le sujet d’une publication pour lire la discussion environnante.
- Utilisez l’icône de lien à côté du graphique pour copier l’URL de cette vue de rapport. Les destinataires ont toujours besoin d’un accès staff.
- Cliquez sur « Back » (Retour) pour revenir aux résultats groupés.
Les dates du rapport font référence à la création des publications, pas à l’exécution de la classification. Une publication peut contribuer à plusieurs groupes de tags si son sujet a plusieurs tags, donc additionner les totaux de tags peut compter la même publication plus d’une fois.
Lire la tendance globale du sentiment
Ouvrez le rapport « Overall sentiment » (Sentiment global) depuis Admin → Reports, ou visitez /admin/reports/overall_sentiment.
Le score est :
Nombre de publications positives − nombre de publications négatives
Un score positif ou négatif doit être supérieur à 0.6 pour que la publication soit comptée dans ce groupe. Si aucun ne dépasse le seuil, le rapport groupé traite la publication comme neutre. Le seuil est fixe ; il n’y a pas de paramètre de site pour le modifier.
Le sentiment global est un nombre net de publications, pas une probabilité moyenne ni un pourcentage de bonheur. Trois publications positives et trois publications négatives produisent un score global de 0, quel que soit le nombre de publications neutres. Inspectez la répartition groupée et les discussions sous-jacentes avant d’interpréter une tendance plate comme une absence d’opinions fortes.
Explorer les émotions
Chaque émotion a un rapport sous Admin → Reports. Par exemple, visitez /admin/reports/emotion_anger pour « Anger » (Colère) ou /admin/reports/emotion_curiosity pour « Curiosity » (Curiosité). Choisissez une plage de dates et un groupement quotidien, hebdomadaire ou mensuel pour explorer la tendance.
Un rapport d’émotion compte les publications dont le score pour cette étiquette est supérieur à 0.1. Ce seuil est également fixe. Plus d’une émotion peut se qualifier pour la même publication, donc les totaux d’émotions ne sont pas mutuellement exclusifs.
Vous pouvez également filtrer les sujets par une émotion. Visitez /filter?q=order:emotion_anger pour trouver des sujets correspondants, classés par leur nombre de publications qualifiées comme colère plutôt que par un score émotionnel moyen. Utilisez order:emotion_anger-asc pour inverser l’ordre. Sans filtre activity-after:, cet ordre compte les publications qualifiées de l’année passée. Les permissions d’accès normales à la liste des sujets s’appliquent toujours.
Étiquettes d'émotions disponibles
Admiration, amusement, anger (colère), annoyance (agacement), approval (approbation), caring (bienveillance), confusion, curiosity (curiosité), desire (désir), disappointment (déception), disapproval (désapprobation), disgust (dégoût), embarrassment (embarras), excitement (excitation), fear (peur), gratitude (gratitude), grief (chagrin), joy (joie), love (amour), nervousness (nervosité), neutral (neutre), optimism (optimisme), pride (fierté), realization (réalisation), relief (soulagement), remorse (remords), sadness (tristesse) et surprise (surprise).
Comprendre les limites
- La classification dépend du modèle. Le sarcasme, les citations, le langage spécialisé et les discussions multilingues peuvent être mal interprétés. La couverture linguistique et la précision dépendent du modèle choisi. Les scores de différents backends ne sont pas nécessairement calibrés de la même manière.
- Les rapports ne couvrent que les résultats stockés. Une fonctionnalité activée sans backend fonctionnel, un traitement suspendu ou une couverture historique insuffisante peuvent produire des rapports vides ou incomplets.
- Les classifications existantes sont réutilisées. Modifier une publication classée ne remplace pas automatiquement ses résultats. Changer l’agent sélectionné ou le modèle de décision au sein du même backend ne reclassifie pas non plus les résultats existants.
- Changer de backend change la source des résultats du rapport. Les anciens résultats ne sont pas convertis vers le backend sélectionné. Les rapports peuvent apparaître vides pendant que les classifications manquantes sont traitées.
- Les rapports excluent les messages privés. Cette exclusion de rapport est distincte de la limitation de traitement des données décrite ci-dessus.
Dépanner les résultats manquants ou inattendus
| Problème | À vérifier |
|---|---|
| Aucun résultat après l’activation | Confirmez que la fonctionnalité concernée est activée, que son backend est configuré, que « Posts per hour » (Publications par heure) est positif et que les tâches de fond s’exécutent. Laissez le temps nécessaire pour l’analyse de cinq minutes et la file d’attente de traitement. |
| Le sentiment fonctionne mais les émotions sont vides | Activez et configurez « Emotion » (Émotion) séparément. Un endpoint dédié de sentiment seul ne fournit pas les classifications d’émotions. |
| Les dates plus anciennes n’ont pas de résultats | Augmentez la limite d’âge des publications, laissez le temps de traitement nécessaire et vérifiez que la plage du rapport inclut les dates de création des publications. |
| L’endpoint dédié renvoie une erreur | Vérifiez son URL, ses identifiants, son modèle et son format de réponse. L’adaptateur attend un tableau plat d’étiquettes et de scores, avec des étiquettes de sentiment telles que positive, neutral et negative, pas des réponses de chat arbitraires ou des étiquettes de type LABEL_0. |
| L’endpoint du réseau privé est inaccessible | Vérifiez la connectivité et, si nécessaire, ajoutez uniquement le nom d’hôte ou l’IP de l’endpoint d’inférence de confiance dans allowed_internal_hosts. Ne désactivez pas largement les protections contre la falsification de requêtes côté serveur (SSRF). |
| Les résultats ne changent pas après une modification ou la sélection d’un modèle | Les résultats existants sont réutilisés. Ne supposez pas que modifier le contenu ou enregistrer un autre modèle programme une reclassification complète. |
| Un filtre montre moins de publications que son total | Le total décrit l’ensemble du groupe, tandis que les onglets de sentiment filtrent les publications chargées. Vérifiez s’il y a d’autres résultats à charger et ouvrez les sujets originaux lors de l’investigation des écarts. |
Les administrateurs peuvent examiner les enregistrements de requêtes des agents et des modèles de décision dans Admin → Plugins → AI → Logs (Journaux). Vérifiez /logs pour les erreurs de classification en arrière-plan, y compris les échecs des endpoints dédiés. Traitez le contenu des journaux comme sensible : ils peuvent contenir du texte de publications et des réponses de modèles. Supprimez les identifiants et le contenu privé avant de partager les diagnostics.



