给法规文件做自动分类,模型显然效果更好。但在 NMPARegHub 里我最终选了关键词规则, 理由不是模型不好,而是使用者是谁决定了这件事。
使用者需要回答的一个问题
注册专员拿到一份文件被归到「药品注册」,他要回答的是:
为什么它被归到这里?
- 规则分类:打开规则表,找到命中「药品注册」的那个关键词,回原文定位
- 模型分类:给不出理由。置信度 0.87 不构成理由
而这个问题的答案决定了他敢不敢用这个标签。标签是辅助检索的入口, 但一旦它错了,整条检索路径就废了。
可复现是另一条独立理由
同一份文件,两个月后重新采集,应该得到同一个分类 —— 否则版本追踪就乱了。 规则表是确定性的、可版本化的;模型的行为会随依赖版本、浮点实现、批大小漂移。
对于一个专门用来追踪法规何时改了什么的工具,分类本身不稳定是不可接受的。
规则的真实代价:必须测顺序
选规则不是没有成本的。前面那篇 三个由真实数据暴露的 SQL 缺陷里第三个 bug 就是规则的直接 产物:「化妆品注册备案」因为含「注册」被归进「药品注册」。
修复方式是引入标题级排除规则短路。这意味着分类器的优先级顺序本身就是一条业务 规则,需要被测试覆盖。
这是明码标价的代价,比隐藏的代价好。
另一条:保守推断优于激进推断
效力状态(现行有效 / 已废止)是从正文尾部识别「自…起施行」「起废止」推断出来的, 没有结构化来源。
这里的原则很明确:
把一份现行有效的法规误标为”已废止”,比留成
unknown危害大得多。
误标废止会让使用者跳过一份还在执行的法规;标成 unknown 只是多查一次。 所以只在正文出现明确废止表述时才标注。
同样的逻辑可以套到很多字段上:默认值应该选”让人多看一眼”,而不是”让人以为 已经确认”。 对一个合规工具来说,多看一眼的成本远低于漏看一份废止通知。
什么时候该换模型
规则分类的适用边界很清楚:当标签只是导航(帮用户缩小范围)且出错代价低时, 模型完全够用。
一旦标签要承担可追溯的判断,可解释性就从”加分项”变成了”准入条件”。
延伸:NMPARegHub
相关:领域是数据,不是代码