这第一个麻匪就是“文字识别准确率”。
文字识别,准确名称是 OCR(光学字符识别 Optical Character Recognition)。它像一个不知疲倦的“誊写师傅”——你把一张图片给文字识别系统,它就能帮你把上面的字给识别、抄写出来。
你有没有给支付宝绑过银行卡?扫一下卡面就能识别出上面的卡号,这就是文字识别系统干的。
大概就像这样。
但是,这系统也不是神仙,它有一定出错的概率。越是质量差的照片,从中提取文字就越可能出错。(这并不怪系统,你平时看一些学习资料时,陈年画质和高清无码,你从中学到的知识量也是不同的嘛。)
问题是,这套文字识别系统是阿里巴巴技术中台团队做的。王杰雄为了赶时间,只能拿现成的用。
虽然中台团队老师傅的技术没的说,但这个系统是针对通用场景的文字识别,没办法针对搜题场景做优化。(毕竟这个系统服务整个阿里巴巴,没办法为了夸克一个八字没一撇儿的功能做定制开发。)
所以在文字识别率上,王杰雄就像开特斯拉撞蚊子——有劲儿使不上。
好吧,这第一个麻匪消灭不掉,只能先对付第二个。
这第二个麻匪就是“带噪搜索”。
由于 OCR 识别存在一定误差,所以会给搜索算法带来巨大的困难。
举个栗子:
比如一道应用题,原题写的是“小明拿着纸币买裙子”,也许被系统识别成了“小朋拿着纸巾卖裙子”,这种情况下继续搜索,就叫搜索请求中带着“噪声”。
更大的噪声来自于用户拍题的时候——有可能手抖,题目很模糊;有可能框选的范围太大,除了要搜的题目,前后还各带了半道雨女无瓜的题目。
例如拍这第5题,在拍题的时候会出现混入手写字、框选到其他题目、照片不清晰等等问题。
很多时候,带了噪声看上去就像完全换了一道题,系统自然就没办法把这道题和题库中的题目匹配准确。
这时,王杰雄他们就要尽力让系统学会“带噪搜索”。
简单来说,就是香农的信息论原理。信号有噪声的情况下,就要增加信息的冗余。
王杰雄说。
举个例子吧:比如你跟朋友打电话约在地铁站B口见面,电话里对方听不清你说的到底是B还是D,你也许会说:“我们在B口见面,AB的B,二B,不是四D。”
你看,你很可能不认识香农,但你自动采用了信息冗余策略,用了四种方式表达“B”,对方一般就不会理解错误了。
王杰雄他们正是用了同理的操作,每一道题都用不同的颗粒度切分,换几种维度表达。这种表达虽然啰里八嗦,但是却大大提高了匹配的精准度,算是曲线救国了。
不过这还不算完,更多的问题仍然摆在面前。
这第三个麻匪就是“公式归一化”。
上过中学的浅友都知道,各种题目到了中学就不再“单纯”了,比如这货:Cu₂(OH)₂CO₃,碱式碳酸铜。再比如下面这道题:
你发现没,题目里有各种角标、特殊符号,是你日常打字根本不知道怎么打出来的。
你都不知道怎么打,程序当然也不知道怎么打。。。不过,幸好科学家和代码大神们已经总结好了一些规则,用一串直线排列的代码就能表述出这些乱七八糟的公式。
可问题来了,对于同一种公式的表述规则有很多种,并不统一——就像同一部片儿,有 avi,有 rmvb,有 mp4。。。两个人见面,一个人说“Hello”,另一个人说“弄啥嘞”,那不可能匹配成功。
于是团队必须把题库里的各种公式的每一种表述都找出来,然后转换成统一格式,这就是公式归一化。