Skip to main content
التوثيق
مركز التعلّم

أتقن إشراف المحتوى عبر أدلة شاملة، وشروحات عملية، ووثائق API

روابط سريعة

اكتشاف الرسائل المزعجة

يصنّف اكتشاف الرسائل المزعجة في Discuse النص باعتباره مزعجًا أو غير مزعج، مع درجة ثقة. أرسل النص إلى POST https://api.discuse.com/api/v2/check مع تفعيل check_spam، ثم اقرأ الحكم من results.spamfinder. يلتقط هذا النظام الرسائل الترويجية المزعجة، وعمليات الاحتيال، والضجيج الناتج عن الروبوتات الذي تفوته مرشحات الكلمات المفتاحية البسيطة.

ما الذي يلتقطه اكتشاف الرسائل المزعجة؟

دُرّب النموذج على الأنماط عالية الانتشار التي تتجاوز قوائم الحظر:

  • الرسائل الترويجية المزعجة والإعلانات غير المرغوب فيها
  • رسائل الاحتيال والتصيّد
  • المحتوى الناتج عن الروبوتات والمحتوى المنسوخ والملصق

يعيد النموذج label واحدة (مثل spam أو ham) إلى جانب درجة confidence، بحيث يمكنك تحديد مدى الصرامة التي تريدها.

كيف أجري فحصًا للرسائل المزعجة؟

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "text": "CONGRATULATIONS! You won $10,000! Click here to claim: bit.ly/fake"
    },
    "settings": {
      "check_spam": true
    }
  }'

تنسيق الاستجابة

{
  "has_violations": true,
  "cached": false,
  "message": "Spam content detected",
  "results": {
    "hits": true,
    "spamfinder": {
      "text": "CONGRATULATIONS! You won $10,000! Click here to claim: bit.ly/fake",
      "label": "spam",
      "confidence": 0.97,
      "is_spam": true,
      "hit": true
    }
  },
  "usage": {
    "api_requests_used": 8,
    "api_requests_limit": 5000,
    "api_requests_remaining": 4992
  }
}

ما الحقول التي تعيدها نتيجة الرسائل المزعجة؟

الحقل النوع المعنى
text string النص الذي تم تصنيفه
label string تصنيف النموذج (مثل spam، ham)
confidence number درجة ثقة النموذج في التصنيف (0.0–1.0)
is_spam bool حكم النموذج الخام — label == spam، غير مرتبط بالعتبة
hit bool قرار يأخذ العتبة في الاعتبار — is_spam و confidence ≥ عتبة الرسائل المزعجة في مشروعك

is_spam مقابل hit

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

كيف أفسّر درجة الثقة؟

تعكس confidence مدى تأكد النموذج من label الخاصة به:

  • 0.0 – 0.3: منخفضة جدًا — غالبًا محتوى مشروع.
  • 0.3 – 0.5: منخفضة — حالة حدودية.
  • 0.5 – 0.7: متوسطة — مثيرة للريبة.
  • 0.7 – 0.9: عالية — من المرجح جدًا أنها رسالة مزعجة.
  • 0.9 – 1.0: عالية جدًا — شبه مؤكدة أنها رسالة مزعجة.

العتبات الموصى بها

اضبط عتبة الرسائل المزعجة في مشروعك بما يناسب مستوى التحمّل في منصتك:

const SPAM_THRESHOLDS = {
  strict: 0.5,      // professional platforms, financial services
  standard: 0.7,    // social media, forums
  permissive: 0.85  // creative platforms, open communities
};

حالات الاستخدام

أقسام التعليقات

async function moderateComment(comment) {
  const result = await checkSpam(comment.text);
  const spam = result.results.spamfinder;

  if (spam.hit) {
    if (spam.confidence > 0.9) {
      return { action: 'reject', reason: 'spam_detected' };
    }
    return { action: 'review', reason: 'possible_spam' };
  }
  return { action: 'approve' };
}

تسجيل المستخدمين

def validate_registration(user_data):
    bio = user_data.get('bio')
    if bio:
        result = check_spam(bio)
        if result['results']['spamfinder']['hit']:
            return {'approved': False, 'reason': 'Spam content detected in profile'}
    return {'approved': True}

