精华内容
下载资源
问答
  • 本文来自于csdn,主要讲解了对话系统技能、现状、机器学习和深度学习、对话机器人的等等。对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工...
  • 主要介绍了Android studio开发一个小型对话机器人app,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 2021年中国对话机器人chatbot行业发展研究报告.pdf
  • 智能对话机器人开发实战视频教程

    千人学习 2018-07-26 10:13:35
    案例驱动:三大智能对话机器人需求场景,三个完整案例; 2.源码操作:内含完整程序源码和数据集; 3.实战指引:覆盖智能对话机器人实战案例开发; 4.系统学习:一套完整的智能对话机器人开发方法,三大智能对话框架...
  • 01-初心缘由 最近在研究语音识别方向,看了很多的语音识别的资料和文章,了解了一下语音识别的前世今生,其中包含了很多算法的演变,目前来说最流行的语音识别算法主要是依赖于深度学习的神经网络算法,其中RNN扮演...
  • 对话机器人是目前人工智能发展的一个主流方向, 智能多轮对话机器人案例剖析(附源码)包含三个完整案例,体验式教学; 一套开源框架,所学即所用;
  • 语音对话机器人代码

    2017-05-09 12:59:33
    详细介绍了基于讯飞语音以及图灵机器人的实现代码,刚刚入门,代码写的很烂,不过运行起来速度跟的上
  • 对话机器人,包含了看图说话,单轮对话和多轮对话,使用tensorflow 2.0 pytorch 1.3.1 GPT-2 开发环境 - flask==1.0.2 - tensorflow==2.0.0 - pytorch==1.3.1 - sklearn==0.19.2 - scipy==1.4.1 - numpy==1.18.5 - ...
  • Botty,一个使用socket.io和nodeJS的基本对话机器人。 目录 :memo: 与波蒂交谈 :speech_balloon: Botty默认情况下建立在socket.io之上,这意味着您应该使用它的客户端实现与之交谈。 在JavaScript中,我们...
  • 目录https://bot.chatopera.comChatopera 多轮对话工作机制多轮对话的定义什么场景下使用多轮对话Chatopera 多轮对话知识库意图识别脚本对话多轮对话的检索模块间检索创建脚本对话的话题话题检索顺序对话状态机擦除...

    Chatopera 为开发者提供工具,低代码或无代码上线聊天机器人。

    https://bot.chatopera.com

    本文内容节选自 Chatopera 文档中心:https://docs.chatopera.com/products/chatbot-platform/conversation/mechanism.html

    Chatopera 多轮对话工作机制

    本篇的主要目的是帮助 Chatopera 机器人平台用户从系统的角度理解 Chatopera 的多轮对话解决方案,尤其是刚刚开始认识 Chatopera 服务的新用户,待阅读本篇后,相信大家可以使用 Chatopera 机器人平台快速定制出满足各种需求的聊天机器人。

    多轮对话的定义

    Chatopera 的智能对话机器人解决方案主要面向企业在客户服务、营销和企业内部协作中使用自然语言交互完成信息查询、任务和自动化流程。目前,市场中比较常见的智能对话机器人解决方案主要是一问一答:设定问答对,使用信息检索形式,提供信息查询功能,在 Chatopera 看来,这不是智能对话机器人的体验。

    在 Chatopera,我们认为多轮对话是在一定时间内,一定交互次数内,考虑对话的上下文,每次人发送聊天内容时,机器人具备从上下文情境中分析最合理的回答,准确的为人提供回复。

    什么场景下使用多轮对话

    Chatopera 的智能对话机器人解决方案是工具,用于设计、实现和发布聊天机器人。从价值提供上,Chatopera 所面向的是封闭域聊天,更关注智能对话机器人在生产、消费和制造等领域的聊天机器人应用;在开放域聊天,尤其是以闲聊为主的应用,不是 Chatopera 智能对话机器人的关注点,虽然我们提供了标准的通用的工具,但是作为开放域聊天,在目前还没有好的技术方案,强人工智能还没有成熟,对于实际应用上,还不能大规模的提供价值。

    Chatopera 的多轮对话服务,可以面向不同行业,比如教育、电商、游戏和生产制造等。尤其是客服和企业内部协作中,将以前通过表单、人工等的服务使用自然语言对话的形式实现。应用场景比如智能客服、智能招聘面试、智能提交工单、智能提交请假、智能分析潜在客户意向等。

    Chatopera 多轮对话

    Chatopera 多轮对话解决方案的一个主要目标是以无代码、低代码的形式上线智能对话机器人,为了实现这个目标,Chatopera 将不同形式的问答技术打造为基础模块,提供每个模块的管理工具、APIs,Chatopera 机器人平台用户可以单独使用。在基础模块之上,再融合为一个多轮对话方案。目前,基础模块包括:1)以搜索引擎技术为主的知识库;2)以机器学习为主的意图识别;3)以脚本规则为主的对话脚本。其中,又以脚本规则为中心融合知识库和意图识别,这个融合的产物就是 Chatopera 多轮对话。融合多种问答技术,实现为标准的工具,提供最佳实践,是 Chatopera 机器人平台的主要特色。

    在使用 Chatopera 机器人平台时,理解基础模块的工作原理,并熟悉多轮对话的检索机制,是非常重要的,掌握了这些知识可以帮助您实现具有强大对话能力的智能对话机器人。

    目前,基础模块包括:知识库意图识别脚本对话

    知识库

    通过设定问答对实现问答,对话用户的请求文本和问答对里的标准问或扩展问比较,计算相似度,当相似度高于阀值时,即认定该问答对的答案是对话用户需要的回复。

    在 Chatopera 知识库中,支持扩展问、近义词词典、多答案和答案类型。

    在这里插入图片描述

    意图识别

    通过为每个意图添加说法和槽位,训练机器学习模型。对话用户的文本被分析为某一个意图,如果识别了意图,则计算槽位信息,并且对于没有识别到的槽位进行追问。槽位可以绑定到某个词典,Chatopera 机器人平台提供自定义词典和系统词典。自定义词典包括词汇表词典和正则表达式词典,词汇表词典主要用于处理业务上的关键字段、同义词和专有名词;正则表达式词典则用于识别手机号、身份证号、订单号、邮箱等一些具有规则的信息。系统词典是用机器学习训练的命名实体提取判定的信息,比如人名、地名、组织机构和时间等。

    在这里插入图片描述

    脚本对话

    脚本对话是通过书写 Chatopera 多轮对话脚本语法建立的规则组合实现问答。对话脚本将对话分为匹配器,即和对话用户的输入进行比较的规则;回复,匹配规则后的回复内容,支持文本和函数;上下轮钩子,将规则与规则进行关联。对话脚本中的函数,使用 JavaScript 方式低代码编程,内置函数库,即方便了系统集成,同时也提供大量自然语言处理帮助函数,不需要掌握自然语言处理 NLP 的知识,开发者可以专注的实现业务逻辑。

    在脚本匹配器语法和函数中,融合知识库和意图识别,所以,脚本对话是多轮对话的中心,围绕脚本实现不同问答技术的融合。所以,很多时候,文档和产品中,也用【多轮对话】表述脚本对话,就是这个原因。但是脚本独立构成了一个模块,在 Chatopera 机器人平台内部,实现了对话脚本引擎。

    在这里插入图片描述

    以上为各个问答模块的概述,待阅读本页内容后,可以从左侧导航菜单了解每个模块的使用详情说明。

    多轮对话的检索

    在 Chatopera 多轮对话中,理解检索顺序是熟悉多轮对话原理的关键知识点。首先是基础模块间的检索顺序,然后是对话脚本中的话题的检索顺序。

    模块间检索

    对话用户请求时,多轮对话会先从知识库检索,匹配知识库问答对,当有问答对高于知识库阀值时,机器人回复问答对中的答案内容;未匹配知识库,进入脚本对话,从话题中匹配,匹配上则回复内容;否则则回复兜底回复。有下图关系。

    在这里插入图片描述

    其中,知识库阀值默认为 0.9

    这样的检索完成了知识库和脚本对话的融合,这也是大的框架,关于知识库、脚本对话和意图识别的相互之间的调用关系,后文会有更多介绍。

    创建脚本对话的话题

    聊天机器人的多轮对话主要就是很多对话规则的组合,可以设想这些对话规则组成了一个个的话题,在对话时,可以聊一个话题,可以跳跃到其它的话题。那么,每次获得了聊天用户的文本,机器人进行答案的检索就是选择最合理的话题并找到匹配的规则,计算回复内容。

    在创建好机器人后,下载多轮对话设计器,在多轮对话设计器中,创建话题。

    在这里插入图片描述

    话题里使用脚本实现对话逻辑,用一个简单的例子说明脚本语法非常容易掌握。

    在这里插入图片描述

    + 开始的是匹配器,目前 Chatopera 多轮对话支持通配符匹配器和模糊匹配器;- 开始的是回复,目前支持文本和函数,函数是 JavaScript 脚本;% 开始的是上下轮钩子,用以关联规则。

    使用多轮对话设计器撰写对话脚本的用户体验,经过了多年的打磨,已经非常成熟和稳定。

    在这里插入图片描述

    在多轮对话设计内调试对话,现在对于多轮对话设计器还不需要详细了解,本节内容旨在介绍原理,而话题作为重要的概念,需要先介绍如何创建以及在哪里编辑。

    话题检索顺序

    每个话题包含名字和一些规则,每个规则包括了匹配器和回复,业务上有明确的上下轮依赖的规则使用上下轮钩子进行关联。

    话题检索也是有顺序的,匹配到了某一个话题的规则,后续的话题就被跳过。匹配从高优先级到低优先级进行,最高优先级是【前置话题】,话题名称为系统约定:__pre__;最低优先级是【后置话题】,话题名称为系统约定:__post__。优先级仅低于前置话题的话题是当前话题,就是上一次对话用户匹配到的规则所在的话题;其余的话题根据算法动态的排序。

    在这里插入图片描述

    如果使用了上下轮钩子,则最先匹配携带有上下文钩子(就是 % 上次回复内容)的规则。

    整体上,脚本对话在检索时,检索栈是动态变化的。

    对话状态机

    现在,我们从另一个角度,状态机的角度思考多轮对话,因为是在多个连续的交互中,完成一个对话目标,那么就存在一个状态的问题,状态机是状态可以转移的图,两个状态之间的关系通过状态机约束。比如,某个活动通知的对话状态机如下:

    在这里插入图片描述

    这是个图示,仅为了说明原理。“请求”节点代表每次对话用户发送了文本,“回复”节点代表机器人处理结果,回复文本。因为知识库在检索中最先发生,可以放入一些一问一答的问答对,而一些全局的关键词放入前置话题【__pre__】中,图中右侧方框内,则是由其他话题组成的脚本对话,整个对话构成了状态机。

    这个问题在脚本对话中,尤其需要注意:Chatopera 对话脚本引擎会考虑过去一段时间内,一定对话轮次的历史,机器人会回看这些记录来分析最合理的回复。这个时间长度和轮次的约束,在 Chatopera 机器人平台管理控制台内可以设定,是每个机器人的属性:会话回溯最大时长会话回溯最大轮次

    在这里插入图片描述

    当对话用户的输入匹配到脚本对话的规则时,即是对话到达了一个状态。

    擦除状态

    开发者在多轮对话脚本的函数中,也可以擦除这个状态,这样到下次对话用户再请求时,话题检索的栈回到初始状态,状态机回到原始,这个擦除的方法是在回复或函数中添加 {CLEAR} 前缀,关于这个知识点的使用说明见文档

    使用函数切换状态

    如果想从一个话题,切换到另外一个话题获得回复。那么可以在函数中使用 "topicRedirect(TOPIC_NAME, TOPIC_GAMBIT_ID)"。将 TOPIC_NAME 替换为话题名字,TOPIC_GAMBIT_ID 替换为匹配器。就可以切换到该规则下获得回复。

    topicRedirect 函数的更多介绍,参考文档

    知识库路由

    对于状态机的状态跳转,Chatopera 多轮对话方案中,还有一个高级方法,通过知识库路由对话到对话状态机任意状态。

    在这里插入图片描述

    设定知识库的问答对中的答案,内容使用上述格式,将 TOPIC_NAME 替换为话题名字,TOPIC_GAMBIT_ID 替换为匹配器。就可以切换到该规则下获得回复。

    关于知识库路由的更多介绍,参考文档

    总结

    恭喜您,看到文档的最后,多轮对话是不是简单易学,并且很强大?现在就开始下载多轮对话设计器,并使用 Chatopera 提供的对话模板实现您的智能对话机器人吧!

    下一步

    展开全文
  • 智能对话机器人实战(课件)案例驱动:三大智能对话机器人需求场景,三个完整案例;一套完整的智能对话机器人开发方法,三大智能对话框架;
  • 文主要参考2019年3月出版的《自然语言处理实践-聊天机器人...二、对话机器人技术原理 2.1 AI对话机器人实现流程 2.2 语音识别&语音合成 2.3 自然语言理解(NPL) 2.4 自然语言生成 2.5 对话管理 一、聊天机..

    文主要参考2019年3月出版的《自然语言处理实践-聊天机器人技术原理与应用》一书,结合个人理解对原理进行阐述,若有不当之处,请联系本文作者。另在此感谢此书作者王昊奋、邵浩、李方圆、张凯、宋亚楠(排名不分先后)。

    目录

    一、聊天机器人分类

    1.1基于应用场景分类

    1.2基于实现方式分类

    1.3基于功能分类

    二、对话机器人技术原理

    2.1  AI对话机器人实现流程

    2.2 语音识别&语音合成

    2.3 自然语言理解(NLP)

    2.4 自然语言生成

    2.5 对话管理


    一、聊天机器人分类

    以下这段描述出自CSDN人工智能专栏:

    对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。

     在这段话中,以最简要的词语总结了市面上大部分AI聊天机器人的主要功能,那就是“让机器理解人的语言”,此后机器人会根据自身功能定位,以不同的行为模式对人类做出回复,例如生活中常见的个人助理型对话机器人(如:siri,小度等),就能够在任何语境下对用户的提问做出相对合理的反应,而一些任务问答型的对话机器人则只能对固定的提问模式和领域中解答用户提问(如:淘宝客服机器人等),根据机器人服务场景以及实现技术的不同,我们首先对此类AI对话机器人进行大致的分类。

    1.1基于应用场景分类

    类别主要功能常见产品
    在线客服聊天机器人系统自动回复产品、服务的相关问题,降低企业客服运营成本,缩短用户等待时间,提升用户体验京东JIMI, 阿里小米
    基于娱乐的聊天机器人系统不限主题的闲聊、用于陪伴与慰藉,对机器人行为模式有极高要求;也提供特定主体服务,如查天气等微软小冰、微信“小微”、北京龙泉寺“贤二机器僧”
    教育场景下的聊天机器人系统帮助用户学习某种操作;指导用户深入熟悉某项技能;帮助辅助学习UC、儿童教育机器人
    个人助理聊天机器人系统实现用户个人事务的查询代办siri、小米音箱、echo
    智能问答聊天机器人系统回答用户以自然语言形式提出的事实型及复杂推理的问题,帮助用户获得信息于辅助决策IBM watson

    1.2基于实现方式分类

    实现方式具体详解
    检索式此类机器人多是为解决某类特定问题而被提出,所有回答是提前设定好的,通过规则引擎、知识图谱、模式匹配、机器学习模型等数据媒介,在知识库中挑选一个最佳的回复给用户,优点是回答自然,缺点是回答问题的范围领域是封闭的,性能的优秀与否在很大程度上取决于知识库的数据储备
    生成式不依赖于提前定义的回答,利用大量的语料训练监督模型,使得该模型能输入用户问题,自动生成一个回复,优点是能覆盖任意领域,缺点是生成式的效果容易存在问题,比如句法错误,语句不通顺等

    1.3基于功能分类

    功能分类具体功能使用场景当前产品
    问答系统对用户某个封闭领域内的问题做出解答操作助手,客服答疑,知识检索教育机器人,淘宝客服
    对话系统(任务型)完成用户给出的某个具体任务操作设置闹钟,购买指定物品,编辑提醒事项等大多手机或电脑系统内置对话机器人具备此功能
    闲聊系统模仿人类交谈模式与用户进行日常对话闲聊,增加用户使用乐趣Siri,Windows小娜,微软小冰等
    推荐系统(主动型)根据用户特点向用户进行某一类消息的推送增加用户浏览量今日头条等

    前三者为当下聊天机器人的主要的3个方向,问答系统主要应用的是语言理解、匹配与检索技术;任务型对话系统主要技术是意图识别、对话管理;闲聊主要是自然语言检索与生成,最后一种在这里不做论述。

    二、对话机器人技术原理

    2.1  AI对话机器人实现流程

    语音识别:语音转换成文本
    自然语言理解:将自然语言转换成计算机能理解的表征
    对话管理:根据当前对话管理状态判断系统应采取的策略
    自然语言生成:将系统策略转换为自然语言回复给用户
    语音合成:将文本转换为语音 

    2.2 语音识别&语音合成

    在以对话而非文本作为交流方式的对话机器人中,需要使用的语音技术主要分两块:一块是语音转文字,即语音识别;另一块是文字转语音,即语音合成。

    语音识别技术(ASR):将人说话的语音信号转换为可被计算机识别的文字信息,从而识别说话人的语音指令以及文字内容的技术。

     其大致过程由上图所示,在用户通过语音激活(按键确认后发声)/语音唤醒(特定声波捕获)向搭载了对话机器人的设备进行语音输入后,由系统对声音波段进行处理以提取语音特征,之后由训练完成的一套体系(譬如一个训练完成的神经网络)判断不同特征最有可能对应哪一个字的发音,将得到的单字进行排列后,输出一句完整的文本作为对话机器人之后阶段的输入。

    当然在这个过程中可能还包括将词组或常见短句作为依据对文本进行修正的情况,在这里不详细描述。

    语音合成技术(TTS):将文字信息转变为语音数据,以语音的方式播放出来的技术。

    理解为ASR的反向操作就可以。

    2.3 自然语言理解(NLP)

    对话机器人的自然语言理解一般包含以下几个方面: 

    NPL解释
    实体识别识别文本中出现的专有名词,如国家,地名等
    意图识别分辨文本中包含的显式意图与隐式意图,如询问外貌评价时渴望得到赞美回应的行为
    情感识别分辨用户的显式情感与隐式情感,如反话、气话等场合
    指代消解明确用户使用的代词的指代对象
    省略恢复恢复被用户省略掉的句子成分
    回复确认当用户意图模糊时,将由对话机器人主动询问,确认用户意图
    拒绝判断主动拒绝识别及恢复超出范围的或者设计敏感话题的用户输入,尽可能终止当前话题

     为了完成上述表格所示的用于自然语言理解种种功能,词法分析、句法分析及语义分析这三种基础的技术常常在NPL过程中被使用。其中语法分析主要用于将汉语分词并进行词性标注;句法分析在此基础上解析短语的结构及深层文法;语义分析则是在获得了这些自然语言的表征后将它转化为机器能够理解的向量表示形式。

    2.3.1基于知识图谱的自然语言理解

    知识图谱可以被看成是结构化的语义知识库,其中包含实体-关系-实体这样的三元组以及实体-属性这样的对,其目的旨在以符号的形式描述真实世界中存在的各种实体或概念及其互相关系。

     构建:

    从传统数据库的结构化数据中映射到知识图谱;
    从HRML等半结构数据中利用AI与规则抽取模式信息到知识图谱中;
    在非结构化的文本与图像中利用文本挖掘技术进行信息抽取,利用图像技术进行图像处理。

    融合:

    将多个数据源抽取的指数进行融合

    价值:

    个性化的知识图谱可以支撑对话机器人应对用户的多样化需求,能够将问答、对话、闲聊等多个功能集中在同一个对话机器人身上,使得其应用场景的限制逐渐减少 

    2.4 自然语言生成

    自然语言生成系统的两大主要架构:

    1. 流线型pipline自然语言生成系统

    系统由几个不同的模块组成,模块之前相互独立,一般包括文本规划(决定说什么),句子规划(决定怎么说),句子实现(让句子更连贯) 

    2. 一体型integrated自然语言生成系统

    模块之间相互左右,后续模块可以参与前面模块的决策。更符合人脑思维,但实现较为困难。因此较常用的未流线型自然语言生成系统 

    自然语言生成系统的目前的两大主要技术:检索、生成

    2.4.1 检索技术

    需前期准备大量的qa对语料库,通过排序与深度匹配技术,在已有语料库中找到适合当前输入的最佳回复。
    缺点:
    (1)强烈依赖对话库 (2)回复不够灵活 (3)缺乏多样性
    优点:
    (1)实现相对简单 (2)容易部署

    2.4.2 生成技术

    基于深度学习,通过编码-解码的过程,逐字或逐词地生成回复。

    通过对抗圣城网络GAN生成自然语言。

    缺点:
    (1)实现困难 (2)训练数据难以整理 
    优点:
    (1)回复灵活 (2)答案具有多样性

    2.5 对话管理

    对话管理的主要任务:维护更新对话状态,动作选择。

    对话状态是指当前用户与机器对话数据的表征;
    动作选择是指基于当前的对话状态,选择接下来合适的动作

    为了实现对话管理的功能,常用的有四种实现技术:

    对话行为识别:相当于是意图识别,封闭式的行为识别是讲用户意图映射到预先设定好的意图类别中,如在任务型对话中有订机票、点外卖、搜美食等。开放式行为识别是没有预先设定的行为类别的,一般用于闲聊系统。

    对话状态识别:对法状态识别需要考虑进对话的上下文与对话行为的相关信息,在某时刻的对话行为序列即为某时刻的对话状态。 

    对话策略学习:通过离线的方式,预先让机器进行对话策略学习,从人-人的真实对话中学习对话行为、状态等,然后再人-机对话过程中进行策略选择。

    对话奖励:评价对话系统的评价机制,比如槽位填充效率、回复的流行度,以及日渐火爆的强化学习中的长期奖励机制。

    2.5 1 对话管理的4种方法

    1.基于有限状态自动机 finit state machine, FSM

    人工显式地定义出对话系统可能出现的所有状态,对话状态会根据当前输入在预定的状态间进行跳转,从而根据新的状态去选择合适的动作。

    优点:简单易用。

    缺点:人工设计状态,与状态对应的动作,难以应用于复杂场景。

    2.基于统计的对话管理

    将对话过程表示成一个部分可见的马尔科夫决策过程。设定系统在每个特定的状态下执行某一特定动作都会获得对应的回报,因此选择动作时会选择期望回报最大的那个动作。                                

    优点:(1)只需定义马尔科夫决策过程中的状态与动作,机器可以通过学习得到不同状态下的转移冠关系;(2)可以使用强化学习的方法学习出最有的动作选择策略                                        

    缺点:仍然需要人工定义对话系统的状态,在不同的领域中通用性不强。        

    3.基于神经网络对话管理方法

    将自然语言理解的输出以及其他各类特征作为神经网络的输入,将选择的动作作为神经网络的输出。对话状态由神经网络的隐状态表示。

    优点:不需要人工定义对话状态

    缺点:需要大量的训练数据       

    4.基于框架的对话管理

    框架即槽值对,明确规定特征槽状态下的用户动作对应的系统动作。

    优点:用于特定领域的对话系统

    缺点:难以衍生到其他领域              

    三、总结综述

    由上述介绍我们最终可以认为一个基础的AI对话机器人的实现原理大致为:

    通过语音识别技术获取用户输入后,使用自然语言理解技术将得到的输入文本转换为计算机能够理解的向量形式,之后借由一个训练完好的对话管理系统(如一个基于深度学习的神经网络)判断用户意图并根据学习到的人类行为模式做出策略选择,之后通过自然语言生成技术规划出符合人类思维的回答并通过语音合成技术转化为语音播放,从而与用户进行互动。

    展开全文
  • Python3从零开始搭建一个语音对话机器人

    万次阅读 多人点赞 2019-07-19 17:00:20
    从零开始搭建一个语音对话机器人 目录 01-初心缘由 02-准备工作 03-语音机器人的搭建思路 04-语音生成音频文件 05-音频文件转文字STT 06-与图灵机器人对话 07-文字转语音 08-语音对话机器人的完整代码 09-...

    从零开始搭建一个语音对话机器人

    目录

    01-初心缘由

    02-准备工作

    03-语音机器人的搭建思路

    04-语音生成音频文件

    05-音频文件转文字STT

    06-与图灵机器人对话

    07-文字转语音

    08-语音对话机器人的完整代码

    09-结束语

    10-有问必答


    01-初心缘由

            最近在研究语音识别方向,看了很多的语音识别的资料和文章,了解了一下语音识别的前世今生,其中包含了很多算法的演变,目前来说最流行的语音识别算法主要是依赖于深度学习的神经网络算法,其中RNN扮演了非常重要的作用,深度学习的应用真正让语音识别达到了商用级别。然后我想动手自己做一个语音识别系统,从GitHub上下载了两个流行的开源项目MASR和ASRT来进行复现,发现语音识别的效果没有写的那么好,其中如果要从零来训练自己的语言模型势必会非常耗时。

            因此,就有了一个新的想法,借助一些开源的语音识别SDK来实现语音识别,来看看他们语音识别的效果如何。于是想到了百度和科大讯飞,然后就百度了一下,百度搜索举贤不避亲的给我推荐了百度AI开放平台!然后查看了百度语音识别的技术文档,发现对python的支持非常友好,而科大讯飞好像没有提供对python的接口支持,因而选定了百度。

            虽然百度目前槽点很多,但是不得不说百度在AI方面的投入和开放是值得点赞的!百度的AI开放平台确实为开发者们带来很多的便利性,开放了非常多的AI服务,大家自行去注册使用,百度大脑AI开放平台地址:http://ai.baidu.com/   (PS:我确实没收广告费!)

            经过体验发现百度的语音识别准确率高的吓人,完爆了GitHub上的开源项目N条街,然后在CSDN浏览各位博主的博客时发现,用百度语音识别的API和图灵机器人的API可以做一个实时语音对话的机器人,感觉特别兴奋,从而决定搭建一个自己的语音对话机器人。目前,我已经实现了我的语音对话机器人,因此特意来分享一下整个的实现过程和遇到的坑,让大家可以快速的构建你们的语音对话机器人。好啦,我们开始吧!

    02-准备工作

    • (1)准备python开发环境

      需要准备的python包包括:speech_recognition(语音识别包)、pyaudio(录音接口)、wave(打开录音文件并设置音频参数)、pyttsx3(文本转语音)、json(解析json串)、requests(get/post)、baid_aip(百度语音识别的aip)。

    • (2)准备百度API

    登录百度AI开放平台语音识别:https://ai.baidu.com/tech/speech/asr  ,如果没有账号自己注册即可,免费试用哦。

    点击技术文档:阅读语音识别的技术文档,重点查看API文档和Python SDK,了解如何在python中调用API接口。

    点击立即使用:进入到服务界面,创建应用。记住最重要的App ID、API Key、Secret Key,后面调用时需要用到。

    • (3)准备图灵机器人:

    图灵机器人大脑具备强大的中文语义分析能力,可准确理解中文含义并作出回应,是最擅长聊中文的机器人大脑,赋予软硬件产品自然流畅的人机对话能力。图灵机器人是中文语境下智能度最高的“机器人大脑”,是全球较为先进的机器人中文语言认知与计算平台,图灵机器人对中文语义理解准确率已达90%,可为智能化软硬件产品提供中文语义分析、自然语言对话、深度问答等人工智能技术服务。——源于百科(好吧,又和百度扯上点关系了。)

    总之,就是需要你去图灵机器人官网http://www.turingapi.com/注册成功后,构建一个属于你的图灵机器人,用于后续将翻译后的文本内容对图灵机器人提问获取回答,然后我们通过TTS处理就可以获取语音输出了。

    注册后创建自己的机器人,然后在机器人设置的终端设置中查看自己的apikey(这个key非常重要),另外一定要把密钥开关关闭,不然后面在调用api时会报3001错误,无法调用图灵机器人(此处有坑,已填)!

    图灵机器人未进行身份认证时,是不能够进行调用的,如果调用会出现“请求次数超限制”的问题,通过个人身份认证后,每天能够调用100次,这是免费版。100次当然是不够用的,如果你想要更多的服务,就只能购买会员了,99和299每月的套餐,具体看下图。如果是自己玩,那就免费版,如果是开发,可以考虑99的,如果是做一个产品,那就得企业采购了,咱们没那么土豪!

    03-语音机器人的搭建思路

    1、首先明确我们要实现的目标,是要实现纯语音对话聊天,不需要输入文字交流。我们实时说,机器人实时回复,真正实现语音交互对话。

    2、整个过程的实现流程是这样的,我们说一句话,通过录音保存为语音文件,然后调用百度API实现语音转文本STT,再然后调用图灵机器人API将文本输入得到图灵机器人的回复,最后将回复的文本转成语音输出TTS,就这样我们就实现了和机器人的语音对话了!是不是有点绕,来个流程图吧!

    3、语音对话机器人的构建具体流程图,就是各种掉API,千万不要觉得头晕哦,思路清晰才能走下去。

    04-语音生成音频文件

            语音生产文件就需要进行录音,将我们说的话保存下来,至于保存的格式我一般都是保存为wav,其他格式支持pcm,不太建议mp3,因为需要多次转换。【百度服务端会将非pcm格式,转为pcm格式,因此使用wav会有额外的转换耗时,但是windows自带播放器识别不了pcm格式的,所以我还是喜欢用wav格式】

    第一种录音方式:使用speech_recognition包进行录音,这个录音出来的效果比较好,而且代码量非常少。

    import speech_recognition as sr
    
    # Use SpeechRecognition to record 使用语音识别包录制音频
    def my_record(rate=16000):
        r = sr.Recognizer()
        with sr.Microphone(sample_rate=rate) as source:
            print("please say something")
            audio = r.listen(source)
    
        with open("voices/myvoices.wav", "wb") as f:
            f.write(audio.get_wav_data())
        print("录音完成!")
    
    my_record()

    第二种录音方式:使用wave和pyaudio包进行录音,在python中直接使用pip install即可。

    import wave
    from pyaudio import PyAudio, paInt16
    
    framerate = 16000  # 采样率
    num_samples = 2000  # 采样点
    channels = 1  # 声道
    sampwidth = 2  # 采样宽度2bytes
    FILEPATH = 'voices/myvoices.wav'
    
    
    def save_wave_file(filepath, data):
        wf = wave.open(filepath, 'wb')
        wf.setnchannels(channels)
        wf.setsampwidth(sampwidth)
        wf.setframerate(framerate)
        wf.writeframes(b''.join(data))
        wf.close()
    
    
    #录音
    def my_record():
        pa = PyAudio()
        #打开一个新的音频stream
        stream = pa.open(format=paInt16, channels=channels,
                         rate=framerate, input=True, frames_per_buffer=num_samples)
        my_buf = [] #存放录音数据
    
        t = time.time()
        print('正在录音...')
     
        while time.time() < t + 10:  # 设置录音时间(秒)
        	#循环read,每次read 2000frames
            string_audio_data = stream.read(num_samples)
            my_buf.append(string_audio_data)
        print('录音结束.')
        save_wave_file(FILEPATH, my_buf)
        stream.close()
    
    

    05-音频文件转文字STT

           我们已经在上面获取到了音频文件,那要怎么把音频文件转化为文字呢?在这里,我们就需要调用百度的语音识别API接口,同时我们需要安装这个接口包,导入模块:pip install baidu_aip。导入我们需要的模块名,然后将音频文件发送给出去,返回文字。

    # 音频文件转文字:采用百度的语音识别python-SDK
    # 百度语音识别API配置参数
    from aip import AipSpeech
    
    APP_ID = 'your app_id'
    API_KEY = 'your api_key'
    SECRET_KEY = 'your secret_key'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    path = 'voices/myvoices.wav'
    
    
    # 将语音转文本STT
    def listen():
        # 读取录音文件
        with open(path, 'rb') as fp:
            voices = fp.read()
        try:
            # 参数dev_pid:1536普通话(支持简单的英文识别)、1537普通话(纯中文识别)、1737英语、1637粤语、1837四川话、1936普通话远场
            result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537, })
            # result = CLIENT.asr(get_file_content(path), 'wav', 16000, {'lan': 'zh', })
            # print(result)
            # print(result['result'][0])
            # print(result)
            result_text = result["result"][0]
            print("you said: " + result_text)
            return result_text
        except KeyError:
            print("KeyError")

    06-与图灵机器人对话

           上一步我们已经成功将我们的声音转化为文字了,然后我们再调用图灵机器人的API接口,做自动应答。图灵机器人对中文的识别准确率高达90%,是目前中文语境下智能度最高的机器人。有很多在Python中使用图灵机器人API的博客,但都是1.0版本,本博客介绍的是在Python中使用图灵机器人API v2.0的方法,1.0版本的调用方式已失效。

    代码如下(这里需要导入requests、json模块):

    # 与机器人对话:调用的是图灵机器人
    import requests
    import json
    
    # 图灵机器人的API_KEY、API_URL
    turing_api_key = "your turing_api_key"
    api_url = "http://openapi.tuling123.com/openapi/api/v2"  # 图灵机器人api网址
    headers = {'Content-Type': 'application/json;charset=UTF-8'}
    
    
    # 图灵机器人回复
    def Turing(text_words=""):
        req = {
            "reqType": 0,
            "perception": {
                "inputText": {
                    "text": text_words
                },
    
                "selfInfo": {
                    "location": {
                        "city": "北京",
                        "province": "北京",
                        "street": "车公庄西大街"
                    }
                }
            },
            "userInfo": {
                "apiKey": turing_api_key,  # 你的图灵机器人apiKey
                "userId": "Nieson"  # 用户唯一标识(随便填, 非密钥)
            }
        }
    
        req["perception"]["inputText"]["text"] = text_words
        response = requests.request("post", api_url, json=req, headers=headers)
        response_dict = json.loads(response.text)
    
        result = response_dict["results"][0]["values"]["text"]
        print("AI Robot said: " + result)
        return result
    

    07-文字转语音

          我们得到了图灵机器人的回复之后,就需要把结果转化为语音输出,从而实现语音交互。在python中我们如何将文字转为语音并输出呢?这里就需要用到另一个模块pyttsx3,它会将文字转为语音。

    import pyttsx3
    
    # 初始化语音
    engine = pyttsx3.init()  # 初始化语音库
    # 设置语速
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate-50)
    # 输出语音
    engine.say("你好,很高兴认识你!")  # 合成语音
    engine.runAndWait()

    使用python进行编程就是有很多好处,比如音频的输出我们就可以采用多种方式,下面提供一种更加简便的音频输出方式:

    import win32com.client
    
    speaker = win32com.client.Dispatch("SAPI.SpVoice")
    speaker.Speak("我是语音助手,小灵!")

    好了,至此,我们语音机器人的所有元素都已经准备妥当,接下来进行组装!

    08-语音对话机器人的完整代码

    经过我的努力,已经将代码优化到了100行左右哦,按照我的步骤来,你就可以快速复现构建你的语音机器人了!

    # -*- coding: utf-8 -*-#
    # -------------------------------
    # Name:SpeechRobot
    # Author:Nieson
    # Date:2019/7/19 16:31
    # 用python3实现自己的语音对话机器人
    # -------------------------------
    
    from aip import AipSpeech
    import requests
    import json
    import speech_recognition as sr
    import win32com.client
    
    # 初始化语音
    speaker = win32com.client.Dispatch("SAPI.SpVoice")
    
    
    # 1、语音生成音频文件,录音并以当前时间戳保存到voices文件中
    # Use SpeechRecognition to record 使用语音识别录制
    def my_record(rate=16000):
        r = sr.Recognizer()
        with sr.Microphone(sample_rate=rate) as source:
            print("please say something")
            audio = r.listen(source)
    
        with open("voices/myvoices.wav", "wb") as f:
            f.write(audio.get_wav_data())
    
    
    # 2、音频文件转文字:采用百度的语音识别python-SDK
    # 导入我们需要的模块名,然后将音频文件发送给出去,返回文字。
    # 百度语音识别API配置参数
    APP_ID = 'your app_id'
    API_KEY = 'your api_key'
    SECRET_KEY = 'your secret_key'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    path = 'voices/myvoices.wav'
    
    
    # 将语音转文本STT
    def listen():
        # 读取录音文件
        with open(path, 'rb') as fp:
            voices = fp.read()
        try:
            # 参数dev_pid:1536普通话(支持简单的英文识别)、1537普通话(纯中文识别)、1737英语、1637粤语、1837四川话、1936普通话远场
            result = client.asr(voices, 'wav', 16000, {'dev_pid': 1537, })
            # result = CLIENT.asr(get_file_content(path), 'wav', 16000, {'lan': 'zh', })
            # print(result)
            # print(result['result'][0])
            # print(result)
            result_text = result["result"][0]
            print("you said: " + result_text)
            return result_text
        except KeyError:
            print("KeyError")
            speaker.Speak("我没有听清楚,请再说一遍...")
    
    
    # 3、与机器人对话:调用的是图灵机器人
    # 图灵机器人的API_KEY、API_URL
    turing_api_key = "your turing_api_key"
    api_url = "http://openapi.tuling123.com/openapi/api/v2"  # 图灵机器人api网址
    headers = {'Content-Type': 'application/json;charset=UTF-8'}
    
    
    # 图灵机器人回复
    def Turing(text_words=""):
        req = {
            "reqType": 0,
            "perception": {
                "inputText": {
                    "text": text_words
                },
    
                "selfInfo": {
                    "location": {
                        "city": "北京",
                        "province": "北京",
                        "street": "车公庄"
                    }
                }
            },
            "userInfo": {
                "apiKey": turing_api_key,  # 你的图灵机器人apiKey
                "userId": "Nieson"  # 用户唯一标识(随便填, 非密钥)
            }
        }
    
        req["perception"]["inputText"]["text"] = text_words
        response = requests.request("post", api_url, json=req, headers=headers)
        response_dict = json.loads(response.text)
    
        result = response_dict["results"][0]["values"]["text"]
        print("AI Robot said: " + result)
        return result
    
    
    # 语音合成,输出机器人的回答
    while True:
        my_record()
        request = listen()
        response = Turing(request)
        speaker.Speak(response)
    
    

    09-结束语

    至此,我们就构建了一个完整的语音对话机器人,它可以在你无聊、寂寞、有压力、想开心的时候出现在你身边,哄你开心哟!这个机器人太聪明了,你可千万不要被她调戏了!

    对了,你可以在图灵机器人官网里面进行人物设置,设置她的姓名、年龄和星座,我的机器人叫做小橘子,她具有十八般武艺,它能够闲聊、做数字计算、中英互译、讲故事、笑话、脑筋急转弯、歇后语、绕口令、顺口溜、玩成语接龙游戏,天气和日期查询,功能还是比较强大的!如果开通付费版本就会拥有更多功能哦,可以训练自己的语料库,目前免费版只支持每天100次的调用,真真是不够用呀!

    附带一下我和小橘子的聊天视频吧,有心的小伙伴可以做个前端页面哦!

    优酷视频:https://v.youku.com/v_show/id_XNDI3OTYyMTgwNA==.html?spm=a2h3j.8428770.3416059.1 

    10-有问必答

    博客一经发出,两天多的时间,阅读量就已经突破5000了,得到了众多博友的关注点赞和评论,说明大家对于语音对话机器人的热情和兴趣度都非常高,大家都在积极的搭建自己的语音对话机器人了!相信百度和图灵机器人最近的API调用量会蹭蹭的上涨,我在考虑要不要收点推广费了(哈哈,开个玩笑)!百度AI开放平台你注册调用他们的API后,过两天百度就会有客服给你打电话问题的体验感,大家看到一个北京号码标记为诈骗电话的那个就是了哈哈!图灵机器人公司则是通过会员收费模式来赚大家的钱,就看你能否攥紧自己的口袋了!

    第10个模块有问必答是为了来解答一下大家在复现语音对话机器人过程中可能会遇到的问题,根据大家的提问,我有针对性的把一些常见问题在此给各位进行一下解答,也非常欢迎博友们之间积极回复,毕竟博主的精力也是有限的,还要投入到无限的AI能力研究中去(可能也是因为懒吧)。刚好,十个模块凑齐了十全十美,处女座看起来也舒心一些!闲话少叙,进入正题:

    • (1)问:我直接执行你全部代码的时候为什么跑不通呢?

    答:首先强调一点,各位在复现代码的时候,一定要把百度和图灵机器人的相关api_id, api_key等替换成自己的!另外图灵机器人记得要身份验证,通过后才能调用图灵机器人!

    • (2)问:我在运行之后输出please say something,然后我说了话,之后隔一段时间才输出KeyError,AI Robot said: 请求次数超限制!这是什么原因?   

    答:因为在05-音频文件转文字STT中,为了避免有时候录音文件出现问题,特别是在不带耳机直接对着笔记本说话时,如果周围环境嘈杂,会导致录音质量不佳,或者是长时间不说话,这些情况就会报Key Error的问题;另外最重要的一个,那就是图灵机器人如果你注册后未进行身份认证,或者身份认证未通过,那么你能调用API的次数为0次,也就是说图灵机器人不会给你回复,就会出现“请求次数超限制”。通过认证后,目前能够每天调用100次,也就是聊天100次也会出现“请求次数超限制”了。

    • (3)问:Mac电脑上没有win32com怎么办啊?

    答:如果win32com不行,那你就用可以尝试安装一下pyttsx3包,用前文中提到的第一种语音输出方式。我为了代码整洁,所以没有把第一种方式写到完整代码中(其实也写了,写博客的时候删了而已,别问我为啥,为了整洁好看,lol!)。

    • (4)问:为什么我的with open那里说文件找不到?

    答:那是因为我所有的录音文件(如myvoices.wav)都在voices目录下,所以要记得创建一下自己的文件夹目录voices。

    • (5)问:不会python,有没有Java版本?

    答:大家看完python版本,可以尝试用Java来复现一下,毕竟你都会Java了,百度API也支持Java调用哦,看官网哈!

    • (6)问:安装包出现问题,主要是from aip import AipSpeech、import speech_recognition as sr中的aip、speech_recognition包为啥安装不成功?

    答:这两个包比较特殊,在import的时候是aip和speech_recognition,但在install安装的时候分别是baidu-aip和SpeechRecognition,这样就能安装成功啦!

    展开全文
  • 叮当,在 Raspberry Pi 上的中文语音对话机器人/智能音箱项目
  • 自制的一个对话机器人,语言库有些欠缺,有额外功能需要插件【压缩包内的exe文件,都放在C盘】,下载后请解压到任意目录【插件放在C盘】,程序会自动生成目录在C盘,请不必担心。
  • 主要为大家详细介绍了基于树莓派的语音对话机器人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 有些对话机器人总让人崩溃,也许是智能级别不够高。本文,就来一起看看如何判断一个机器人的智能程度。 随着智能对话技术的发展,对话机器人越来越多地出现在人们的日常工作和生活中。 从企业的角度,在合适的...

    有些对话机器人总让人崩溃,也许是智能级别不够高。本文,就来一起看看如何判断一个机器人的智能程度。

    随着智能对话技术的发展,对话机器人越来越多地出现在人们的日常工作和生活中。

    从企业的角度,在合适的业务场景中使用对话机器人,能够极大地提升服务效率和用户体验。因此,引入对话机器人逐渐成为每个企业数字化和智能化转型过程中的重要战略。

    那么,我们应该如何来评判一个对话机器人的能力,或者更具体一点,如何判断一个对话机器人的智能程度呢?

    本文介绍一种对话机器人的分级,让我们可以更清楚地了解不同等级的对话机器人分别具有什么能力,适用于什么场景。

    对话机器人的分级

    目前业界并没有一个成熟的对话机器人分级体系,但自动驾驶的分级能够给我们一些启发。

    根据行业标准,自动驾驶能力被分为L1到L5共5个等级(L0代表完全人类驾驶,不算在5个等级之内),等级越高代表自动驾驶能力越强。比如,L1代表辅助驾驶,L5代表完全自动驾驶。

    在不同的级别下,驾驶员和车辆所扮演的角色有所不同,级别越高驾驶员需要对车辆的控制越少(如下图所示)。

    如何判断一个对话机器人有多智能?

    图片来源[1]

    参考国外开发者社区对于智能助手的分级[2],我们从对话机器人能够解决的问题及其应用场景出发,将对话机器人的能力也进行分级,分为L1到L5共5个等级,等级越高代表对话机器人的能力越强(如下图所示)。

    下面我们分别介绍这5个等级。

    如何判断一个对话机器人有多智能?

    L1 单向推送

    机器人可向用户推送消息,但没有对话能力。

    L1级别的对话机器人,只具备向用户单向推送的能力。今天,我们所使用的App、微信公众号都会使用这种方式与用户交互。

    这种方式的好处是受众广,效率高;缺点是用户只能被动接收推送,无法和机器人进行对话交互。因此,L1级别的机器人在严格意义上不能被称为“对话机器人”。

    L2 单轮问答

    机器人能回答用户的常见问题,但没有上下文理解能力,无法主动与用户交互。

    L2级别的对话机器人开始具备对话交互能力,具体体现在它能够回答用户的常见问题。最典型的应用场景是简单的问答型客服机器人,即用户问一个问题,机器人回答答案。

    这类对话机器人通常基于一个特定的知识库,当用户提出问题后,机器人需要对用户的问题进行语义理解,并从知识库中找到对应的答案回复给用户。

    因此,评价L2级别对话机器人的效果,主要看召回率和准确率这两项指标。其中,召回率等于有多少用户的问题能够被机器人回答,准确率等于机器人回答的问题中有多少回答正确。

    关于L2级别对话机器人背后使用的技术,感兴趣的读者可以阅读之前的文章《对话机器人平台智能问答技术拆解》

    综合来看,L2级别的对话机器人适合比较简单的客服场景,机器人能准确回答用户的问题,用户问完即走。

    L3 多轮对话

    机器人能理解上下文,和用户进行多轮对话,帮用户完成任务。

    L2级别的对话机器人经过训练后虽然能够准确地回答用户的问题,但仍然存在两个明显的缺陷:

    1. 它没有上下文理解的能力,即机器人在回答一个用户问题时,不会考虑用户之前所说的内容;
    2. 它只能被动地回答用户的问题,无法主动发起与用户交互,导致机器人的应用场景相对受限。

    因此,我们需要更加智能的L3级别对话机器人。

    我们以快递领域的客服机器人为例,通过两个具体的例子来说明L3级别对话机器人和L2级别的差别。

    L2级别对话机器人无法理解上下文

    因为缺少上下文理解能力,当用户问“星期天开门吗”时,缺少了主语 “中关村的门店”,L2级别的对话机器人无法理解用户其实是在问“中关村的自提点星期天开门吗”,导致机器人无法回答这个问题。

    对于L3级别的对话机器人,它能够理解上下文,从而补全了用户问题的主语,这样一来便可以回答出这个问题。

    L3级别对话机器人能够理解上下文

    有些时候,机器人在满足用户需求时,不仅要听懂用户在说什么,还需要主动向用户发问,来获取相关的信息。

    我们来看另一个例子。

    L2级别对话机器人能够回答问题,但无法解决问题

    上面的例子中,在机器人回复的消息里,“预约取件”是一个可点击的链接,需要用户点击后在一个新的图形化用户界面(GUI, Graphical User Interface)中输入取件时间、取件地址、取件电话等信息完成预约取件,这种需要在CUI和GUI之间来回切换的交互方式显然不够高效。

    L2级别的对话机器人之所以要这样,对话机器人并不知道取件时间、取件地址、取件电话等信息,没有这些信息的情况下,机器人只能提供一个链接让用户自己操作。也就是说,L2级别的对话机器人有时候虽然回答了用户的问题,但并没有真正帮用户解决问题。

    理想情况下,我们希望机器人能够通过对话直接帮助用户完成任务,这要求机器人能够通过多轮对话去理解和澄清用户的意图。

    L3级别对话机器人通过多轮对话解决用户问题

    综上所述,L3级别对话机器人的核心能力有两点:

    1. 能够理解上下文;
    2. 能够通过主动交互澄清用户意图,并通过多轮对话帮助用户完成任务。

    因此,在准确率和召回率之外,任务完成率是L3对话机器人的重要指标。

    L3级别的对话机器人适合更加复杂的业务场景,尤其是需要机器人通过主动对话收集用户信息的场景,例如营销获客等。

    L4 个性化对话

    机器人能基于用户标签,为用户提供个性化的对话体验。

    理想情况下,对话机器人在和用户交互时,不仅需要理解用户在说什么,也需要知道用户是谁。

    具体而言,机器人可以基于用户标签,即用户的属性、兴趣等,为用户提供更个性化的对话体验,也提升交互的效率。

    我们继续以预约上门取件为例,L4级别的对话机器人会以这样的方式来进行对话。

    L4级别对话机器人基于用户标签提升对话效率

    上面的例子中,机器人曾经服务过这个用户,所以它已经记录了用户的取件地址和取件电话。在这次对话中,机器人无需再向用户询问取件地址、取件时间、取件电话,大大提升了交互效率和用户体验。

    对于L4级别的对话机器人,其核心在于能够为用户打标签,并在对话过程中灵活使用用户标签来提升对话效率和体验。当然,如果个性化的对话体验如果处理得不恰当,可能会给用户带来困扰,甚至伤害用户的体验。

    因此,对于L4级别的对话机器人,用户满意度是一个非常重要的指标。

    L4级别的对话机器人则更适合机器人和用户保持长期关系的场景,例如智能助手等。

    L5 多机器人协作

    多机器人相互协作,满足更复杂的用户需求。在某些情况下,用户的需求无法被单一的对话机器人满足。

    以预订餐厅为例,用户可以对一个智能助手说出需求,智能助手通过对话的方式收集到了用户要订哪家餐厅、什么时间、就餐人数等信息。此时,智能助手需要再调动另一个电话机器人给餐厅打电话进行预订。

    我们可以发现,这个需求的满足过程涉及到智能助手和电话机器人这两个对话机器人的协作,未来会有更多的场景和需求需要多机器人协作。

    另一方面,对话机器人只是一种形态的智能机器人,还有更多种不同类型的智能机器人。比如,机器人流程自动化(RPA)就是一种能够控制软件自动完成特定任务流程的机器人。对话机器人和RPA机器人也有很多可以结合的场景。

    还是回到预订餐厅的例子,如果餐厅提供在线预订的网站,那么可以由对话机器人完成信息的收集,由RPA机器人完成预订的操作。

    未来趋势

    未来,无论是企业还是个人用户,都可以根据自己的业务场景,使用L2到L4级别的对话能力,来提升交互的效率和体验。

    注:

    [1] SAE关于自动驾驶的分级,了解一下?网址为“http://www.lilunpai.com/w/466”

    [2] Conversational AI: Your Guide to Five Levels of AI Assistants in Enterprise. 网址为“https://blog.rasa.com/conversational-ai-your-guide-to-five-levels-of-ai-assistants-in-enterprise/”

    展开全文
  • 王守崑:对话机器人的算法、产品与商业实践 状态追踪 Dialogue State Tracking (DST) • 对话状态应该包含持续对话所需要的各种信息 • DST问题:依据最新的系统和用户动作,更新对话状态 • Q:如何表示对话状态 ...
  • 自然语言处理NLP星空智能对话机器人系列:GavinNLP星空对话机器人Transformer课程片段1到片段4 Coherence is everything you need! – Gavin Wang(星空智能对话机器人作者,AI通用双线思考法创始人) 星空智能对话...
  • !!! 已于2019年1月3日停止服务,...聊天机器人 通过QQ远程控制你的设备 二,安装方法 在Python 2.7 / 3.4 +下使用,用pip安装: pip install qqbot 下载或者解压后CD到该目录并运行: pip install 。 三,使用方法
  • Python智能对话机器人实现

    千次阅读 热门讨论 2019-07-20 15:49:08
    前言:看了许多大佬的博客,感觉做一个人工智能对话机器人其实不难。当然,从底层开始自己做是不可能的,那得自己研究语音识别算法,神经网络建立模型等等,要掌握一大堆超级高深的数学知识底蕴。今天,我做的只是...
  • DeepBot对话框架 融合 不同的问题 不同的框架 不同的模型 * 问题分析实体识别 亦称为槽位提取 序列标注问题 HMM/CRF LSTM BiLSTM-CRF LQSXW HPEHGGLQJ %L-511 FRQFDWHQDWHG RXWSXW ODEHOLQJ ? ? ? 6? ? ? 2 2 2 %-1 ...
  • 1.什么是AI对话机器人 自1950年图灵提出图灵测试的理念起,计算机智能逐渐成为人们探索的新领域之一,在那之后,对话机器人的概念最初出现是为了造福医疗领域,当时麻省理工的约瑟夫·魏泽鲍姆编写了一个使机器对人...
  • 树莓派制作语音对话机器人

    千次阅读 2021-01-21 00:08:20
    树莓派制作语音对话机器人一、材料准备二、教程开始1.录音2.语音识别3、“图灵回复"4、语音合成5、播放6、整合7、运行 一、材料准备 1、树莓派一个 2、免驱动USB麦克风 3、耳机 二、教程开始 1.录音 插上麦克风 我...
  • 评估智能对话机器人的7大数据指标

    千次阅读 2020-09-24 17:28:40
    不同行业都有着不同的数据指标体系,本文作者对评估智能对话机器人的数据指标维度展开了梳理,与大家分享。 如果你正负责一款智能对话机器人产品,不管是软件还是硬件,不管叫“小a”还是叫“小b”,总要遇到一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,344
精华内容 10,537
关键字:

对话机器人