Skip to content

敏感词过滤 ​

基于 mint-filter(AC 自动机算法)实现的高性能敏感词过滤。内置 18 万+ 敏感词库(来自 houbb/sensitive-word)。

算法说明 ​

AC 自动机(Aho-Corasick)是在 Trie 树基础上增加了失败指针的多模式匹配算法,扫描文本一次即可找出所有敏感词,时间复杂度 O(n)。比正则匹配快数十倍,比普通 DFA 更高效。

词库架构 ​

文件说明维护方式
resources/sensitive-dict-dict.txt主词库(18 万+词)从 houbb/sensitive-word 下载,不手动修改
resources/sensitive-words.txt自定义补充词库手动编辑,重启后生效

启动时加载:主词库 + 自定义词库 → 去重 → 构建 AC 自动机。

敏感词检测 ​

  • 方法: GET
  • 路径: /api/web/tools/sensitive-check

检测文本中是否包含敏感词,返回命中的敏感词列表。

请求参数 (Query) ​

参数类型必填说明
textstring是待检测文本

请求示例 ​

bash
GET /api/web/tools/sensitive-check?text=这个代开发票的信息是垃圾

响应示例 ​

json
{
  "code": 200,
  "data": {
    "text": "这个代开发票的信息是垃圾",
    "hasSensitive": true,
    "count": 4,
    "words": ["代开", "代开发票", "信息", "垃圾"]
  },
  "message": "success"
}
GET在线测试

敏感词过滤 ​

  • 方法: GET
  • 路径: /api/web/tools/sensitive-filter

将文本中的敏感词替换为掩码字符(默认 *)。

请求参数 (Query) ​

参数类型必填默认值说明
textstring是—待过滤文本
maskstring否*掩码字符(每个敏感字符替换为一个掩码)

请求示例 ​

bash
GET /api/web/tools/sensitive-filter?text=这个代开发票的信息是垃圾&mask=*

响应示例 ​

json
{
  "code": 200,
  "data": {
    "original": "这个代开发票的信息是垃圾",
    "filtered": "这个****的**是**",
    "count": 4,
    "words": ["代开", "代开发票", "信息", "垃圾"]
  },
  "message": "success"
}
GET在线测试

词库说明 ​

主词库来自 houbb/sensitive-word 开源项目,包含 18 万+ 敏感词,涵盖:

分类说明
政治敏感涉政、涉军等
色情低俗色情、低俗、违禁内容
暴力恐怖暴力、恐怖、危险品
诈骗违法诈骗、赌博、毒品、违禁广告
辱骂脏话辱骂、人身攻击
其他广告垃圾信息、敏感变体等

词库管理

  • 补充词库:编辑 resources/sensitive-words.txt,每行一个词,重启后生效
  • 更新主词库:重新从 houbb/sensitive-word 下载 dict.txt 替换 resources/sensitive-dict-dict.txt
  • 升级引擎:npm update mint-filter 即可获得最新的 AC 自动机优化