Category: 技术

  • 一个字段,不能装两种意思

    Written by

    on

    Categories:

    Tags:

    做法规知识库的时候,我碰到一个看上去很小的问题。 系统要判断:一段原文里出现的某个术语,是不是真的在使用法规里对它的定义。光看字面不行。同一个词,这一段在用本法的定义,另一段却是碰巧出现,还有一段明明在说”按另一部法规的定义”。于是我们把判断分成三种结果:确实在引用这个定义;只是碰巧出现在一起;明确指向了别处的定义。 第一版做完,我发现自己掉进了一个很老的坑。判断结果里,同一个字段身兼两职:它既要回答”这算不算引用”,又顺带表达”为什么不算、风险有多大”。比如一条证据因为版本不同而不算数,这个”版本不同”的原因也被塞进了同一个字段。 半个月后,这个字段的含义已经没人说得清。 这是每个做过表格的人都见过的事。一列叫”状态”的东西,既表示审批结果,又表示风险等级,三个月后没人敢动它。 我们最后冻结下来的做法,是分层。第一层只回答一个问题:这条证据有没有真的在用这个定义。第二层单独记录原因和风险,比如”版本不同””跨条约””重复定义”。各司其职,互不借用。一句话总结:一个字段,只承担一种语义。 我不是哲学专业出身,但分析哲学教给我一个朴素的习惯:一个词的意思取决于它在那里干什么,所以先别急着下结论,先问这句话到底断言了什么。罗素式的做法就是把一句含糊的话拆开,逐项问清楚。 这个习惯后来也用在了别的地方。让几个模型各执一词、吵不出结果的时候,我做的只是一件事:找出争论里混在一起的两个问题,把它们拆开。很多争吵之所以没有结论,是因为双方吵的根本不是同一件事。 落到具体规则上,都很琐碎,但每一条都是冻结过的: 目录、页眉、脚注里的字面匹配,一律不算引用。单个的泛用词,比如”法案””公司”,没有明确的引用标记时,默认只算碰巧出现。要判断一个定义是否被”真正使用”,标准是没有它这句话读不懂,而不是话题恰好相近。 琐碎的好处是可复现。规则冻结之后,我能用同一批盲测题反复回归:哪条判断错了,我知道错在哪一层,而不是对着一个含混的字段猜。 如果你也在搭数据系统或者 AI 应用,我只想带走这一条:下次看到一个字段在同时表达两件事,别等到它出事,现在就拆开。