प्रतिबंधित शब्द फ़िल्टरिंग
प्रतिबंधित शब्द फ़िल्टरिंग टेक्स्ट में आपकी अपनी अस्वीकृत शब्दों की सूची पकड़ती है। स्पैम या sentiment के विपरीत — जो प्रशिक्षित मॉडल का उपयोग करते हैं — यह जाँच उस कस्टम शब्द-सूची से मिलान करती है जिसे आप अपने प्रोजेक्ट के लिए कॉन्फ़िगर करते हैं, इसलिए आप तय करते हैं कि कौन-से शब्द पूरी तरह वर्जित हैं। इसे POST /api/v2/check पर check_badwords के साथ सक्षम करें।
मुझे कस्टम शब्द-सूची कब इस्तेमाल करनी चाहिए?
मॉडल toxicity जैसी अस्पष्ट श्रेणियों को समझने में बहुत अच्छे होते हैं, लेकिन कुछ शब्द नीति-आधारित निर्णय होते हैं जिन्हें सिर्फ़ आप तय कर सकते हैं: किसी प्रतिस्पर्धी का नाम, प्रतिबंधित प्रोडक्ट, समुदाय-विशिष्ट अपमानजनक शब्द, लीक हुए क्रेडेंशियल पैटर्न, या वे शब्द जिन्हें आपकी लीगल टीम ब्लॉक करने को कहती है। कस्टम सूची आपको इनके लिए सटीक और अनुमानित मिलान देती है।
यह कैसे काम करता है?
प्रतिबंधित शब्द फ़िल्टरिंग केवल तब चलती है जब दो बातें सही हों: check_badwords सक्षम हो, और आपके प्रोजेक्ट में कॉन्फ़िगर की गई कस्टम शब्द-सूची हो। इसके बाद यह सूची में मौजूद हर शब्द का मैसेज टेक्स्ट से case-insensitive substring मिलान करती है, और मिले हुए हर शब्द को लौटाती है।
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
}
}'
प्रतिक्रिया
{
"has_violations": true,
"cached": false,
"results": {
"hits": true,
"badwords": {
"hit": true,
"matched_words": ["CompetitorBrand"],
"apply_penalty": true
}
}
}
results.badwords ऑब्जेक्ट में तीन फ़ील्ड होते हैं:
| फ़ील्ड | प्रकार | विवरण |
|---|---|---|
hit |
boolean | सूची में मौजूद कोई शब्द मिलने पर true |
matched_words |
string[] | वे कॉन्फ़िगर किए गए शब्द जो टेक्स्ट से मेल खाए |
apply_penalty |
boolean | क्या मिलान से आपका enforcement ट्रिगर होना चाहिए (मिलान होने पर हमेशा true) |
मैं शब्द-सूची कैसे कॉन्फ़िगर करूँ?
यह सूची आपके प्रोजेक्ट की सेटिंग्स का हिस्सा होती है, अनुरोध का नहीं — आप इसे एक बार सेट करते हैं और हर check_badwords अनुरोध इसका उपयोग करता है। इसे अपनी प्रोजेक्ट सेटिंग्स से मैनेज करें (वही जगह जहाँ आप डिफ़ॉल्ट checks सेट करते हैं)। चूँकि अनुरोध में केवल check_badwords toggle जाता है, आप अपनी शब्द-सूची को निजी रख सकते हैं और client code को छुए बिना इसे बदल सकते हैं।
अगर check_badwords चालू है लेकिन आपके प्रोजेक्ट में कोई शब्द कॉन्फ़िगर नहीं है, तो यह जाँच छोड़ दी जाती है और कोई badwords परिणाम वापस नहीं आता।
यह किस तरह का मिलान इस्तेमाल करता है?
मिलान case-insensitive substring search है: सूचीबद्ध शब्द spam, spam, SPAM, और spammer से भी मेल खाता है। सूची में एंट्री जोड़ते समय इसे ध्यान में रखें — जब आप बड़े शब्दों के भीतर मिलान से बचना चाहते हों तो पूरे वाक्यांश जोड़ें, और याद रखें कि छोटी एंट्री अनचाहे substrings से भी मेल खा सकती हैं।
उपयोग
प्रतिबंधित शब्द फ़िल्टरिंग का अपना अलग quota नहीं होता — टेक्स्ट checks की तरह, यह /api/v2/check कॉल के हिस्से के रूप में चलती है, और हर कॉल आपकी मासिक API-request सीमा में एक बार गिनी जाती है। quota और rate limits कैसे काम करते हैं, इसके लिए Authentication और API Keys देखें।
सर्वोत्तम अभ्यास
मॉडल-आधारित checks के साथ मिलाएँ
सटीक, नीति-आधारित शब्दों के लिए कस्टम सूची का उपयोग करें और अस्पष्ट श्रेणियों को check_spam, check_sentiment, और check_images पर छोड़ दें। एक /check कॉल इन सभी को साथ में चला सकती है — Text Analysis देखें।
मिले हुए शब्दों पर कार्रवाई करें
matched_words आपको ठीक-ठीक बताता है कि फ़िल्टर किससे ट्रिप हुआ, जो moderator context और आपकी सूची को ट्यून करने के लिए उपयोगी है:
const result = await check({ text }, { check_badwords: true });
const bad = result.results?.badwords;
if (bad?.hit) {
await blockAndLog(text, bad.matched_words);
}
सूची की नियमित समीक्षा करें
समुदायों और भाषा के बदलने के साथ स्थिर सूची पुरानी पड़ जाती है। समय-समय पर देखें कि कौन-सी एंट्री वास्तव में ट्रिगर होती हैं (आपके logs में matched_words से) और उन एंट्री को हटाएँ जो केवल false positives पैदा करती हैं।
इंटीग्रेशन उदाहरण
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()
अपनी खुद की शब्द नीति लागू करने के लिए तैयार हैं? Discuse के साथ शुरू करें.