Rapport de tableau de bord - Sentiment général

Ceci est une version SQL du rapport de tableau de bord pour le sentiment général.

:discourse: Ce rapport nécessite le plugin Discourse AI et l’activation de l’Analyse des sentiments.

Ce rapport de tableau de bord compare le nombre de publications classées comme positives ou négatives avec l’IA « Sentiment », sur une période spécifiée.

En tirant parti de l’analyse des sentiments, le rapport classe les publications comme positives ou négatives en fonction d’un seuil défini, qui peut être ajusté. Cette classification est ensuite utilisée pour calculer le sentiment général de chaque jour dans la plage de dates donnée. Ce rapport est particulièrement utile pour comprendre l’humeur générale ou le sentiment des discussions de la communauté pendant des périodes spécifiques.

-- [params]
-- date :start_date = 2024-01-13
-- date :end_date = 2024-02-14
-- double :threshold = 0.60

SELECT
    DATE_TRUNC('day', p.created_at)::DATE AS date,
    COUNT(CASE WHEN (classification->>'positive')::float > :threshold THEN 1 ELSE NULL END) AS positive_sentiment_posts,
    COUNT(CASE WHEN (classification->>'negative')::float > :threshold THEN 1 ELSE NULL END) AS negative_sentiment_posts,
    COUNT(CASE WHEN (classification->>'positive')::float > :threshold THEN 1 ELSE NULL END) - COUNT(CASE WHEN (classification->>'negative')::float > :threshold THEN 1 ELSE NULL END) AS overall_sentiment
FROM
    classification_results AS cr
    INNER JOIN posts p ON p.id = cr.target_id AND cr.target_type = 'Post'
    INNER JOIN topics t ON t.id = p.topic_id
    INNER JOIN categories c ON c.id = t.category_id
WHERE
    t.archetype = 'regular' AND
    p.user_id > 0 AND
    cr.model_used = 'cardiffnlp/twitter-roberta-base-sentiment-latest' AND
    (p.created_at > :start_date AND p.created_at < :end_date)
GROUP BY
    DATE_TRUNC('day', p.created_at)

Explication de la requête SQL

La requête SQL fonctionne en effectuant les étapes suivantes :

  • Définition des paramètres : Elle commence par définir trois paramètres :
    • :start_date et :end_date pour spécifier la plage de dates de l’analyse.
    • :threshold pour définir le score minimum de classification des sentiments comme positifs ou négatifs. La valeur par défaut du :threshold est fixée à 60 pour correspondre au rapport de tableau de bord.
  • Sélection et jointure des données :
    • La requête sélectionne des données de la table classification_results, qui stocke les résultats de l’analyse des sentiments sur les publications.
    • Elle joint classification_results avec la table posts pour filtrer les publications en fonction de leur date de création et s’assure que l’analyse ne concerne que les publications (cr.target_type = 'Post').
    • Des jointures supplémentaires avec les tables topics et categories garantissent que l’analyse est limitée aux publications régulières dans des catégories spécifiques.
  • Classification des sentiments :
    • Pour chaque publication, elle vérifie le score de sentiment de la table classification_results. Si le score de sentiment positif est supérieur au seuil, elle compte la publication comme positive. De même, elle compte une publication comme négative si son score de sentiment négatif dépasse le seuil.
  • Agrégation :
    • La requête regroupe ensuite les résultats par jour, en se basant sur l’horodatage created_at de chaque publication. Pour chaque jour, elle calcule :
      • Le nombre total de publications positives.
      • Le nombre total de publications négatives.
      • Le sentiment général, qui est la différence entre le nombre total de publications positives et négatives.

Exemple de résultats

date positive_sentiment_posts negative_sentiment_posts overall_sentiment
2024-01-13 10 21 -11
2024-01-14 11 20 -9
2024-01-15 23 7 16
2024-01-16 27 10 17
2024-01-17 47 22 25
5 « J'aime »

9 messages ont été déplacées vers un nouveau sujet : Problèmes avec le remplissage rétrospectif des sentiments

J’ai essayé d’exécuter ceci, j’obtiens 0 résultat, cependant nous avons une analyse de sentiment et un ticket IA, je peux le voir dans ce rapport front-end mais pas à partir de cette requête.

Salut Sophie,

Quand avez-vous activé l’analyse de sentiment sur votre site ?

Si vous avez choisi février 2024 comme date de fin dans cette requête, l’analyse était-elle activée avant cela ?

Avec l’analyse de sentiment par IA, seuls les nouveaux articles sont classifiés depuis la date d’activation de l’analyse. Par conséquent, si vous ne l’aviez pas activée avant les dates que vous avez choisies dans la requête, je m’attendrais à ce qu’elle renvoie 0 résultat.

Vous devrez peut-être ajuster les paramètres suivants dans la requête pour qu’ils correspondent aux dates sur lesquelles vous souhaitez afficher le sentiment sur votre site :

-- date :start_date = 2024-01-13
-- date :end_date = 2024-02-14