Eric,基于多搜索引擎的自动问答机器人

简介:

ERIC(https://github.com/SnakeHacker/QA-Snake)是一个采用Python编写的基于多搜索引擎和AIML技术的问答机器人,英文名的意思是多才多艺的(这也是我想赋予他的)。目前支持的功能有:闲聊,通用问答等。本文主要讲述我在写Eric的过程中对于问答系统的一些思考与想法,在文末会介绍Eric的使用和展示。

最初接到导师给的研究题目(自动问答)是在2017年4月上旬,然后就在看大牛们写论文(文末给地址),找相关资料以及研究市场上各种现有的商业自动问答产品(中国版的聊天机器人地图 Chatbots Landscape - 知乎专栏)中度过了一个月,这个过程中少不了狂和机器人聊天,测试不同产品对同类问题的反应。

现代的自动问答是将自然语言处理、统计机器学习深度学习相结合的产物。自从1950年代图灵测试而诞生至今,自动问答系统的发展已经有几十年的历 史。但真正在产业界得到大家的广泛关注,则得益于2011年Siri和Watson的成功。这一方面归功于机器学习与自然语言处理技术的快速进步,另一方 面得益于维基百科等大规模知识库以及海量网络信息,也就是大数据的飞速发展。

然而,现有的自动问答系统还不够完美,部分还是基于关键字模版匹配(包括一些商业产品),无法真正做到语义理解的程度。在通用领域实现一个不被大多数人喷的问答系统更是难上加难。事实上,无论是业界应用还是学术研究,问句的真实意图分析、问句与答案之间的匹配关系判别仍然是制约自动问答系统性能的两个关键难题。

几乎所有的问答系统的流程可以归结为以下几部分:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

目前的研究工作大多集中于上图的两个虚线框中的内容,有用传统的规则搞的,也有用统计方法搞的,也有用深度学习方法搞的。中文的问答系统,还需要进行分词 等工作。问答系统又不同于聊天机器人(小冰等),它是要解决实际问题的。比如客服问答机器人,阿里和京东的都做得非常不错,这不仅是基于他们强大的研发团 队,足够的数据支撑模型训练也是重要的因素之一。

然而,我就想做个简单的问答机器人,然后顺利毕业啊。没有那么多公开的中文数据,怎么破?学术界的大多方法还不能很好地运用到工业界。看完论文和大 多商业产品后,我开始思考Eric的定位,由于目前中文的问答训练集非常少,并且没有通用的问答训练集,这对于一开始想采用统计机器学习、深度学习训练一 个问答模型的我造成了非常大的困难,这个问题足足困扰了我一周。在不断查找资料的过程中我发现了AIML,非常棒的人工智能标记语言。Alice是一个基于AIML实现关键词匹配和简单的推理的聊天机器人,它的语料库非常之大,不过是英语的((╯﹏╰))。

但不管怎么样这是一种实现问答机器人的方式,于是我先跑通了基于AIML的问答机器人。但是他仅仅是基于关键词匹配和简单的推理,缺少语义理解的能力,虽然它的可扩展性非常强,但是如果只做到这步的话,我想我是没办法顺利毕业了。

在研究AIML的过程中,我发现了互联网上有许多半结构化数据。比如维基百科,百度百科等。我尝试使用AIML把问句转换成一种结构化的 Query,然后再百度百科中找到对应属性的属性值。比如“王思聪的父亲是谁?”这个问题,AIML根据规则会抽取出“王思聪”,“父亲”。抽取出来的实 体和属性是很容易在百度百科中搜索到的。但问题又来了,如果问“王思聪的老爹是?”这类问题,Eric就找不到答案了。为了解决这个问题,我引入了哈工大的同义词词林进行关键词扩展。

做到这步,基本上百度百科上有的答案我都能搜出来了。这还远远不够,对于百度百科没有的答案怎么办呢?有些问题的答案其实已经在搜索引擎的前几十条答案中有,人很容易找出这些答案,但机器怎么找答案呢?

知识图谱是我原本想模仿百度百科做的一个本地知识库,后来发现,要构建这样的通用知识库太麻烦了,工作量非常之大。那么既然百度有了知识图谱,我为 何不去尝试用它,而要重复造轮子呢?同样的道理,本地其实不需要太多的知识,所有的知识搜索引擎几乎都能找到,为何还要耗时费力的去构建本地的知识库呢, 我的知识库就是整个互联网啊。百度没有搜到的东西,Bing有吧,Google有吧?

做到这步Eric的定位就比较清晰了,自动问答的问题也就变成了根据问句从互联网中抽取答案。我还想做闲聊,但是也没训练集。我尝试让两个产品的机器人互聊,借此收集语料,结果他们聊死了。最后在网上找到一个质量一般的聊天对话语料库,暂时凑合着先用。后面有时间再来聊优化闲聊的部分。

我采用BeautifulSoup对百度知道、百度百科、百度搜索、Bing搜索这四个信息源进行了规则解析。这里要提一下百度知道(包括类似的问答社区),在线搜索解析的成本真的比写爬虫把数据抓取并存储成结构化知识要省力得多,现成的知识库要灵活运用起来。

下面是Eric的问句效果,我拿杨尚川老师的“测试人机问答系统智能性的3760个问题”以及自己收集的问题进行了测试,结果还凑合。下面是结果,用Django写了个站进行展示:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

Github上放出来的代码提供了支持命令行的问答模块以及基于Socket通信的server端,代码很乱,后续会做进一步改进。

总结:

目前的Eric还很稚嫩,还存在包括但不仅限以下问题:

1.多轮对话能力为零
2.没有情感
3.对于搜索引擎都找不到的答案,没有自己的“思维”抽象能力。
4.问答的结果如何评估?目前都是人在看,对于中文的问答有没有比较好的评估标准和方式?
5.语义相同问法不同的问句返回的答案会不一致,还是没做到语义理解。
后期我将做以下工作:

1. 将CNN问句分类用于Eric,为后续对不同类别的问句做针对性回答策略做铺垫。(目前遇到的问题还是训练集不够,模型用Tensorflow已经搭好了。)
2. 尝试解决语义理解。
3. 问句收集模块的设计与实现。
4. 对于多个候选答案进行打分排序,提出一个打分策略并验证可行性。



原文发布时间为:2017-06-07
本文作者:Snake
本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区”微信公众号
相关文章
|
4月前
|
搜索推荐 API 开发工具
技术写作与内容研究:主题得分、关键词搜索量、社区和论坛策略
内容研究涉及对特定主题进行系统的调查,以收集可靠和相关的信息。这个过程对于技术作者来说至关重要,因为它有助于生成有价值的、准确的、信息丰富的和引人入胜的内容。它超越了基本的互联网搜索,包括阅读技术文档、采访专家、进行调查和分析数据。内容研究应以战略方式进行,考虑信息的用途、目标受众和要传达的关键信息。一个执行良好的内容研究过程可以帮助技术作者生成既清晰又简洁的高质量内容。
37 2
|
9月前
|
数据采集 安全 搜索推荐
怎么使用谷歌趋势去了解关键词?
答案是:可通过semrush或Google Search Console工具获取关键词来发外链。 Google Trends是一个强大的工具,可以帮助你了解全球的搜索趋势。 你可以利用这个工具了解特定的搜索关键词、主题、地理位置等方面的数据,了解他们随着时间的变化而变化的趋势。 以下是如何使用Google Trends来了解关键词的方法。
82 0
怎么使用谷歌趋势去了解关键词?
|
11月前
|
机器学习/深度学习 算法 PyTorch
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(一)
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(一)
215 0
|
11月前
|
机器学习/深度学习 数据可视化 数据库
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(二)
Kaggle第一人 | 详细解读2021Google地标识别第一名解决方案(建议全文背诵)(二)
106 0
|
11月前
|
人工智能 搜索推荐 机器人
神奇智能搜索引擎:perplexity智能搜索引擎(ChatGPT与Edge合体——联网版chatGPT)
神奇智能搜索引擎:perplexity智能搜索引擎(ChatGPT与Edge合体——联网版chatGPT)
|
机器学习/深度学习 人工智能 自然语言处理
Richard Sutton:人工智能的未来属于搜索和学习
Richard Sutton 在多伦多大学数学科学研究中心的机器学习应用进展系列研讨会上探讨了人工智能的未来方向。他认为人工智能的未来属于可扩展的方法、搜索与学习。而在人工智能未来的发展中,可扩展性是及其重要的方向。监督学习和计算能力的可扩展性并不大,真正重要的是在普通的经验知识世界中学习的能力,这个能力需要扩展。
111 0
Richard Sutton:人工智能的未来属于搜索和学习
|
Web App开发 搜索推荐 UED
用情境搜索开启未来之路,互联网营销
  作者:腾讯搜索技术研发中心 总经理 孙良   Internet发展至今,亿万网民们早已习惯每天使用搜索引擎获取信息:人们习惯于在资讯海洋中进行“搜索”,并在成千上万的搜索结果中继续精确搜索。同时,搜索引擎也正引领IT产业从一个时代走向另一个时代,并逐渐改变每个人的生活。
1070 0
|
搜索推荐 区块链 数据安全/隐私保护
9月6日科技联播:Google推出了新的搜索服务,王者荣耀将启动最严格实名策略
Google推出Dataset Search,数据工作者的又一“神器”,王者荣耀启动最严实名制,游戏行业与公安权威数据的首次合作;乐视和京东,一个涨幅异常遭停牌,一个大跌股价半路腰斩,高盛放弃设加密交易平台计划,比特币未能坚守7000美元大关,一起来看今天的科技快讯!
1343 0