اضطراب الخطاب

:warning: هذه الميزة هي الآن جزء من Discourse AI. هذا المكون الإضافي مهمل.

| | الملخص | يساعد Disorder المشرفين عن طريق وضع علامة تلقائية على المحتوى السام المحتمل في منتدى Discourse الخاص بك. |
|:discourse2:| رابط المستودع | https://github.com/xfalcox/disorder |
|:hammer_and_wrench:| دليل التثبيت | كيفية تثبيت المكونات الإضافية في Discourse |
|:open_book:| |

إذا كنت تستخدم خدمة الاستضافة الرسمية الخاصة بنا، فيرجى الاتصال بالدعم لدينا لتسجيل اهتمامك بهذا المكون الإضافي.

السمية

كما قال @hawk في Dealing with Toxicity in Online Communities فإن إدارة السمية في مجتمعك أمر أساسي.

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

المكون الإضافي

يستفيد Disorder من الذكاء الاصطناعي والتعلم الآلي لمساعدتك في الإشراف على مجتمعك، مما يسهل على فريق الإشراف الخاص بك البقاء على اطلاع بالمحتوى الذي قد يكون إشكاليًا، بل وحتى توجيه المستخدمين بشكل اختياري لمراجعة المشاركات السامة قبل نشرها.

هذه هي الخطوة الأولى في استخدام نماذج تعلم الآلة المستضافة ذاتيًا في Discourse، وعلى الرغم من أنها نموذج بسيط، إلا أنها تضع نمطًا يمكن إعادة استخدامه لتطبيق نماذج أكثر تعقيدًا في المستقبل.

الميزات

وضع علامة على الخلفية

هذا هو الوضع التشغيلي الرئيسي لـ Disorder، حيث إنه شفاف تمامًا لمستخدميك، ولن يكونوا على علم بأي تغييرات.

عند إنشاء أي منشور جديد (أو رسالة دردشة باستخدام Discourse Chat)، سيتم وضعه في قائمة انتظار تصنيف بشكل غير متزامن. في حالة تجاوز التصنيف عتبة قابلة للتكوين، سيتم وضع علامة على المنشور/رسالة الدردشة حتى يتم تحذير فريق الإشراف الخاص بك، ويمكنهم اتخاذ القرار النهائي بشأن العلامة.

التدخل في المنشورات الجديدة

إذا كنت تعتقد أن الوقاية هي أفضل دواء، فقد تكون مهتمًا بهذا الخيار الأكثر نشاطًا.

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

سيحدث هذا مرة واحدة فقط، وبعد إغلاق المربع، سيتمكن المستخدم من النشر بشكل طبيعي.

كيف يعمل؟

يدمج هذا المكون الإضافي نماذج المصادر المفتوحة من Detoxify، باستخدام نموذج استدعاء واجهة برمجة تطبيقات عن بعد للسماح للمسؤولين بتوسيع معدل الاستدلال بشكل مناسب لتلبية احتياجات كل مجتمع.

نحن نوفر صورة بسيطة توفر واجهة برمجة تطبيقات HTTP رفيعة ستتصل بها Discourse لأداء تصنيف المحتوى، والتي يمكن تشغيلها إما على نفس الخادم الذي تقوم بتشغيل Discourse عليه، أو على خادم مختلف تمامًا.

يستمع المكون الإضافي لـ Discourse إلى أحداث المنشورات الجديدة / رسائل الدردشة الجديدة، ويضيف مهمة تصنيف إلى قائمة الانتظار الخلفية. يتم تخزين النتائج في قاعدة البيانات حتى تتمكن من استخراج التقارير، ونحن نضع علامة على المحتوى باستخدام مستخدم روبوت منفصل حتى نتمكن من تتبع دقة علامته بمرور الوقت.

الخيارات

أولاً، يعمل المكون الإضافي بشكل جاهز، لذلك ليس من الضروري تغيير أي إعدادات على الفور. ومع ذلك، إذا كنت ترغب في تغيير سلوك المكون الإضافي، فهناك بعض المقابض التي يمكنك استخدامها.

نحن نقدم 3 نماذج تصنيف مختلفة يمكنك الاختيار من بينها في خيارات المكون الإضافي:

  • غير متحيز (افتراضي): نموذج يحاول تقليل التحيز غير المقصود للنموذج في تصنيف السمية

  • متعدد اللغات: نموذج يمكنه تصنيف الإيطالية والفرنسية والروسية والبرتغالية والإسبانية والتركية.

  • أصلي: أبسط نموذج.

يمكنك أيضًا تعديل ما إذا كان المكون الإضافي سيقوم بما يلي:

  • وضع علامة تلقائية
  • تمكين التدخل المتزامن على المشاركات السامة مع التحذير (تجريبي)
  • تمكين التدخل المتزامن على المشاركات السامة (غير موصى به)

كل ما سبق يحدث فقط عندما يتم تصنيف التعليق على أنه أعلى من العتبات لكل نوع تصنيف:

  • سمية
  • سمية شديدة
  • هجوم الهوية
  • إهانة
  • تهديد
  • جنسي صريح

يمكنك تعديل كل عتبة تصنيف للإجراءات التلقائية.

خدمة التصنيف

يأتي المكون الإضافي معدًا مسبقًا ويعمل بشكل جاهز. لهذا الغرض، فإنه يتصل بخدمة تديرها Discourse (CDCK) لتصنيف محتوى المستخدم. خدمة واجهة برمجة تطبيقات المصنف هذه مفتوحة المصدر، ويمكنك تشغيل نسختك الخاصة من الخدمة إذا لزم الأمر.

39 إعجابًا

فضولاً، ما هي الاختلافات بين تطبيق “Disorder” و Discourse لواجهة برمجة تطبيقات Google Perspective؟

7 إعجابات

من ناحية الكود، هما إضافتان مختلفتان تمامًا.

من منظور عام، يفيان بنفس الغرض، لكنهما مصممان بشكل مختلف:

  • يعمل Disorder مع الدردشات والمنشورات، بينما يعمل Perspective مع المنشورات فقط.

  • يعتمد Perspective على واجهة برمجة تطبيقات (API) خاصة لطرف ثالث، مع كل ما يترتب على ذلك من آثار على الخصوصية والموثوقية والشفافية.

  • يضع Disorder نمطًا يسمح بإضافة نماذج جديدة بسهولة، حتى نتمكن من تطوير الخدمة أو حتى إضافة ميزات جديدة تمامًا.

  • تمنح واجهة برمجة التطبيقات (API) القابلة للاستضافة الذاتية لـ Disorder المرونة والحرية من الدفع لكل استدعاء لواجهة برمجة التطبيقات (API) وحدود المعدل.

  • سطح الواجهة الأمامية لـ Disorder أصغر حجمًا، لذا يجب أن يكون أكثر مرونة عبر تحديثات Discourse.

16 إعجابًا

رائع. أين وكيف نفعل ذلك؟

5 إعجابات

راسل فريق team@discourse.org :slight_smile:

6 إعجابات

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

9 إعجابات

هل فهمت بشكل صحيح أنه يجب تشغيل مثيل واجهة برمجة تطبيقات الاضطراب لمرافقة المكون الإضافي؟ يوجد إعداد مملوء مسبقًا نقطة نهاية واجهة برمجة تطبيقات خدمة استدلال الاضطراب مع https://disorder-testing.demo-by-discourse.com معدة مسبقًا. ومع ذلك، يوجد مفتاح واجهة برمجة تطبيقات خدمة استدلال الاضطراب وهو فارغ افتراضيًا.

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

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

نحن مستقلون.

4 إعجابات

بينما يمكنك تشغيل خادم واجهة برمجة التطبيقات (API) الخاص بك، فإن المكون الإضافي يأتي مُعدًا مسبقًا للإشارة إلى https://disorder-testing.demo-by-discourse.com/ لذا فهو يعمل فور إخراجه من الصندوق.

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

إعداد api key اختياري، وهو مطلوب فقط إذا كان خادم واجهة برمجة التطبيقات (API) الخاص بك قد قام بتمكينه. المثيل العام على https://disorder-testing.demo-by-discourse.com/ لم يقم بتمكينه.

6 إعجابات

شكراً لك! يبدو الأمر مثالياً وسأجربه في الأيام القادمة :heart:

4 إعجابات

هل هناك تطبيقات أخرى للتعلم الآلي مخطط لها في المستقبل؟

إعجابَين (2)

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

6 إعجابات

هذه ملاحظات رائعة! هل ستكون على استعداد لمشاركة بعض إحصائيات تصحيح الأخطاء لمساعدتي في فهم ما حدث بالضبط؟

شيء مثل نتيجة

SELECT
  pcf.value,
  p.raw
FROM
  post_custom_fields AS pcf
INNER JOIN
  posts AS p ON p.id = pcf.post_id
WHERE
  pcf.name = 'disorder'

هنا أو في رسالة خاصة سيكون مفيدًا للغاية.

5 إعجابات

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

إعجاب واحد (1)

هل تستخدم الدردشة؟ هل كانت جميع العلامات المزعجة في المنشورات / الرسائل الخاصة؟

نحن نستخدم الدردشة ولكنني متأكد من أن جميع العلامات كانت في المنشورات والرسائل الخاصة

إعجاب واحد (1)

أولاً وقبل كل شيء، أنا ممتن جدًا لكل من الملاحظات والبيانات التي شاركتها والتي سمحت لي بتصحيح هذه المشكلة بشكل أكبر.

والآن إلى اكتشافاتي!

خلال هذا الأسبوع، كان لديك 1942 منشورًا جديدًا من مستخدمين غير موظفين. مجتمع نشط جدًا! ومع ذلك، لن أقول إن الذكاء الاصطناعي “عدواني بشكل سخيف في الإبلاغ عن المنشورات”، حيث تم الإبلاغ عن 7 منشورات فقط.

ومع ذلك، من بين هذه الـ 7، نصفها إيجابيات خاطئة واضحة ناتجة عن عتبات افتراضية منخفضة جدًا، والنصف الآخر أكثر صعوبة على الذكاء الاصطناعي لفهم السياق (مناداة محاورك بأنه أحمق مقابل سرد قصة عن كيف كان شخص ما أحمقًا تجاهك اليوم أثناء التسوق) وواحد، في رأيي، هو تطابق صحيح.

