目录

一. 自然语言聊天

二. 任务驱动的多轮对话

三. 问答系统

四. 推荐

五. 中控决策模块(意图识别)


一. 自然语言聊天

顾名思义,就是不局限话题的聊天,即在用户的 query 没用明确的信息或服务获取需求(如 social dialogue)时系统做出的回应。自然语言聊天在现有的人机对话系统中,主要起到拉近距离,建立信任关系,情感陪伴,顺滑对话过程(例如在任务类对话无法满足用户需求时)和提高用户粘性的作用。

二. 任务驱动的多轮对话

用户带着明确的目的而来,希望得到满足特定限制条件的信息或服务,例如:订餐,订票,寻找音乐、电影或某种商品等。因为用户的需求可以比较复杂,可能需要分多轮进行陈述,用户也可能在对话过程中不断修改或完善自己的需求。此外,当用户的陈述的需求不够具体或明确的时候,机器也可以通过询问、澄清或确认来帮助用户找到满意的结果。因此,任务驱动的多轮对话不是一个简单的自然语言理解加信息检索的过程,而是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应该采取的最优动作(如:提供结果,询问特定限制条件,澄清或确认需求,等等)从而最有效的辅助用户完成信息或服务获取的任务。

三. 问答系统

侧重于一问一答,即直接根据用户的问题给出精准的答案。问答更接近一个信息检索的过程,虽然也可能涉及简单的上下文处理,但通常是通过指代消解和 query 补全来完成的。问答系统和任务驱动的多轮对话最根本的区别在于系统是否需要维护一个用户目标状态的表示和是否需要一个决策过程来完成任务。由于人们使用语言的随意性和多样性,带来了问题理解的困难。给定一个问题,电脑要理解问题的类型(事实类,定义类,选择性,观点类等)和答案的类型(人、地点、机构、定义、电影名字,文字序列等等)。比如:

事实类问题:“谁是奥巴马的夫人?”

定义类问题:“什么是操作系统?”

YES-NO类问题:“萨达姆还活着吗?”

观点类问题:“多数美国人对枪支管制的看法是什么?”

比较类问题:“诺基业手机和苹果手机有什么区别?”

问答系统可以是针对某一个封闭领域的,也可以是无领域限定的, 而后者的难度更大。为了理解问题,计算机需要语义解析,把用户输入的问句转换为一个有结构的语义表达式,然后到相关数据和知识库中寻找答案。 很多时候,可能会有多个看似可行的答案候选,问答系统需要根据一个基于机器学习获得的排序系统进行优选。

问答系统的答案可以从结构化的知识库,或者非结构化的自然语言文档集合来获得,如web,社会关系网络,新闻等。知识库适合回答事实类的问题,而基于web的问答系统,也就是把问题丢给搜索引擎,在搜索结果里面直接抽取答案,适合于回答时效性很强的问题,如新闻类问题或很复杂的问题。社会关系网络适合回答主观类的问题,譬如“如何考入哈佛大学”,“怎样才能学好日语”等。由于这类问题在社区、社会关系网络里面有很多的讨论,经过信息抽取和问题匹配之后,可以用来回答相同或者相似的问题。除了以上三种智能体之外,还可以考虑众包智能,就是由系统把问题导引给该类问题的人(专家、附近的人、社会关系网络的好友)来完成。如能巧妙利用多智能架构,即可大幅度提升问答系统的精确度和覆盖面。

四. 推荐

前面的开放域聊天,任务驱动的多轮对话和问答系统本质上都是被动的响应用户的 query,而推荐系统则是根据当前的用户 query 和历史的用户画像主动推荐用户可能感兴趣的信息或者服务。

对话系统是个庞杂的系统模块,技术分解图如下:底层是依赖的基础技术系列,向上一层是利用基础技术构造的基础技术模块,中间是利用基础技术模块构造的子系统,上面两层是将子系统进行封装对外提供打包服务api应用层。

五. 中控决策模块(意图识别)

上述的四类系统各自要解决的问题不同,实现技术迥异,用一套系统实现所有功能是不现实的。通常要将上述功能整合在一个应用中,我们还需要一个中控决策模块。这个模块不仅负责需求和问题的分类,还包括任务之间的澄清、确认和跨领域的引导,所以最理想的技术实现也应该通过一个决策过程来完成。它相当于大脑,基于对用户对话的分析判断,发现并满足用户的直接和潜在需求,判断用哪个功能满足用户需求,同时在多次对话中,多维度建立用户画像,商业应用的人机对话系统根据应用的场景不同既可以是同时综合上述四类问题的复杂系统,也可以单纯解决其中一类问题。例如大家熟知的苹果 Siri、微软 Cortana、百度度秘等语音助手类产品就是集合上述四类问题综合系统(但是 Siri 和 Cortana 的聊天功能并不能算开放域,而是人工为高频的 query 编辑了对应的话术,当用户的聊天 query 不在预先配置的范围内时,系统则回复“我听不懂”之类的固定答案。而度秘的开放域聊天则是应用了更先进的基于海量数据的检索式聊天技术)目前的智能客服类系统则多以解决问答和推荐类问题为主;微软推出的“小冰”,包括后继推出的同类型产品日文版 Rinna、英文版 Zo 和 Ruuh,主打的就是开放域聊天;而许多订票,订酒店类的对话系统则是任务驱动的多轮对话的典型应用。

人们在交流过程中,聊天、多轮对话、问答的技能是穿插进行的。同时,为了体现多样性,答案所采用的句式,以及聊天的回复风格要根据场景和用户的特点发生变化。在微软小冰中,除了需要建立问答系统和聊天系统之外,还要根据用户输入的句子,决定是进入聊天还是进入问答。比如:

人: 你都不理我了。(聊天)

小冰: 我怎么不理你。(聊天)

人: 荣耀6plus多少钱? (问答)

小冰: 京东大哥说过是2,899元哦。(问答)

人: 你知道的真多呀。(聊天)

小冰: 我应该的呀。(聊天)

人: 你知道李敏镐吗 (问答)

小冰: 【一张李敏镐的图片】(问答)

而小冰的回复不仅仅要看当前的句子,还要看聊天的历史。比如另外一个例子:

人:请推荐一款手机。

小冰:你看看这款如何? 华为荣耀3X畅玩版,1099元。

人:我不要华为的,我要iPhone的。(系统需要知道产品类别没变,但是品牌变化)

小冰:那你看看这款iPhone如何呢?iPhone6, 5988元,64GB,金色。

人:我要能支持128G存储空间的。(系统要知道产品类别和品牌没有变化)

小冰:我看看。那你看看这款?iPhone6, 6488元,128GB。

人:算了,我还是要华为的吧。(系统需要知道产品类别没变,但是品牌变化)

小冰:那么这款华为P8,最新款,3800元。怎么样?

这就是系统需要对用户的输入进行理解以判断用户的意图。比如:“给我推荐一款性价比高的手机,要诺基亚的。”在对用户意图的理解基础上,要进行必要的对话,以便确认所有必要的信息,来决定接下来的动作,比如推荐,搜索,聊天还是问答。不过这个问题挑战也很大,它是目前自然语言理解的最核心的问题。我们需要耐心地循序渐进地推进研究。


[科普]任务驱动的多轮对话系统

自然语言理解:将自然语言的 query 识别成结构化的语义表示。在对话系统中,这个结构化的语义表示通常被称作 dialogue act 由 communicative function 和 slot-value pairs 组成,其中 communicative function 表示 query 的类型(如:陈述需求,询问属性,否定,选择疑问,等等)而每个 slot-value pair 则表达一个限制条件(constraint),也可理解为用户目标的一个组成单元。

例如“我要西二旗附近的川菜”对应的 dialogue act 可以表示为 inform(foodtype=川菜,location=西二旗)。这里“inform”就是 communicative function,表示陈述需求,“foodtype=川菜”和“location=西二旗”是限制条件(slot-value pairs) 。常用的 communicative function 定义可以参考剑桥大学的对话系统中使用的集合[2],而语言学家 Harry Bunt 等人则总结出了一套 ISO-24617-2 标准包含56个 communicative function 的定义,以及它的扩展集 DIT++ 包含88种定义。但由于 ISO-24617-2 和 DIT++ 体系过于复杂,通常的任务驱动类对话系统只用到其中很小一个子集就足够满足需求了,不过感兴趣的读者可以参考 DIT++ 网站(1)。

由于对话系统更关注口语处理,而且通常是处理经过了语音识别后的口语,所以在这个领域,我们通常说 Spoken Language Understanding(SLU),以突出与广义的自然语言理解的不同,并蕴含了对非严谨语法和语音识别错误鲁棒的问题。

对话状态跟踪:英文中这个概念叫 Dialogue State Tracking(DST)。概括的说,对话状态跟踪就是根据多轮的对话来确定用户当前的目标(user goal)到底是什么的过程。为了更好的理解这个过程,我们先来看看什么是对话状态。一个对话状态中,最主要的信息是用户的目的,即 user goal。用户目的的表示形式是一组 slot-value pairs 的组合。

概率分布,称作置信状态(belief state或者belief),对话状态跟踪有时也称作置信状态跟踪(belief state tracking)。用户的目的在一个置信状态中的表示可以分为两部分:首先每个 slot 上都可以有多个可能的 value,每个 value 对应一个置信概率,这就形成了每个 slot 上的边缘置信状态(marginal belief);然后这些可能的 slot-value pairs 的组合的概率分布就形成的联合置信状态(joint be仍以图1中3-6行的对话为例,当对话进行到第3行时,用户的目的是“occasion=跑步”,到第5行时,这个目的就变成了“occasion=跑步,language=英文”。对话状态中还可以记录完成对话任务所需的其他额外信息,例如用户当前询问的属性(requested slots),用户的交互方式(communication method),和用户或系统的历史对话动作(dialogue history)等等。

此外,应注意到无论 ASR 或者 SLU 都是典型的分类问题,既然是分类就会有误差,于是这给任务驱动的对话系统引入了一个在不确定性环境下决策的问题(planning under uncertainty)。虽然最终的决策是由下面要介绍的对话策略完成的,但是对话状态需要为后面的决策提供依据,也就是如何刻画这个不确定性的问题。要解决这个问题,首先我们希望 ASR 或 SLU(或两者)在输出分类结果的同时输出一个置信度打分,最好还能给出多个候选结果(n-best list)以更好的保证召回。然后对话状态跟踪模块在上述置信度和 n-best list 的基础上,不仅需要维护一个对话状态,而是估计所有可能的对话状态的  belief),也就是用户完整目的的概率分布。通常对话系统的决策过程需要参考这两部分信息才能找到最优的对话策略。

对话策略:即 policy,是根据上面介绍的置信状态来决策的过程。对话策略的输出是一个系统动作(system action)。和用户的 dialogue act 类似,系统动作也是一个由 communicative function 和 slot-value pairs 组成的语义表示,表明系统要执行的动作的类型和操作参数。“每次决策的目标不是当前动作的对与错,而是当前动作的选择会使未来收益的预期(expected long-term reward)最大化”。

自然语言生成:natural language generation(NLG)的任务是将对话策略输出的语义表示转化成自然语言的句子,反馈给用户。

了解人机对话—聊天、问答、多轮对话和推荐相关推荐

  1. 【NLP】自己搭一个多轮对话聊天机器人(附实现源码)

    [NLP]自己搭一个多轮对话聊天机器人(附实现源码) 01 项目框架 02 模型 2.1 粗排 2.1.1BM25 2.1.1 Bool检索 2.2 精排 意图识别 03 API交互 04 微信前端 ...

  2. 入选最受关注AI公司的Kitt.AI:多轮对话聊天机器人开发也可以很简单

    移动互联网发展之初,很多习惯了开放.自由的PC网民是充满绝望的,他们把手机上各个App之间无法跳转.内容封闭的情况称为"信息孤岛".这可能是聊天机器人,即chatbot随着人工智能 ...

  3. Feishu(飞书) 聊天机器人应用(2/3)- 定制对话,实现知识库、信息查询、意图识别、多轮对话

    目录 Chatopera 飞书 Custom App 开源项目 快速开始 创建 Feishu Bot 应用 创建 Chatopera Bot 应用 编辑描述文件 安装依赖 启动服务 配置 Feishu ...

  4. 语音对话系统的设计要点与多轮对话的重要性

    这是阿拉灯神丁Vicky的第 008 篇文章 就从最近短视频平台的大妈与机器人快宝的聊天说起吧. 某银行内,一位阿姨因等待办理业务的时间太长,与快宝机器人展开了一场来自灵魂的对话.对于银行工作人员的不 ...

  5. 百度UNIT 机器人多轮对话技能创建以及API调用

    百度UNIT 机器人多轮对话技能创建以及API调用 基于百度UNIT2.0 版本,实现简单的多轮人机对话功能 创建机器人必备条件 确定有哪些技能 例如:查询天气.订票.讲故事等,以畅越冰激凌套餐营销话 ...

  6. 任务驱动的多轮对话究竟该如何实现?

    三角兽科技 CEO Zhuoran Wang 博士曾参与 DSTC 2013 的评测,期间他提出的一种领域无关的对话状态跟踪算法曾获 SIGDial 2013 国际会议最佳论文提名,该系统在 DSTC ...

  7. 对话式AI系列:任务型多轮对话的实践与探索

    移动互联网带来了大数据的普及,摩尔定律预言了计算机硬件的发展,深度学习则借助这阵东风实现了技术上的突破,人工智能成功进入大众视野,并改变了人们的日常生活. "小X同学,请打开电视" ...

  8. 「比人还会聊天」百度PLATO对话机器人开放体验

    聊天大师--百度PLATO来了! 这个内置业界首个突破百亿级参数的对话大模型PLATO-XL的对话机器人,一经问世就给大家带来了不一般的对话体验.它可以俏皮可爱.也可以老练深沉,既能陪你谈家长里短.也 ...

  9. “小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03

    人工智能现在的火热程度大家有目共睹,凯文凯利在<必然>中预测未来时代的人工智能可能会重新定义人类的意义,但时下的人工智能发展水平显然还没有大家想象得那么美好,仍然需要我们不断地探索.目前众 ...

最新文章

  1. flink 4-输出
  2. mesh threejs 属性_ThreeJS拖动案例解析
  3. OCS2007标准版服务器部署
  4. Win_server_2012如何将“计算机”图标放在桌面
  5. Java实现Unicode编码和中文互转
  6. 咸阳强生告诉你吃什么食物养胃效果好
  7. java 用户态_内核启动用户态的程序 - 但行好事 莫问前程 - JavaEye技术网站
  8. 速腾聚创16线雷达离线和实时跑Lego-loam
  9. 保护系统 WinXP故障恢复控制台完全指引
  10. ES2015 模板字符串与字符串扩展方法
  11. 安卓Socket与pc端c#服务器的通信 附完整代码
  12. Workbench网格划分(1)
  13. mini2440LED驱动程序开发
  14. 5.5 图层样式的复制和粘贴 [原创Ps教程]
  15. 逃避不一定躲得过,面对不一定最难过
  16. 软件项目管理:项目调研
  17. BIM 那些事广联达BIM 5D
  18. 乔布斯去世并未刺激苹果收藏品大幅升值
  19. 程序猿电子书推荐和下载
  20. MATLAB去雾的算法及实现

热门文章

  1. 墨者学院在线靶场writeup
  2. 怎么理解CPU密集型和I/O密集型
  3. w ndows7手机桌面,《安卓手机共享笔记本wf上网设置XP或者Wndows7.doc
  4. 上升沿判断语句_自己明明持有着主升浪的股票却拿不住?一文教你判断主升浪的信号...
  5. 【C语言/C++】益智游戏开发:2048(源码详解)
  6. 开车通过红绿灯及转弯时各类操作技巧
  7. windows下常用小工具分享
  8. PS丝印版画笔刷131款,许多插画师纷纷效仿
  9. 北理工电子课设通信电路——锁相频率合成器的设计
  10. 第二章.物理层:2.4信道复用技术