Skip to main content
Dokumentasi
Pusat Pembelajaran

Kuasai moderasi konten dengan panduan lengkap, tutorial, dan dokumentasi API

Tautan Cepat

Analisis Teks: Sentimen, Spam, dan Bahasa dalam Satu Panggilan

Analisis teks Discuse menilai sebuah pesan untuk toksisitas, spam, dan bahasa dalam satu permintaan POST https://api.discuse.com/api/v2/check. Kirim teks Anda di content.text, lakukan autentikasi dengan header X-API-Key, lalu baca hasil per pemeriksaan di bawah results.

Apa yang diperiksa endpoint teks?

Satu panggilan /api/v2/check dapat menjalankan tiga pemeriksaan teks sekaligus:

  • Sentimen: penilaian toksisitas, kata-kata kasar, ancaman, dan hinaan, serta keputusan negatif/toksik.
  • Spam: spam promosi, penipuan, dan teks yang dibuat bot, dikembalikan sebagai label beserta skor keyakinan.
  • Bahasa: kode bahasa yang terdeteksi, dengan opsi penerapan terhadap bahasa yang diharapkan.

Setiap pemeriksaan hanya berjalan jika diaktifkan, baik di pengaturan proyek Anda maupun melalui objek settings per permintaan.

Bagaimana cara memanggil endpoint teks?

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": "This is an example message to analyze"
    },
    "settings": {
      "check_sentiment": true,
      "check_spam": true,
      "check_language": true
    }
  }'

content.text menerima hingga 10.000 karakter. Kunci API dapat dikirim di header X-API-Key atau sebagai api_key di body permintaan.

Respons

{
  "has_violations": false,
  "cached": false,
  "message": "Content appears safe",
  "results": {
    "hits": false,
    "sentiment": {
      "hit": false,
      "is_negative": false,
      "is_toxic": false,
      "score": 0.04,
      "toxicity": 0.02,
      "toxic": 0.02,
      "profanity": 0.01,
      "threat": 0.00,
      "insult": 0.03
    },
    "spamfinder": {
      "text": "This is an example message to analyze",
      "label": "ham",
      "confidence": 0.12,
      "is_spam": false,
      "hit": false
    },
    "language": {
      "language": "en",
      "confidence": 0.98,
      "hit": false
    }
  },
  "usage": {
    "api_requests_used": 41,
    "api_requests_limit": 5000,
    "api_requests_remaining": 4959
  }
}

has_violations mencerminkan results.hits: nilainya true ketika salah satu pemeriksaan yang aktif memicu flag hit. processing_time_ms hanya muncul jika pengukuran waktu diaktifkan di pengaturan proyek Anda.

Analisis sentimen

Pemeriksaan sentimen mengembalikan keputusan serta skor per dimensi dari 0,0 hingga 1,0.

Field Type Meaning
is_negative bool Pesan terbaca sebagai negatif
is_toxic bool Pesan melewati ambang toksisitas
score number Skor sentimen/tingkat keparahan keseluruhan
toxicity number Keyakinan toksisitas (0,0–1,0)
toxic number Keyakinan toksisitas (alias lama dari toxicity)
profanity number Keyakinan adanya bahasa eksplisit
threat number Keyakinan adanya ancaman bahaya
insult number Keyakinan adanya serangan pribadi
hit bool True ketika pesan melanggar ambang sentimen
message string Penjelasan opsional

Bagaimana cara menafsirkan skor sentimen?

Skor adalah tingkat keyakinan model bahwa dimensi tersebut berlaku:

  • 0.0 – 0.3: rendah, umumnya aman.
  • 0.3 – 0.6: sedang, mungkin perlu ditinjau.
  • 0.6 – 0.8: tinggi, kemungkinan bermasalah.
  • 0.8 – 1.0: sangat tinggi, hampir pasti melanggar.

Contoh: konten toksik

Permintaan:

{
  "content": {
    "text": "You're the worst person I've ever met. I hate everything about you."
  },
  "settings": { "check_sentiment": true }
}

Respons:

{
  "has_violations": true,
  "results": {
    "hits": true,
    "sentiment": {
      "hit": true,
      "is_negative": true,
      "is_toxic": true,
      "score": 0.91,
      "toxicity": 0.89,
      "toxic": 0.89,
      "profanity": 0.15,
      "threat": 0.22,
      "insult": 0.95
    }
  }
}

Deteksi spam

Pemeriksaan spam mengklasifikasikan teks dan mengembalikan satu label dengan skor keyakinan. Pemeriksaan ini menangkap pola yang lolos dari daftar blokir kata kunci: spam promosi, penipuan dan phishing, serta teks yang dibuat bot.

Contoh: konten spam

Permintaan:

{
  "content": {
    "text": "CONGRATULATIONS! You've won $10,000! Click here to claim: www.fake-prize.com"
  },
  "settings": { "check_spam": true }
}

Respons:

{
  "has_violations": true,
  "results": {
    "hits": true,
    "spamfinder": {
      "text": "CONGRATULATIONS! You've won $10,000! Click here to claim: www.fake-prize.com",
      "label": "spam",
      "confidence": 0.97,
      "is_spam": true,
      "hit": true
    }
  }
}

is_spam adalah keputusan mentah model (model memberi label teks sebagai spam). hit adalah keputusan yang mempertimbangkan ambang: nilainya true hanya jika is_spam bernilai true dan confidence melewati ambang spam proyek Anda. Dasarkan moderasi pada hit, bukan pada is_spam. Lihat panduan Deteksi Spam untuk detailnya.

Deteksi bahasa

Atur check_language untuk mendeteksi kode bahasa dari content.text. Hasilnya berada di results.language.language (misalnya "en", "fr", "es").

Permintaan:

{
  "content": { "text": "Bonjour, comment allez-vous aujourd'hui?" },
  "settings": { "check_language": true }
}

Respons:

{
  "results": {
    "language": {
      "language": "fr",
      "confidence": 0.99,
      "hit": false
    }
  }
}

Untuk menandai konten yang tidak menggunakan bahasa yang Anda harapkan, atur expected_language. Ketika bahasa yang terdeteksi berbeda, language.hit bernilai true dan expected/detected akan terisi:

{
  "content": { "text": "Hola, cómo estás?" },
  "settings": { "check_language": true, "expected_language": "en" }
}
{
  "results": {
    "language": {
      "language": "es",
      "detected": "es",
      "expected": "en",
      "confidence": 0.95,
      "hit": true
    }
  }
}

Lihat Deteksi Bahasa untuk daftar lengkap bahasa dan pola penerapannya.

Pemeriksaan apa saja yang bisa saya aktifkan atau nonaktifkan?

Objek settings opsional menggantikan default proyek Anda untuk satu permintaan. Toggle yang relevan untuk teks adalah:

Setting Type Effect
check_sentiment bool Jalankan analisis sentimen
check_spam bool Jalankan deteksi spam
check_language bool Jalankan deteksi bahasa
check_badwords bool Jalankan daftar blokir badwords
expected_language string Kode bahasa yang harus dipatuhi (mis. "en")
{
  "content": { "text": "Your message here" },
  "settings": {
    "check_sentiment": true,
    "check_spam": true,
    "check_language": true,
    "expected_language": "en"
  }
}

Batas penggunaan

Deteksi sentimen, spam, dan bahasa menggunakan kuota analisis sentimen per paket:

Plan Sentiment Analyses/Month
Basic 1,000
Gold 5,000
Platinum 15,000
Ultimate 30,000

Respons yang di-cache tidak mengurangi kuota Anda. Objek usage di setiap respons melaporkan api_requests_used, api_requests_limit, dan api_requests_remaining.

Praktik terbaik

Tetapkan ambang per platform

Terapkan batas sentimen yang berbeda untuk audiens yang berbeda:

const THRESHOLDS = {
  kids:    { toxicity: 0.3, profanity: 0.2, threat: 0.2, insult: 0.3 },
  general: { toxicity: 0.5, profanity: 0.5, threat: 0.4, insult: 0.5 },
  adult:   { toxicity: 0.7, profanity: 0.8, threat: 0.5, insult: 0.7 }
};

Pertimbangkan konteks

Konten klinis, jurnalistik, dan fiksi bisa saja memicu skor toksisitas dan kata-kata kasar secara sah. Gabungkan penilaian otomatis dengan tinjauan manusia untuk kasus yang berada di batas:

const sentiment = result.results.sentiment;
if (sentiment.toxicity > 0.9) {
  await removeContent(contentId);       // high confidence: auto-remove
} else if (sentiment.toxicity > 0.5) {
  await queueForReview(contentId);      // borderline: human review
} else {
  await approveContent(contentId);
}

Contoh integrasi

JavaScript

async function analyzeText(text) {
  const response = await fetch('https://api.discuse.com/api/v2/check', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({
      content: { text },
      settings: { check_sentiment: true, check_spam: true, check_language: true }
    })
  });

  return response.json();
}

const result = await analyzeText('Hello, how are you?');
console.log(result.has_violations); // false

Python

import os
import requests

def analyze_text(text):
    response = requests.post(
        'https://api.discuse.com/api/v2/check',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={
            'content': {'text': text},
            'settings': {
                'check_sentiment': True,
                'check_spam': True,
                'check_language': True
            }
        }
    )
    return response.json()

result = analyze_text('Hello, how are you?')
print(result['has_violations'])  # False

Siap menerapkan analisis teks? Lihat Panduan Mulai Cepat untuk penyiapan langkah demi langkah.

Ditulis oleh Tim Discuse · Terakhir diperbarui June 2026

Artikel Terkait

Deteksi NSFW pada Gambar

Deteksi dan filter gambar tidak pantas serta konten dewasa secara otomatis

Deteksi Spam

Pemfilteran spam berbasis AI untuk teks dan pesan

Pemindaian Antivirus File

Lindungi platform Anda dari malware, virus, dan file berbahaya