إذا كنت على استعداد لتجربته مرة أخرى، فإن نقل جميع العتبات إلى 85 والانتقال إلى نموذج original قد يحل تقريبًا جميع مشكلات الإبلاغ المفرط التي واجهتها حتى الآن. سأضيف إعدادًا للموقع للسماح بتخطي الرسائل الخاصة حيث يمكنني رؤية كيف يمكن أن يكون ذلك مزعجًا لبعض المجتمعات أيضًا.

8 إعجابات

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

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

4 إعجابات

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

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

عزيزي @Falco،

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

هذا

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

مثال على تقييم Disorder
  • السمية 65% [1]
  • إهانة 73% [2]
  • تهديد 12% [3]
  • صريح جنسيًا 2% [4]

إذا لزم الأمر، يمكنني تزويدك بنتائج استعلام SQL. نحن بعيدون عن الانتهاء من مراجعة قائمة الانتظار للإبلاغ..
نحن نستخدم نموذجًا متعدد اللغات ولم نجرب نماذج أخرى. قررنا أنه سيكون من الجيد البدء مع الأخذ في الاعتبار أن لدينا بعض المستخدمين الذين يفضلون النشر بلغتهم الأصلية.


  1. تجاوز، خط أحمر ↩︎

  2. تجاوز، خط أحمر ↩︎

  3. عادي، خط عادي ↩︎

  4. عادي، خط عادي ↩︎

إعجاب واحد (1)

مرحباً مرة أخرى،

أردت إعلامك بأننا نحصل على أخطاء في السجلات تتعلق بـ Disorder باستخدام النموذج “الأصلي”. لقد قمت للتو بالتبديل مرة أخرى إلى متعدد اللغات لمعرفة ما إذا كان ذلك سيحدث فرقًا.

خطأ في المهمة: الطريقة =>= غير معرفة لـ nil:NilClass @classification[label] >= SiteSetting.send(“disorder_flag_threshold_#{label}”) ^^

التفاصيل

/var/www/discourse/plugins/disorder/lib/classifier.rb:39:in `block in consider_flagging’

/var/www/discourse/plugins/disorder/lib/classifier.rb:38:in `filter’

/var/www/discourse/plugins/disorder/lib/classifier.rb:38:in `consider_flagging’

/var/www/discourse/plugins/disorder/lib/classifier.rb:25:in `classify!’

/var/www/discourse/app/jobs/regular/classify_post.rb:14:in `execute’

/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform’

rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in with_connection' /var/www/discourse/app/jobs/base.rb:236:in block in perform’

/var/www/discourse/app/jobs/base.rb:232:in `each’

/var/www/discourse/app/jobs/base.rb:232:in `perform’

sidekiq-6.5.8/lib/sidekiq/processor.rb:202:in `execute_job’

sidekiq-6.5.8/lib/sidekiq/processor.rb:170:in `block (2 levels) in process’

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:177:in `block in invoke’

/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call’

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:179:in `block in invoke’

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:182:in `invoke’

sidekiq-6.5.8/lib/sidekiq/processor.rb:169:in `block in process’

sidekiq-6.5.8/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch’

sidekiq-6.5.8/lib/sidekiq/job_retry.rb:113:in `local’

sidekiq-6.5.8/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch’

sidekiq-6.5.8/lib/sidekiq.rb:44:in `block in module:Sidekiq

sidekiq-6.5.8/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch’

sidekiq-6.5.8/lib/sidekiq/processor.rb:263:in `stats’

sidekiq-6.5.8/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch’

sidekiq-6.5.8/lib/sidekiq/job_logger.rb:13:in `call’

sidekiq-6.5.8/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch’

sidekiq-6.5.8/lib/sidekiq/job_retry.rb:80:in `global’

sidekiq-6.5.8/lib/sidekiq/processor.rb:124:in `block in dispatch’

sidekiq-6.5.8/lib/sidekiq/job_logger.rb:39:in `prepare’

sidekiq-6.5.8/lib/sidekiq/processor.rb:123:in `dispatch’

sidekiq-6.5.8/lib/sidekiq/processor.rb:168:in `process’

sidekiq-6.5.8/lib/sidekiq/processor.rb:78:in `process_one’

sidekiq-6.5.8/lib/sidekiq/processor.rb:68:in `run’

sidekiq-6.5.8/lib/sidekiq/component.rb:8:in `watchdog’

sidekiq-6.5.8/lib/sidekiq/component.rb:17:in `block in safe_thread’

التفاصيل 2
اسم المضيف
process_id 65460
application_version 2f8ad17aed81bbfa2fd20b6cc9210be92779bd74
current_db default
current_hostname
job Jobs::ClassifyPost
problem_db default
time 1:52 pm
opts
post_id 604063
current_site_id default

ملاحظة: نعم، الوضع متعدد اللغات لا ينتج هذه الأخطاء. النموذج غير المتحيز لا ينتج أخطاء أيضًا.

إعجاب واحد (1)