关于“直播答题发钱”辅助工具搜索推荐算法的讨论 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
anywalker707
V2EX    Python

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

  •  
  •   anywalker707 2018-01-18 09:13:07 +08:00 5932 次点击
    这是一个创建于 2836 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近直播火热,网上也看到很多通过“抓图 - 文字识别 - 百度搜题推荐”的程序介绍,自己也整理了一份
    ###########举例######################
    问题:9.中国历史上,在位时间最长的皇帝是?
    备选答案: ['康熙', '乾隆', '刘彻']

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

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

    对于 1 已经实现,之前也有人发过存在“不”的情况处理;目前想通过 jieba 实现 2 和 3,但是总感觉这块的思考不是“很专业”,请大家吐槽
    41 条回复    2018-01-23 14:13:26 +08:00
    wisonic
        1
    wisonic  
       2018-01-18 09:17:34 +08:00 via iPhone   1
    hi
    zarte
        2
    zarte  
       2018-01-18 09:18:41 +08:00
    xxx 是?直接把题目拿去搜。
    其他带上答案搜。
    binjoo
        3
    binjoo  
       2018-01-18 09:26:32 +08:00
    昨天有一题,大提琴有几根弦。

    简单搜索(百度):我在百度页面中搜索,第一个结果就是百度知道的结果,4 根。但是给出的答案是 6 根。
    搜狗搜索(搜狗):我在搜狗页面中搜索,第一个结果就是搜狗立知的结果,4 根。但是给出的答案也是 6 根。

    不明白他们是怎么给出的答案。。
    victor97
        4
    victor97  
       2018-01-18 09:30:15 +08:00 via Android   1
    把问题带上选项搜,比较搜索结果数量
    mmrx
        5
    mmrx  
       2018-01-18 09:31:56 +08:00
    感觉第一种完全是看搜索引擎靠不靠普...目前来看,百度还是算了吧,换个 google 估计是不是好点?
    CaptainWho
        6
    CaptainWho  
       2018-01-18 10:17:58 +08:00 via iPhone
    @binjoo 我就在这题凉凉了
    logOo
        7
    logOo  
       2018-01-18 10:25:50 +08:00
    @CaptainWho 去年有部超火的日剧叫四重奏,就是四个四流音乐家追求音乐梦想的故事。我也拿这部剧当神剧,可真没注意过大提琴几根弦。
    yao978318542
        8
    yao978318542  
       2018-01-18 10:35:04 +08:00
    已经开始耍猴了 放弃吧 都是 5 圆场 adb 截图加分析加百度 我一共用了 5 秒 主持人念题然后显示出完整题目 2 秒 留给我的只有 3 秒 然后我还需要判断 答案的准确性,顺便浏览一下百度出的内容 再然后按下选择按钮 忙碌了半个小时最后得到 5 块钱 感觉好累啊
    cossak1991
        9
    cossak1991  
       2018-01-18 10:50:50 +08:00
    估计就是买了一部分题库,不然解释不了为什么百度、搜狗连大提琴有几根弦这种没有悬念的问题都能答错。
    vipper
        10
    vipper  
       2018-01-18 11:03:52 +08:00
    上深度学习系统吧
    vincentjie
        12
    vincentjie  
       2018-01-18 12:43:00 +08:00
    @binjoo
    好像没有听说过 6 根弦的大提琴啊,是我太孤陋寡闻了吗。
    azh7138m
        13
    azh7138m  
       2018-01-18 13:21:03 +08:00
    @vincentjie 看维基百科的话是巴洛克大提琴 4 根,还有一种 7 根的,6 根的是啥就不知道了
    piaochen0
        14
    piaochen0  
       2018-01-18 13:28:00 +08:00
    @yao978318542 有没有这种可能性。我怀疑是简单搜索,搜狗跟这些平台有合作....直接把题库都给他们了.....我写的跟你差不多,截图,ocr 分析,到网上搜结果,都要 5,6 秒左右才能出答案。而且 ocr 还不一定全能识别全。他们这个速度有点快了...
    zsdroid
        15
    zsdroid  
       2018-01-18 13:35:21 +08:00
    @azh7138m 阿贝鸠尼琴
    Gord3n
        16
    Gord3n  
       2018-01-18 13:38:36 +08:00 via Android
    其实是人工答的,做一个前端页面,然后把答案发给用户
    yuriko
        17
    yuriko  
       2018-01-18 13:43:59 +08:00
    @Gord3n 我也觉得是人工答题 23333333
    TimePPT
        18
    TimePPT  
    PRO
       2018-01-18 13:49:49 +08:00
    @piaochen0 并没有可能。快是因为搜狗用的是自家搜索引擎技术,基于深度学习的开放域问答系统,并且针对答题产品做了专项优化,并不是单纯从排序好的网页里简单 pattern 匹配。百度也一样。
    这也是为啥答的快,但不准。
    sola97
        19
    sola97  
       2018-01-18 13:55:14 +08:00 via Android
    @piaochen0 目前目前冲顶和西瓜的题目接口都是可以抓包调用的
    littleW2B
        20
    littleW2B  
       2018-01-18 13:57:20 +08:00
    @zsdroid 抓包直接拿到题目字符串,省去 ocr 时间
    yao978318542
        21
    yao978318542  
       2018-01-18 13:58:29 +08:00
    @piaochen0 #14 现在最重要的原因是 答案不一定准确 这就郁闷了 还需要自己去识别 而且现在都变聪明了 大部分都是 “一下”,“下列” 这种需要分词然后结合问题关键字去搜索的 我觉得这才是重点
    ss63551234ss
        22
    ss63551234ss  
       2018-01-18 14:22:48 +08:00
    @sola97 西瓜问题接口如何抓取。
    sola97
        23
    sola97  
       2018-01-18 14:47:25 +08:00   2
    @ss63551234ss #22 https://api-spe-ttl.ixigua.com/cdn/h/1/heartbeat/13241407?_rticket=1516257924160
    heartbeat(场次)和_rticket(时间)是变量,返回 protobuf 流,用 protoc --decode_raw 可解
    zts1993
        24
    zts1993  
       2018-01-18 15:02:33 +08:00
    @Gord3n #16 我觉得 UC 就是人工。
    piaochen0
        25
    piaochen0  
       2018-01-18 18:30:12 +08:00
    @sola97 玩了最新的一场,我有点感觉简单搜索是 OCR,这次有两题,选项没显示出来....
    vincentjie
        26
    vincentjie  
       2018-01-18 18:53:07 +08:00
    @piaochen0 OCR 太慢,还有识别错误的风险。Android 可以通过辅助应用相关的接口来获取题目,Xpose 应该也能实现类似效果。iOS 不知道有没有开放相关接口。
    sola97
        27
    sola97  
       2018-01-18 19:55:04 +08:00
    @Gord3n #16 百度简单搜索应该是人工,AI 会第一时间给出答案,然后过了四五秒会有人工纠正
    anywalker707
        28
    anywalker707  
    OP
       2018-01-18 21:37:56 +08:00
    @sola97 牛,不过不怎么会分析接口
    bayker
        29
    bayker  
       2018-01-19 08:49:04 +08:00
    问:“ xxx ”这句歌词的原唱没有唱下面的哪首歌?
    A:xxx
    B:xxx
    c:xxx

    这种要拐几个弯的问题,还不如自己答。
    pheyer
        30
    pheyer  
       2018-01-19 09:09:17 +08:00
    @piaochen0 有合作是不可能的
    pheyer
        31
    pheyer  
       2018-01-19 10:39:30 +08:00
    @vincentjie iOS 的话也可以入侵 app 内部 hook 相关函数得到的,非越狱就可以实现
    RoyLaw
        32
    RoyLaw  
       2018-01-19 14:16:40 +08:00
    @sola97 西瓜不是用 spe-frontier-b.snssdk.com 的 WS 接口取题目了么?我看 WS 里面出题的时候会又加扰的题目出现
    sola97
        33
    sola97  
       2018-01-19 14:57:36 +08:00
    @RoyLaw #33 应该不止一个接口,我这个目前能用,调用外部 protoc 解出完整数据包,整个流程比手机上慢 1 秒
    RoyLaw
        34
    RoyLaw  
       2018-01-19 15:14:46 +08:00
    @sola97 好哒~我也来试试看~~
    sola97
        35
    sola97  
       2018-01-19 18:16:49 +08:00
    @RoyLaw #35 我现在试了,这个接口延迟很高
    sola97
        36
    sola97  
       2018-01-19 18:21:06 +08:00
    @sola97 #36 答题都结束了才拿到题目
    v1nce0t
        37
    v1nce0t  
       2018-01-21 15:23:58 +08:00
    @sola97 您好,西瓜我用 jython 对下载下来的 protobuf 可以解包,但 protoc --decode_raw 如何做到实时自动解包出来转换为字符呢 ,能分享下代码嘛
    sola97
        38
    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
        39
    forestyuan  
       2018-01-21 17:15:59 +08:00
    大提琴那题我也碰到了,正确答案是 4 根,平台没出错啊
    我用了两个手机答题,一个猜 5 根,一个猜 6 根,结果都凉了,所以印象特别深
    accacc
        40
    accacc  
       2018-01-23 14:12:33 +08:00
    @mmrx 就中文来说 还是百度靠谱 就知识点 各大搜索公司都有知识图谱
    accacc
        41
    accacc  
       2018-01-23 14:13:26 +08:00
    @vipper 深度学习如何快速出答案?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4794 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:41 PVG 13:41 LAX 22:41 JFK 01:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86