您的位置 首页 php

「技术」如何编写智能聊天机器人——API.AI 入门(一)

有人问我,如何快速上手编写智能聊天机器人,应该怎么回答呢,于是打算从 api .AI 聊起, Google 在2016年9月收购了这家公司,很多人忽然正视起这家公司,但仍很难说明白这到底是一家什么样的公司。

简单的说,API.AI 是一家B2D(business to developer)公司,是一个为开发者提供服务的机器人搭建平台,帮助开发者迅速开发一款bot并把发布到各种message平台上。

介绍

官方的解释是这个样子的:

API.AI is a natural language understanding platform that makes it easy for developers (and non-developers) to design and integrate intelligent and sophisticated conversational user interfaces into mobile apps, web applications, devices, and bots.

Our goal is to make the process of creating and integrating sophisticated conversational user interfaces as simple as possible.

我觉得我的解释会更清楚一点:

API.AI 是一个自然语义理解平台,换句话说, 将用户说的【人话】 翻译成一个【程序能读懂】的语言 ,以JSON的格式返回结果,有参数,有值。

TIPS: 自然语言理解(NLU):natural language understanding

下图很好的解释了API.AI 是如何与其他模块配合处理数据的:

用户发送一个query,api.ai会解析出用户的真实 Intent ,并返回成json方便程序处理。举个例子,用户说’我饿了,想吃东西了,中午应该吃什么呢?’ api.ai 就会告诉程序执行’查询餐厅‘ 功能。

识别intent是通过开发者不断在intent中录入信息,并进行数据训练实现的。

API.AI作为一个聊天机器人开发框架,提供了诸如语音识别(主要依靠调用第三方框架实现,api.ai 并没有这个功能)、意图识别、上下文管理等功能,并且允许开发者针对特定机器人的独特需求提供领域知识,从而让开发者可以定制、强化聊天机器人的智能。

接入方式

从上述的介绍中,我们了解到,api.ai 智能帮助开发者实现自然语言理解,将 【人话】 翻译成 【程序话】 ,之后开发者需要实现的逻辑还是需要开发者自行完成的。接入平台有一下3种方式:

  • GET/POST 请求
  • 使用API.AI提供的SDK实现
  • 支持Android,iOS, Cordova ,HTML, Java Script,Node.js,C#.NET,Unify, Xamarin ,C++,Python,Ruby,php,Epson Moverio,Botkit,Java
  • 一键接入主流的message平台
  • 很遗憾,这些主流的message平台如Facebook Messenger,Slack,Skype, Kik ,Line,Telegram,Amazon Alexa,Twitter等都需要翻墙才能看到,但是github上有一些很赞的源码可供学习

输入

API.AI 支持文本输入,如果希望进行语音输入,推荐使用第三方平台将语音转换成问题,推荐下面几个库:

  • Google Speech
  • MicrosoftSpeech
  • 科大讯飞–讯飞开放平台
  • 百度语音
  • 搜狗语音云开放平台

输出

API.AI 本身并不支持语音输出,如果希望实现语音输出,可以使用刚刚推荐的语音识别库进行转换,但是API.AI 除了支持文本输出外,还支持一些富文本的输出,如图片。

Quick Start

1. 新建Agent

agent可以理解成一个chatbot应用,类比一个APP可能会比较好理解一些。一个agent是为了完成chatbot的一系列特定任务而组成的集合。

API.AI已经支持中文了,记得创建的时候在LANGUAGE中勾选 中文(简体) ,DEFAULT TIME ZONE 选择 (GMT+8:00)PRC ,语言一旦选择以后是不能更改的,之后你就可以得到你的API KEY和开发者的access token了。

2.新建Entities

Entities 可以理解成一个规范的自然语言短语集合,通常为应用所在领域的关键词、术语等。

新建agent之后需要创建entities, 进而可以从用户的自然语言提取关键词。每个entities的值在不同的场景下有不同的意义,他们确认那些信息存入JSON中并赋予不同的值。

举个例子,一个 披萨 店中有一个entity叫’品种‘,他代表了不同的披萨类别,不同的披萨类别可能有一些近义词,这些近义词都会映射到相同的JSON键中。

3.新建Intent

一个intent可以看成将用户的输入解析成JSON的过程。

同样,我们使用披萨店的例子,看一个’点pizza‘的 intent

我们注意到,所有的intent都有一个默认的machine learning的可选项,他表示你的agent将会从添加到intent的例子进行自我训练,进而更加适应用户对类似问题的提问。

TIPS:添加到intent中的“用户提问”越是多样化,你的机器人就越聪明。

4.测试Agent

开发者页面的右侧是专门测试当前Agent的地方,并可以点击查看返回的JSON

如果用户的输入被解析成功,就可以看到用于处理它的intent以及提取到的信息。

如果输入匹配失败,你可以将它添加到它应属的intent中,或者使用’train‘工具查找到所有不匹配的输入,并通过它对agent进行训练。

5. 接口对接

在应用设置中找到token,并通过上述介绍的三种方式将agent接入到你的应用中,为用户提供更多的服务。API.AI 提供了下面三种工具:

  • SDK
  • 一键集成(针对被墙的app,你懂得。。)
  • Webhook

写在最后

近期我在使用API.AI 为我的客户搭建一个订票服务的应用,我会接下来在文章中以此为案例具体介绍API.AI 中的关键模块,包括agents,intent,entity,train等。

恩,我坚信在不就的将来,我连这个应用都不需要自己搭建了,因为3月30日的时候,API.AI 加入了下面的Prebuild Agent, 不过现在并不支持中文。

最后的最后,有人会问,API.AI 中这么多英文,国内有木有相关的平台,近期发现了一个还不错的平台: 一个AI () 如果有兴趣也可以去看看。

BotOrange

用最简单语言分享chatbot 产品 & 技术

转载请注明出处

作者Github:

文章来源:智云一二三科技

文章标题:「技术」如何编写智能聊天机器人——API.AI 入门(一)

文章地址:https://www.zhihuclub.com/150982.shtml

关于作者: 智云科技

热门文章

网站地图