Kötü Kelime Filtreleme
Kötü kelime filtreleme, metinlerde izin vermediğiniz kelimelerden oluşan kendi listenizi yakalar. Spam veya duygu analizi gibi eğitilmiş modeller kullanan kontrollerin aksine, bu kontrol projeniz için yapılandırdığınız özel kelime listesiyle eşleşme yapar; yani hangi terimlerin yasak olduğuna tam olarak siz karar verirsiniz. POST /api/v2/check üzerinde check_badwords ile etkinleştirin.
Özel kelime listesini ne zaman kullanmalıyım?
Modeller, toksiklik gibi belirsiz kategorilerde çok iyidir; ancak bazı terimler tamamen sizin vereceğiniz politika kararlarına bağlıdır: bir rakibin adı, yasaklı bir ürün, topluluğa özgü hakaretler, sızdırılmış kimlik bilgisi kalıpları veya hukuk ekibinizin engellemenizi istediği kelimeler. Özel liste, bu tür terimler için kesin ve öngörülebilir eşleşme sağlar.
Nasıl çalışır?
Kötü kelime filtreleme yalnızca iki koşul aynı anda sağlandığında çalışır: check_badwords etkin olmalı ve projenizde yapılandırılmış özel bir kelime listesi bulunmalıdır. Ardından listedeki her kelimeyi mesaj metni içinde büyük/küçük harfe duyarsız bir alt dize eşleşmesiyle arar ve bulduğu her kelimeyi döndürür.
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
}
}'
Yanıt
{
"has_violations": true,
"cached": false,
"results": {
"hits": true,
"badwords": {
"hit": true,
"matched_words": ["CompetitorBrand"],
"apply_penalty": true
}
}
}
results.badwords nesnesinde üç alan bulunur:
| Alan | Tür | Açıklama |
|---|---|---|
hit |
boolean | Listelenen kelimelerden herhangi biri bulunduysa doğru olur |
matched_words |
string[] | Metinle eşleşen yapılandırılmış kelimeler |
apply_penalty |
boolean | Eşleşmenin yaptırımınızı tetikleyip tetiklememesi gerektiği (eşleşme varsa her zaman true) |
Kelime listesini nasıl yapılandırırım?
Liste, isteğin değil proje ayarlarınızın bir parçasıdır; bir kez ayarlarsınız ve her check_badwords isteği bunu kullanır. Proje ayarlarınızdan yönetin (varsayılan kontrolleri ayarladığınız yerle aynı). İstek yalnızca check_badwords açma/kapama seçeneğini taşıdığı için kelime listenizi gizli tutabilir ve istemci koduna dokunmadan değiştirebilirsiniz.
check_badwords açık ancak projenizde yapılandırılmış kelime yoksa kontrol atlanır ve herhangi bir badwords sonucu döndürülmez.
Hangi eşleşme yöntemini kullanır?
Eşleşme, büyük/küçük harfe duyarsız bir alt dize aramasıdır: listelenen spam kelimesi spam, SPAM ve ayrıca spammer ile eşleşir. Liste girdilerini bunu göz önünde bulundurarak seçin; daha büyük kelimelerin içinde eşleşmeyi önlemek istediğinizde tam ifadeler ekleyin ve kısa girdilerin istemeden başka alt dizelerle eşleşebileceğini unutmayın.
Kullanım
Kötü kelime filtrelemenin kendine ait bir kotası yoktur; metin kontrolleri gibi bir /api/v2/check çağrısının parçası olarak çalışır ve her çağrı aylık API isteği hakkınızdan bir kez düşer. Kota ve hız limitlerinin nasıl çalıştığını öğrenmek için Kimlik Doğrulama ve API Anahtarları bölümüne bakın.
En iyi uygulamalar
Model tabanlı kontrollerle birlikte kullanın
Özel listeyi kesin, politika odaklı terimler için kullanın; belirsiz kategorileri ise check_spam, check_sentiment ve check_images kontrollerine bırakın. Tek bir /check çağrısı bunların hepsini birlikte çalıştırabilir — bkz. Metin Analizi.
Eşleşen kelimelere göre işlem yapın
matched_words, filtreyi tam olarak neyin tetiklediğini söyler; bu da moderatör bağlamı ve listenizi iyileştirmek için yararlıdır:
const result = await check({ text }, { check_badwords: true });
const bad = result.results?.badwords;
if (bad?.hit) {
await blockAndLog(text, bad.matched_words);
}
Listeyi düzenli olarak gözden geçirin
Topluluklar ve dil değiştikçe statik bir liste güncelliğini yitirir. Hangi girdilerin gerçekten tetiklendiğini (loglarınızdaki matched_words üzerinden) düzenli olarak gözden geçirin ve yalnızca hatalı pozitiflere neden olanları ayıklayın.
Entegrasyon örneği
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()
Kendi kelime politikanızı uygulamaya hazır mısınız? Discuse ile başlayın.