返回第17章 乱码之夜(1 / 2)太空争霸之我来自未来首页

7月的第一个星期,星辰搜索的有效文档突然少了四分之一。

发现问题时正是下午两点。半地下室被太阳晒过的人行道捂得发闷,风扇转到最大档,只把打印纸吹得到处跑。楼上五金店老板下来问库存程序怎么少了三个货名,随手在搜索框里输入“密封圈”,屏幕却吐出一串方块。

“你这公司连自己楼上的货都不认识了?”

马飞没有解释,先关掉当天的索引更新。新数据继续写进去,只会让能查的内容更少。

文档仍在硬盘里,索引也没有损坏。可用户输入中文后,大量页面再也匹配不到。日志显示它们的词项变成了一串看似随机的汉字和符号。

马飞先怀疑新加入的前缀压缩。

苏雨桐却把两份原始页面并排打印出来:“不是压缩。它们都声明GB2312,其中一份实际是大五码,另一份中间夹了英文软件转出来的扩展字符。”

“按声明解码当然会错。”

“不能只信声明。”

当时的中文网络没有统一整洁的编码环境。简体、繁体、不同平台扩展字符甚至错误转换后的文本混在一起。浏览器尚且经常需要用户手动选择编码,抓取程序更无法指望每个站点都写对说明。

苏雨桐提出用字节分布判断编码:统计高位字节组合落入各字符集合法区间的比例,再结合常见中文词给出置信度。置信度不足时不强行转换,而是标记为待判。

第一版规则在普通文章上有效,遇到代码和英文资料便频繁误判。

两人把一百多张误判页面铺在地上,按来源和字节特征分堆。折叠床无法展开,晚饭只能蹲在门口吃。苏雨桐的凉面被风吹进一粒墙灰,她挑出来,继续给一份港台课程表画圈;马飞喝掉半缸温水,衬衫后背仍然湿透。

马飞建议加入页面语言比例。

第二版改善了英文页面,却把含大量公式的中文论文目录判成未知。

两人一直改到凌晨,基准集得分从七十二升到八十六,又因一次“优化”跌回七十九。

“恢复上一版。”马飞说。

苏雨桐没有动:“上一版在繁体页面上错得更多。总分高,是因为测试集里简体页面多。”

她把一百组基准查询按来源拆开。高校、研究机构、个人主页、港台站点分别评分后,问题暴露出来:系统所谓的整体进步,是牺牲小类样本换来的。

“不能只看一个平均数。”她说,“否则数据少的人永远被平均掉。”

两人重新规定验收标准:总分提升之外,任何来源类别不得下降超过既定阈值;未知编码可以暂不入索引,但必须保留原文和失败原因。

新标准落下以后,那版看似八十六分的规则当场降到六十八。马飞把墙上原先写好的“恢复完成”四个字擦掉,改成“简体可用,繁体未过线”。第二天陈维明来催产品资料库,他看见那行字,没有追问为何分数变低,只说客户交付的页面也有两种编码,愿意提供一百份脱敏样本。

样本没有白拿。星辰出具测试用途和删除日期,陈维明的技术员签字确认。新数据补上了基准集最薄的一块,也让那位技术员第一次看见自家页面在不同机器上为什么会变成乱码。

凌晨三点,楼上的水管轰然响起。

半地下室闷热,电风扇吹出来的风也是热的。苏雨桐趴在桌边打了十分钟盹,醒来后发现马飞仍在逐条核对误判。

“你可以明天再做。”

“早上要给客户改数据库。”

“那就后天。”

“抓取队列每天都在增加。”

苏雨桐伸手关掉显示器。

“我们协议里写了,连续通宵不能成为常态。”

“今天是异常。”