Files
WanJieDaoyou/docs/text-filter-dictionary.md
2026-10-03 15:02:19 +08:00

5.3 KiB
Raw Permalink Blame History

初始敏感词库整理说明

整理日期:2026-09-17。目标文件:apps/api/src/config/text-filter.dictionary.json。

这是万界道友对社区词库的筛选修改版,不是上游完整词库。初始版本共 522 条屏蔽词,例外词暂为空。词条按原有底量、来源类别的顺序排列;运行时仍只有一个全局屏蔽列表,不增加分类配置或外部依赖。

来源与选择

来源 本次定位 许可
fwwdn/sensitive-stop-words 主来源,政治、色情和广告文件分类明确,体量适合逐项筛选 Apache-2.0
konsheng/Sensitive-lexicon 从指定分类补充涉政事件、表达和组织名变体 MIT
houbb/sensitive-word-data 已考察;项目介绍有 6W+ 词库,与 sensitive-word 配套。本次没有导入 项目声明 Apache-2.0

固定来源版本,避免后续上游变更影响本次记录:

  • fwwdn:a7d06bb1c321e669943b6841570d9da6dad8ce2b。
  • Konsheng:d967c30b053fa40b06c5a0dddf0be493f2dfae46。
  • 逐项来源清单 保存原文件路径、固定版本链接、原始文件 SHA-256、选入和排除词条。它仅用于追溯本次初始化,不参与运行时加载;后续手工调整以 Git 历史为准。

上游 README 的更新和覆盖描述不等于准确率承诺。所检查的政治词条有较多历史人物与旧事件;其中 Sensitive-lexicon/Organized/政治类型.txt 为空,实际采用的是 Vocabulary 下的指定文件。文件名和上游分类不代表项目对词条的事实、法律或道德定性。

初始构成

类别 原文件非空条目数(含重复) 选中去重词条 合并后新增
本地原有辱骂词 13 13 13
fwwdn 政治类 326 214 214
fwwdn 色情类 304 181 181
fwwdn 广告类精选 123 19 19
Konsheng 涉政事件与表达补充 557 71 71
Konsheng 组织名及变体补充 178 25 24
合计 522

筛选边界

  1. 涉政人物列表优先保留较明确的完整姓名及表达,剔除两字简称、纯英文缩写和部分泛称;这意味着某些两字全名也未纳入。本版不是人物名单全覆盖。
  2. 明确保留一批涉政事件、组织名、口号及变体。人物和事件被提及就可能打码,不区分赞同、反对、引用或讨论历史的语境。
  3. 不把普通地名、民族或宗教身份本身作为屏蔽依据,例如“西藏”“拉萨”“回族”“穆斯林”。也不导入“政府”“维权”“网络”“客服”“招聘”等泛词。
  4. 色情类剔除服饰、普通身体部位、模糊动作和容易进入正常游戏语境的词,例如“丝袜”“美腿”“乳房”“后庭”“调教”“淫威”“欲火”。保留较明确的露骨性表达和辱骂词。
  5. 广告文件仅选取部分明确的违规招揽或交易表达;不整体导入广告词、停止词、网址、药名、枪械或化学品名单。
  6. 不导入“盘古”“毒龙”等修仙语境常见名称。英文不具备全词边界,因此没有导入主来源中的短英文脏话或纯英文政治缩写;补充来源仅保留少数明确的完整转写或缩写,详见清单。
  7. 去首尾空白,按当前引擎的大小写与全半角规范化去重,保持每个词一行。没有用模糊规则生成更多拼音、谐音或繁体词。

这是一份可维护的初始化基线,不保证覆盖全部最新涉政、辱骂、广告或规避表达。后续根据实际误伤和漏词增删,避免以词条数量作为唯一指标。

许可与修改声明

本项目进行了类别选取、词条排除、规范化去重、JSON 格式转换及与本地词条合并。原始来源文件自身没有逐词版权声明;保留仓库许可中的权利人声明。fwwdn 指定版本未附带独立 NOTICE 文件。

许可和声明放入 public/licenses/text-filter/,随 Vite 构建复制到 dist/licenses/text-filter/,确保只分发 dist 的部署包也携带这些文件。上游称词条来源于公开互联网,仓库许可并不表示每条词的原始采集来源已经独立核验。

本轮验证

  • 实际 JSON 可以被服务端加载,522 条词均能命中自身,未发现格式、规范化重复或黑白名单直接冲突。
  • 正常示例中的“宗门招募、联系客服、双修功法、炉鼎炼丹、政府公告、网络服务、西藏旅行、回族朋友、毒龙、盘古、六十四卦”保持原文。
  • 对 packages/shared/src 非测试 TypeScript 文件中静态 name、title、description 字符串做字面扫描,未发现命中;不代表动态生成文案已经全部验收。
  • 本轮只调整词库和文档,不修改匹配算法或业务接入。未重新进行浏览器聊天验收;上轮本地角色旧数据校验问题仍是已知未验证项。