Report Dashboard - Sentiment Generale

Questo è una versione SQL del report della dashboard per il sentiment generale.

:discourse: Questo report richiede il plugin Discourse AI e Analisi del Sentiment abilitati.

Questo report della dashboard confronta il numero di post classificati come positivi o negativi con l’IA “Sentiment”, in un periodo di tempo specificato.

Sfruttando l’analisi del sentiment, il report categorizza i post come positivi o negativi in base a una soglia definita, che può essere regolata. Questa categorizzazione viene quindi utilizzata per calcolare il sentiment generale per ogni giorno all’interno dell’intervallo di date specificato. Questo report è particolarmente utile per comprendere l’umore generale o il sentiment delle discussioni della community durante periodi specifici.

-- [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)

Spiegazione della Query SQL

La query SQL opera eseguendo i seguenti passaggi:

  • Definizione dei Parametri: Inizia definendo tre parametri:
    • :start_date e :end_date per specificare l’intervallo di date per l’analisi.
    • :threshold per impostare il punteggio minimo per classificare i sentimenti come positivi o negativi. Il valore predefinito per :threshold è impostato a 60 per corrispondere al report della dashboard.
  • Selezione e Join dei Dati:
    • La query seleziona i dati dalla tabella classification_results, che memorizza i risultati dell’analisi del sentiment sui post.
    • Esegue il join di classification_results con la tabella posts per filtrare i post in base alla loro data di creazione e garantisce che l’analisi sia solo per i post (cr.target_type = 'Post').
    • Ulteriori join con le tabelle topics e categories garantiscono che l’analisi sia limitata ai post regolari in categorie specifiche.
  • Classificazione del Sentiment:
    • Per ogni post, controlla il punteggio del sentiment dalla tabella classification_results. Se il punteggio per il sentiment positivo è maggiore della soglia, conta il post come positivo. Allo stesso modo, conta un post come negativo se il suo punteggio di sentiment negativo supera la soglia.
  • Aggregazione:
    • La query raggruppa quindi i risultati per giorno, in base al timestamp created_at di ciascun post. Per ogni giorno, calcola:
      • Il numero totale di post positivi.
      • Il numero totale di post negativi.
      • Il sentiment generale, che è la differenza tra il numero totale di post positivi e negativi.

Risultati di Esempio

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 Mi Piace

9 post sono stati divisi in un nuovo argomento: Problemi con il riempimento del sentiment

Ho provato a eseguire questo, ottenendo 0 risultati, tuttavia abbiamo analisi del sentiment e ticket AI, posso vederlo in quel report front-end ma non da questa query

Ciao Sophie,

Quando hai abilitato l’analisi del sentiment sul tuo sito?

Se hai scelto febbraio 2024 come data di fine in questa query, l’analisi era abilitata prima di allora?

Con il sentiment AI, solo i nuovi post vengono classificati dalla data in cui è stata abilitata l’analisi, quindi se non l’avevi abilitata prima delle date che hai scelto nella query, mi aspetterei che restituisca 0 risultati.

Potrebbe essere necessario regolare i seguenti parametri nella query per corrispondere alle date per le quali desideri visualizzare il sentiment sul tuo sito:

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