精华内容
下载资源
问答
  • 百度智能对话系统UNIT

    2021-04-06 13:14:51
    百度智能对话系统UNIT 自然语言处理(NLP)大类中的智能对话定制与服务平台(UNIT)是如何在各行各业发挥作用的,这是简短视频介绍:[UNIT](https://www.iqiyi.com/w_19s97pixih.html).云端本地皆可部署,亦可引入...

    百度智能对话系统UNIT

    自然语言处理(NLP)大类中的智能对话定制与服务平台(UNIT)是如何在各行各业发挥作用的,这是简短视频介绍:
    

    UNIT
    .云端本地皆可部署,亦可引入语音技术,实现语音对话功能。

    展开全文
  • 人工智能和人工冰释前嫌 人工智能对话系统在房产行业的应用 对话系统在房产行业的应用 01 人工智能NLP及对话系统现状如何 02 房产领域的特色及应用对话系统的优势有哪些 03 我们怎么做效果怎么样 人工智能的现状 ...
  • 基于社会工程学领域的智能对话系统,申浩伦,钮心忻,社会工程学是互联网中较为常见的攻击手段,主要表现为钓鱼邮件、钓鱼网站以及社交网站中的机器人和邪恶用户,目前针对该领域的检
  • 一文读懂智能对话系统

    万次阅读 2018-01-27 00:00:00
    本文带大家理解智能对话系统的研究方法以及未来趋势。笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Dialogue Systems:Recent Advances and New Frontiers》,论文来自于京东数据团队,...
        

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    来源:机器学习算法全栈工程师

    作者:蒙康

    编辑:王抒伟

    本文共6050字,建议阅读10分钟
    本文带大家理解智能对话系统的研究方法以及未来趋势。


    笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Dialogue Systems:Recent Advances and New Frontiers》,论文来自于京东数据团队,论文引用了近124篇论文,是一篇综合全面的介绍对话系统的文章,可谓是诚意满满,今天我们将其重点进行解读,以飨读者。


    前言


    拥有一个虚拟助理或一个拥有足够智能的聊天伙伴系统似乎是虚幻的,而且可能只在科幻电影中存在很长一段时间。近年来,人机对话因其潜在的潜力和诱人的商业价值而受到越来越多研究者的关注。


    随着大数据和深度学习技术的发展,创建一个自动的人机对话系统作为我们的私人助理或聊天伙伴,将不再是一个幻想。 


    当前,对话系统在各个领域越来越引起人们的重视,深度学习技术的不断进步极大地推动了对话系统的发展。对于对话系统,深度学习技术可以利用大量的数据来学习特征表示和回复生成策略,这其中仅需要少量的手工操作。


    现如今,我们可以很容易地访问网络上对话的“大数据”,我们也许能够学习如何回复,以及如何回复几乎任何的输入,这将极大地允许我们在人类和计算机之间建立数据驱动的、开放的对话系统。


    另一方面,深度学习技术已经被证明是有效的,可以在大数据中捕获复杂的模式,并拥有大量的研究领域,如计算机视觉、自然语言处理和推荐系统等。在本文中,作者从不同的角度对这些最近的关于对话系统的进展进行概述,并讨论了一些可能的研究方向。 


    具体来说,对话系统大致可分为两种:


    • 任务导向型(task-oriented)对话系统和


    • 非任务导向型(non-task-oriented)对话系统(也称为聊天机器人)。


    面向任务的系统旨在帮助用户完成实际具体的任务,例如帮助用户找寻商品,预订酒店餐厅等。 


    面向任务的系统的广泛应用的方法是将对话响应视为一条管道(pipeline),如下图所示: 


    640?wx_fmt=png


    系统首先理解人类所传达的信息,将其作为一种内部状态,然后根据对话状态的策略采取一系列相应的行为,最后将动作转化为自然语言的表现形式。


    虽然语言理解是通过统计模型来处理的,但是大多数已经部署的对话系统仍然使用手工的特性或手工制定的规则,用于状态和动作空间表示、意图检测和插槽填充。 


    非任务导向的对话系统与人类交互,提供合理的回复和娱乐消遣功能,通常情况下主要集中在开放的领域与人交谈。虽然非任务导向的系统似乎在进行聊天,但是它在许多实际应用程序中都发挥了作用。

    数据显示,在网上购物场景中,近80%的话语是聊天信息,处理这些问题的方式与用户体验密切相关。


    一般来说,对于非任务导向型对话系统,目前用的主要是两种主要方法:


    • 生成方法,例如序列到序列模型(seq2seq),在对话过程中产生合适的回复,生成型聊天机器人目前是研究界的一个热点,和检索型聊天机器人不同的是,它可以生成一种全新的回复,因此相对更为灵活,但它也有自身的缺点,比如有时候会出现语法错误,或者生成一些没有意义的回复;


    • 基于检索的方法,从事先定义好的索引中进行搜索,学习从当前对话中选择回复。检索型方法的缺点在于它过于依赖数据质量,如果选用的数据质量欠佳,那就很有可能前功尽弃。 


    640?wx_fmt=png


    近年来,大数据和深度学习技术的迅猛发展,极大地促进了面向任务和面向非导向的对话系统的发展。


    在本篇论文中,作者的目标是


    • 对对话系统进行概述,特别是最近的深度学习的进展;

    • 讨论可能的研究方向。


    任务导向系统



    面向任务的对话系统是对话系统的一个重要分支。在这部分中,作者总结了面向任务的对话系统的管道方法和端到端方法。


    管道(pipeline)方法


    任务导向型对话系统的典型结构在之前的图中已经展示,它包括四个关键组成部分: 


    • 自然语言理解(Natural Language Understanding,NLU)它将用户输入解析为预定义的语义槽。 


    如果有一个话语,自然语言理解将其映射为语义槽。插槽是根据不同的场景预先定义的。 


    640?wx_fmt=png


    上图展示了一个自然语言表示的示例,其中“New York”是指定为slot值的位置,并且分别指定了域和意图。典型的,有两种类型的表示。一个是话语层次类别,如用户的意图和话语类别。另一个是字级信息提取,如命名实体识别和槽填充。对话意图检测是为了检测用户的意图。它将话语划分为一个预先定义的意图。 


    • 对话状态跟踪(Dialogue State Tracker,DST)。对话状态跟踪是确保对话系统健壮性的核心组件。它在对话的每一轮次对用户的目标进行预估,管理每个回合的输入和对话历史,输出当前对话状态。这种典型的状态结构通常称为槽填充或语义框架。传统的方法已经在大多数商业实现中得到了广泛的应用,通常采用手工规则来选择最有可能的输出结果。然而,这些基于规则的系统容易出现频繁的错误,因为最可能的结果并不总是理想的。 


    最近深度学习采用的方法是使用一个滑动窗口输出任意数量的可能值的概率分布序列。虽然它在一个领域受过训练,但它可以很容易地转移到新的领域。此处运用较多的模型是,multi-domain RNN dialog state tracking models和Neural Belief Tracker (NBT) 。 


    • 对话策略学习(Dialogue policy learning)。根据状态跟踪器的状态表示,策略学习是生成下一个可用的系统操作。无论是监督学习还是强化学习都可以用来优化政策学习。监督学习是针对规则产生的行为进行的,在在线购物场景中,如果对话状态是“推荐”,那么触发“推荐”操作,系统将从产品数据库中检索产品。强化学习方法的引入可以对对话策略进行进一步的训练,以引导系统制定最终的策略。在实际实验中,强化学习方法的效果超过了基于规则和监督的方法。 

    • 自然语言生成(Natural Language Generation,NLG)。它将选择操作进行映射并生成回复。 


    一个好的生成器通常依赖于几个因素:适当性、流畅性、可读性和变化性。传统的NLG方法通常是执行句子计划。它将输入语义符号映射到代表话语的中介形式,如树状或模板结构,然后通过表面实现将中间结构转换为最终响应。深度学习比较成熟的方法是基于LSTM的encoder-decoder形式,将问题信息、语义槽值和对话行为类型结合起来生成正确的答案。同时利用了注意力机制来处理对解码器当前解码状态的关键信息,根据不同的行为类型生成不同的回复。 


    端到端(end-to-end)方法


    尽管传统的面向任务的对话系统中有许多特定领域的手工制作,但它们很难适应新的领域,近年来,随着端到端神经生成模型的发展,为面向任务的对话系统构建了端到端的可训练框架。值得注意的是,当我们引入非面向任务的对话系统时,将讨论关于神经生成模型的更多细节。与传统的管道模型不同,端到端模型使用一个模块,并与结构化的外部数据库交互。 


    640?wx_fmt=png


    上图的模型是一种基于网络的端到端可训练任务导向型对话系统,将对话系统的学习作为学习从对话历史到系统回复的映射问题,并应用encoder-decoder模型来训练。然而,该系统是在监督的方式下进行训练——不仅需要大量的训练数据,而且由于缺乏对训练数据对话控制的进一步探索,它也可能无法找到一个好的策略。 


    640?wx_fmt=png


    随着强化学习研究的不断深入,上图的模型首先提出了一种端到端强化学习的方法,在对话管理中联合训练对话状态跟踪和对话策略学习,从而更有力地对系统的动作进行优化。


    非任务导向系统


    不同于任务导向型对话系统,它的目标是为用户完成特定的任务,而非任务导向的对话系统(也称为聊天机器人)专注于在开放的领域与人交谈。一般来说,聊天机器人是通过生成方法或基于检索的方法实现的。 


    生成模型能够生成更合适的回复,而这些回复可能从来没有出现在语料库中,而基于检索的模型则具有信息充裕和响应流畅的优势。


    1. 神经生成模型(Neural Generative Models)


    深度学习在机器翻译中的成功应用,即神经机器翻译,激发了人们对神经生成对话研究的热情。目前神经生成模型的热门研究课题大概有如下几个方面。


    1.1 Sequence-to-Sequence Models


    给定包含  个词语的输入序列(message)


    640?wx_fmt=png


    和长度为T的目标序列(response)


    640?wx_fmt=png


    模型最大化Y在X下的条件概率: 

     

    640?wx_fmt=png


    具体来说,Seq2Seq模型是在encoder-decoder结构中,下图是这种结构的示意: 


    640?wx_fmt=png


    编码器将X逐字读入,并通过递归神经网络(RNN)将其表示为上下文向量c, 然后解码器将c 作为输入估计Y 的生成概率。 


    Encoder :


    Encoder过程很简单,直接使用RNN(一般用LSTM)进行语义向量生成: 


    640?wx_fmt=png


    其中f 是非线性函数,例如LSTM,GRU,640?wx_fmt=png


    是上一隐节点输出,640?wx_fmt=png是当前时刻的输入。向量c 通常为RNN中的最后一个隐节点

    (h, Hidden state),或者是多个隐节点的加权和。 


    Decoder :


    模型的decoder过程是使用另一个RNN通过当前隐状态
    640?wx_fmt=png来预测当前的输出符号640?wx_fmt=png ,这里的640?wx_fmt=png640?wx_fmt=png都与其前一个隐状态和输出有关,Seq2Seq的目标函数定义为: 


    640?wx_fmt=png


    1.2. 对话上下文(Dialogue Context)


    考虑对话的上下文信息的是构建对话系统的关键所在,它可以使对话保持连贯和增进用户体验。使用层次化的RNN模型,捕捉个体语句的意义,然后将其整合为完整的对话。


    同时,分别用字级别和句子级别的注意力方法扩展层次化的结构。


    试验证明:


    • 层次化 RNNs的表现通常优于非层次化的RNNs;


    • 在考虑上下文相关的信息后,神经网络趋向于产生更长的、更有意义和多样性的回复。 


    640?wx_fmt=png


    在上图中,作者通过代表整个对话历史(包括当前的信息),用连续的表示或嵌入单词和短语来解决上下文敏感回复生成的这一难题。 


    640?wx_fmt=png


    在上图的结构中作者引入两个层次的Attention机制,让模型能够自动的学到词语与句子级别的重要度信息,从而更好的生成新一轮的对话。


    作者在句子级别的信息中,是反向学习的,即认为下一句的信息中更能够包含上一句的信息,所以从总体上来看,其对于对话的学习是逆向使用每一轮对话的内容的。


    1.3 回复多样性(Response Diversity) 


    在当前Seq2Seq对话系统中,一个具有挑战性的问题是,它们倾向于产生无关紧要的或不明确的、普通的、几乎没有意义的回复,而这些回复常常涉及到一些诸如“I don't know”,“I am OK”这样的无意义回复。


    解决这类问题的一个很有效的方法是找到并设置一个更好的目标函数。除此之外,解决此类问题的一个方法是增加模型的复杂度。下图这篇论文《Building End-To-End Dialogue Systems 


    Using Generative Hierarchical Neural Network Models》使用了 latent variable 来解决无意义回复这个问题。 


    640?wx_fmt=png


    1.4 主题和个性化(Topic and Personality) 


    明确对话的内在属性是提高对话多样性和保证一致性的另一种方法。在不同的属性中,主题和个性被广泛地进行研究探讨。 


    在下图的模型中,作者注意到人们经常把他们的对话与主题相关的概念联系起来,并根据这些概念做出他们的回复。他们使用Twitter LDA模型来获取输入的主题,将主题信息和输入表示输入到一个联合注意模块中,并生成与主题相关的响应。 


    640?wx_fmt=png


    下图的模型提出了一种两阶段的训练方法,使用大规模数据对模型进行初始化,然后对模型进行微调,生成个性化响应。 


    640?wx_fmt=png


    1.5 外部知识库(Outside Knowledge Base) 


    人类对话与对话系统之间的一个重要区别是它是否与现实相结合。结合外部知识库(KB)是一种很有前途的方法,可以弥补背景知识之间的差距,即对话系统和人之间的差距。


    记忆网络(Memory Network)是一种以知识库处理问题的经典方法。因此,它非常直接的别用于在对话生成中。实际研究表明,所提出的模型能够通过参考知识库中的事实来生成对问题的自然和正确答案。


    640?wx_fmt=png


    上图是作者提出的完全数据驱动的带有知识的对话模型。其中的 World Facts是一个集合,收集一些经过权威认证过的句子或者不准确的句子,作为知识库。


    当个定一个输入S和历史,需要在 Fact 集合里面检索相关的facts,这里采用的IR引擎进行检索,然后经过 Fact Encoder 进行 fact injection。


    上图的模型提出了一种全新的、完全由数据驱动的、基于知识的神经对话模型,目的是在没有槽位的情况下产生更多的内容。作者归纳了广泛使用的SEQ2SEQ方法,通过对会话历史和外部“事实”的响应 


    1.6 评价 


    评价生成回复的质量是对话系统的一个重要方面。任务导向型的对话系统可以基于人工生成的监督信号进行评估,例如任务完成测试或用户满意度评分等,


    然而,由于高回复的多样性,自动评估非任务导向的对话系统所产生的响应的质量仍然是一个悬而未决的问题。目前的方法有以下几种: 


    •  计算 BLEU 值,也就是直接计算 word overlap、ground truth和你生成的回复。由于一句话可能存在多种回复,因此从某些方面来看,BLEU 可能不太适用于对话评测。 



    • 计算 embedding的距离,这类方法分三种情况:直接相加求平均、先取绝对值再求平均和贪婪匹配。 



    • 衡量多样性,主要取决于 distinct-ngram 的数量和 entropy 值的大小。


    • 进行图灵测试,用 retrieval 的 discriminator 来评价回复生成。 


    2. 基于检索的方法    


    基于检索的方法从候选回复中选择回复。检索方法的关键是消息-回复匹配,匹配算法必须克服消息和回复之间的语义鸿沟。 


    2.1 单轮回复匹配 


    检索聊天机器人的早期研究主要集中在反应选择单轮的谈话,只有消息用于选择一个合适的回复。 


    目前比较新的方法如下图,利用深度卷积神经网络体系结构改进模型,学习消息和响应的表示,或直接学习两个句子的相互作用表示,然后用多层感知器来计算匹配的分数。 


    640?wx_fmt=png


    2.2 多轮回复匹配 


    近年来,基于检索的多轮会话越来越受到人们的关注,在多轮回答选择中,将当前的消息和先前的话语作为输入。


    模型选择一个自然的、与整个上下文相关的响应。重要的是要在之前的话语中找出重要的信息,并恰当地模仿话语的关系,以确保谈话的连贯性。 


    多轮对话的难点在于不仅要考虑当前的问题,也要考虑前几轮的对话情景。多轮对话的难点主要有两点:


    • 如何明确上下文的关键信息(关键词,关键短语或关键句);


    • 在上下文中如何模拟多轮对话间的关系。  


    现有检索模型的缺陷:在上下文中容易丢失重要信息,因为它们首先将整个上下文表示为向量,然后将该上下文向量与响应sentence向量进行匹配。 


    下图的方法通过RNN/LSTM的结构将上下文(所有之前的话语和当前消息的连接)和候选响应分别编码到上下文向量和回复向量中,然后根据这两个向量计算出匹配度分数。


    640?wx_fmt=png


    目前关于检索模型的闲聊还停留在单轮对话中,下面这篇论文提出了基于检索的多轮对话闲聊。论文提出了一个基于检索的多轮闲聊架构,进一步改进了话语关系和上下文信息的利用,通过将上下文中的语句与卷积神经网络的不同层级进行匹配,然后通过一个递归的神经网络在时间序列中堆积这些向量,以建立对话之间的关系。


    640?wx_fmt=png


    2.3 混合的方法(Hybrid Methods)


    将生成和检索方法结合起来能对系统性能起到显著的提升作用。基于检索的系统通常给出精确但是较为生硬的答案,而基于生成的系统则倾向于给出流畅但却是毫无意义的回答。


    将生成和检索方法结合起来能对系统性能起到显著的提升作用。基于检索的系统通常给出精确但是较为生硬的答案,而基于生成的系统则倾向于给出流畅但却是毫无意义的回答。


    在集成模型中,被抽取的候选对象和原始消息一起被输入到基于RNN的回复生成器中。这种方法结合了检索和生成模型的优点,这在性能上具备很大的优势。


    未来的发展


    深度学习已成为对话系统的一项基本技术。研究人员将神经网络应用于传统任务导向型对话系统的不同组成部分,包括自然语言理解、自然语言生成、对话状态跟踪。近年来,端到端的框架不仅在非面向任务的聊天对话系统中流行,而且在面向任务的对话系统中逐步流行起来。


    深度学习能够利用大量的数据,从而模糊了任务导向型对话系统和非任务导向型对话系统之间的界限。值得注意的是,目前的端到端模型仍然远非完美。尽管取得了上述成就,但这些问题仍然具有挑战性。接下来,我们将讨论一些可能的研究方向。


    快速适应。虽然端到端模型越来越引起研究者的重视,我们仍然需要在实际工程中依靠传统的管道(pipeline)方法,特别是在一些新的领域,特定领域对话数据的收集和对话系统的构建是比较困难的。未来的趋势是对话模型有能力从与人的交互中主动去学习。


    深度理解。现阶段基于神经网络的对话系统极大地依赖于大量标注好的数据,结构化的知识库以及对话语料数据。在某种意义上产生的回复仍然缺乏多样性,有时并没有太多的意义,因此对话系统必须能够更加有效地深度理解语言和真实世界。

    隐私保护。目前广泛应用的对话系统服务于越来越多的人。很有必要注意到的事实是我们使用的是同一个对话助手。通过互动、理解和推理的学习能力,对话助手可以无意中隐蔽地存储一些较为敏感的信息。因此,在构建更好的对话机制时,保护用户的隐私是非常重要的。

    640?wx_fmt=jpeg

    展开全文
  • 智能对话系统之多轮对话

    千次阅读 2019-09-10 15:58:48
    序言 以一周前的一条微博作为开始。...对于一个对话系统而言,我微博中所指的『后续服务』,就是上图中的 DST(对话状态维护)以及 Policy(动作候选排序),或者统一的称其为 DM(Dialogue Mannagem...

    序言

     

    以一周前的一条微博作为开始。一周前我讲:相对的,自然语言解析技术已经逐渐不再成为各家广义智能助理产品的核心竞争力,识别用户意图之后所提供的服务开始成为对话机器人差异化的核心

    百度:对话系统的组成

    对于一个对话系统而言,我微博中所指的『后续服务』,就是上图中的 DST(对话状态维护)以及 Policy(动作候选排序),或者统一的称其为 DM(Dialogue Mannagement,对话管理)。也即,当接收到 NLU 模块的输出、其他场景及用户特征信息之后,判断系统应该跳转到什么状态,以及执行什么样的动作。

    从产品的角度,DM 是对话机器人封闭域多轮对话体验的核心,正是一次次 DST + Policy 形成了人机间的多轮对话体验。(我个人倾向于将识别用户意图之后,为了获取必要信息,与用户进行的有目的的多轮对话称为封闭域多轮对话,区别于识别用户意图之前,为了利用上文信息,所采用的『上下文替换』、『主体补全』等技术,aka 开放域多轮对话。下文提到的『多轮对话』,均指封闭域多轮对话。)

    既然多轮对话在对话机器人类产品体验中扮演着如此重要的角色,我便倾向于开始思考:一个架构完备的多轮对话体系应该是什么样的。也即多轮对话系统中需要至少包含哪些模块,才能为用户提供一种与人人对话相去不远的人机对话体验。

    多轮对话定义

    我有个习惯,就是在构造一个复杂系统之前,先从纷繁的细节之中跳出,尝试抽象的描述整个系统,及系统中的各个模块,也即为它们『下定义』。这能帮助你在多种可行方案中做出选择,也即帮你明确:什么该做,什么不该做,什么该谁做

    基于以上思想,我尝试先给出几个我个人对于多轮对话体系定义问题的回答:

    基本定义:什么是多轮对话?
    (封闭域)多轮对话是一种,在人机对话中,初步明确用户意图之后,获取必要信息以最终得到明确用户指令的方式。多轮对话与一件事情的处理相对应。

    补充说明:所谓『必要信息』一定要通过与用户的对话获取吗?
    不一定,即便是人与人之间的交流,对话本身所包含的信息也只占总传递信息量的一小部分,更多信息来源于说话人的身份、当前的时间/地点等一系列场景信息。所以多轮对话的信息获取方式也不应当只局限于用户所说的话。

    补充说明:多轮对话一定在形式上表现为与用户的多次对话交互吗?
    不一定,如果用户的话语中已经提供了充足的信息,或者其它来源的补充信息已经足够将用户的初步意图转化为一条明确的用户指令,那就不会存在与用户的多次对话交互。

    以上是针对多轮对话整体定义问题的回答,每个模块的相关定义会在下文各个模块的讲解中尝试给出。

    基本定义:什么是槽?
    槽是多轮对话过程中将初步用户意图转化为明确用户指令所需要补全的信息。一个槽与一件事情的处理中所需要获取的一种信息相对应。

    补充说明:多轮对话中的所有的槽位都需要被填充完整吗?
    不一定,以如下对话为例:

    我:『去萧山机场多少钱』
    出租车司机:『70』

    对话中的『70』,应当被理解为70元人民币,而不必再去追问:『你说的是人民币、美元、日元还是港币?』。这类信息应当以默认值的形式存在,也即槽有必填非必填之分,与上文所说的『信息未必需要通过与用户的对话获取』相对应。

    词槽与接口槽

    上文反复的提到,对话内容并不是获取信息的唯一方式,用户身份以及当前场景也包含着大量值得被利用的隐含信息。所以,与此相对的,一个完备的多轮对话体系应当同时具备从用户话里以及话外获取信息的能力。

    我个人将利用用户话中关键词填写的槽叫做词槽,利用用户画像以及其他场景信息填写的槽叫做接口槽

    举个例子,我讲『我明天要坐火车去上海』。其中,分别将『明天』、『上海』填入名为『出发时间』、『目的地』的词槽中,而我当前所在的位置,则填入到了名为『出发地』的接口槽中。

    槽组与槽位

    我个人将利用用户话中关键词填写的槽叫做词槽,利用用户画像以及其他场景信息填写的槽叫做接口槽

    举个例子,我讲『我后天要坐火车去上海』。其中,分别将『后天』、『上海』填入名为『出发时间』、『目的地』的词槽中,而我当前所在的位置,则填入到了名为『出发地』的接口槽中。

    不知道上文错的如此离谱的结论有没有引起你的注意 :)

    仔细读一遍上面举的例子,就会发现一个很严重的矛盾点:难道『出发地』这个槽不能由用户指定?用户完全可以说『我后天要坐火车从北京去上海』,那它是词槽还是接口槽?而且更进一步的,难道只能用『我当前所在的位置』来填入『出发地』这个槽中?比如,如果能读到我的日程表,发现我明天会去杭州,那是不是就应该用『杭州』而不是『我现在所在的位置』来填『出发地』这个槽了?

    从中我们能发现什么呢?同一个槽,可能会存在多种填槽方式

    我将可能包含多种填槽方式的称为槽组,槽组下面可能存在任意多个槽位,也即任意多种填槽方式,而每个槽位又都对应着『词槽』与『接口槽』两种槽位类型之一。

    本质上来讲,槽组(也即上文中提到的『槽』),对应着一种信息,而几乎不会有哪种信息的获取方式只有一种。所以一个『槽』会同时对应多种填槽方式也就是自然而然的了。

    依照上文,同一种信息会有多种获取方式,也即同一个槽组会对应多种填槽方式(槽位)。那不同填槽方式之间必然会存在优先级的概念。

    就如同上文『订票』的例子,『出发地』槽包含三种填写方式,一种词槽、两种接口槽,自然的,词槽的优先级最高,『日程表中隐含的出发地』次之,『我当前所在的位置』再次。

    如果将其与前文提到过的必填/非必填结合起来,其填槽过程应当遵循以下步骤:

    • 尝试填写词槽
    • 若失败,尝试填写第一接口槽『用户日程表中隐含的出发地』
    • 若失败,尝试填写第二接口槽『用户当前所在位置』
    • 若失败,判断是否该槽必填
    • 若必填,反问用户,重填词槽
      *若非必填,则针对该槽组的填槽过程结束

    我们需要知道,必填/非必填在逻辑上与槽组而不是槽位平级,只有信息才会分为必要/非必要,填槽方式不做这种区分。而且是否必填实际上与接口槽无关,只取决于是否需要与用户进行交互。

    澄清话术

    槽组也即与一种信息平级的概念还有一个,叫做澄清话术

    澄清话术是对话机器人希望获取某种信息时所使用的问句。比如『目的地』对应的澄清话术就是『您想从哪出发呢?』,『出发时间』对应的澄清话术就是『您想什么时间出发呢?』。

    显而易见的,澄清话术与槽组而不是槽位平级。

    槽的填写

    上文讲到,一个槽组可能会有多个槽位,槽位存在词槽接口槽之分。

    先说词槽。

    词槽信息的抽取其实还是有些麻烦的,不过这属于解析的问题,不在本文探讨的范围内,这里只是简单提一下,举两个例子:

    • 用户表达『不』,可能会有『不行』、『不是』、『算了』、『没有』等一系列说法。
    • 用户话中有多个符合条件的关键词,我们整套多轮对话中有多个槽,每个槽填一个还是多个值?哪个槽与哪个词对应?

    同义词典、规则、双向LSTM+CRF,各有各的方法。

    再说接口槽。

    接口槽与词槽相比,额外存在一个问题,就是:接口返回的结果就是用户需要的结果吗?

    这里需要分成两种情况来讨论,一种是:我们明确知道接口的返回值可以直接填入槽位(不是槽/槽组)中,不需要向用户确认

    特别的,这里还要明确一点,即便是上述情况,也并不意味着当前槽/槽组只有该特定接口槽这一个槽位。有两种情况存在:一种是该槽组下只有这一个槽位,该接口的返回值直接填入槽位中,也相当于填入了槽/槽组中;或者该槽位下有多个槽位,接口槽的填入值并不一定最终作为槽/槽组的填入值。

    另一种是:我们知道接口的返回值只能作为参考,需要用户的协助才能进行槽位的填写

    这种情况下,需要提供选项,让用户最终决定该槽位的填入值,与词槽一样,这里同样需要处理单值/多值的问题。单值/多值在逻辑上与槽组平级。

    此外,这里还要注意一个否认选项的问题,比如我对阿里小蜜说,我忘记密码了,它会通过接口拿到我的当前账号,然后将其提供选项给我,问『你是忘记了哪个账号的密码?』,不过,除了我当前账号之外,还有一个选项也被提供出来了,就是『不,不是这个账号』。

    这代表了一类问题的存在,用户的意图并不一定包含在接口的全部返回值之中。所以就必然会有这样一种类似『不要/不是/不』的选项,我将其叫做否认选项

    用户选择否认选项后,即意味着该槽位的填写失败了,需要填入一个特殊值代表失败。用户选择否认选项的失败,可以与接口调用失败等其它意外情况合并处理,因为这都意味着该槽位填写失败,意味着该种信息获取方式未能成功获取信息

    如果该槽组下只有这一个槽位,这个特殊的失败表征值就应当作为整个槽组的填入值,如果还有其他槽位值,则根据槽位间优先级最终确定槽组填入值。

    平级槽和依赖槽

    上面说到底都在讲一个槽组的填写,也即一种信息的获取,但多轮对话的目的是将初步用户意图转化为明确用户指令,这其中所需要的信息通常都不只有一种。

    谈完了槽组与槽位之间的关系,接下来谈一下槽组与槽组之间的关系,也即信息与信息之间的关系。

    为了便于理解,我先举两个例子来代表两种多轮对话中所包含的极端情况。

    第一种:订车票,你需要知道用户出发的时间、地点、目的地、座位种类。这四个槽组之间,没有任何依赖关系。换言之,你只需要确定好这四个槽组中必填槽组之间的澄清顺序,接收到用户问句后,对还未填充完成的必填槽组依次进行澄清即可。我将这四个槽组之间的关系称为平级槽关系

    另一种,不知道读者玩没玩过橙光,或者其它多结局的剧情类游戏。它们的特点是什么呢?每一个选择都会有影响到后续剧情发展也即 每个槽组的填写结果会影响其它槽组的填写。换言之,部分槽组依赖前序槽组的填写结果,在其依赖的前序槽组填写完成之前,该槽组都无法进行填写。我将槽组间的这种关系称为依赖槽关系

    这种情况下,整个多轮对话过程就形成了一棵树,极端情况下,这棵树是的。树上的每个节点放置着一个会对后续对话走向产生影响的槽组

    槽关系的选择要根据实际业务场景来确定。

    如果错将平级槽采用依赖槽关系来管理,就会出现信息的丢失。比如 A、B、C,三者本为平级槽关系,但却将其用 A->B->C 的依赖槽关系来管理,那即便用户问句中包含填写 B、C 槽组的信息,也可能会由于 A 槽组的未填写而造成 B、C 槽组的填写失败。

    如果错将依赖槽采用平级槽的关系来管理,就会出现信息的冗余,比如 A、B、C三者的关系为 A、A1->B、A2->C,那即便用户将值 A1 填入槽组 A 后,却仍然需要向用户询问本不需要的 C 槽组的填写信息。

    上述两种情况属于全平级槽关系全依赖槽关系的特殊情况,在实际的业务场景中,这两种关系会是同时存在的,不同槽组间,既有平级槽关系,又有依赖槽关系。

    实际业务场景中,完整的多轮对话过程通常会以的形式存在,每个节点存在一个或多个槽组,用于获取一种或多种信息,节点间的槽组为依赖关系,节点内的槽组为平级关系

    上文将多轮对话定义为一件事情的处理,槽组/槽定义为一种信息的获取,槽位定义为信息的一种获取方式。这里我倾向于将多轮对话树结构中的一个节点定义为处理事情的一个步骤

    一件事情的处理包含多个步骤,每个步骤中需要补全一种或多种信息,每种信息存在一种或多种获取方式。

    上述定义和组里算法大佬的定义有些分歧,不过谁让这是我的文章呢 :) 就按我的来。

    填槽意义

    结合上文,我们需要了解到,填槽的意义有两个:作条件分支多轮对话作信息补全用户意图。换言之,填槽不仅是补全用户意图的方式,而且前序槽位的填写还会起到指导后续信息补全走向的作用。

    准入条件

    上文我们讲到,完整的多轮对话过程通常会以的形式存在,树中包含多个节点,代表处理这件事情的一个步骤

    而每个节点,都应当有其特别的准入条件。树的根节点往往需要限制 NLU 模块的输出,也即明确什么样的用户意图将会由该棵多轮对话树来处理;树的中间及叶子节点往往需要根据前序槽组的填槽结果以及其他背景信息进行条件限制。(如果将所有信息,比如 NLU 模块输出,或是其他背景信息都看做前序槽组的填写结果,那就能得到统一的槽组-条件-槽组-条件······形式,槽组用于获取信息,条件用于信息限制

    我尝试从两个角度来描述一套完备的准入条件体系。

    一个是多条件的组织形式,准入条件在逻辑上应该支持条件间的与或非,百度的 UNIT 平台提供了一种相对成熟的组织形式,将准入条件整体划分为条件条件组,条件包含在条件组中,组内条件间是关系,条件组之间是关系(当然这里的且与或可以根据自身业务情况对调),条件本身支持关系。

    一个是单条件的限制能力,准入条件应当同时支持对前序槽组填写值、填写方式、填写状态进行限制。也即需要有针对值的条件针对类型的条件针对状态的条件。简单的讲,状态就是『填了吗』,类型就是『谁填的』,值就是『填了什么』。

    不同业务场景下我们会需要不同角度的限制条件。比如,上文中提到填槽的意义包含两种:作条件分支多轮对话作信息补全用户意图,如果仅仅作信息,那我们通常就只关心『填了吗』,只要填写完成就进行后续步骤,并不关系『谁填的』以及『填了什么』;但是如果槽组内的填入值会影响后续多轮对话走向,那我们就倾向于通过槽组的填入方式填入值来作多轮对话的分支。

    答案系统

    先明确一个观点,多轮对话树的节点属于对话节点而不是答案节点同一份答案可能会出现在多个对话节点中

    答案系统和多轮过程应当是解耦的,答案系统中的每份答案都应当设置好自己的触发条件。举个例子,若存在 ABC 三个槽,A=A1、B=B3、C=C1 提供答案一,A=A2、B=B1、C=C2 或 A=A3、B=B2、C=C1 提供答案二。

    另外,答案的种类也不应仅局限于文本,富文本、接口、话题切换,都可以视为合理的答案形式。

    话题切换

    话题切换指用户与用户的对话从一个多轮过程切换至另一个多轮过程,话题切换有主动切换被动切换之分。

    上文提到的作为答案的话题切换,就可以理解为主动的话题切换

    被动的话题切换是指,系统发现无法从用户的问句中抽取信息以继续当前的多轮对话,只好将其作为一条全新的问句重新进行解析和话题识别

    话题切换,尤其是主动的话题切换会涉及到一个新问题:槽继承

    举个例子:

    我:『我明天要坐高铁从杭州到北京』
    我:『算了,还是坐飞机吧』

    这种情况下,机器人不应当重复询问『出发地』、『出发时间』和『目的地』。

    除了槽继承,还有一个与之相对的问题叫做槽记忆,这通常适用在被动式的话题切换中。由于解析失误,或者其他原因,使得用户跳出了原话题,当用户在一定时间内重新回到原话题时,不应让用户重复进行填槽,该技术已被用于阿里小蜜,不过他们似乎称之为『多轮状态记忆』。

    举个例子:

    我:帮我订张从杭州到北京的机票。
    VPA:请问您希望哪天出发呢?
    我:明天杭州下雨吗?
    VPA:明天杭州有雷阵雨。
    我:后天呢?
    VPA:后天杭州天气晴。
    我:机票订后天的。
    VPA:好的,已帮你预定后天从杭州到北京的机票。

    状态切换

    我们还需要思考这样一个问题,既然话题可以切换,也即一个多轮过程可以切换到另一个多轮过程,那多轮过程中的对话状态是否可以切换?

    我举两个例子:

    第一个:

    我:帮我订张机票,从杭州出发。
    VPA:请问你想去哪呢?
    我:(发现明天杭州有雷阵雨)换出发地。
    VPA:请问你想从哪出发呢?
    我:上海。

    多轮对话应当允许回到前序节点

    第二个:

    我:我想买个杯子。
    VPA:以下是为您推荐的杯子。(展示结果一)
    我:换一换。
    VPA:以下是为您推荐的杯子。(展示结果二)

    多轮对话应当允许重复进入同一节点



    作者:我偏笑_NSNirvana
    链接:https://www.jianshu.com/p/b0aa00f7095e
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 对话系统在房产行业的应用;人工智能的现状;人工智能到底怎么样了;懂语言者得天下;对话系统前世今生;对话系统的类型;用户的期待;用户的感受;对话系统的现状;对话系统的难点;贝壳及房产行业;对话系统和房产行业;对话...
  • 今天我们来一个没有代码的教程,无需编程基础也能学会搭建智能对话系统,在学习之前,我们先来了解一下对话系统的专业术语: 单轮对话:简单的一问一答,问题可以用一句话来描述,不依赖于上下文 召回率:机器人能回答的...

    今天我们来一个没有代码的教程,无需编程基础也能学会搭建智能对话系统,在学习之前,我们先来了解一下对话系统的专业术语:

    • 单轮对话:简单的一问一答,问题可以用一句话来描述,不依赖于上下文
    • 召回率:机器人能回答的问题数与问题总数的比值,机器人能回答的问题越多,召回率越高
    • 准确率:机器人正确回答的问题数与问题总数的比值
    • 问题解决率:机器人成功解决的问题数与问题总数的比值
    • 多轮对话:进行多次对话,每次对话考虑话语间的相互关系
    • 任务完成率:成功结束的多轮对话数与多轮对话总数的比值
    • 意图识别:识别提问者的潜在目的及其表达诉求
    • 对话理解方法:基于语义解析(任务型)和基于语义匹配(问答型)

    搭建智能对话系统,百度官方提供了三个步骤:

    1. 设置BOT技能
    2. 标注数据
    3. 训练测试

    因为我们使用的是UNIT,所以我们先来了解一下改平台的专业术语:

    • BOT:一个BOT对应一个特定场景下独立完整的对话系统,用来满足特定场景下的对话理解与交互需求
    • 技能:某一个方向的对话能力,技能下包含对话意图与问答意图
    • 意图:意图指在一个对话任务中BOT要理解的用户目的
    • 词槽:满足用户对话意图时的关键信息或限定条件,可以理解为用户需要提供的筛选条件
    • 词典:属于词槽的所有词汇组成词典
    • 对话样本:用来给对话系统做示范,教它在用户说的具体句子里,该如何理解对话意图,哪个词是重要信息,对应的词槽是什么
    • 对话模板:用来给对话系统按具体语法、句式做出的示范,教它在某一个特定语法、句式中,该如何理解对话意图,哪个词是重要信息,对应的词槽、特征词是什么
    • 特征词:约束某条对话模板的匹配范围的同时,提供一定限度的泛化能力
    • 问答对:问题与答案的组成,称为问答对
    • 问答集:问答集是承载问答对的容器,与技能中问答意图的定义一一对应
    • 训练模型:把BOT下所有的配置、标注的对话样本、对话模板等打包提交给UNIT平台来训练对话理解模型,训练的时长跟训练的对话样本量、对话模板量有关系,量越多训练时间越长。训练完成后沙盒环境中的BOT会自动加载并生效模型, -般需要几分钟时间。
    • 沙盒环境:每个BOT都配有一个沙盒环境,将训练好的BOT模型生效到沙盒环境后,就可以进行效果验证了
    • 生产环境:生产环境是UNIT平台在百度云.上为开发者提供的可定制的稳定的对话服务环境。

    以上概念较多,可能会有没有整理完的地方,如有疑问,可以观看官方给的视频进行学习:http://abcxueyuan.cloud.baidu.com/#/courseDetail?id=14752

    我们先进入UNIT的首页:
    https://ai.baidu.com/unit/home
    在这里插入图片描述
    点击进入UNIT,在我的机器人里,新建机器人:
    在这里插入图片描述
    新建好BOT以后,我们找到"我的技能",点击新建技能:
    在这里插入图片描述
    这里我们以创建订火车票为示例,创建以下四个对话意图:

    • BOOK_TICKET(订票)
    • INQUIRY_PRICE(询价)
    • REFUND_TICKET(退票)
    • TIME_CONSUMING(耗时)

    在这里插入图片描述

    以订票的意图为例,我们创建以下词槽:

    • user_departure 出发地
    • user_destination 目的地
    • user_departure_time 出发时间
    • user_train_type 列车类型
    • user_seat_type 坐席类型
    • user_ticket_type 车票种类
    • user_train_num 列车车次
    • … …

    词槽可以根据需要自行添加,以出发地为例:
    在这里插入图片描述
    词典可以选择系统词典,也可以选择自定义。在这里的澄清话术中,为了让机器人的表达更像人,我们可以添加更多不同的话术。

    以下是在订票意图下添加的词槽:
    在这里插入图片描述
    添加好词槽以后,可以调整澄清顺序,当所有词槽都添加完毕后,可以在下方添加回复内容,我们点击智能生成触发规则:
    在这里插入图片描述
    当所有必填词槽已填充时,回复:“已成功为您订票!”

    其他四个意图的配置方法也是如此:
    在这里插入图片描述
    如果选择的是自定义词槽,我们可以找到词槽管理:
    在这里插入图片描述
    我们进入user_departure_time这个词槽,编辑自定义词典,我们输入一个"明天早上",确认后,回车:
    在这里插入图片描述
    我们还可以添加同义词:
    在这里插入图片描述
    当然,如果觉得这样做比较麻烦,我们可以事先写好:
    在这里插入图片描述

    这里讲一下格式,在.txt文件里,每行编辑一个词典值,不带#的词典值是归一词的形式,是某个词的正规表达格式或程序里需要的归一化格式;每个归一化格式的词典值下面都可以用#开头关联多个同义词、近义词或归一词简写性质的词典值。最后把该文本用UTF-8的编码保存:
    在这里插入图片描述
    然后我们导入词槽:
    在这里插入图片描述
    成功导入:
    在这里插入图片描述
    接下来,就要开始添加对话模板。添加对话模板的第一件事是要选择意图,每一条对话模板都要有一个与之对应的意图。同时一条query过来以后,如果他命中了这条模板就意味着query表达的目的就是这条对话模板对应的意图。

    这里我们选择为BOOK_TICKET(订票)这个意图添加模板:
    在这里插入图片描述
    在这里插入图片描述
    选择了意图,我们要介绍另外一个概念。对话模板都是由多条模板片段组成,我们刚才已经分析出来了它的关键信息。我们就可以把之前的关键信息全部放到模板片段当中一条一条的列出来,等我们把之前分析出来的关键信息全都配置到这条对话模板的模板片段之中以后,我们还要看两件事情:

    首先,这里有一个必须匹配的选项,默认为是;还有一个顺序的选项,默认全都是零。
    在这里插入图片描述
    我们先来介绍一下何为必须匹配。当一条query进来以后,模板首先会识别里面的关键信息,命中了以后他就会把关键信息提炼出来,紧接着,他会把这些关键信息和对话模板的模板片段做匹配,如果模板片段全部都被关键信息命中了。那么这些关键信息就会被提取出来。

    除此之外,同一句话可能会出现两种意图:(例如:饺子包好了这句话)

    • 1.指饺子已经制作好了
    • 2.指饺子用包装盒打包好了

    所以我们要对模板进行一下调整,首先要确认一下一定需要的模板片段,所谓一定需要的模板片段就是可能会影响这句话含义的片段。在订票这个意图里,字是关键:

    例如: [帮我订一下] [北京] 到 [上海] 的 [火车票]

    我们可以写成:
    [D:kw_req][D:user_departure]到[D:user_destination]的[D:user_train_type]

    其中的[D:kw_req]是一个特征词,我们可以自行添加:在这里插入图片描述
    不仅如此,我们还可以使用通配符:

    通配符匹配指定长度的任意字符串0-8个任意汉字表示为"[W:0-16]"一个汉字占两个字节, 所以是16

    例如:[帮我订一下] [北京] 出发的 [软卧] , [谢谢你]

    可以表示为:

    [D:kw_req][D:user_departure]出发的[D:user_seat_type],[W:0-16]

    这里的必须匹配我们把大部分都设置为。那么,既然词槽是不一定必须匹配的,那为什么还要配在模板片段里面,这就要提到第二个点:阈值:
    在这里插入图片描述
    一句话的有效信息是放在分子上的,这句话总的长度是放到分母上的,也就是说,如果这句话包含的模板片段的内容占整个句子的内容比例越大,我们就认为它符合这个意图的可能性越高,这就是阈值,所以说如果模板片段只包含了这两个特征词,并没有包含其他的词槽的话,会出现准确率降低的情况。

    我们再来看顺序,如果某一个模板片段的顺序是零。意味着这条模板片段可以出现在句子的任意位置,如果是1,则意味着这个模板片段要出现在2、3、4之前,如果是2就意味着该模板片段要出现在3、4之前,但是要在1的后面。

    如果我们把所有模板片段的顺序都调成了0,那我们来看一个句子:

    我想明天下午三点去北京,帮我订一张高铁票。

    那如果我说:

    帮我订一张票,明天下午三点去北京的高铁票。

    因为顺序全部都是0,所以说模板片段可以出现在句子的任意位置。

    除此之外,通过控制阈值的高低还可以调节它的召回率和准确率。

    比如将阈值调成1的话,意味着分子上的模板片段和分母只要是相同的,也就是说在这种情况下不能出现任何一个字的无效信息,那它的准确率一定会提高。

    以上就是模板片段顺序以及必须匹配。如果必须匹配,意味着我们可以在后续多轮对话中澄清补充。

    **就像我们刚才举的例子,我想订票。如果是人跟人之间的对话,对方的人肯定会反问他好的,那您想去哪?或者他会问你想几点去?

    同样的,机器人也是这个效果,当你跟机器人说我想预约的时候,机器人下一步就会反问,请问您从哪里出发?您要到哪里?**

    这就是后续再澄清补充的目的。

    接下来,我们开始添加对话样本集:
    在这里插入图片描述
    当我们添加超过10条以后,可以一键添加样本:
    在这里插入图片描述
    以下是获取到的样本:
    在这里插入图片描述
    我们可以直接在上面进行标注,准备了一定量的数据以后,我们就可以开始训练了:
    在这里插入图片描述
    1分钟左右就可以了,我们来测试一下:
    在这里插入图片描述
    这里我们让机器人明确我们的意图,因为意图识别正确,所以我们回答:是的
    在这里插入图片描述
    在机器人问了三个问题以后,问到了列车类型,我回答:高铁吧

    这时,可以很明显地看出机器人没有很好地识别出高铁就是列车类型,这是我们可以自行标注一下:
    在这里插入图片描述
    我们接着往下,又回答了几个问题以后:
    在这里插入图片描述
    到这里,可以看出,user_train_type这个词槽还需要改进,于是我们来到该词槽添加一些常见的列车类型:
    在这里插入图片描述
    我们再来训练一下测试 第二次训练出来的效果如何,这次我们换一个退票的意图:
    在这里插入图片描述
    这个意图是正确的,但是不是我想要的结果,况且,正常情况下,如果购票人没有指定退哪张票,那么很有可能,他只买了一张票;而如果买了多张票,在退票时会指明了退哪张票。因此,我们回到意图管理,修改一下:
    在这里插入图片描述
    把触发规则改成确认退票时,触发退票,进入对话模板也修改一下:
    在这里插入图片描述
    这样一来,如果用户不加说明,只要有退票的特征词出现,我们就立即执行退票。同理,我们按照类似的思路检查一下其他三个意图。

    在TIME_CONSUMING(耗时)这个意图中,出发时间、坐席类型以及车票种类不影响机器人判断消耗时间,因此,我们把这三个词槽也设置为非必填。

    除此之外,我们打开交互学习日志:
    在这里插入图片描述
    通过交互学习,可以使模型的效果更好。我们可以把配置好的技能接入微信:
    在这里插入图片描述
    大家可以在微信搜索并尝试跟他聊天:智能对话机器人demo
    在这里插入图片描述
    以上就是全部内容,最后总结一下,在配置的过程中,尽量避免以下情况的使用:

    • 每个模版只有一个模版片段
    • 每个模版片段包含了多条关键信息,限制了句式的泛化能力
    • 每个模版所有模版片段都为必须匹配

    对于如何搭建智能对话系统,大家可以打开下面的链接进行更细致的学习:
    http://bit.baidu.com/products?id=108
    在这里插入图片描述

    展开全文
  • 智能对话系统原理和实践

    千次阅读 2018-04-11 17:28:15
    摘要:在很多场景下,对话用户界面(CUI - Conversational User Interface)比图形用户界面(GUI - Graphical User Interface)更加自然和高效。过去一年中,CUI得到了大量的关注,也取得了迅速的发展。微软提出了...
  • 1. 对话系统 2. 任务型机器人的组成 自然语言理解模块NLU——Language Understanding 对话管理模块DM——Dialog Management 自然语言生成模块——Natural Language Generation 3. 百度unit 4. 阿里小蜜 5. 在任务型...
  • 前一个术语更为笼统,因为对话系统可能纯粹基于规则,而不是基于人工智能。 2 我们未涉及的会话AI的一个重要主题是口语理解(SLU)。 SLU系统旨在从语音话语中提取其含义,​​其应用范围很广,从移动设备中的语音...
  • 出品|AI科技大本营头图 | CSDN付费下载于视觉中国近日,在国际顶尖人工智能竞赛第九届对话系统技术挑战赛(DSTC9)中,滴滴语音和NLP技术团队参与端到端多领域面向任务型对话系...
  • 拥有一个虚拟助理或一个拥有足够智能的聊天伙伴系统似乎是虚幻的,而且可能只在科幻电影中存在很...随着大数据和深度学习技术的发展,创建一个自动的人机对话系统作为我们的私人助理或聊天伙伴,将不再是一个幻想...
  • 【导读】笔者在最近的研究中发现了一篇非常好的有关对话系统的论文,《A Survey on Dialogue Systems:Recent Advances and New Frontiers》,论文来自于京东数据团队,论文引用了124篇论文,是一篇综合全面的介绍...
  • 我们经常会在网上或新闻里看到这样的信息,机器人上岗代替人工、车载系统升级一个指令替代手动操作、酒店增设聊天机器人,客人可以通过互动提出客房服务需求、线上智能保险顾问、个人机器人助手等。这...
  • 好了,言归正题,在前面的文章里,我们讨论了智能对话系统的测试点,其中提及到了自动化测试,这里我们继续讨论一下智能对话系统中自动化测试该如何开展(偏业务工程侧,算法侧的测试主要是大批量的测试语料过模型,...
  • 2. 机器学习背景知识 本章简要回顾了深度学习和强化学习,这些学习与...如表1.2所示,对话是一个明确定义的学习问题,T,P和E规定如下: •T:与用户进行对话以实现用户的目标。 •P:表1.2中定义的累积奖励。 •E...
  • 四、对话系统中使用控件的场景和需求分类 1. 用户需求和场景确定的情况 (1) 用户带着明确对话目的进入 Siri - 订外卖: 小爱同学 - 关电扇: 百度地图语音助手-查询咖啡厅: 在智能助手这个...
  • 此篇是:【智能客服对话系统专辑:《一、理论篇-核心技术模型原理图文分解》】 下面我们先来看下聊天机器人的神仙组合模型Seq2Seq+attention起源: Seq2Seq 于 2013年、2014 年被多位学者共同提出,在机器翻译任务...
  • 智能(语音)对话系统架构研究

    千次阅读 2018-05-30 10:51:24
    智能对话系统的需求目标 智能对话系统可以提供回答问题的能力,即在理解自然语言的基础上,解答用户提出的问题。进一步的,可以提供基于任务的对话能力,及判断用户的意图,通过多轮对话收集必要的信息,完成订票,...
  • 智能熊猫口语对话系统.智能熊猫口语对话系统.智能熊猫口语对话系统.
  • 智能语音对话系统解密 作为移动互联网新入口,智能语音系统竞争日趋激烈。语音识别、纠错、查询、意图理解、智能问答、语音信息搜索服务、上下文补全处理…………本文将解析如何在功能和技术层面打造一款成功的语音...
  • 本发明涉及机器人技术领域,特别是涉及一种智能对话机器人系统及其实现智能对话的方法。背景技术:目前市场上利用电话线实现智能语音对话机器人,都需要使用语音网关通过网络连接到软交换系统服务器的方式来实现,即...
  • 聊天机器人 基于人工智能对话系统
  • 智能客服是检索式对话系统常见应用 价值:客服是用户和企业之间的桥梁,具有一定的商业应用价值。在网络购物等经常会接触到一些客服。人工客服VS智能客服,如下图。 发展阶段: ① 关键字精准匹配 某个关键字...
  • 文章目录一.对话系统分类总结 一.对话系统分类 总结 要尽可能融合这三种类型,使得机器人更加智能
  • 智能对话系统使用户能够通过自然语言的方式和机器进行交互来满足自身的需求,在对话系统的研究中,多轮对话一直都是研究人员的重点研究方向。在多轮对话过程中,系统需要理解用户当前所说的话,且综合...
  • 为了保证给用户更及时的回复,更快的解决用户的问题,在线教育部引入了智能对话客服的技术。一、对话中台产生的背景1.1 产品需求在线教育产品面对学员的大量重复性问题,为了减轻人工客服的压力,并且给学员及时的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,179
精华内容 471
关键字:

智能对话系统