منصات المراسلة

async function filterMessage(message, sender) {
  const result = await checkSpam(message.text);
  const spam = result.results.spamfinder;

  if (spam.hit) {
    await incrementSpamCount(sender.id);
    const spamCount = await getSpamCount(sender.id);
    if (spamCount > 3) {
      await banUser(sender.id, 'repeated_spam');
    }
    return { delivered: false, reason: 'Message filtered as spam' };
  }
  return { delivered: true };
}

الجمع مع فحوصات أخرى

شغّل فحص الرسائل المزعجة إلى جانب تحليل المشاعر واللغة في طلب واحد:

{
  "content": {
    "text": "Check out this amazing deal! Click here: example.com/offer"
  },
  "settings": {
    "check_spam": true,
    "check_sentiment": true,
    "check_language": true
  }
}

ستحمل الاستجابة بعد ذلك results.spamfinder و results.sentiment و results.language معًا.

أفضل الممارسات

استخدم استجابات متدرجة

بدلًا من الحظر/السماح الثنائي، فرّع القرار بناءً على الثقة:

function handleSpamResult(spam) {
  if (!spam.hit) return 'allow';
  if (spam.confidence > 0.95) return 'silent_delete';
  if (spam.confidence > 0.8)  return 'block_notify';
  if (spam.confidence > 0.6)  return 'flag_for_review';
  return 'apply_friction';
}

تتبّع المخالفين المتكررين

async function assessUser(userId, spam) {
  if (spam.hit) {
    await incrementUserSpamScore(userId, spam.confidence);
  }
  const userScore = await getUserSpamScore(userId);
  if (userScore > 10.0) await autoSuspendUser(userId);
  else if (userScore > 5.0) await flagForManualReview(userId);
}

أدرج المستخدمين الموثوقين في القائمة البيضاء

تجاوز فحص الرسائل المزعجة للحسابات الموثّقة أو ذات الثقة العالية لتقليل النتائج الإيجابية الخاطئة وتوفير الحصة:

function shouldCheckSpam(user) {
  if (user.isVerified) return false;
  if (user.trustScore > 0.9) return false;
  return true;
}

حدود الاستخدام

يستهلك اكتشاف الرسائل المزعجة من حصة تحليل المشاعر لديك:

الخطة التحليلات الشهرية ملاحظات
Basic 1,000 تشمل الرسائل المزعجة + المشاعر
Gold 5,000 تشمل الرسائل المزعجة + المشاعر
Platinum 15,000 تشمل الرسائل المزعجة + المشاعر
Ultimate 30,000 تشمل الرسائل المزعجة + المشاعر

لا تُحتسب الاستجابات المخزّنة مؤقتًا ضمن حصتك.

أمثلة التكامل

وسيط Express.js

const spamFilter = async (req, res, next) => {
  if (req.body.text) {
    const result = await checkSpam(req.body.text);
    if (result.results.spamfinder.hit) {
      return res.status(400).json({
        error: 'spam_detected',
        message: 'Your message was flagged as spam'
      });
    }
  }
  next();
};

app.post('/api/comments', spamFilter, createComment);

Python Flask

from functools import wraps
from flask import request, jsonify

def spam_filter(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        text = request.json.get('text')
        if text:
            result = check_spam(text)
            if result['results']['spamfinder']['hit']:
                return jsonify({
                    'error': 'spam_detected',
                    'message': 'Your message was flagged as spam'
                }), 400
        return f(*args, **kwargs)
    return decorated

@app.route('/api/comments', methods=['POST'])
@spam_filter
def create_comment():
    pass

الخطوات التالية

كتبه فريق Discuse · آخر تحديث June 2026

مقالات ذات صلة

تحليل النص واكتشاف المشاعر

اكتشف الرسائل المزعجة والسمّية والألفاظ النابية، وحلّل المشاعر في المحتوى النصي

اكتشاف NSFW في الصور

اكتشف الصور غير الملائمة ومحتوى البالغين وقم بتصفيتها تلقائيًا

فحص الملفات بمضاد الفيروسات

احمِ منصتك من البرمجيات الضارة والفيروسات والملفات الخبيثة