从零开始玩人工智能-机器人服务-03
2018-01-23 19:58
405 查看
机器人服务应该是个比较容易上手的AI服务,发展也非常的快。距离我之前写的随笔没多久吧,已经从原来的独立站点,变为Azure中的Bot Services了。而且支持的机器人种类也更加清晰和增多了。 更新的Bot Service的文档可以看到,现在机器人可以分为五类。之前我尝试的应该是Basic类和Form类,而上次没来得及尝试的语义识别单列了Language类,主动触发机器人服务是Proactive类,而今天想玩的是QnA Maker类机器人。
QnA Maker的站点在:https://qnamaker.ai/ 这个站点很简洁,但是需要的信息都有了。QnA机器人应用场景类似问题和答案简单匹配,其实大部分的对话机器人和这个类似。结合其他的功能,比如Card,比如分支,就会让机器人流光溢彩。我觉得QnA应该是快速让机器人具备回答问题的最佳选择吧,至少比我上次写一堆代码来做人机交互快多了。站点提供了一张图来说明QnA机器人的逻辑,可从多种来源输入问题/回答,并将机器人服务连接到不同的频道。问题/回答可以提供索引和评分,便于机器人不断学习和优化回答。
对于QnA机器人,我初步打算做两个测试,第一,尝试使用QnA机器人建立一个KB自动答复。对于常见的问题,构建一个框架让机器人自动根据提问提供解决问题的KB文章。第二,尝试把这个机器人放到Azure的Bot Service上。 QnA Maker使用两个UUID管理不同的机器人,首先要有一个订阅ID,才能够访问QnA的服务。其次每个QnA服务都有个KB ID,这样就能把不同用处的机器人分开了。每个服务都可以对指定的用户进行授权。 为机器人准备问题/答案并训练它再简单不过了,在QnA Maker网站上就可以导入QnA的文本文件。文本文件的格式也非常简单,前面是问题,使用Tab分隔,然后是答案。导入文件后,点击“保存并训练”,导入的内容就被服务接受了。然后你在服务中就能够看到导入的问题/答案了。有了问题和答案,马上就能在TEST页面进行测试。
看到这里,估计你会说,这哪里看得出人工智能了?我写个脚本按照输入查找输出字符串不就搞定了?请仔细观察上图哦~ 第一次提问,我是按照导入的完整问题输入的,很准确的给出了预设的答案。第二次提问,我只输入了几个关键字哦,QnA服务自己进行了匹配,给出了最接近的答案。 实际上QnA服务确实会对答案进行评分,从它返回的JSON格式就能看出来。对于QnA的Service使用方法,给了一个非常好的说明站点和Swagger实现。例如,调用服务来做应答,就可以使用POST方法,具体可以参考:https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9ba9 除了在QnA站点的Test页面,使用Swagger可以也很快的验证你的机器人。
输入你的订阅ID和机器人对应的KB ID,内容类型使用JSON。
页面会按照提供的信息自动构造HTTP请求。
点击发送后,QnA Maker Bot服务就会给出响应,对于可能的响应都给出了具体说明。 方法很简单,所以写一个Python的实现也不难(虽然Pylint给示例代码打了个无比负的分哈哈)
可以看到,代码返回的HTTP响应和之前Swagger测试的一致,同样包含问题、答案和评分。 回到导入问题/答案导入的环节。需要注意的是,开始我发现每次导入文件时,中文都变成了乱码,我立即意识到,默认的notepad使用的ANSI编码可能有问题。改成UNICODE就正常了。 除了使用TXT导入之外,QnA Maker的Service还支持添加URL,对于自动导入以前的QnA页面也非常方便。这个方式我是在测试Create Knowledge Base的POST方法时发现的,示例直接添加了文档的QnA页面:https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs 我还奇怪它是如何识别问题和答案的,后来发现起作用的是问号~ 为了验证,我把TXT文本改成类似的格式,导入也成功了。 限于篇幅,后续再继续写Azure Bot Service部分和学习Node.JS部分。
Template | Description |
---|---|
Basic | Creates a bot that uses dialogs to respond to user input. |
Form | Creates a bot that collects input from a user via a guided conversation that is created using FormFlow in C# or waterfalls in Node.js. |
Language understanding | Creates a bot that uses natural language models (LUIS) to understand user intent. |
QnA Maker | Creates a bot that uses the QnA Maker service to answer user’s FAQs. |
Proactive | Creates a bot that uses Azure Functions to alert users of events. |
对于QnA机器人,我初步打算做两个测试,第一,尝试使用QnA机器人建立一个KB自动答复。对于常见的问题,构建一个框架让机器人自动根据提问提供解决问题的KB文章。第二,尝试把这个机器人放到Azure的Bot Service上。 QnA Maker使用两个UUID管理不同的机器人,首先要有一个订阅ID,才能够访问QnA的服务。其次每个QnA服务都有个KB ID,这样就能把不同用处的机器人分开了。每个服务都可以对指定的用户进行授权。 为机器人准备问题/答案并训练它再简单不过了,在QnA Maker网站上就可以导入QnA的文本文件。文本文件的格式也非常简单,前面是问题,使用Tab分隔,然后是答案。导入文件后,点击“保存并训练”,导入的内容就被服务接受了。然后你在服务中就能够看到导入的问题/答案了。有了问题和答案,马上就能在TEST页面进行测试。
看到这里,估计你会说,这哪里看得出人工智能了?我写个脚本按照输入查找输出字符串不就搞定了?请仔细观察上图哦~ 第一次提问,我是按照导入的完整问题输入的,很准确的给出了预设的答案。第二次提问,我只输入了几个关键字哦,QnA服务自己进行了匹配,给出了最接近的答案。 实际上QnA服务确实会对答案进行评分,从它返回的JSON格式就能看出来。对于QnA的Service使用方法,给了一个非常好的说明站点和Swagger实现。例如,调用服务来做应答,就可以使用POST方法,具体可以参考:https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9ba9 除了在QnA站点的Test页面,使用Swagger可以也很快的验证你的机器人。
输入你的订阅ID和机器人对应的KB ID,内容类型使用JSON。
页面会按照提供的信息自动构造HTTP请求。
点击发送后,QnA Maker Bot服务就会给出响应,对于可能的响应都给出了具体说明。 方法很简单,所以写一个Python的实现也不难(虽然Pylint给示例代码打了个无比负的分哈哈)
可以看到,代码返回的HTTP响应和之前Swagger测试的一致,同样包含问题、答案和评分。 回到导入问题/答案导入的环节。需要注意的是,开始我发现每次导入文件时,中文都变成了乱码,我立即意识到,默认的notepad使用的ANSI编码可能有问题。改成UNICODE就正常了。 除了使用TXT导入之外,QnA Maker的Service还支持添加URL,对于自动导入以前的QnA页面也非常方便。这个方式我是在测试Create Knowledge Base的POST方法时发现的,示例直接添加了文档的QnA页面:https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs 我还奇怪它是如何识别问题和答案的,后来发现起作用的是问号~ 为了验证,我把TXT文本改成类似的格式,导入也成功了。 限于篇幅,后续再继续写Azure Bot Service部分和学习Node.JS部分。
相关文章推荐
- 从零开始玩人工智能-机器人服务-01
- 从零开始玩人工智能-机器人服务-05
- 从零开始玩人工智能-机器人服务-02
- 从零开始玩人工智能-机器人服务-04
- 从零开始玩人工智能—推荐服务
- 从零开始玩人工智能-人脸 API-03
- 从零开始,如何阅读一篇人工智能论文,及构建论文与代码的实现
- 从零开始写C# MVC框架之--- 服务接口与实现
- 关于未来全自动快餐机器人服务系统架构
- 看来人工智能不可阻挡,将和网络与计算机一样服务于各行各业!
- 人工智能:用AIML写一个机器人
- Android 03 Bound Service--之被绑定的服务
- 传感器、大数据、机器学习、人工智能和机器人是怎样联系在一起的?
- Openstack 实战讲解之-----------03-控制节点服务配置 推荐
- Amazon、Google、 Microsoft和IBM如何将人工智能作为一项服务出售
- 人工智能之Python03 数字(Number)与字符串(str)
- iOS.定位服务与地图应用.03.地理信息编码查询
- 人工智能:医用机器人能否为医生减少工作负担?
- 2018展望:人工智能与机器人行业的危与机(上)
- 《从零开始自学iOS》_03