关于“直播答题发钱”辅助工具搜索推荐算法的讨论

2018-01-18 09:13:07 +08:00
 anywalker707
最近直播火热,网上也看到很多通过“抓图 - 文字识别 - 百度搜题推荐”的程序介绍,自己也整理了一份
###########举例######################
问题:9.中国历史上,在位时间最长的皇帝是?
备选答案: ['康熙', '乾隆', '刘彻']

Answer: ['刘彻(9.091%)', '康熙(63.636%)', '乾隆(27.273%)']
#######################################
想问问大家,对搜索答案这块的算法,怎么设计,有什么高见?

先抛砖引玉,目前想到的算法:
1. 通过百度网页,请求问题,以答案选项作为关键字,数数判断(主流)
2. 对答案采用“中文分词”,针对答案可能是 xxx-yyy-zzz 无法全字匹配的情况
3. 对问题进行“中文分词“,逆向搜索,针对 “下面那些不是美国的品牌”这类问题

对于 1 已经实现,之前也有人发过存在“不”的情况处理;目前想通过 jieba 实现 2 和 3,但是总感觉这块的思考不是“很专业”,请大家吐槽
5287 次点击
所在节点    Python
41 条回复
yao978318542
2018-01-18 13:58:29 +08:00
@piaochen0 #14 现在最重要的原因是 答案不一定准确 这就郁闷了 还需要自己去识别 而且现在都变聪明了 大部分都是 “一下”,“下列” 这种需要分词然后结合问题关键字去搜索的 我觉得这才是重点
ss63551234ss
2018-01-18 14:22:48 +08:00
@sola97 西瓜问题接口如何抓取。
sola97
2018-01-18 14:47:25 +08:00
@ss63551234ss #22 https://api-spe-ttl.ixigua.com/cdn/h/1/heartbeat/13241407?_rticket=1516257924160
heartbeat(场次)和_rticket(时间)是变量,返回 protobuf 流,用 protoc --decode_raw 可解
zts1993
2018-01-18 15:02:33 +08:00
@Gord3n #16 我觉得 UC 就是人工。
piaochen0
2018-01-18 18:30:12 +08:00
@sola97 玩了最新的一场,我有点感觉简单搜索是 OCR,这次有两题,选项没显示出来....
vincentjie
2018-01-18 18:53:07 +08:00
@piaochen0 OCR 太慢,还有识别错误的风险。Android 可以通过辅助应用相关的接口来获取题目,Xpose 应该也能实现类似效果。iOS 不知道有没有开放相关接口。
sola97
2018-01-18 19:55:04 +08:00
@Gord3n #16 百度简单搜索应该是人工,AI 会第一时间给出答案,然后过了四五秒会有人工纠正
anywalker707
2018-01-18 21:37:56 +08:00
@sola97 牛,不过不怎么会分析接口
bayker
2018-01-19 08:49:04 +08:00
问:“ xxx ”这句歌词的原唱没有唱下面的哪首歌?
A:xxx
B:xxx
c:xxx

这种要拐几个弯的问题,还不如自己答。
pheyer
2018-01-19 09:09:17 +08:00
@piaochen0 有合作是不可能的
pheyer
2018-01-19 10:39:30 +08:00
@vincentjie iOS 的话也可以入侵 app 内部 hook 相关函数得到的,非越狱就可以实现
RoyLaw
2018-01-19 14:16:40 +08:00
@sola97 西瓜不是用 spe-frontier-b.snssdk.com 的 WS 接口取题目了么?我看 WS 里面出题的时候会又加扰的题目出现
sola97
2018-01-19 14:57:36 +08:00
@RoyLaw #33 应该不止一个接口,我这个目前能用,调用外部 protoc 解出完整数据包,整个流程比手机上慢 1 秒
RoyLaw
2018-01-19 15:14:46 +08:00
@sola97 好哒~我也来试试看~~
sola97
2018-01-19 18:16:49 +08:00
@RoyLaw #35 我现在试了,这个接口延迟很高
sola97
2018-01-19 18:21:06 +08:00
@sola97 #36 答题都结束了才拿到题目
v1nce0t
2018-01-21 15:23:58 +08:00
@sola97 您好,西瓜我用 jython 对下载下来的 protobuf 可以解包,但 protoc --decode_raw 如何做到实时自动解包出来转换为字符呢 ,能分享下代码嘛
sola97
2018-01-21 15:27:08 +08:00
@v1nce0t #38
def decode_protobuf(content):
p = subprocess.Popen('protoc --decode_raw', stdin=subprocess.PIPE,stdout=subprocess.PIPE)
text=p.communicate(content)[0]
return eval("b'''%s'''"%text.decode('utf8')).decode('utf8')
forestyuan
2018-01-21 17:15:59 +08:00
大提琴那题我也碰到了,正确答案是 4 根,平台没出错啊
我用了两个手机答题,一个猜 5 根,一个猜 6 根,结果都凉了,所以印象特别深
accacc
2018-01-23 14:12:33 +08:00
@mmrx 就中文来说 还是百度靠谱 就知识点 各大搜索公司都有知识图谱

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/423795

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX