Pemfilteran Badword
Pemfilteran badword mendeteksi daftar kata terlarang yang Anda tentukan sendiri di dalam teks. Berbeda dengan spam atau sentimen — yang menggunakan model terlatih — pemeriksaan ini mencocokkan teks dengan daftar kata khusus yang Anda konfigurasi untuk proyek Anda, sehingga Anda bisa menentukan sendiri istilah mana yang tidak boleh digunakan. Aktifkan dengan check_badwords pada POST /api/v2/check.
Kapan saya sebaiknya menggunakan daftar kata khusus?
Model sangat baik untuk kategori yang bersifat tidak pasti seperti toksisitas, tetapi sebagian istilah merupakan keputusan kebijakan yang hanya bisa Anda tentukan: nama kompetitor, produk yang dilarang, hinaan khas komunitas tertentu, pola kredensial yang bocor, atau kata-kata yang wajib diblokir oleh tim legal Anda. Daftar khusus memberi Anda pencocokan yang tepat dan dapat diprediksi untuk istilah-istilah tersebut.
Bagaimana cara kerjanya?
Pemfilteran badword hanya berjalan jika dua hal terpenuhi: check_badwords diaktifkan, dan proyek Anda memiliki daftar kata khusus yang sudah dikonfigurasi. Setelah itu, sistem melakukan pencocokan substring tanpa membedakan huruf besar-kecil untuk setiap kata dalam daftar terhadap teks pesan, lalu mengembalikan setiap kata yang ditemukan.
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": "Check out CompetitorBrand for a better deal"
},
"settings": {
"check_badwords": true
}
}'
Respons
{
"has_violations": true,
"cached": false,
"results": {
"hits": true,
"badwords": {
"hit": true,
"matched_words": ["CompetitorBrand"],
"apply_penalty": true
}
}
}
Objek results.badwords memiliki tiga bidang:
| Bidang | Tipe | Deskripsi |
|---|---|---|
hit |
boolean | True jika ada kata dalam daftar yang ditemukan |
matched_words |
string[] | Kata-kata yang dikonfigurasi dan cocok dengan teks |
apply_penalty |
boolean | Apakah kecocokan tersebut harus memicu penegakan aturan Anda (selalu true jika ada kecocokan) |
Bagaimana cara mengonfigurasi daftar kata?
Daftar ini merupakan bagian dari pengaturan proyek Anda, bukan bagian dari request — Anda mengaturnya sekali, lalu setiap request check_badwords akan menggunakannya. Kelola daftar tersebut melalui pengaturan proyek Anda (tempat yang sama untuk mengatur pemeriksaan default). Karena request hanya membawa toggle check_badwords, Anda bisa menjaga daftar kata tetap privat dan mengubahnya tanpa menyentuh kode klien.
Jika check_badwords aktif tetapi proyek Anda belum memiliki kata yang dikonfigurasi, pemeriksaan akan dilewati dan hasil badwords tidak akan dikembalikan.
Pencocokan seperti apa yang digunakan?
Pencocokannya berupa pencarian substring tanpa membedakan huruf besar-kecil: kata dalam daftar spam cocok dengan spam, SPAM, dan juga spammer. Pilih entri daftar dengan mempertimbangkan hal ini — tambahkan frasa utuh jika Anda ingin menghindari kecocokan di dalam kata yang lebih panjang, dan ingat bahwa entri pendek dapat cocok dengan substring yang tidak diinginkan.
Penggunaan
Pemfilteran badword tidak memiliki kuota tersendiri — seperti pemeriksaan teks, pemfilteran ini berjalan sebagai bagian dari panggilan /api/v2/check, dan setiap panggilan dihitung satu kali terhadap jatah request API bulanan Anda. Lihat Autentikasi dan API Key untuk mengetahui cara kerja kuota dan batas laju.
Praktik terbaik
Gabungkan dengan pemeriksaan berbasis model
Gunakan daftar khusus untuk istilah yang pasti dan berbasis kebijakan, lalu biarkan check_spam, check_sentiment, dan check_images menangani kategori yang lebih tidak pasti. Satu panggilan /check dapat menjalankan semuanya sekaligus — lihat Analisis Teks.
Tindak lanjuti kata yang cocok
matched_words memberi tahu Anda dengan tepat apa yang memicu filter, yang berguna sebagai konteks bagi moderator dan untuk menyempurnakan daftar Anda:
const result = await check({ text }, { check_badwords: true });
const bad = result.results?.badwords;
if (bad?.hit) {
await blockAndLog(text, bad.matched_words);
}
Tinjau daftar secara berkala
Daftar statis akan menjadi usang seiring perubahan komunitas dan bahasa. Tinjau secara berkala entri mana yang benar-benar terpicu (dari matched_words di log Anda) dan hapus entri yang hanya menyebabkan false positive.
Contoh integrasi
import os
import requests
def check_badwords(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_badwords': True}}
)
return response.json()
Siap menerapkan kebijakan kata Anda sendiri? Mulai dengan Discuse.