Dashboard-Bericht - Gesamtstimmung

Dies ist eine SQL-Version des Dashboard-Berichts für die Gesamtstimmung.

:discourse: Für diesen Bericht ist das Plugin Discourse AI und die Aktivierung von Sentiment Analysis erforderlich.

Dieser Dashboard-Bericht vergleicht die Anzahl der als positiv oder negativ eingestuften Beiträge mit der “Sentiment”-KI über einen bestimmten Zeitraum.

Durch die Nutzung der Sentiment-Analyse kategorisiert der Bericht Beiträge basierend auf einem definierten Schwellenwert, der angepasst werden kann, als positiv oder negativ. Diese Kategorisierung wird dann verwendet, um die Gesamtstimmung für jeden Tag innerhalb des angegebenen Datumsbereichs zu berechnen. Dieser Bericht ist besonders nützlich, um die allgemeine Stimmung oder das Gefühl der Community-Diskussionen zu bestimmten Zeiten zu verstehen.

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

Erklärung der SQL-Abfrage

Die SQL-Abfrage arbeitet, indem sie die folgenden Schritte ausführt:

  • Parameterdefinition: Sie beginnt mit der Definition von drei Parametern:
    • :start_date und :end_date zur Angabe des Datumsbereichs für die Analyse.
    • :threshold zur Festlegung des Mindestwerts für die Klassifizierung von Stimmungen als positiv oder negativ. Der Standardwert für den :threshold ist auf 60 gesetzt, um dem Dashboard-Bericht zu entsprechen.
  • Datenauswahl und Verknüpfung:
    • Die Abfrage wählt Daten aus der Tabelle classification_results aus, die die Ergebnisse der Sentiment-Analyse von Beiträgen speichert.
    • Sie verknüpft classification_results mit der Tabelle posts, um Beiträge basierend auf ihrem Erstellungsdatum zu filtern und stellt sicher, dass die Analyse nur für Beiträge durchgeführt wird (cr.target_type = 'Post').
    • Weitere Verknüpfungen mit den Tabellen topics und categories stellen sicher, dass die Analyse auf reguläre Beiträge in bestimmten Kategorien beschränkt ist.
  • Sentiment-Klassifizierung:
    • Für jeden Beitrag prüft sie den Sentiment-Score aus der Tabelle classification_results. Wenn der Score für positive Stimmung den Schwellenwert überschreitet, zählt sie den Beitrag als positiv. Ebenso zählt sie einen Beitrag als negativ, wenn sein Score für negative Stimmung den Schwellenwert überschreitet.
  • Aggregation:
    • Die Abfrage gruppiert dann die Ergebnisse nach Tag, basierend auf dem created_at-Zeitstempel jedes Beitrags. Für jeden Tag berechnet sie:
      • Die Gesamtzahl der positiven Beiträge.
      • Die Gesamtzahl der negativen Beiträge.
      • Die Gesamtstimmung, die die Differenz zwischen der Gesamtzahl der positiven und negativen Beiträge ist.

Beispielergebnisse

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 „Gefällt mir“

9 Beiträge wurden in ein neues Thema aufgeteilt: Probleme mit Sentiment Backfill

Ich habe versucht, dies auszuführen, und erhalte 0 Ergebnisse, obwohl wir Sentiment-Analysen und KI-Tickets haben. Ich kann dies im Frontend-Bericht sehen, aber nicht aus dieser Abfrage.

Hallo Sophie,

Wann haben Sie die Sentiment-Analyse auf Ihrer Website aktiviert?

Wenn Sie Februar 2024 als Enddatum in dieser Abfrage gewählt haben, war die Analyse davor aktiviert?

Bei KI-Sentiment werden nur neue Beiträge seit dem Datum der Aktivierung der Analyse klassifiziert. Wenn Sie sie also nicht vor den in der Abfrage gewählten Daten aktiviert hatten, würde ich erwarten, dass 0 Ergebnisse zurückgegeben werden.

Möglicherweise müssen Sie die folgenden Parameter in der Abfrage anpassen, um die Daten abzugleichen, für die Sie das Sentiment auf Ihrer Website anzeigen möchten:

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