人工智能的崛起,各大AI公司都纷纷搭建自己开发者开放平台,来构建生态系统,比如说百度和讯飞的开发者开放平台等,今天我们来聊聊科大讯飞的AIUI开放平台。
01 概述
官方定义:AIUI是科大讯飞2015年推出的一套以语音技术为核心的人机交互解决方案,意在使应用和设备能快速具备能听会说,能理解会思考的能力。
通俗理解:你把你的设备接进来,我给你强大的技术支持,当用户输入语音时,我帮你理解用户的意图,帮你控制设备。
AIUI的主要核心技术包括:
接入AIUI的应用和设备,可实现查询天气、播放音乐视频资源、设置闹钟以及控制智能家居等功能。AIUI目前提供的开放技能:
也就是说这是平台已经具备的技能了,我们可以直接调用,当然你也可以自定义技能,比如说自定义一个撩妹聊天的技能、讲笑话的技能、查询快递的技能等等(自定义技能我们在后面会重点讲到)。
为什么各大AI平台都急着搭建自己的开放平台呢?对平台有什么好处?对开发者又有什么好处呢?
对平台的好处:
构建生态:看看微信开放平台的思路,你就理解了为什么AI平台也玩开放;自己能做的事情毕竟有限,只有提供好基础设施,吸引更多的人来玩,才更构建一个生态系统。
要更多数据:AI的三架马车算法、算力、数据,开放是拿到数据最好的办法啊,特别是垂直细分领域的数据,在AI时代,谁掌握了数据,谁就掌握了未来。
对开发者的好处:
门槛低:不需要自己花这么大的人力成本去搞深度学习,去搞语音识别,语音分析等等,就可以享受到这么复杂的技术服务,完成很智能的产品。
有更多的机会接触用户:这也是一个流量平台,只要我的东西有足够的吸引力,就有人来用我的东西,我就能获得更多的用户。
简单:这里有很多组件,我要组装一个应用,很简单。就像我要做一个个性化的自行车,这个什么零件都有,我随便取。
02 主要的模块
我们今天所讨论的内容主要涉及以下这些模块和专业词汇。
应用、技能、服务和设备的关系如下图:
应用可由多个技能组装而成,而应用又可以跟设备连接起来,控制设备;也可以跟服务和内容连接起来,给应用提供更多的内容和服务。
2.1 应用
如果把“应用”比喻成一个APP的话,那么技能就是APP里的一个功能,比如说美团APP里有叫外卖功能、有订机票功能、有买电影票功能等。
2.2 接入服务
FLYOS 支持一系列的服务接入,这些服务可以分为三大类:语音技能、内容信源和智能家居。
语音技能包括如播放音频、设置闹铃、回答问题等;
内容信源包括(定期更新的)文本、音频、视频等;
智能家居则包括了如灯泡、门锁、风扇、扫地机器人等被控设备的状态控制。
当在 iFLYOS 中接入了你提供的服务之后,用户可以通过搭载了 iFLYOS 的主控设备,如音箱、耳机、电视等,调用你开发的技能或控制你的接入的智能家居品牌设备。
控制智能家居的流程:
控制智能家居的逻辑:
1、选择智能家居控制服务提供商,绑定对应服务商IoT云的账号;
2、当用户语音说:“打开厨房的灯”时,iFLYOS会识别用户开灯的意图和要控制的设备;
3、iFLYOS会向IoT云服务发送指令请求。这些指令包含用户的授权信息,设备的唯一标识,和设置请求的相关信息;
4、智能家居控制厂商,在接收到iFLYOS的请求后,通过IoT云控制特定的设备,并回复iFLYOS是否控制成功;
5、iFLYOS收到回复后,将信息反馈给用户。
2.3 接入设备
就是让你的智能设备接入的平台,让你的设备快速的具备更强大的语音交互能力。比如说智能音箱接进来可以获得讲笑话等更丰富的功能;让KTV房的设备接进来,就可以语音点歌等功能。
接入设备和接入服务的理念区别:
接入设备是让你的设备具备能说会听的能力;
接入服务是让你的服务能连接更多的智能设备,传递给更多的用户。
2.4 技能
技能指的是完成某一功能或任务的能力,比如说一个订机票的功能。
技能包括两大类:
一类是平台已经创建好的技能,可以在技能商店里直接调用,比如说股票、闹钟、天气等;
另一类是自定义的技能,你可以创建自己的个性化技能(后面我们会重点讲);
03 自定义技能
自定义技能强大又简单,是一个重量级武器,这一章,我们重点来讲自定义技能。
先来聊一下自定义技能能做些什么,后面再具体讲自定义技能怎么建。
自定义技能能做什么?
假设你是一家知识服务商,你可以把你的知识内容封装成一个技能,然后用户就可以以语音的方式接收到你的内容。比如说你的定位是新闻早报,用户去上班的路上,坐地铁的时候听的;或者是定位是睡前的知识学习。
假设你是一家电影票的服务商,你可以把电影票和内容封装成一个技能,如果用户的智能设备上使用了你的技能,用户就可以跟设备进行语音交互。用户躺在沙发上的时候可以问:最近有什么好看的电影啊?都有谁主演?今天有哪些场次?要购买哪个场次?等等。
如果把开放平台比喻成一个画展,那自定义技能就相当于一幅画,你可以申请画框,自由发挥画你想画的画,审核通过之后,平台就放出来给观众展示。
那这个过程中平台有什么好好处,你又有什么好处呢?平台的整个画展的画就可以更加丰富了,而你不需要自己这么大成本的宣传,租场地设备,也可以宣传自己的画。
怎么创建自定义技能?
创建自定义技能通常分为以下几个步骤:
假设我们以创建订机票技能为例:
技能的场景和目的:订机票;
穷举尽可能多的用户可能会问的方式(收集语料);
要怎么回答用户,需要确定哪些信息才能完成订机票(设计话术);
下面的内容就是以订机票技能为例,来创建一个自定义技能,说明创建技能过程中的具体步骤和涉及到的名词。
3.1 创建
技能类型:
商店技能,只有审核通过后,才能发布到iFLYOS技能商店,可供其他用户调用;
私有技能,只能自己调用,不需要经过严格的审核。
服务平台:iFLYOS平台、AIUI平台
3.2 意图
先介绍一个名词“意图”。
意图是指用户在技能中可能的请求或目的。
比如说订机票,出发地和目的地是一个意图,出发时间是一个意图,飞机仓位(头等舱、经济舱)也是一个意图等等,因此一个技能可能会包含多个意图。
如上图,我们建了两个意图,确认出发地和目的地、确认出发时间。
3.3 语料
接下来介绍另外一个名词“语料”
语料是指用户在完成某一意图时,可能会有很多种提问方式。
如问年龄时可能会说:你多大了、你几岁、你几年出生;这些都是问年龄这个意图的语料。
如上图,在确认出发地和目的地的意图时,用户可能会问的方式。当然我这里只是列举了三个,可能还会很多很多。
3.4 实体和辅助词
接下来介绍另外两个名词“实体”和辅助词。
我们输入的每一句语料中的词,都会被分为两类:实体和辅助词
实体:用户的语料中,同一类型的名词将会被总结为实体。
如上图的语料中,“明天”是时间time实体,“深圳”和“北京”是城市city实体。因此这个语料结构化的数据可以表示为“帮我订一张{time} {city}到{city}的机票”。
辅助词的官方定义:为了满足开发者快速编写语料的需求,同时保证语料的可维护性,技能工作室提出了辅助词的概念,不同于实体,辅助词仅用于帮助开发者编写语料,但在最终开发者拿到的结构化数据中不会展现。
如上图语料中,“帮我”、“订”、“机票”都是辅助词。
把语料分为实体和辅助词是为了,让句子更加的结构化,便于机器理解用户的意图。
平台会提供一些常用的实体和辅助词,当然你也可以自己创建实体或辅助词。
3.5 创建实体
在创建实体的时候会发现实体的类型又有三类,那这三类又有什么区别呢,下面简单说一下。
先来说下静态实体与动态实体的区别:
以一款《水浒传百科》的应用为例,假设这款应用有一项技能是:给我介绍一下李逵;
结构化的语料是:给我介绍一下{name}。
其中name是一个实体,当其他应用使用的时候,这个实体指代的是同一个人,这就是静态实体。
但是假设还有另外一款应用《西游记百科》,里面也有一项技能是:给我介绍一下孙悟空;
结构化的语料同样是:给我介绍一下{name}。
你会发现这两个应用的结构化语料是一样的,但实际上这两款应用的实体指代的人是不一样的。
因此为了区分这两个实体名一样,但又是指代不同的两个实体,我们引入的就是“动态实体”的概念。
所见即可说
假设有一款导航软件,当用户语音输入:导航到中科大;
然后屏幕出现了如下的显示,很多选项:
需要我们确认地址,假设我们需要到“南校区”,我们可以不用念一大串的文字,直接说“第三个”,那机器就知道我们去的是南校区。因为“南校区”是排在所显示位置的第三位,这就是“所见即可说”。
3.6 填槽
假设要订一张机票,至少3个信息是必须要确认的:出发地、目的地、出发时间,因此这些必填的信息,我们称之为必填槽。
因此在设置槽位的时候,我们把这3个信息设为必填,假设用户的语料中没有表达完整这3个信息,我们可以针对缺失的信息设置追问。
比如如果没有出现出发地,我们设置的追问是:请问出发地是哪里
看下测试效果:
3.7 意图确认
设置意图确认语句:
测试:
意图确认其实就相当于我们平时使用APP的一个二次确认弹窗。
3.8 创建技能的小结
1、创建技能模块(商店技能或私有技能)
2、创建意图(一个技能可有多个意图)
3、输入语料(收集足够多的语料,用户可能的提问方式)
4、实体和辅助词编辑(平台提供的或自建的)
5、实体的分类(静态、动态、所见即可说)
6、填槽(哪些是必填槽,追问语是什么)
7、意图确认(是否需要二次确认)
04 问答库
语音问答(Q&A)是语音技能的简单版。不同的是,语音问答中的每一个用户输入,系统回复是确定的(可能是一个或者多个),不存在过多的逻辑处理。
下面以建一个“土味情话”的问答库为例:
一个问题,可以设置成多个回答。
一个问答库,可以设置多个问题。
这个问答库其实很简单,就是一堆“IF”组成的。
05 创建应用
前面我们说到了,一个应用就相当于一个APP,应用里的技能就相当于APP里的某个功能。如美团APP有叫外卖、买电影票等功能。
我们以创建一个家庭机器人的应用为例:
应用配置
在这里,我们可以给家庭机器人添加各种技能,可以从自定义技能、自定义问答或技能商店中添加技能。
添加刚建好的自定义技能“订机票”:
添加刚建好的自定义问答库“土情话”:
从应用商店里添加技能“股票”:
添加之后,家庭机器人就具备了这三个技能,当然你还可以添加更多的技能。
下面来测试下家庭机器人的技能。
订机票技能:
讲土情话技能:
查看股市行情技能:
因此,创建一个应用实际上就是给应用添加各种技能。
06 对AIUI平台的评价
6.1 优点
简单便捷
如果我们利用平台上已有的技能,我们只需要简单的几步,就可以创建一个看起来还挺智能的应用,即使是自己创建技能操作也很简单。
开放性
可以接入智能设备,可以接入各种服务或内容(如百科知识或者一些原创内容),也可以自定义技能,这其实是鼓励开发者在这个生态上创造内容。如果有足够多的开发者在这里开垦,那各种技能将遍地开花,讯飞开放平台也就变得无所不能了。
生态闭环
硬件和软件的闭环,底层技术与实际场景应用的闭环,通用性和自定义个性化的闭环。
6.2 缺点
不够智能
开发者做的并非真正的机器学习,而更像是原始的if—else。比如说实体“北京”,用户说“首都”、“京城”可能指的也是北京,但如果设置的语料不够丰富,没有覆盖用户的随机话语,就无法识别了。
需要大量人工维护
自定义技能需要大量的人力成本维护,比如说一个订票技能,需要用户定义哪些是必填槽,如出发地、目的地、时间,而当缺乏时还需要设置追问语。这里只是假设有3个必填槽,但实际上可能会更加复杂,比如可能用户有时需要选不同等级的仓位、选不同的航空公司、选择不同位置等等,用人工处理起来就特别的麻烦了,而且不够灵活。
局限性
目前能接入的智能硬件还是非常受限的,需要智能硬件的服务商IOT云的授权,科大讯飞平台云才能操作智能设备。也就是说这个对于个人用户来说非常的无能为力,比如说我想把我的智能音箱“天猫精灵”接入讯飞的体系就不行了。
6.3 总结
AIUI开放平台,让开发者创建一个应用非常简单,但是不够智能,并非真正意义上的机器学习。
因此对于简单的封闭域对话,我们可以通过AIUI平台简单便捷实现,但是要实现复杂的,更加智能的对话,还是需要自己踏踏实实的做机器学习。