最近,「答题」代替「共享」成为了互联网上的新一轮热词。从王思聪「撒币」开始,各路互联网大佬纷纷涌入,直播 APP 们利用这种真金白银的吸引流量方式提升了自己的热度,还从各种广告商手里「变现」了一波。相信各位美友就算没有玩过也应该听到过「芝士超人」,「冲顶大会」,「百万英雄」等等答题活动,不过这篇文章讨论的不是它们,而是利用信息获取优势参合进这波狂欢中的各种答题助手。
▎花样繁多的答题助手
Ps:本文提到的所有答题助手都不会提供下载,有兴趣的美友可以自行寻找相应的 App 。
说到答题助手首先要提的当然是搜狗推出的「汪仔」了,它号称是「不需要问答数据库,通过机器搜索语义以及搜索并给出唯一答案。」。在实际使用中,虽然「汪仔」的准确率在各种答题助手中算是是很不错的,但仍然达不到 100% 的正确率,对于一些反问和模糊语义题它就爱莫能助了。
值得一说的是,搜狗在最新的搜狗输入法里面直接内置了「汪仔答题助手」,支持百万英雄答题。看样子搜狗是要死磕答题助手这块了,甚至不惜让输入法变得更加臃肿。
然后是比较早出现的「小不点」,特点是通过识别主持人的语音获取题目,支持三大答题 App。不过先不说它的正确率,它的语音识别可以用一句话来评价:「题目稍微长一点,等主持人读完题目,怕是早就凉了」。
接着 UC 也加入了助手的行列,弄了一个「UC 答题助手」,不需要 App 只需要打开助手网页即可,支持百万英雄。看情况应该是答题助手那边人工/机器识别题目之后把答案推送到网页上,好处是不需要用户本地识别,题目识别率应该会高一点。
最后再说说百度的「简单搜索」,这个 App 并不是为了答题而诞生的,它原本只是个简单的搜索工具(22M 大的「简单」搜索。。。),不过因为实时语音识别搜索而被大家「开发」出了答题的用途,百度随后也添加了 Dan 哥的答题直播间,支持三大答题 App 和其他一些平台,识别率也是助手中的第一梯队(毕竟有百度搜索加持)。
▎答题助手原理解释
无论是上面提到的比较多人用的答题助手还是最近喷涌而出的各种五花八门的助手,它们的原理都是相似的,接下来我就给大家简单讲讲它们的原理。最后再总结一下这些答题助手的优缺点。
想要实现自动答题,第一步当然就是要获取题目,结合答题 App 的实际情况大概有下面几种方法:
语音识别主持人/用户读出的题目
截图之后进行 OCR(提取图片文字)
利用 Android 的无障碍服务直接获取文本
后台抓流量数据包提取文本
其中大部分答题助手采用的是语音识别的方式,所以这些助手会提醒你使用的时候音量不要开得太大。缺点之前也说了,要是题目太长等到读完基本也就凉了;截图 OCR 的答题助手也不少,像是「汪仔」就是这样,其他助手用的一般就是百度提供的 OCR API;无障碍服务获取文本比以上地方法都要快,不过只有 Android 上具有可行性;以上提到的方法都符合各种答题 App 的规则,不属于人们常说的「外挂」,而抓取数据包提取文本这个就明显不符合游戏规则啦,所以一般答题助手都不会用这个方法。还有一些乱七八糟的答题助手直接就是抓其他助手的数据,像是「简单搜索」的数据就被抓得比较多,这种「歪门邪道」比抓包还要无耻。
获取到题目后,有这几种获取答案的方法:
直接把题目扔进百度或者其他搜索引擎,获取包括每条结果快照的结果页文本,然后在里面寻找每一个选项出现的次数,次数多的那个就是推荐选项。
把题目 + 选项扔进百度或者其他搜索引擎,看每一个选项的搜索结果数目,数目多的那个即为推荐选项。
从网上下载尽量多的题库,然后利用题目关键词在题库里面寻找正确选项。
对题目进行 NLP(自然语言处理),提取出关键词后再进行查询。
大公司的答题助手可能还有诸如机器学习等等优化步骤。
答题助手的原理基本上跳不出上面几种,先说一下,像是搜狗这种手握搜索引擎的大公司都没办法把搜索结果优化到 100% 正确,当然上面几种方法的正确率更低。
第一种和第二种方法乍看之下好像都差不多,不过第一种方法对于题目和正确选项关联密切的题效果比较好(比如:中国的首都和北京),而且只需要联网搜索一次,可以节省不少时间;第二种方法则要对每个选项搜索一次,时间上可能会多一点,不过对于题目和正确选项关联不那么密切的题目会比较好(比如:下列那句话鲁迅没说过? 与我去对面买几个橘子)。
第三种方法适用于像「头脑王者」这种可以不断尝试的答题平台,通过伪造请求和对战不断答题可以一步步获取题库,最后达到复制整个题库的目的。至于直播答题的答题平台,利用网上的题库有时会有奇效。
最后再说说优化,各个答题平台对于答题助手的泛滥也不是无动于衷,像是「反问题」和「个性题」就是针对答题助手的反击措施。对于这种题目,答题助手们就要用上更高级的 NLP 了。
就以「下列那句话鲁迅没说过?」为例,无论你是用第一还是第二种方法,最后得出的推荐选项肯定是错误的(鲁迅+他说过的话搜索结果数量肯定高于没说过的话),而用 NLP 可以从题目中提取出「没」或者类似关键字,从而让程序知道需要把结果反过来对比。更加复杂的 NLP 还可以用于破解「个性题」,不过这种难度可以将非主流的答题助手都拦在门外,只有大公司们可以让攻城狮们加班顺手优化一下(笑)。
▎属于自己的答题助手
说了这么多原理,大家可能还是不懂哪个答题助手比较好,我的意见是 —— 哪个都不好。毕竟答题时间只有那几秒,各种延迟多可以让你泡汤一张复活卡,如果你实在要用答题助手,最好的方式还是自己做一个。
我推荐的方法:先收集足够大的题库,然后每次获取到题目后先在题库里面查找(本地数据查找时间可以忽略不计),如果没有找到再利用本地分词检测是否有「没」或者类似关键字,这一步还可以自己根据常玩的平台添加更多的优化检测。得到关键词后先用方法二搜索,返回搜索结果。再后台利用方法一搜索校对,如果方法一与方法二得出的推荐选项不相同,并且答题时间还没有结束,再列出来让你自己选择。
Github 上已经有许多基本工具(大部分是 Python 写的。。。果然是 Python 大法好),可以省去很多制作时间,有能力又有需求的美友可以尝试一下,Github 搜索「答题」即可。至于各位不会编程的,吃瓜美友,只能根据自己的需求去寻找比较好用的答题助手咯。
最后祝大家答题愉快!盆满钵满!