فیلتر واژههای ممنوعه
فیلتر واژههای ممنوعه، فهرست اختصاصی شما از کلمات غیرمجاز را در متن شناسایی میکند. برخلاف اسپم یا احساسات — که از مدلهای آموزشدیده استفاده میکنند — این بررسی با فهرست سفارشی واژههایی که برای پروژهتان پیکربندی میکنید تطبیق میدهد؛ بنابراین خودتان دقیقاً تعیین میکنید کدام اصطلاحات ممنوع باشند. آن را با check_badwords در POST /api/v2/check فعال کنید.
چه زمانی باید از فهرست واژههای سفارشی استفاده کنم؟
مدلها برای دستهبندیهای مبهمی مثل محتوای سمی عالی هستند، اما بعضی اصطلاحات به تصمیمهای سیاستی مربوط میشوند که فقط شما میتوانید بگیرید: نام یک رقیب، یک محصول ممنوع، توهینهای خاص یک جامعه، الگوهای افشای اعتبارنامهها، یا کلماتی که تیم حقوقی شما ملزم به مسدود کردنشان کرده است. فهرست سفارشی برای این موارد یک تطبیق دقیق و قابلپیشبینی به شما میدهد.
چطور کار میکند؟
فیلتر واژههای ممنوعه فقط وقتی اجرا میشود که دو شرط برقرار باشد: check_badwords فعال باشد، و پروژه شما یک فهرست واژه سفارشی پیکربندیشده داشته باشد. سپس برای هر واژه فهرستشده، یک تطبیق زیررشتهای بدون توجه به بزرگی و کوچکی حروف روی متن پیام انجام میدهد و همه واژههایی را که پیدا کرده برمیگرداند.
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 | آیا تطبیق باید اجرای سیاست شما را فعال کند یا نه (برای هر تطبیق همیشه true است) |
چطور فهرست واژهها را پیکربندی کنم؟
این فهرست بخشی از تنظیمات پروژه شماست، نه درخواست — آن را یکبار تنظیم میکنید و هر درخواست check_badwords از همان استفاده میکند. آن را از طریق تنظیمات پروژهتان مدیریت کنید (همان جایی که بررسیهای پیشفرض را تنظیم میکنید). چون درخواست فقط سوییچ check_badwords را حمل میکند، میتوانید فهرست واژههای خود را خصوصی نگه دارید و بدون دست زدن به کد کلاینت آن را تغییر دهید.
اگر check_badwords روشن باشد اما پروژه شما هیچ واژهای پیکربندی نکرده باشد، این بررسی نادیده گرفته میشود و هیچ نتیجهای برای badwords برگردانده نمیشود.
از چه نوع تطبیقی استفاده میکند؟
تطبیق بهصورت جستوجوی زیررشتهای بدون توجه به بزرگی و کوچکی حروف است: واژه فهرستشده spam با spam، SPAM و همچنین spammer تطبیق پیدا میکند. ورودیهای فهرست را با در نظر گرفتن همین نکته انتخاب کنید — وقتی میخواهید از تطبیق درون واژههای بزرگتر جلوگیری کنید، عبارتهای کامل اضافه کنید و به خاطر داشته باشید ورودیهای کوتاه ممکن است با زیررشتههای ناخواسته تطبیق پیدا کنند.
نحوه استفاده
فیلتر واژههای ممنوعه سهمیه جداگانهای ندارد — مثل بررسیهای متنی، بهعنوان بخشی از یک فراخوانی /api/v2/check اجرا میشود و هر فراخوانی یک بار از سهمیه ماهانه درخواستهای API شما کم میکند. برای آشنایی با نحوه کار سهمیه و محدودیت نرخ، احراز هویت و کلیدهای API را ببینید.
بهترین روشها
با بررسیهای مبتنی بر مدل ترکیب کنید
از فهرست سفارشی برای اصطلاحات دقیق و مبتنی بر سیاست استفاده کنید و اجازه دهید check_spam، check_sentiment و check_images دستهبندیهای مبهمتر را مدیریت کنند. یک فراخوانی /check میتواند همه آنها را با هم اجرا کند — تحلیل متن را ببینید.
بر اساس واژههای تطبیقیافته اقدام کنید
matched_words دقیقاً به شما میگوید چه چیزی فیلتر را فعال کرده است؛ این برای زمینهدادن به ناظر و برای بهینهسازی فهرستتان مفید است:
const result = await check({ text }, { check_badwords: true });
const bad = result.results?.badwords;
if (bad?.hit) {
await blockAndLog(text, bad.matched_words);
}
فهرست را مرتب بازبینی کنید
یک فهرست ثابت با تغییر جوامع و زبان قدیمی میشود. بهصورت دورهای بررسی کنید کدام ورودیها واقعاً فعال میشوند (از matched_words در لاگهایتان) و مواردی را که فقط باعث مثبت کاذب میشوند حذف کنید.
نمونه یکپارچهسازی
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.