几大智能语义平台调研
几个平台
此次主要是调研了以下五家智能语义平台:
-
阿里云小蜜(beebot) www.aliyun.com/product/beebot
-
百度度秘(DuerOS)dueros.baidu.com
-
腾讯文智中文语义平台(xiaowei) xiaowei.qcloud.com
-
微软智能自然语言理解平台(luis) www.luis.ai
平台概况

机器人包含的场景
beebot
云小蜜是一款面向开发者的会话机器人,支持在不同的消息端上实现基于自然语言处理(NLP)的智能会话。包含以下常用领域:
-
公司采购
-
办公软件系统
-
办事指南
-
报销政策
-
职业发展
-
发票知识
-
基础行政
-
公司设施
DuerOS
百度的DuerOS并不仅仅只是提供简单的机器人,而更像是一个操作系统,提供了软件和硬件的各种接口开发。主要有三大类:
-
自定义技能,提供了一个平台可以自己定义技能,自定义意图和词典,对用户的输入进行意图识别,然后调用意图对应的服务,实现对话式技能。比如输入语言“帮我查查附近美食”,对应意图为“查找美食”,对应的服务接口是“www.xxx.xxx/search” ,则查到结果后返回给用户。
-
智能家居技能,这个技能主要是面对智能设备厂商的技能,可以很方便对接智能家居。将用户说的话或者文本输入转到对应操作上。
-
内容播报技能,主要为内容生产者定制,比如将需要播报的信息文本上传,然后用户就可以点播文本新闻或语音新闻。
xiaowei
小微客户机器人适用场景:用户导入业务领域知识库信息,建立机器人知识信息基础。
-
家庭场景,家庭内带屏幕设备接入实现对话交互。
-
车载场景,语音与汽车而结合,达到控制导航、音乐播放等语言交互。
-
运动场景,语音唤醒耳机及APP,实现互动。
luis
-
出租车领域,出租车预定之类的意图。
-
地点领域,包括了各种地点相关意图。
-
天气领域,包括天气报告和预测意图。
-
提醒领域,包括提醒功能的创建、修改和查询意图。
-
日程领域,包括日程主题相关的规划管理意图。
-
智能家居领域,提供控制灯光、家电等操作意图。
-
笔记领域,提供笔记创建、查询和修改等操作意图。
-
网页导航领域,提供网页导航相关的功能意图。
-
翻译领域,提供翻译语言相关的意图。
-
设备控制领域,包括控制设备的意图。
-
通讯领域,提供与电话、电子邮件等相关的意图。
-
音乐领域,提供与音乐播放相关的意图。
-
餐厅领域,提供餐厅预定意图。
如何使用
beebot
-
注册阿里云账号并登陆。
-
创建机器人并配置机器人基本信息。
-
选择需要内置的领域知识,其中包括公司采购、办公软件系统、办事指南、报销政策、基础行政、职业发展、发票知识等等。
-
管理知识库,新增词条。
-
添加词条关联问题,当用户输入的问题匹配到词条时会展示关联的问题。
-
自定义意图,并且输入该意图用户可能的多种问法。
-
标注实体,对用户问法语句中相关的实体进行标注。
-
配置用户回复是否以文本回复,还是配置到我们自己的服务接口上处理后再返回给用户。
-
上线发布。








DuerOS
-
注册百度账户,然后登陆。
-
到后台创建自己的意图,其中包括了意图名、常见表达语句(及哪些语句对应到该意图)、表达语句的槽位、技能回复(这里包括自定义回复和服务配置满足两种类别,自定义回复即是自己将文本答案填进去,而服务配置满足则是duer会将意图识别后的数据转发到我们的服务器接口上,我们再自己处理)。另外,还可以定义多轮对话,但每轮对话都要我们自己设计好。
-
创建自己的词典,有很多内置的词典可以用,包括国家、中国城市、中国省份、区/县/郡、村庄/乡镇、颜色、动物、国外城市、景点、节日、电影、音乐、名人、植物、电视连续剧、综艺节目、公交、地铁、成语、百家姓、品牌等等。
-
开始训练,DuerOS会帮我们生成很多不同的语句表达,比如我们定义的是“介绍下电信套餐”,它会生成几十条类似的问法,“说明下电信套餐”、“简介下电信套餐”等之类的,但其中标注工作也还是得我们自己做,就是要给这几十条生成的类似问题的语句进行标注。
-
配置服务接口信息。
-
测试,发布。







xiaowei
-
注册腾讯云并登陆。
-
申请小微机器人。
-
创建机器人。
-
上传知识库。
-
配置服务接口。
-
创建意图,同时配置槽位。
-
训练。
-
上线。
luis
-
微软账号登陆。
-
创建一个app,其中会有culture选择,它包含了很多国家可以选择,根据不同国家文化理解语言文字。
-
可以选择自己需要的领域,领域包含了很多意图,每个意图包含了很多提问。
-
创建意图,根据自己业务需要自己定义意图。
-
创建实体,实体可以用来对问题进行序列标注。
-
一条条添加业务问题,即是常见的业务咨询语句。
-
将每个业务问题咨询语句中相关的实体标出来,后续训练后用于实体提取。
-
开始训练模型。
-
完成训练,开始使用模型预测意图及实体提取。
-
发布模型,使用提供的url接口进行访问。









