هذا هو إصدار SQL لتقرير لوحة المعلومات للمشاعر العام.
يتطلب هذا التقرير تمكين المكون الإضافي Discourse AI و تحليل المشاعر.
يقارن تقرير لوحة المعلومات هذا عدد المنشورات المصنفة على أنها إيجابية أو سلبية باستخدام الذكاء الاصطناعي “المشاعر”، على مدى فترة زمنية محددة.
من خلال الاستفادة من تحليل المشاعر، يصنف التقرير المنشورات على أنها إيجابية أو سلبية بناءً على عتبة محددة، والتي يمكن تعديلها. يتم بعد ذلك استخدام هذا التصنيف لحساب المشاعر العام لكل يوم ضمن النطاق الزمني المحدد. هذا التقرير مفيد بشكل خاص لفهم المزاج العام أو مشاعر مناقشات المجتمع خلال أوقات محددة.
-- [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)
شرح استعلام SQL
يعمل استعلام SQL عن طريق تنفيذ الخطوات التالية:
- تعريف المعلمات: يبدأ بتعريف ثلاث معلمات:
:start_dateو:end_dateلتحديد النطاق الزمني للتحليل.:thresholdلتعيين الحد الأدنى للدرجة لتصنيف المشاعر على أنها إيجابية أو سلبية. القيمة الافتراضية لـ:thresholdمضبوطة على 60 لتتوافق مع تقرير لوحة المعلومات.
- اختيار البيانات وربطها:
- يختار الاستعلام البيانات من جدول
classification_results، الذي يخزن نتائج تحليل المشاعر على المنشورات. - يربط
classification_resultsبجدولpostsلتصفية المنشورات بناءً على تاريخ إنشائها ويضمن أن التحليل مخصص للمنشورات فقط (cr.target_type = 'Post'). - تضمن الروابط الإضافية مع جدولي
topicsوcategoriesأن يقتصر التحليل على المنشورات العادية في فئات معينة.
- يختار الاستعلام البيانات من جدول
- تصنيف المشاعر:
- لكل منشور، يتحقق من درجة المشاعر من جدول
classification_results. إذا كانت درجة المشاعر الإيجابية أكبر من العتبة، فإنه يعد المنشور إيجابيًا. وبالمثل، فإنه يعد المنشور سلبيًا إذا تجاوزت درجة مشاعره السلبية العتبة.
- لكل منشور، يتحقق من درجة المشاعر من جدول
- التجميع:
- ثم يقوم الاستعلام بتجميع النتائج حسب اليوم، بناءً على الطابع الزمني
created_atلكل منشور. لكل يوم، يقوم بحساب:- إجمالي عدد المنشورات الإيجابية.
- إجمالي عدد المنشورات السلبية.
- المشاعر العام، وهو الفرق بين إجمالي عدد المنشورات الإيجابية والسلبية.
- ثم يقوم الاستعلام بتجميع النتائج حسب اليوم، بناءً على الطابع الزمني
نتائج مثال
| 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 |