استعلامات عن مشاعر المجتمع والسمية

لمن يتساءلون عن كيفية عرض قاعدة بيانات نتائج التصنيف لوحدتي “مشاعر المجتمع” (Community Sentiment) و"السمية" (Toxicity)، يمكن القيام بذلك باستخدام المكون الإضافي لاستكشاف البيانات (Data Explorer)، وجدول classification_results.

هذا مفيد لرؤية كيفية عمل المكون الإضافي للذكاء الاصطناعي على موقعك وتصنيف المنشورات.

مشاعر الذكاء الاصطناعي (AI 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

عواطف الذكاء الاصطناعي (AI Emotion):

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

سمية الذكاء الاصطناعي (AI Toxicity):

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 إعجابات

هل هناك طريقة لإضافة عامل تصفية إلى هذا الاستعلام للحصول على المنشورات من خيط معين؟ حاليًا، يبدو أنه يحصل على منشورات عبر المجتمع بأكمله، وهو أمر جيد، ولكنه أيضًا مرهق للعثور على منشور/خيط معين تبحث عنه، ناهيك عن أنك ستصل إلى حد الصف لهذا.

إعجابَين (2)

مرحباً @Samantha_O :wave:

هل يعمل هذا لمواضيع محددة؟ سيتعين عليك تحديد معرف الموضوع في المعلمات.

-- [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 إعجابات
-- [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

آه، لقد سبقتني. :slight_smile:

ولكن إليك واحد لمنشور معين أيضًا فقط حتى لا تشعر بأنها ردود غير مجدية:

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

يمكن العثور على topic_id و post_number في عنوان URL، لذا فهو سهل الاستخدام للغاية.

Topic_id:

Post_number:

5 إعجابات

أعتقد أن هذا يجب أن يستهدف معرف الفئة:

-- [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 إعجابات

شكراً لكما! عند تشغيل هذه، لا يتم العثور على المواضيع القديمة/معرفات المواضيع. أتساءل - هل يتم تحليل المشاعر على المنشورات الجديدة فقط؟

تم التعديل للتوضيح

إعجابَين (2)

@JammyDodger سيكون على دراية أفضل، ولكن نعم أعتقد أن تحليل المشاعر يعمل على المنشورات الجديدة. أعتقد أنه لكي يتم استخدامه للمنشورات القديمة، قد يتطلب الأمر بعض أوامر Rails لمعالجتها من خلال نموذج المشاعر، وإدخالها في جدول classification_results (حيث توجد نتائج تحليل المنشورات الجديدة).

3 إعجابات

يعمل على المنشورات الجديدة بمجرد تشغيله. :+1: لست متأكدًا مما إذا كان هناك خيار إعادة تعبئة له؟

4 إعجابات

فقط منشورات جديدة من الآن فصاعدًا. يمكننا النظر في ملء تلك المعلومات بعد أن نبدأ في الإبلاغ عن البيانات والتحقق منها.

6 إعجابات

هل يمكن لأحدكم (أو لمستعلم لامع آخر) مساعدتي في ضبط هذا قليلاً؟ أود الحصول على معلمات للتواريخ وأن تتوافق هذه التواريخ مع تاريخ النشر. الهدف النهائي هنا هو أن أكون قادرًا على النظر إلى التغييرات بمرور الوقت أثناء انتظار رؤية ما إذا كانت لوحة المعلومات يمكنها القيام بذلك في المستقبل :crossed_fingers:

مرحباً سامانثا،

إذا كنت ترغب في تحسين تلك الاستعلامات لتشمل معلمات تاريخ البدء والانتهاء، يمكنك استخدام استعلام مثل هذا:

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

نتائج مثال:

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

الجزء المهم المضاف هنا هو ربط جدول posts بجدول classification_results حتى نتمكن من إضافة:

AND p.created_at BETWEEN :start_date AND :end_date

إلى عبارة WHERE لتصفية المنشورات حسب تاريخ created_at الخاص بها.

نظرًا لأن استعلامات تصنيف emotion و toxicity متشابهة، يمكنك تعديل تلك الاستعلامات بهذا الإضافة لتشمل معلمات تاريخ البدء والانتهاء أيضًا. :slightly_smiling_face:

4 إعجابات
4 إعجابات

إضافة هذا هنا أيضًا:

إعجابَين (2)

لقد حاولت استخدام هذا الاستعلام (تم إعداد إعدادات المشاعر لدينا) ولكنه لا يُرجع أي نتائج. هل هناك أي شيء يجب أن أحاول استكشافه؟

لقد قمت بتحديث الأدلة على Dashboard Report - Overall Sentiment و https://meta.discourse.org/t/dashboard-report-post-emotion/295553، هل يمكنك المحاولة مرة أخرى باستخدام الاستعلامات المحدثة؟

3 إعجابات