Skip to main content
Документация
Центр обучения

Освойте модерацию контента с подробными руководствами, обучающими материалами и документацией API

Быстрые ссылки

Фильтрация запрещённых слов

Фильтрация запрещённых слов находит в тексте слова из вашего собственного списка недопустимых выражений. В отличие от спама или тональности — где используются обученные модели, — эта проверка сопоставляет текст с пользовательским списком слов, который вы настраиваете для своего проекта, поэтому вы сами решаете, какие именно термины запрещены. Включите её с помощью 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.

Автор: Команда Discuse · Обновлено June 2026

Похожие статьи

Анализ текста и определение тональности

Выявляйте спам, токсичность, ненормативную лексику и анализируйте тональность текстового контента

Определение NSFW на изображениях

Автоматически выявляйте и фильтруйте неприемлемые изображения и контент для взрослых

Обнаружение спама

Фильтрация спама в тексте и сообщениях на базе AI