Questions sur le sentiment communautaire et la toxicité

Pour ceux qui se demandent comment consulter la base de données des résultats de classification pour les modules Community Sentiment et Toxicity, cela peut être fait à l’aide du plugin Data Explorer, et de la table classification_results.

Ceci est utile pour voir comment le plugin IA fonctionne sur votre site et classe les publications.

IA Sentiment

SELECT target_id as post_id,
model_used,
classification->'negative' as negative,
classification->'neutral' as neutral,
classification->'positive' as positive
from classification_results
WHERE model_used = 'sentiment'
order by id desc

IA Émotion :

SELECT target_id as post_id,
model_used,
classification->'neutral' as neutral,
classification->'sadness' as sadness,
classification->'surprise' as surprise,
classification->'fear' as fear,
classification->'anger' as anger,
classification->'joy' as joy,
classification->'disgust' as disgust
from classification_results
WHERE model_used = 'emotion'
order by id desc

IA Toxicité :

SELECT target_id as post_id,
classification->'toxicity' as toxicity,
classification->'severe_toxicity' as severe_toxicity,
classification->'obscene' as obscene,
classification->'identity_attack' as identity_attack,
classification->'insult' as insult,
classification->'threat' as threat,
classification->'sexual_explicit' as sexual_explicit
From classification_results
WHERE classification_type = 'toxicity'
order by id desc

8 « J'aime »

Existe-t-il un moyen d’ajouter un filtre à cette requête pour obtenir les publications d’un fil de discussion particulier ? Pour l’instant, il semble qu’elle récupère des publications de toute la communauté, ce qui est bien, mais aussi fastidieux pour trouver une publication/un fil de discussion particulier que vous recherchez, sans oublier que vous atteindrez la limite de lignes pour cela.

2 « J'aime »

Salut @Samantha_O :wave:

Est-ce que cela fonctionne pour des sujets spécifiques ? vous devrez spécifier l’ID du sujet dans les paramètres.

-- [params]
-- int :topic_id = 

SELECT cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
AND p.topic_id = :topic_id
ORDER BY cr.id DESC
6 « J'aime »
-- [params]
-- topic_id :topic_id

SELECT 
    cr.target_id as post_id,
    cr.model_used,
    cr.classification->'negative' as negative,
    cr.classification->'neutral' as neutral,
    cr.classification->'positive' as positive
FROM classification_results cr
  JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
  AND p.topic_id = :topic_id
ORDER BY p.id

Ah, tu m’as devancé. :slight_smile:

Mais en voici une pour un post spécifique également, juste pour ne pas avoir l’impression d’une réponse inutile :

-- [params]
-- topic_id :topic_id
-- int :post_number

SELECT 
    cr.target_id as post_id,
    cr.model_used,
    cr.classification->'negative' as negative,
    cr.classification->'neutral' as neutral,
    cr.classification->'positive' as positive
FROM classification_results cr
  JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
  AND p.topic_id = :topic_id
  AND p.post_number = :post_number

Le topic_id et le post_number se trouvent tous deux dans l’URL, c’est donc assez convivial.

Topic_id:

Post_number:

5 « J'aime »

Je pense que cela devrait cibler l’ID de catégorie :

-- [params]
-- int :category_id = 

SELECT cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
JOIN topics t ON t.id = p.topic_id
WHERE cr.model_used = 'sentiment'
AND t.category_id = :category_id
ORDER BY cr.id DESC

5 « J'aime »

Merci à tous les deux ! Lorsque j’exécute ces éléments, il ne trouve pas les anciens sujets/identifiants de sujet. Je me demande - l’analyse des sentiments ne se fait-elle que sur les nouveaux messages ?

modifié pour plus de clarté

2 « J'aime »

@JammyDodger saurait mieux, mais oui, je pense que l’analyse de sentiment fonctionne sur les nouveaux messages. Je pense que pour qu’elle utilise les anciens messages, il faudrait probablement des commandes rails pour les traiter via le modèle de sentiment, et dans la table classification_results (où se trouvent les résultats des analyses des nouveaux messages).

3 « J'aime »

Cela fonctionne sur les nouveaux articles une fois activé. :+1: Je ne suis pas sûr s’il existe une option de remplissage pour cela ?

4 « J'aime »

Seulement les nouveaux articles à partir de maintenant. Nous pourrons envisager de combler ces informations après avoir commencé à rendre compte des données et les avoir validées.

6 « J'aime »

L’un d’entre vous (ou un autre brillant expert en requêtes) pourrait-il m’aider à affiner cela un peu ? Je voudrais avoir des paramètres pour les dates, et ces dates correspondraient à la date de publication. L’objectif final serait de pouvoir examiner les changements au fil du temps en attendant de voir si le tableau de bord peut le faire à l’avenir :croisé_les_doigts:

Salut Samantha,

Si vous souhaitiez affiner ces requêtes pour inclure des paramètres de date de début et de fin, vous pourriez utiliser une requête comme celle-ci :

-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2024-01-01

SELECT 
p.created_at,
cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
AND p.created_at BETWEEN :start_date AND :end_date
ORDER BY cr.id DESC

Exemple de résultats :

created_at post model_used negative neutral positive
2023-11-08T21:21:23.913Z post_id sentiment 58 38 2

La partie importante ajoutée ici est la jointure de la table posts avec la table classification_results afin que nous puissions ajouter :

AND p.created_at BETWEEN :start_date AND :end_date

À l’instruction WHERE pour filtrer les publications par leur date created_at.

Étant donné que les requêtes de classification emotion et toxicity sont similaires, vous pourriez modifier ces requêtes avec cet ajout pour inclure également des paramètres de date de début et de fin. :slightly_smiling_face:

4 « J'aime »
4 « J'aime »

Ajout de celui-ci également :

2 « J'aime »

J’ai essayé d’utiliser cette requête (notre paramètre de sentiment est configuré) mais elle ne renvoie aucun résultat. Y a-t-il quelque chose que je devrais essayer pour dépanner ?

J’ai mis à jour les guides sur Dashboard Report - Overall Sentiment et Dashboard Report - Post Emotion, pouvez-vous réessayer avec les requêtes mises à jour ?

3 « J'aime »