Skip to main content
Dokümantasyon
ÖĞRENME MERKEZİ

Kapsamlı rehberler, eğitimler ve API dokümantasyonuyla içerik moderasyonunda uzmanlaşın

Hızlı Bağlantılar

Spam Tespiti

Discuse spam tespiti, metni bir güven skoru ile spam ya da spam değil şeklinde sınıflandırır. Metni check_spam etkinleştirilmiş olarak POST https://api.discuse.com/api/v2/check adresine gönderin ve sonucu results.spamfinder içinden okuyun. Basit anahtar kelime filtrelerinin kaçırdığı tanıtım amaçlı spamleri, dolandırıcılık girişimlerini ve bot kaynaklı gürültüyü yakalar.

Spam tespiti neleri yakalar?

Model, engelleme listelerini aşan yüksek hacimli kalıplar üzerinde eğitilmiştir:

  • Tanıtım amaçlı spam ve istenmeyen reklamlar
  • Dolandırıcılık ve kimlik avı mesajları
  • Bot tarafından üretilmiş ve kopyala-yapıştır içerikler

Tek bir label (spam veya ham gibi) ve bir confidence skoru döndürür; böylece ne kadar katı davranacağınıza siz karar verebilirsiniz.

Spam kontrolünü nasıl çalıştırırım?

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
    }
  }'

Yanıt formatı

{
  "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
  }
}

Spam sonucu hangi alanları döndürür?

Alan Tür Anlamı
text string Sınıflandırılan metin
label string Model sınıflandırması (örn. spam, ham)
confidence number Modelin etikete duyduğu güven (0.0–1.0)
is_spam bool Ham model kararı — label == spam, eşikten bağımsız
hit bool Eşiğe duyarlı karar — is_spam VE confidence ≥ projenizin spam eşiği

is_spam ve hit farkı

is_spam ham karardır: model, ne kadar emin olduğundan bağımsız olarak metni spam şeklinde etiketlemiştir. hit ise buna ek olarak güven skorunun projeniz için yapılandırılmış spam eşiğini aşmasını gerektirir. Moderasyon eylemlerini is_spam yerine hit üzerine kurun; böylece düşük güvenli bir spam etiketi, sınırda kalan bir mesajın cezalandırılmasına yol açmaz.

Güven skorunu nasıl yorumlamalıyım?

confidence, modelin label konusunda ne kadar emin olduğunu gösterir:

  • 0.0 – 0.3: çok düşük — büyük olasılıkla meşru.
  • 0.3 – 0.5: düşük — sınırda.
  • 0.5 – 0.7: orta — şüpheli.
  • 0.7 – 0.9: yüksek — büyük olasılıkla spam.
  • 0.9 – 1.0: çok yüksek — neredeyse kesinlikle spam.

Önerilen eşikler

Projenizin spam eşiğini, platformunuzun toleransına göre belirleyin:

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

Kullanım alanları

Yorum bölümleri

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' };
}

Kullanıcı kaydı

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}

Mesajlaşma platformları

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 };
}

Diğer kontrollerle birlikte kullanma

Spam kontrolünü duygu analizi ve dil tespitiyle birlikte tek bir istekte çalıştırın:

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

Yanıt, results.spamfinder, results.sentiment ve results.language değerlerini birlikte içerir.

En iyi uygulamalar

Kademeli yanıtlar kullanın

İkili engelle/izin ver yaklaşımı yerine güven skoruna göre dallanın:

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';
}

Tekrarlayan ihlalcileri takip edin

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);
}

Güvenilir kullanıcıları beyaz listeye alın

Yanlış pozitifleri azaltmak ve kotadan tasarruf etmek için doğrulanmış veya yüksek güvenilirliğe sahip hesaplarda spam kontrolünü atlayın:

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

Kullanım limitleri

Spam tespiti, duygu analizi kotanızdan kullanılır:

Plan Aylık Analiz Notlar
Basic 1,000 Spam + duygu analizini içerir
Gold 5,000 Spam + duygu analizini içerir
Platinum 15,000 Spam + duygu analizini içerir
Ultimate 30,000 Spam + duygu analizini içerir

Önbelleğe alınmış yanıtlar kotanızdan düşmez.

Entegrasyon örnekleri

Express.js middleware

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

Sonraki adımlar

Discuse Ekibi tarafından yazıldı · Son güncelleme June 2026

İlgili Makaleler

Metin Analizi ve Duygu Tespiti

Metin içeriğinde spam, toksisite, küfür tespit edin ve duygu analizi yapın

Görsel NSFW Tespiti

Uygunsuz görselleri ve yetişkin içerikleri otomatik olarak tespit edip filtreleyin

Dosya Antivirüs Taraması

Platformunuzu kötü amaçlı yazılımlardan, virüslerden ve zararlı dosyalardan koruyun