Relatório do Painel - Sentimento Geral

Este é um relatório SQL do Painel de Sentimento Geral.

:discourse: Este relatório requer o plugin Discourse AI e a Análise de Sentimento habilitados.

Este relatório do painel compara o número de posts classificados como positivos ou negativos com a IA de “Sentimento”, durante um período especificado.

Ao alavancar a análise de sentimento, o relatório categoriza os posts como positivos ou negativos com base em um limite definido, que pode ser ajustado. Essa categorização é então usada para calcular o sentimento geral de cada dia dentro do intervalo de datas fornecido. Este relatório é particularmente útil para entender o humor geral ou o sentimento das discussões da comunidade durante períodos específicos.

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

Explicação da Consulta SQL

A consulta SQL opera realizando as seguintes etapas:

  • Definição de Parâmetros: Começa definindo três parâmetros:
    • :start_date e :end_date para especificar o intervalo de datas para a análise.
    • :threshold para definir a pontuação mínima para classificar sentimentos como positivos ou negativos. O valor padrão para o :threshold é definido como 60 para corresponder ao relatório do painel.
  • Seleção e Junção de Dados:
    • A consulta seleciona dados da tabela classification_results, que armazena os resultados da análise de sentimento em posts.
    • Ela une classification_results com a tabela posts para filtrar posts com base em sua data de criação e garante que a análise seja apenas para posts (cr.target_type = 'Post').
    • Junções adicionais com as tabelas topics e categories garantem que a análise seja limitada a posts regulares em categorias específicas.
  • Classificação de Sentimento:
    • Para cada post, ele verifica a pontuação de sentimento da tabela classification_results. Se a pontuação de sentimento positivo for maior que o limite, ele conta o post como positivo. Da mesma forma, ele conta um post como negativo se sua pontuação de sentimento negativo exceder o limite.
  • Agregação:
    • A consulta então agrupa os resultados por dia, com base no timestamp created_at de cada post. Para cada dia, ela calcula:
      • O número total de posts positivos.
      • O número total de posts negativos.
      • O sentimento geral, que é a diferença entre o número total de posts positivos e negativos.

Exemplo de Resultados

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 curtidas

9 posts foram divididos em um novo tópico: Problemas com o preenchimento de sentimento

Tentei executar isso e obtive 0 resultados, no entanto, temos análise de sentimento e tickets de IA, posso ver isso no relatório do front-end, mas não nesta consulta.

Olá Sophie,

Quando você ativou a análise de sentimento no seu site?

Se você escolheu fevereiro de 2024 como data de término nesta consulta, a análise foi ativada antes disso?

Com a análise de sentimento de IA, apenas novas postagens são classificadas desde a data em que a análise foi ativada, portanto, se você não a ativou antes das datas que escolheu na consulta, eu esperaria que ela retornasse 0 resultados.

Talvez você precise ajustar os seguintes parâmetros na consulta para corresponder às datas em que você está procurando ver o sentimento em seu site:

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