构造反例样本的目标不是证明替换方案正确,而是主动找出它会误伤哪些页面。可行做法是:从待替换文本所在的页面中,按“替换词承担不同含义”的维度分层,每层抽少量页面,人工判断替换后语义是否成立;把判断结果转成保留、改写或退出三类,再决定是否扩大替换范围。如果某一层出现反例,说明该层需要单独规则,而不是整体回滚。
反例样本是那些替换后会改变原意、削弱准确性或破坏上下文的页面。构造反例样本前,先写下替换词在现有页面中承担的角色。常见角色有三类:
如果待替换文本只属于同义替换,反例样本可以少;只要出现限定词或歧义词,就必须按含义分层抽样,否则抽样结果无法代表整体。
按流量分层只能告诉你哪些页面重要,不能告诉你哪些页面会出错。构造反例样本时,更有效的分层维度是“替换词的含义是否一致”。假设某站要把页面中的“入门”统一替换为“基础”,可以这样分层:
每层抽三到五个页面即可,重点不是数量,而是每层都要有代表。抽完后逐页人工判断:替换后的句子是否仍然准确?如果答案是否定的,这个页面就是反例。把反例所在的层标记出来,后续规则只针对该层调整。
发现反例后,不要立刻放弃整批替换。三种处理各有适用条件:
这三种处理可以并存。关键是每一层只能选一种,不能在同一层里一部分保留、一部分改写,否则后续核对时无法判断差异来自替换还是来自规则本身。
多个角色对同一事实有不同理解时,争论“该不该替换”通常没有结果。更可行的动作是把分歧写成一张核对表:每一行是一个页面或一个层,列出旧文本、拟替换文本、判断依据、处理结论。判断依据要写成可复核的句子,而不是“感觉不对”。例如:
假设某页面原文是“适合入门用户的配置”,拟替换为“适合基础用户的配置”。判断依据可以写成:该页面下方参数表把这一档称为“基础版”,因此替换后与参数表一致。这个依据可以被另一个人重新打开页面核对,分歧就从观点变成了事实核对。
核对完成后,先在一个层内执行替换,再检查该层页面的表述是否与站内其他位置一致。如果一致,进入下一层;如果不一致,回到判断依据那一列,确认是依据写错了,还是该层需要改写规则。这个动作的结果直接决定下一步是扩大范围还是收窄范围,而不是靠投票决定。
替换上线后,如果某些页面的表现发生变化,不能直接归因于替换。季节、搜索需求变化、数据采集差异都可能造成同一现象。更稳妥的做法是:在替换前记录一份基线,替换后按同一口径再看一次,并保留未替换的层作为对照。如果只有替换层变化、对照层稳定,替换与变化之间的关联才更值得进一步核查;如果两层同时变化,优先考虑外部因素。基线记录和对照层的存在,决定了你能否在下一次批量替换时复用同一套判断方法。