技术领域
[0001] 本公开涉及自然语言处理领域,具体而言,涉及一种对话方法及系统。
相关背景技术
[0002] 近年来,随着深度学习模型在自然语言处理方面的日趋成熟,深度学习模型已经广泛应用于对话系统。对话系统按照实现方式可分为:生成式对话系统和检索式对话系统。生成式对话系统是根据用户输入语句构建应答语句。检索式对话系统是根据用户输入语句检索以往的对话数据集并选择最匹配的应答语句。目前检索式对话系统在实践中应用较为广泛,例如线上客服系统。
[0003] 图1是一个现有技术的检索式对话系统的示意图。该对话系统包括步骤S10的粗粒度筛选和步骤S20的细粒度筛选。具体地,步骤S10采用对话上下文对整个对话数据集进行筛选,从中筛选出多个候选应答,该筛选依据主要是TF-IDF(term frequency–inverse document frequency,词频-逆文本频率指数)等常规方法,此步骤效率高但准确率相对较低。步骤S20从多个候选应答中使用CRM(context-to-response matching,上下文应答匹配)模型筛选出最终应答。CRM模型会分别计算对话上下文与多个候选应答之间的匹配程度,并基于匹配程度确定最终应答。但是CRM模型在计算过程中,忽略了候选应答的上文信息,而这些信息通常是十分有用的。CRM忽略候选应答的上文信息可能导致计算结果并不准确,进而导致不能输出最匹配应答。
具体实施方式
[0073] 以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
[0074] 图2是对话系统的部署示意图。如图2所示,各种终端201通过网络203与服务器202建立通信。终端201是采用计算机系统的各种电子设备,例如个人电脑、手机、笔记本、平板电脑、等等。网络203可以基于通过交换信号实现的各种通信技术之一或多种通信技术的组合,包括但不限于采用电和/或光传导线缆的有线技术,以及采用红外、射频和/或其它形式的无线技术。在不同的应用场景下,网络203可以是互联网、广域网或局域网,例如为公司的专有网络。网络203还可以为有线网络或无线网络。服务器202可以为实体服务器,也可以为云服务器。云服务器是利用虚拟化技术可以将实体服务器的硬件和软件资源进行整合,进而基于用户所需向提供计算能力、存储能力或者各种应用服务。具体到本公开,服务器202部署并运行对各种终端的用户查询作出应答的对话系统。
[0075] 结合图3所示的在线客服的示例继续说明检索式对话系统。如图上所示,终端201的显示屏显示聊天窗口21。在聊天窗口21中,当接收到用户输入的语句时,在该语句之前已经存在该用户与客服的一轮或多轮对话。在图上采用QC表征该语句以及该语句之前的一轮对话(它即本文所指的用户查询的对话上下文的一个示例)。服务器202存储有历史对话数据集。历史对话数据集22是基于原始对话记录整理出来的数据集。在实际操作时,可以先采集批量的原始对话记录,每个原始对话记录记录了客服与顾客之间的一次完整沟通过程,通常包括多轮对话,然后将原始对话记录过滤,去掉芜杂信息,然后切分并组成历史对话数据集的一条条数据。可选地,历史对话数据集的每条数据都包括由顾客发起的提问问句以及该问句之前的至少一轮对话。
[0076] 参考图上所示,服务器202的对话系统接收对话上下文,从历史对话数据集22找到多个匹配的候选对话DS1至DSn,然后根据应答CR1-CRn确定最终应答。最终应答被提供给终端201。如果客服系统是是智能客服(没有人工客服),则最终应答将直接显示在聊天窗口21中,如果上述客服是人工客服,则最终应答可作为推荐应答提供给人工客服,人工客服可对推荐应答进行修改加工并将其推送到聊天窗口21中。
[0077] 结合图1所示,CRM模型的输入是对话上下文QC和应答CR1至CRn(由S10的粗粒度筛选步骤得到),然后CRM模型基于对话上下文QC与应答CR1至CRn的匹配程度来确定最终应答,最终得到的应答为CR1。但在计算匹配度的过程中,CRM模型并不考虑应答CR1至CRn所对应的候选对话DS1至DSn,因此就此得到的应答CR1是不够准确的。从图上看出,顾客询问的是EMS的快递送达时间,CR1并不是针对EMS的快递送达时间。
[0078] 图4是本公开实施例提供的对话系统的示意图。如图上所示,该对话系统包括对话采集模块401、第一筛选模块402、第二筛选模块403和应答确定模块404。
[0079] 对话采集模块401用于获取用户查询的对话上下文。该对话上下文包括当前的用户输入的查询语句(通常包括提问语句)以及在此查询语句之前的至少一轮对话。对话采集模块401将得到的对话上下文输出给第一筛选模块402。
[0080] 第一筛选模块402执行粗粒度筛选。具体地,采用对话上下文对整个历史对话数据集进行筛选,筛选出多个候选对话1-n。该操作例如可通过TF-IDF(term frequency–inverse document frequency,词频-逆文本频率指数)等常规方法实现。该操作效率高速度快但准确率相对较低。第一筛选模块402将多个候选对话1-n输出给第二筛选模块403。
[0081] 第二筛选模块403用于在多个候选对话中选择与对话上下文最匹配的候选对话作为答复对话。
[0082] 应答确定模块404根据答复对话确定用户查询的应答,如果是智能客服,则可以直接将答复对话的应答作为当前用户查询的应答输出在显示屏上,如果是人工客服,人工客服会修改应答后再输出。
[0083] 在一些实施例中,第二筛选模块403包括语义相似度计算单元、匹配程度计算单元和答复对话确定单元。语义相似度计算单元计算对话上下文与多个候选对话之间的语义相似程度,匹配程度计算单元计算对话上下文与多个候选对话的各个应答之间的匹配程度,答复对话确定单元结合两者确定答复对话。
[0084] 和现有技术相比,本实施例不仅计算对话上下文与多个候选对话之间的语义相似程度同时计算对话上下文与多个候选对话的各个应答之间的匹配程度,根据两者确定最终应答,因此本实施例能够获得更加准确的最终应答。
[0085] 进一步地,如图5所示,第二筛选模块403采用训练好的深度学习模型500计算对话上下文与多个候选对话之间的语义相似度同时计算对话上下文与多个候选对话的应答之间的匹配程度,并根据语义相似度和匹配程度选择最匹配的候选对话作为答复对话。
[0086] 图5是一个本公开实施例使用的深度学习模型的架构图。图6是图5中的表征层和交互层的详细示意图。
[0087] 为了方便说明,我们将该深度学习模型500视为CCM模型、CRM模型和集成模型的组合。
[0088] CCM模型501的输入是对话上下文和多个候选对话,用于计算对话上下文分别与多个候选对话之间的语义相似程度,通俗地讲,即确定对话上下文与多个候选对话描述的内容是否相似程度。如果对话上下文与某个候选对话语义相似程度较高,相应地,该候选对话的应答成为对话上下文的应答的概率较高。
[0089] CRM模型502判断对话上下文与候选对话的各个应答之间的匹配程度,通俗地讲,即判断候选对话的各个应答是否能够很好地回答对话上下文。CRM模型502和图1中的CRM模型类似。
[0090] 集成模型503根据CCM模型501和CRM模型502的输出确定最匹配的候选对话作为答复对话。
[0091] 如图上所示,CCM模型501包括表征层5011、交互层5012和聚合层5013。
[0092] 表征层5011将句子表征为带有句子信息的词向量,采用的方法为Transformer网络:
[0093]
[0094]
[0095] 和 分别表示对话上下文uq中的第i个语句以及候选对话ur的第j个语句(utterance),其中q表示对应的部分属于对话上下文,r表示对应的部分属于候选对话。代表 的向量表达, 代表 的向量表达,其中R表示实数空间,t为
语句内词的个数,d为词向量的维度。
[0096] 参考图6所示,首先根据 和 得到Transformer网络的输入为Q,K和V,分别表示查询向量序列,键向量序列和值向量序列。它们首先经过一个自注意力层(Attention),之后通过加法和正则化操作(ADD&Norm)获得新的表示,之后通过前馈神经网络(Feed Forward)和加法及正则化操作(ADD&Norm)获得对应的向量表达。
[0097] 参考图5所示,表征层5011将向量表达输出给交互层5012。交互层5012得到向量表达之后,会执行以下步骤。
[0098] 步骤S1用于根据对话上下文的各个向量表达和候选对话中的各个向量表达,进行交叉注意力操作,得到结果矩阵M。具体地,直接根据表征层的输出 做交叉注意力(cross attention)操作得到关于 的矩阵为Mi,j∈Rt*t,其中Mi,j的a行第b列的元素的计算方式如下:
[0099]
[0100] 其中, 表示 的第a行元素,上标T表示转置操作
[0101] 步骤S2用于根据对话上下文的各个向量表达和候选对话中的各个向量表达,先进行自注意力操作,再进行交叉注意力操作,并得到结果结构M ′。即先对进行自注意力(self-attention)操作,具体是采用自注意力函数fatt做如下计算得到 和
[0102]
[0103]
[0104] 然后再基于 和 进行交叉注意力(cross attention)操作,一个新的矩阵为M′i,j∈Rt*t,其中M′i,j的第a行第b列的元素的计算方式如下:
[0105]
[0106] 步骤S3得到M,M′之后,将对应元素堆叠起来:
[0107] Fi,j=fstack(Mi,j,M′i,j),其中Fi,j∈R2*t*t (7)
[0108] 步骤S4是用一个2D CNN模型来提取匹配特征,并将提取到的特征展开到多个一维向量上:
[0109] Si,j=fflatten(fCNN(Fi,j)) (8)
[0110] 其中fCNN是2D CNN模型对应的函数表达。fflatten表示展平操作,将fCNN的输出展平成一维向量。
[0111] 上述步骤可以参考图5。在图上,交互层5012按照上述步骤,得到 和 然后得到Mi,j和M′i,j,再将Mi,j和M′i,j输入到一个CNN模型,得到Si,j。
[0112] 聚合层5013从交互层5012接收一维向量Si,j。其中i代表的含义是对话上下文的第i个语句,j的含义代表候选对话的第j个语句(utterance),因此Si,j代表了对话上下文的第i个语句和候选对话的第j个语句的匹配关系向量。而此时,由于 是一个元素为向量的矩阵,因此传统的方法不能很好的编码这一形式的张量,这里我们利用图网络来处理这一问题。我们认为S是一个无向图(undirected graph),S的每一个元素都对应无向图的一个节点(node)。我们直接用图注意力网络(Graph Attention Network)来进行,即可以表示为:
[0113] A=fgat(S) (9)
[0114] 其中fgat(S)是图注意力网络表征的函数。
[0115] 之后通过带有角色信息的注意力机制(role-aware attention)对A进行整合。表示为
[0116]
[0117] 其中E是角色信息矩阵,Ei,Ej,Ea,Eb分别表示角色信息矩阵E的第i,j,a,b行。Ai,j是上述图注意力网络的输出A的第i行第j列的元素。Aa,b是上述图注意力网络的输出A的第a行第b列的元素。MLP表示多层感知器,exp表示指数函数。
[0118] 最终得到对话上下文与多个候选对话之间的语义相似程度,即下面公式所示。
[0119] Rcc=fcc(query′s context,candicate′s session)=Ar (11)[0120] 其中,query’s context表示对话上下文,candicate’s session表示一个候选对话。
[0121] CRM模型402用到了深交互层。深交互层利用深层次交互,能充分地捕获对话上下文和候选应答(candidate response)之间的语义关系。深交交互层在论文《One Time of Interaction May Not Be Enough:Go Deep with an Interaction-over-Interaction Network for Response Selection in Dialogues》提出并有详细描述,这里就不再赘述。最终的CRM模型402可表示为:
[0122] Rcr=fcr(query′s context,response) (12)
[0123] 其中,query’s context表示对话上下文,response表示应答。
[0124] 集成模型503得到CCM模型501和CRM模型502的向量表达Rcc,Rcr之后,如图上所示,采用多层感知机来建模两者的关系,即如下公式:
[0125] γ=sigmoid(MLPg(Rcc,Rcr)) (12)
[0126] 其中,多层感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上,Sigmoid函数是模型中的激活函数,将变量映射到设定区间,例如映射在[0,1]的区间。
[0127] 此外,根据以下公式得到:
[0128] Rcs=γRcc+(1-γ)Rcr (13)
[0129] 得到Rcs后,再过另一个多层感知机(MLP)即可得到最终的分值,该分值表征。
[0130] score=MLP2(Rcs) (14)
[0131] 与上述实施例相对应,如图7示,本公开提供一种对话方法,包括以下步骤。
[0132] 在步骤S701中,获得用户查询的对话上下文。
[0133] 步骤S701是将当前用户输入的查询语句以及在该语句之前的至少一轮对话作为对话上下文。可选地,可以将该查询语句之前的所有对话都放在对话上下文中。
[0134] 在步骤S702中,根据对话上下文获得多个候选对话。
[0135] 步骤S702是粗筛选步骤。它将对话上下文与数据集中现有的多个候选对话分别比较,以从历史对话数据集筛选出多个候选对话。
[0136] 历史对话数据集是对话(dialog session)的集合。每个对话(dialog session)至少包括用户输入的查询语句以及在该语句之前的一轮或多轮对话,用户输入的查询语句通常包含一个提问语句。为了得到历史对话数据集,需要采集多条历史对话记录,每个历史对话记录就是一次完整的沟通记录,然后将每条历史对话记录切分成对话。
[0137] 候选对话是与对话上下文具有一定关联的对话,例如候选对话与对话上下文都提到了某个产品品牌。为了避免粗筛选的步骤将多个与对话上下文语义关系不大的片段筛选出来,可通过关键词过滤掉大多数的候选对话。
[0138] 在步骤S703中,在多个候选对话中选择与对话上下文最匹配的候选对话作为答复对话。
[0139] 在一些实施例中,如图8所示,该步骤包括步骤S7031-S7033。步骤S7031计算对话上下文与多个候选对话之间的语义相似度。步骤S7032计算对话上下文与多个候选对话的应答之间的匹配程度。S7033根据语义相似度和匹配程度选择最匹配的候选对话作为答复对话。
[0140] 进一步地,步骤S7033包括:根据语义相似度和匹配程度计算多个候选对话的分值;选择分值最高的候选对话作为答复对话。
[0141] 进一步地,如图8所示的步骤均通过深度学习模型执行。关于深度学习模型,上文结合图5-6已经详细描述,这里不再重复描述。
[0142] 在步骤S704中,根据答复对话确定用户查询的应答。具体地,可以直接将答复对话的应答作为用户查询的应答,或者将答复对话的应答修改后作为用户查询的应答。
[0143] 综上,和现有技术相比,本公开实施例兼顾对话上下文与多个候选对话的语义相似程度以及对话上下文与多个候选对话的各个应答之间的匹配程度,确定最终的应答,从而提高了应答的准确度。
[0144] 本公开实施例还提供一种电子设备90,在硬件层面,包括存储器902和处理器901,除此之外,一些情况下还包括输入输出设备903和其他硬件904。存储器902例如为高速随机存取存储器(Random-Access Memory,RAM),也可能是非易失性存储器(non-volatile memory),例如为至少1个磁盘存储器等。输入输出设备903例如为显示器、键盘、鼠标、网络控制器等设备。处理器901可以基于目前市场上各种型号的处理器构建。处理器901、存储器902、输入输出设备903和其他硬件904通过总线相互连接,该总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个线条表示,但并不表示仅有一根总线或一种类型的总线。
[0145] 存储器902用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机指令。存储器可以包括内存和非易失性存储器,并向处理器901提供计算机指令和数据。处理器901从存储器902中读取对应的计算机程序到内存中然后运行,在逻辑层面上对话方法,具体包括以下步骤:获得用户查询的对话上下文;根据所述对话上下文获得多个候选对话;在所述多个候选对话中选择与所述对话上下文最匹配的候选对话作为答复对话;根据所述答复对话确定所述用户查询的应答。
[0146] 本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0147] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
[0148] 计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
[0149] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,以及上述任意合适的组合。
[0150] 可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如JAVA、C++,还可以包括常规的过程式程序设计语言,例如C。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0151] 以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。