【www.shanpow.com--英文简历】
(1) [自动问答]Eric,基于多搜索引擎的自动问答机器人
Eric(https://github.com/SnakeHacker/QA-Snake)是一个采用Python编写的基于多搜索引擎和AIML技术的问答机器人,英文名的意思是多才多艺的(这也是我想赋予他的)。目前支持的功能有:闲聊,通用问答等。本文主要讲述我在写Eric的过程中对于问答系统的一些思考与想法,在文末会介绍Eric的使用和展示。
最初接到导师给的研究题目(自动问答)是在2017年4月上旬,然后就在看大牛们写论文(文末给地址),找相关资料以及研究市场上各种现有的商业自动问答产品(中国版的聊天机器人地图 Chatbots Landscape - 知乎专栏)中度过了一个月,这个过程中少不了狂和机器人聊天,测试不同产品对同类问题的反应。
现代的自动问答是将自然语言处理、统计机器学习深度学习相结合的产物。自从1950年代图灵测试而诞生至今,自动问答系统的发展已经有几十年的历史。但真正在产业界得到大家的广泛关注,则得益于2011年Siri和Watson的成功。这一方面归功于机器学习与自然语言处理技术的快速进步,另一方面得益于维基百科等大规模知识库以及海量网络信息,也就是大数据的飞速发展。
然而,现有的自动问答系统还不够完美,部分还是基于关键字模版匹配(包括一些商业产品),无法真正做到语义理解的程度。在通用领域实现一个不被大多数人喷的问答系统更是难上加难。事实上,无论是业界应用还是学术研究,问句的真实意图分析、问句与答案之间的匹配关系判别仍然是制约自动问答系统性能的两个关键难题。
几乎所有的问答系统的流程可以归结为以下几部分:
目前的研究工作大多集中于上图的两个虚线框中的内容,有用传统的规则搞的,也有用统计方法搞的,也有用深度学习方法搞的。中文的问答系统,还需要进行分词等工作。问答系统又不同于聊天机器人(小冰等),它是要解决实际问题的。比如客服问答机器人,阿里和京东的都做得非常不错,这不仅是基于他们强大的研发团队,足够的数据支撑模型训练也是重要的因素之一。
然而,我就想做个简单的问答机器人,然后顺利毕业啊。没有那么多公开的中文数据,怎么破?学术界的大多方法还不能很好地运用到工业界。看完论文和大多商业产品后,我开始思考Eric的定位,由于目前中文的问答训练集非常少,并且没有通用的问答训练集,这对于一开始想采用统计机器学习、深度学习训练一个问答模型的我造成了非常大的困难,这个问题足足困扰了我一周。在不断查找资料的过程中我发现了AIML,非常棒的人工智能标记语言。Alice是一个基于AIML实现关键词匹配和简单的推理的聊天机器人,它的语料库非常之大,不过是英语的((╯﹏╰))。
但不管怎么样这是一种实现问答机器人的方式,于是我先跑通了基于AIML的问答机器人。但是他仅仅是基于关键词匹配和简单的推理,缺少语义理解的能力,虽然它的可扩展性非常强,但是如果只做到这步的话,我想我是没办法顺利毕业了。
在研究AIML的过程中,我发现了互联网上有许多半结构化数据。比如维基百科,百度百科等。我尝试使用AIML把问句转换成一种结构化的Query,然后再百度百科中找到对应属性的属性值。比如“王思聪的父亲是谁?”这个问题,AIML根据规则会抽取出“王思聪”,“父亲”。抽取出来的实体和属性是很容易在百度百科中搜索到的。但问题又来了,如果问“王思聪的老爹是?”这类问题,Eric就找不到答案了。为了解决这个问题,我引入了哈工大的同义词词林进行关键词扩展。
做到这步,基本上百度百科上有的答案我都能搜出来了。这还远远不够,对于百度百科没有的答案怎么办呢?有些问题的答案其实已经在搜索引擎的前几十条答案中有,人很容易找出这些答案,但机器怎么找答案呢?
知识图谱是我原本想模仿百度百科做的一个本地知识库,后来发现,要构建这样的通用知识库太麻烦了,工作量非常之大。那么既然百度有了知识图谱,我为何不去尝试用它,而要重复造轮子呢?同样的道理,本地其实不需要太多的知识,所有的知识搜索引擎几乎都能找到,为何还要耗时费力的去构建本地的知识库呢,我的知识库就是整个互联网啊。百度没有搜到的东西,Bing有吧,Google有吧?
做到这步Eric的定位就比较清晰了,自动问答的问题也就变成了根据问句从互联网中抽取答案。我还想做闲聊,但是也没训练集。我尝试让两个产品的机器人互聊,借此收集语料,结果他们聊死了。最后在网上找到一个质量一般的聊天对话语料库,暂时凑合着先用。后面有时间再来聊优化闲聊的部分。
我采用BeautifulSoup对百度知道、百度百科、百度搜索、Bing搜索这四个信息源进行了规则解析。这里要提一下百度知道(包括类似的问答社区),在线搜索解析的成本真的比写爬虫把数据抓取并存储成结构化知识要省力得多,现成的知识库要灵活运用起来。
下面是Eric的问句效果,我拿杨尚川老师的“测试人机问答系统智能性的3760个问题”以及自己收集的问题进行了测试,结果还凑合。下面是结果,用Django写了个站进行展示:
Github上放出来的代码提供了支持命令行的问答模块以及基于Socket通信的server端,代码很乱,后续会做进一步改进。
总结:
目前的Eric还很稚嫩,还存在包括但不仅限以下问题:
1.多轮对话能力为零2.没有情感3.对于搜索引擎都找不到的答案,没有自己的“思维”抽象能力。4.问答的结果如何评估?目前都是人在看,对于中文的问答有没有比较好的评估标准和方式?5.语义相同问法不同的问句返回的答案会不一致,还是没做到语义理解。
后期我将做以下工作:
1.
将CNN问句分类用于Eric,为后续对不同类别的问句做针对性回答策略做铺垫。(目前遇到的问题还是训练集不够,模型用Tensorflow已经搭好了。)2.
尝试解决语义理解。3.
问句收集模块的设计与实现。4.
对于多个候选答案进行打分排序,提出一个打分策略并验证可行性。
希望各位大佬给些意见,求喷求指教。
作者:Snake
Blog:http://Snakehacker.me
2018年硕士毕业,找一份可以在今年9-10月份到岗的实习(工作地点:上海,岗位:自然语言处理、Java开发,其他岗位也可以尝试下)
参考:
看过的自动问答相关论文:链接:https://pan.baidu.com/s/1gfKf4Lt 密码:allj
杨尚川老师的3760个问题:测试人机问答系统智能性的3760个问题 - 杨尚川的个人页面 - 开源
(2) [自动问答]问答 | 自动泊车真的靠谱吗?
听说90%浙江车主都已经关注“大浙汽车”咯本期问答自动泊车真的靠谱吗?如今自动泊车系统俨然成为了新手和女司机们的“救星”。很多准车主一听到这四个字,问都不问就下单了。但是自动泊车又真的有想象中那样好用么?猴子
精华回答 不管新手还是老司机,停车入位(泊车)都是开车过程中相对费劲的一个环节,特别是遇到窄车位时。也正因如此,倒车雷达、倒车影像、360度全景影像等用于辅助泊车的配置逐渐成为汽车的标配。
最近两年,一种更智能、跟炫酷的配置开始出现在一些新车上,它能自己判断车位,自动停车入位,它就是自动泊车辅助系统。自动泊车功能,最早是在2005年由雪铁龙首创的。后来,丰田、奔驰、大众纷纷跟进,由此普及开来,发展至今已经到了一个比较稳定的阶段。
关于新事物,特别是这种高科技的新事物,人们难免有些怀疑。自动泊车究竟靠不靠谱呢?
一、自动泊车系统并不是如大家想象中的一样,完全自动的!它只是由电脑接管了方向盘,司机还是需要根据系统提示,对挡位,油门、刹车等进行控制的。举个例子,找到车位之后,系统会给驾驶员一个信号,告诉他应该停车的时间。然后,司机挂倒挡,松开刹车开始倒车。汽车电脑通过控制电子转向系统自动打方向盘,才实现把汽车完全倒入停车位。即使是稍微高级点的车,也就多了自动刹停功能,避免剐蹭,譬如奔驰C级。
二、自动泊车对环境要求非常高。当下的自动泊车系统,多数都是通过摄像头或环绕车身的雷达来检测障碍物,并且判断车位大小。因此基本是有固定障碍的横向或者纵向车位,才可以实现自动泊车。有些时候,树叶、废弃物或冰雪盖住路沿时,对车位的识别就会出现误差,甚至出现无法识别车位的问题。
三、自动泊车系统使用时的要求也很多。例如停车空位长度要求长于车身1.2米或以上、车辆与其他车位车辆间距需在0.5-1.5米左右、ESP不能关闭等。甚至挂倒挡后,在特定时间内(一般是3分钟)没有进行或完成倒车,系统就会自行取消泊车功能。
综合来说,无论是在对车位的识别能力,还是在控制逻辑的优化方面,都还有很大的提升空间。不过说到底,电子系统的本质,还是通过电脑,将日常人们驾驶技巧进行人为总结和固化。真要做到娴熟用车,除了电子系统的辅佐,人的技术仍然是最重要的核心环节。
网友回答加减乘除自动泊车系统是根据障碍物之间的空间来判断车位的,并不是根据地面上的车位线。因此,判断是不是车位,最终停的位置,都跟车位线没有关系。 爱西柚3年了…拉风无数次,从未出过错…又方便又快!苍狼老狗不靠谱,对环境要求太高了,根本不适合现在紧张的车位少走路多喝水两年多了没问题,需要看反光镜和控制刹车岁月无声提车已有一个多月了,总共就用过两次自动泊车,第一次很靠谱的进去了,心里大喜。今晚去媳妇家接老婆儿子,又体验了一把,倒挡,轻踩油门,方向盘很潇洒的转着,结果不幸发生了,听到“嘭”的一声,车貌似撞到啥了,下车检查。发现轮廓撞路沿石上去了,划花了。还好是轮廓,要是菊花那就真的掉得大咯。唉~高科技也不靠谱!西瓜我觉得就是个噱头,鸡肋,而且对停车位的要求严,还没自己停车快,不过对于新手是个很好的辅助这仅仅是一条分割线下期问题喝酒后多长时间可以开车?小伙伴们点击左下方"阅读原文"到下期问题社区各抒己见吧!
↓↓↓
(3) [自动问答]对于经常输入的词,怎样才能自动弹出相应内容(每日一问答)
问
在Word中经常要输入一些相同的文字信息,每次输入起来很是费劲,比如说直接输入“公司信息”,就可以出来一系列的公司名称,电话等,请问能有这样方便的功能吗?小白
Word联盟1、首先选中文字信息,按Ctrl和X组合键进行剪切,然后点击“文件”选项卡。
2、在此界面下,点击“选项”。
3、在弹出的“Word选项”对话框中的“校对”标签下,单击右边的“自动更正选项”按钮。
4、在“自动更正”对话框中,在替换栏中输入“公司信息”,在替换为栏下按ctrl和v键粘贴,然后单击“添加”按钮,最后点击“确定”。
5、点击“确定”按钮,关闭“Word选项”对话框。
6、当我们输入“公司信息”这四个字时,会发生什么呢?
现在刚刚剪切的文字就会自动的弹出来,是不是省去了不少时间呢?
有Office办公方面的问题,可以登陆www.kltask.com来提问,我们的专家团队会帮你解决你的问题!