当前位置: 首页 > news >正文

超越NLP:构建聊天机器人面临的8个挑战

过去五年里,Microsoft、IBM、Google和Amazon等公司都推出了令人惊叹的聊天机器人框架,分别都是Microsoft Bot Framework、IBM Watson Conversation、Google API.ai和Amazon Lex,这些工具使开发人员构建真正理解人类语言,以自然的方式与人交谈的软件。

自然语言处理(NLP)是这些框架的主角,它将聊天机器人从笨拙的决策树带到一个以认知流量为特征的新经验层面,并引入了新的应用浪潮。NLP逐渐地民主化、以及在Viber、Messenger和iMessage等聊天渠道上的精细化,使这些应用程序的受欢迎程度又提升了一个高度。

尽管NLP功能很强大,但它并不能解决与构建聊天机器人相关的所有挑战。NLP拥有的所有,只能为企业和消费者提供所需整体体验的一部分。将机器人聊天体验整合到业务流程中以解决问题还需要做更多工作。

超越NLP:构建聊天机器人面临的8个挑战

聊天机器人的结构可以概念化为以下八个部分:

1. 聊天界面。比如Messenger、iMessage或者是类似于这些聊天工具的自定义用户界面。许多聊天机器人都内置这样的接口,或直接集成到适合客户端的本地通道中。这有多层次的复杂性。

* 仅文本:仅由用户与之交互的文本框和标签组成的界面。

* 仅文本和语音:允许用户能语音输入的界面。这种情况增加了复杂性,使用了能够访问捕获语音和集成语音到文本组件的麦克风。

* 仅声音:类似于Siri、Alexa或Cortana的体验。

* 声音和视觉:类似于Alexa Show。

* 文本、语音和视觉:例如iMessage体验,用户可以在聊天的环境中键入、说话并与可视化UI小部件交互。开发人员面临的挑战是使聊天机器人能够在正确的环境下提供正确的用户界面交互。

2. NLP组件该组件能理解自由形式的文本或语音表达,并将其解析为意图和参数。但NLP只能帮助您的应用程序将一个句子分解为一组意图,您可以以编程方式对意图采取操作。虽然NLP发现对话意图,但软件开发人员要自己思考如何对这些意图作出响应或采取行动。

3. 机器人的上下文继承。为了通过聊天机器人进行类似于人的交互,开发人员必须始终维护对话的上下文或内存。一些聊天机器人需要维护每个用户的上下文,以便为客户提供个性化的体验。例如,通过聊天机器人预约了医生,那么用户希望谈话能够记住这个背景,并在能提醒即将到来的预约。更高级的聊天机器人可能记住用户的名字、电子邮件以及地址等等。

4. 循环、分割和递归。这往往是大多数开发聊天机器人的复杂性所在。当用户开始与聊天机器人进行更多的开放式对话时,聊天机器人需要能够将谈话分离开来,或是循环回到以前的特定对话中,这些都很难实现,很多聊天机器人都不支持这些功能。

5. 与传统系统集成。根据您正在构建的聊天机器人类型,可能需要使用外部系统或信息源。如果您正在为一个企业构建一个聊天机器人,那么您很有可能使用一个CRM系统、ERP应用程序、甚至是一个需要从中收集信息或将数据推送到其中的人力资源系统。

6. 分析。与当今任何的软件一样,分析是了解聊天机器人工作的关键。分析可以帮助您了解参与、偏差和错误,并提供高质量或更个性化的体验。

7. 切换这可能不是所有聊天机器人都必备的,但是如果您正在构建聊天机器人与客户服务机构一起工作的项目,那么需要考虑复杂交互情况下机器人和人之间的交接。

8. 性格、语气和角色。这些是是聊天机器人更人性化的一些软特性。

从本质上讲,NLP并没有解决在开发现实业务应用程序时通常会面临的挑战。它只是利用聊天界面提供更广泛和更令人满意的体验。

许多新聊天机器人厂商正尝试通过引入更丰富的声明性语法来解决这些挑战,使开发人员能够定义机器人的目标,并处理与聊天机器人框架内的系统集成、对话流和持久性管理相关的大量繁重工作。

相关文章:

  • 运维学python之爬虫基础篇(二)urllib模块使用
  • 作为java初学者,适合看《java编程思想》这本书吗?
  • Is your JDeveloper Slow? - It shouldn't be!(转)
  • javascript面向对象系列第四篇——OOP中的常见概念
  • Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide
  • android下使用https协议发请求
  • 【转】Android开发之线程池使用总结
  • 小知识三、USerDefault我换个姿势来实现
  • 581 Shortest Unsorted Continuous Subarray
  • v4l2 Camera详细设置【转】
  • iOS核心动画高级技术(十三) 高效绘图
  • ant任务调用和参数传递
  • 好玩的 RAC
  • Matlab2013a许可证过期问题,反复提示激活
  • 北京司法网拍首尝线下预展 海淀法院900万红木家具亮相京东秋拍
  • 【剑指offer】让抽象问题具体化
  • 0基础学习移动端适配
  • CSS3 变换
  • css布局,左右固定中间自适应实现
  • Meteor的表单提交:Form
  • Spring框架之我见(三)——IOC、AOP
  • Zepto.js源码学习之二
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于webpack 的 vue 多页架构
  • 计算机常识 - 收藏集 - 掘金
  • 技术胖1-4季视频复习— (看视频笔记)
  • 近期前端发展计划
  • 区块链将重新定义世界
  • 算法---两个栈实现一个队列
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 异常机制详解
  • 终端用户监控:真实用户监控还是模拟监控?
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (九)信息融合方式简介
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (轉)JSON.stringify 语法实例讲解
  • .Net IOC框架入门之一 Unity
  • .NET Project Open Day(2011.11.13)
  • .NET Reactor简单使用教程
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • @AliasFor注解
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce