Skip to main content
文档
学习中心

通过完整指南、教程和 API 文档,掌握内容审核

快捷链接

禁用词过滤

禁用词过滤会在文本中检测你自己列出的不允许使用的词。它不同于垃圾内容或情感分析——后两者使用训练好的模型——这项检查会根据你为项目配置的自定义词表进行匹配,因此哪些词属于禁止范围完全由你决定。在 POST /api/v2/check 中通过 check_badwords 启用它。

什么时候应该使用自定义词表?

模型很擅长识别有害性这类模糊类别,但有些词属于只能由你来决定的策略问题:竞争对手名称、被禁产品、特定社区的歧视性称呼、泄露凭据的模式,或法务团队要求你屏蔽的词。自定义词表可以为这些内容提供精确且可预测的匹配。

它是如何工作的?

只有在同时满足两个条件时,禁用词过滤才会运行:已启用 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 会匹配 spamSPAM,也会匹配 spammer。选择词表条目时请考虑这一点——如果你想避免匹配到较长单词内部的内容,可以添加完整短语;同时请记住,较短的条目可能会匹配到非预期的子字符串。

使用方式

禁用词过滤没有单独的配额——和文本检查一样,它作为 /api/v2/check 调用的一部分运行,每次调用都会计入你每月的 API 请求额度。请参阅身份验证和 API 密钥,了解配额和速率限制的工作方式。

最佳实践

与基于模型的检查结合使用

将自定义词表用于精确的、由策略驱动的术语,并让 check_spamcheck_sentimentcheck_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 驱动的文本和消息垃圾内容过滤