集成方式
beebot
-
HTTP协议的API接口。
https://chatbot.cn-shanghai.aliyuncs.com/ ?Format=xml &Version=2017-10-11 &Signature=Pc5WB8gokVn0xfeu%2FZV%2BiNM1dgI%3D &SignatureMethod=HMAC-SHA1 &SignatureNonce=15215528852396 &SignatureVersion=1.0 &AccessKeyId=key-test &Timestamp=2017-10-11T12:00:00Z
4C467B38-3910-447D-87BC-AC049166F216
DuerOS
-
HTTP协议接口。
-
服务端SDK方式,支持PHP。
-
安卓SDK。
{ "event": { "header": { "namespace": "ai.dueros.device_interface.text_input", "name": "TextInput", "messageId": "f894055e-a81e-4b4d-a97e-72c4d3a9ada4", "dialogRequestId": "720cc607-cff9-411e-83f4-03daca331ef3" }, "payload": { "query": "介绍下电信套餐" } }, "clientContext": [ { "header": { "namespace": "ai.dueros.device_interface.location", "name": "GpsState" }, "payload": { "longitude": null, "latitude": null, "geoCoordinateSystem": "BD09LL" } } ], "debug": { "bot": { "id": "ec773bfc-f907-bfae-160b-b6ec2250fd5d" }, "simulator": true } }
{ "directive": { "header": { "namespace": "ai.dueros.device_interface.screen", "name": "RenderCard", "dialogRequestId": "720cc607-cff9-411e-83f4-03daca331ef3", "messageId": "NWE3MTNmMmU1ZWJiZTE0NTE=" }, "payload": { "type": "TextCard", "content": "请问套餐编号是什么?", "token": "eyJib3RfaWQiOiJ1cyIsInJlc3VsdF90b2tlbiI6IjBhYTU3MGM0LWNhODQtNGEzYS05NmM2LTBkOTAwM2Y3YjcyNSIsImJvdF90b2tlbiI6Im51bGwifQ==" } } }
xiaowei
-
Rest API
https://yun.tim.qq.com/v3/prophet/$command?appid=$appid&sdkappid=$sdkappid&identifier=$identifier&usersig=$usersig&random=999999&contenttype=json
{ "botid": "third party account", "auth": "", "from_user_name": "小明", "question": "发送消息失败", "max_answer_num": 10 }
luis
只提供url接口,所有应用自己通过http协议进行访问。比如下面的访问,系统会返回一串json格式报文,其中包括各种意图的可能性得分,还有提取到的实体。
https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/9d499f8a-1678-4573-b462-e52341b8d213?subscription-key=bb71fdfb864a4b839696b43433ba7862&verbose=true&timezoneOffset=0&q=%E6%9C%89%E6%B2%A1%E6%9C%89%E6%B5%81%E9%87%8F%E5%8C%85%E6%9C%88%E5%A5%97%E9%A4%90
{ "query": "有没有流量包月套餐", "topScoringIntent": { "intent": "电信业务咨询", "score": 0.9712404 }, "intents": [ { "intent": "电信业务咨询", "score": 0.9712404 }, { "intent": "None", "score": 0.2136391 }, { "intent": "查找餐馆", "score": 0.0577361658 } ], "entities": [ { "entity": "包月套餐", "type": "套餐", "startIndex": 5, "endIndex": 8, "score": 0.832137644 } ] }
总结
-
关于数据量,都是需要自己去添加定义大量业务问题。
-
关于训练,luis则需要自己对添加的业务问题进行训练,然后才能使用模型,而且应该是在浏览器上执行训练,这样节省了他们服务器资源。
-
关于效果,会有如下效果,“有没有流量包月套餐”和“餐有量包没流有月套”效果是一样的。
-
关于平台方式,都提供了类似的后台给用户自己添加业务问题,以此将自己抽离出来。
-
关于多轮对话,两个平台都只提供一问一答形式,不支持多轮对话。
-
关于对话多样性,两个平台都需要自己对一个问题添加多个回复,以此实现多样性,但这种方式也是比较生硬。
-
关于bat的语义平台,它们基本都是提供一个意图识别以及对接服务的平台,让开发者自己配置各种意图及表达,帮用户的表达理解后转发到直接的服务接口上。其中也涉及大量业务数据添加及标注工作,但它内部集成了一些通用模块,而且根据开发者输入的表达生成了更多类似的语句问法,能包含更多类型的提问,但生成的语句还是需要我们自己去标注。