几大智能语义平台调研

2,298 阅读8分钟

几个平台

此次主要是调研了以下五家智能语义平台:

  1. 阿里云小蜜(beebot) www.aliyun.com/product/beebot
  2. 百度度秘(DuerOS)dueros.baidu.com
  3. 腾讯文智中文语义平台(xiaowei) xiaowei.qcloud.com
  4. 微软智能自然语言理解平台(luis) www.luis.ai

平台概况

image


机器人包含的场景

beebot

云小蜜是一款面向开发者的会话机器人,支持在不同的消息端上实现基于自然语言处理(NLP)的智能会话。包含以下常用领域:

  1. 公司采购
  2. 办公软件系统
  3. 办事指南
  4. 报销政策
  5. 职业发展
  6. 发票知识
  7. 基础行政
  8. 公司设施

DuerOS

百度的DuerOS并不仅仅只是提供简单的机器人,而更像是一个操作系统,提供了软件和硬件的各种接口开发。主要有三大类:

  1. 自定义技能,提供了一个平台可以自己定义技能,自定义意图和词典,对用户的输入进行意图识别,然后调用意图对应的服务,实现对话式技能。比如输入语言“帮我查查附近美食”,对应意图为“查找美食”,对应的服务接口是“www.xxx.xxx/search” ,则查到结果后返回给用户。
  2. 智能家居技能,这个技能主要是面对智能设备厂商的技能,可以很方便对接智能家居。将用户说的话或者文本输入转到对应操作上。
  3. 内容播报技能,主要为内容生产者定制,比如将需要播报的信息文本上传,然后用户就可以点播文本新闻或语音新闻。

xiaowei

小微客户机器人适用场景:用户导入业务领域知识库信息,建立机器人知识信息基础。

  1. 家庭场景,家庭内带屏幕设备接入实现对话交互。
  2. 车载场景,语音与汽车而结合,达到控制导航、音乐播放等语言交互。
  3. 运动场景,语音唤醒耳机及APP,实现互动。

luis

  1. 出租车领域,出租车预定之类的意图。
  2. 地点领域,包括了各种地点相关意图。
  3. 天气领域,包括天气报告和预测意图。
  4. 提醒领域,包括提醒功能的创建、修改和查询意图。
  5. 日程领域,包括日程主题相关的规划管理意图。
  6. 智能家居领域,提供控制灯光、家电等操作意图。
  7. 笔记领域,提供笔记创建、查询和修改等操作意图。
  8. 网页导航领域,提供网页导航相关的功能意图。
  9. 翻译领域,提供翻译语言相关的意图。
  10. 设备控制领域,包括控制设备的意图。
  11. 通讯领域,提供与电话、电子邮件等相关的意图。
  12. 音乐领域,提供与音乐播放相关的意图。
  13. 餐厅领域,提供餐厅预定意图。

如何使用

beebot

  1. 注册阿里云账号并登陆。
  2. 创建机器人并配置机器人基本信息。
  3. 选择需要内置的领域知识,其中包括公司采购、办公软件系统、办事指南、报销政策、基础行政、职业发展、发票知识等等。
  4. 管理知识库,新增词条。
  5. 添加词条关联问题,当用户输入的问题匹配到词条时会展示关联的问题。
  6. 自定义意图,并且输入该意图用户可能的多种问法。
  7. 标注实体,对用户问法语句中相关的实体进行标注。
  8. 配置用户回复是否以文本回复,还是配置到我们自己的服务接口上处理后再返回给用户。
  9. 上线发布。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

DuerOS

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

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

xiaowei

  1. 注册腾讯云并登陆。
  2. 申请小微机器人。
  3. 创建机器人。
  4. 上传知识库。
  5. 配置服务接口。
  6. 创建意图,同时配置槽位。
  7. 训练。
  8. 上线。

luis

  1. 微软账号登陆。
  2. 创建一个app,其中会有culture选择,它包含了很多国家可以选择,根据不同国家文化理解语言文字。
  3. 可以选择自己需要的领域,领域包含了很多意图,每个意图包含了很多提问。
  4. 创建意图,根据自己业务需要自己定义意图。
  5. 创建实体,实体可以用来对问题进行序列标注。
  6. 一条条添加业务问题,即是常见的业务咨询语句。
  7. 将每个业务问题咨询语句中相关的实体标出来,后续训练后用于实体提取。
  8. 开始训练模型。
  9. 完成训练,开始使用模型预测意图及实体提取。
  10. 发布模型,使用提供的url接口进行访问。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

集成方式

beebot

  1. 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

  1. HTTP协议接口。
  2. 服务端SDK方式,支持PHP。
  3. 安卓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

  1. 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内核等。