njucm njucm.org
← Notes

为什么合规场景要用规则分类而不是模型

给法规文件做自动分类,模型显然效果更好。但在 NMPARegHub 里我最终选了关键词规则, 理由不是模型不好,而是使用者是谁决定了这件事。

使用者需要回答的一个问题

注册专员拿到一份文件被归到「药品注册」,他要回答的是:

为什么它被归到这里?

  • 规则分类:打开规则表,找到命中「药品注册」的那个关键词,回原文定位
  • 模型分类:给不出理由。置信度 0.87 不构成理由

而这个问题的答案决定了他敢不敢用这个标签。标签是辅助检索的入口, 但一旦它错了,整条检索路径就废了。

可复现是另一条独立理由

同一份文件,两个月后重新采集,应该得到同一个分类 —— 否则版本追踪就乱了。 规则表是确定性的、可版本化的;模型的行为会随依赖版本、浮点实现、批大小漂移。

对于一个专门用来追踪法规何时改了什么的工具,分类本身不稳定是不可接受的。

规则的真实代价:必须测顺序

选规则不是没有成本的。前面那篇 三个由真实数据暴露的 SQL 缺陷里第三个 bug 就是规则的直接 产物:「化妆品注册备案」因为含「注册」被归进「药品注册」。

修复方式是引入标题级排除规则短路。这意味着分类器的优先级顺序本身就是一条业务 规则,需要被测试覆盖。

这是明码标价的代价,比隐藏的代价好。

另一条:保守推断优于激进推断

效力状态(现行有效 / 已废止)是从正文尾部识别「自…起施行」「起废止」推断出来的, 没有结构化来源。

这里的原则很明确:

把一份现行有效的法规误标为”已废止”,比留成 unknown 危害大得多。

误标废止会让使用者跳过一份还在执行的法规;标成 unknown 只是多查一次。 所以只在正文出现明确废止表述时才标注。

同样的逻辑可以套到很多字段上:默认值应该选”让人多看一眼”,而不是”让人以为 已经确认”。 对一个合规工具来说,多看一眼的成本远低于漏看一份废止通知。

什么时候该换模型

规则分类的适用边界很清楚:当标签只是导航(帮用户缩小范围)且出错代价低时, 模型完全够用。

一旦标签要承担可追溯的判断,可解释性就从”加分项”变成了”准入条件”。


延伸:NMPARegHub

相关:领域是数据,不是代码