几个平台
此次主要是调研了以下五家智能语义平台:
- 阿里云小蜜(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
<?xml version="1.0" encoding="UTF-8"?>
<!—结果的根结点-->
<接口名称+Response>
<!—返回请求标签-->
<RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
<!—返回结果数据-->
</接口名称+Response>
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格式报文,其中包括各种意图的可能性得分,还有提取到的实体。
westus.api.cognitive.microsoft.com/luis/v2.0/a…
{
"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的语义平台,它们基本都是提供一个意图识别以及对接服务的平台,让开发者自己配置各种意图及表达,帮用户的表达理解后转发到直接的服务接口上。其中也涉及大量业务数据添加及标注工作,但它内部集成了一些通用模块,而且根据开发者输入的表达生成了更多类似的语句问法,能包含更多类型的提问,但生成的语句还是需要我们自己去标注。
专注于人工智能、读书与感想、聊聊数学、计算机科学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等。