技术领域
[0001] 本发明涉及人机交互技术领域,尤其涉及一种任务对话系统中的对话处理方法及装置。
相关背景技术
[0002] 对话系统(Dialogue System)是一种基于自然语言的人机交互系统。通过对话系统,人可以使用自然语言和计算机进行多轮交互来完成特定的任务,如信息查询、服务获取等。对话系统提供了一种更自然、便捷的人机交互方式,广泛应用于车载、家居、客服等场景。
[0003] 其中,对话系统根据使用场景可以分为三类聊天对话系统、问答对话系统和任务对话系统。聊天对话系统中,机器能够根据用户所说的话,进行相关的回复,让聊天进行下去,但聊天本身并无特定的目的。聊天对话系统通常使用在聊天机器人等场景,供人们娱乐和打发时间。问答对话系统则以自动回答用户的问题为目标,答案来自于特定的知识库,通常以一问一答的形式,适用于搜索引擎等场景。任务对话系统比以上两种对话系统更为复杂,其目的是让机器可以和人进行多轮交互,理解人的意图,并帮助人完成某种任务。任务对话系统通常用在智能助手等场景,通过多轮对话的方式帮助使用者完成任务,如查询天气、管理日程、预订机票等。
[0004] 任务对话系统是对话系统中相对比较复杂的,主要有以下几个挑战。首先,任务型的对话通常多轮的,这要求系统能够在每一轮交互时,根据用户当前所说的话和上下文来综合判断并执行合理的动作。因此,任务型对话系统中对上下文的建模非常关键。其次,聊天对话系统只需要确保回复的相关性、趣味性,可以让对话继续下去即可,而任务型对话最终的目的是帮助用户去执行特定的任务,这对准确性的要求很高。最后,不同类型的任务之间有很大的差别,如何让任务型对话系统具有跨领域的通用性,是一个很有挑战的问题。
[0005] 常见的任务型对话系统通常采用基于状态机的方案。具体而言,根据任务的特点,对话系统定义各种不同的对话状态。在每个对话状态上,系统都有对应的可执行的动作。所谓动作,即系统可以采取的行为,如回复特定的消息、调用应用程序接口(Application Programming Interface,API)等都属于动作。基于此,任务型对话系统的工作方式如下:在当前对话状态下,系统根据用户当前所说的话选择一个合理的动作,动作执行后系统根据状态机里定义的状态跳转规则跳转到下一个对话状态,等待下一次的用户输入。
[0006] 然而,在实现本发明的过程中发明人发现基于状态机的对话系统至少存在以下问题:首先,状态的定义依赖于领域知识,需要专业人士投入大量的精力来设计。其次,对于复杂的任务,状态往往非常多,设计出来的状态机会非常复杂,难以维护。最后,不同领域的任务对话系统对应的状态大不相同,针对不同的领域都要重新设计状态机,不具备跨领域的通用性。因此,基于状态机的多轮对话系统往往只适用于相对简单的任务场景。
具体实施方式
[0030] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0031] 下面参考附图描述本发明实施例的任务对话系统中的对话处理方法及装置。
[0032] 图1是本发明一个实施例的任务对话系统中的对话处理方法的流程图。
[0033] 如图1所示,该任务对话系统中的对话处理方法可以包括以下几个步骤:
[0034] S11,获取本轮用户消息。
[0035] 在任务对话的场景中,获取用户在对话界面中输入的本轮用户消息。
[0036] S12,获取上一轮对话中任务对话系统反馈的对话动作。
[0037] 其中,需要理解的是,上一轮对中任务对话系统返回的对话动作可以包括特定消息、调用应用程序接口等。
[0038] S13,根据本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作。
[0039] 在本发明的一个实施例中,根据本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作的过程,如图2所示,可以包括:
[0040] S21,根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息,抽取本轮对话中与任务相关的实体信息,并根据实体抽取结果生成对应的实体向量。
[0041] 在本发明的一个实施例中,根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息确定用户的任务,可判断本轮用户消息中是否存在与任务相关的实体要素的实体关键词,若存在,则从本轮用户消息中抽取本轮对话中与任务相关的实体信息。
[0042] 其中,实体向量的维度是由任务所对应的实体要素集合中实体要素的总数量决定的,例如,任务为预定机票,假设该任务所对应的实体要素集合中包括5个实体要素,则实体向量的维度为5,即,实体向量为5维向量。
[0043] 其中,实体向量中每一维表示任务所对应的实体要素集合中一个实体要素(出现为1,不出现为0)。
[0044] 其中,需要说明的是,在任务对话系统中,用户希望任务对话系统执行的任务可以由本轮对话信息和/或其他历史对话信息确定出来。
[0045] 例如,本轮用户消息为“帮我买张北京到上海的机票”,通过对本轮用户消息进行意图分析,即可确定用户的意图是预定机票,即,任务对话系统可确定任务为预定机票,根据预定机票可确定与预定机票相关的实体要素集合,假设实体要素集合中包括起飞城市、降落城市、出发日期、预定日期和航班信息。通过分析可以确定本轮用户消息中“北京”和“上海”是与预定机票这个任务相关的实体信息,并且关键词“北京”对应的实体要素为“起飞城市”,“上海”对应的实体要素为“降落城市”。
[0046] 又例如,本轮用户消息为“张三,身份证号码123456199001010001”,假设获取上一轮对话中任务对话系统反馈的对话动作为特定消息,特定消息为收到,请提供乘机人信息,则根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息抽取本轮对话中与任务“预定机票”相关的实体要素“乘机人姓名”对应的关键词为“张三”,实体要素“身份证号码”对应的关键词为“123456199001010001”。
[0047] 其中,需要说明的是,本轮用户消息中所抽取与任务相关的实体信息影响任务对话系统对话动作的选择和执行。
[0048] 在抽取本轮对话中与任务相关的实体信息后,可根据实体抽取结果生成对应的实体向量。
[0049] 其中,需要说明的是,可通过基于实体抽取规则或者统计的方式根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息,抽取本轮对话中与任务相关的实体信息。
[0050] S22,对本轮用户消息进行文本向量处理,以生成本轮用户消息的文本向量。
[0051] 其中,文本向量为本轮用户消息对应的向量。
[0052] 通常,即便本轮用户消息没有提及实体时,本轮用户消息本身也表达一定的含义,这对对话动作的选择有帮助。例如,本轮用户消息为“好的,订这班”时,文本中并未包含任何实体,但表达了要订某个航班的意图。
[0053] 在本发明的实施例中,为了使得任务对话系统可以反馈更加准确的对话动作,可通过现有技术对本轮用户消息进行文本向量处理,以生成本轮用户消息的文本向量。
[0054] S23,获取上一轮对话的隐向量。
[0055] 其中,上一轮对话的隐向量表示上一轮对话的状态所对应的向量。
[0056] 其中,需要说明的是,隐向量的维度是预先设定的,例如,在训练深度神经网络模型时人为设定隐向量的维度。
[0057] S24,基于预先训练的深度神经网络模型,根据文本向量、实体向量、上一轮对话的隐向量、上一轮对话中任务对话系统反馈的对话动作生的对话动作向量生成本轮对话中任务对话系统反馈的对话动作。
[0058] 其中,深度神经网络模型是基于长短时记忆(LSTM)的循环神经网络预先建立的。
[0059] 其中,需要说明的是,在基于预先训练的深度神经网络模型,根据文本向量、实体向量、上一轮对话的隐向量、上一轮对话中任务对话系统反馈的对话动作生的对话动作向量生成本轮对话中任务对话系统反馈的对话动作的同时,还可以生成本轮对话对应的隐向量。
[0060] 也就是说,在将文本向量、实体向量、上一轮对话的隐向量、上一轮对话中任务对话系统反馈的对话动作生的对话动作向量输入深度神经网络模型,通过深度神经网络模型可以生成本轮对话对应的隐向量和任务对话系统针对本轮对话反馈的对话动作。
[0061] S14,显示本轮对话中任务对话系统反馈的对话动作。
[0062] 为了更加清楚的描述本发明,下面结合图3对该实施例的任务对话系统中的对话处理方法进行描述。
[0063] 其中,深度神经网络模型中包括LSTM单元,基于预先训练的深度神经网络模型,根据文本向量、实体向量、上一轮对话的隐向量、上一轮对话中任务对话系统反馈的对话动作生成本轮对话中任务对话系统反馈的对话动作具体过程如下:
[0064] 首先,获取初始隐向量h0和初始对话动作向量a0。
[0065] 其中,需要说明的是,初始隐向量h0和初始对话动作向量a0中的每一元素均是0,即,初始隐向量h0和初始对话动作向量a0均是全零的向量。
[0066] 然后,从第n=1轮对话开始,执行步骤S1,步骤S1为:将本轮用户消息qn和上一轮对话动作向量ai-1输入实体抽取模块,输出实体抽取向量en;将当前轮用户消息qn输入文本向量化模块,得到文本向量vn;将上一轮隐向量hn-1、上一轮对话动作向量an-1、本轮实体抽取向量en、本轮文本向量vn进行拼接,输入LSTM单元,以通过LSTM单元得到本轮对话的隐向量hn和本轮对话的对话动作向量an,以及通过动作执行模块根据本轮对话的对话动作向量an执行对应的对话动作,并显示本轮对话中任务对话系统反馈的对话动作。也就是说,LSTM单元的输出是本轮对话的隐向量hn和本轮对话的对话动作向量an。
[0067] 如果用户继续有输入,则将n增加1,并执行步骤S1。如果用户没有输入,则结束。
[0068] 综上可以看出,该实施的任务对话系统中的对话处理方法在生成本轮对话中任务对话系统反馈的对话动作的过程中,通过本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作,由此,结合上轮对话的对话动作生成本轮对话的对话动作,不需要针对不同领域的任务对话系统预先定义对话状态,使得该方法具有很强的跨领域迁移能力。
[0069] 根据本发明实施例的任务对话系统中的对话处理方法,获取本轮用户消息,获取上一轮对话中任务对话系统反馈的对话动作,根据本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作,以及显示本轮对话中任务对话系统反馈的对话动作,由此,结合上轮对话的对话动作生成本轮对话的对话动作,不需要针对不同领域的任务对话系统预先定义对话状态,使得该方法具有很强的跨领域迁移能力。
[0070] 为了实现上述实施例,本发明还提出了一种任务对话系统中的对话处理装置。
[0071] 图4是本发明一个实施例的任务对话系统中的对话处理装置的结构示意图。
[0072] 如图4所示,该任务对话系统中的对话处理装置包括第一获取模块110、第二获取模块120、生成模块130和显示模块140,其中:
[0073] 第一获取模块110用于获取本轮用户消息。
[0074] 第二获取模块120用于获取上一轮对话中任务对话系统反馈的对话动作。
[0075] 其中,需要理解的是,上一轮对中任务对话系统返回的对话动作可以包括特定消息、调用应用程序接口等。
[0076] 生成模块130用于根据本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作。
[0077] 显示模块140用于显示本轮对话中任务对话系统反馈的对话动作。
[0078] 在本发明的一个实施例中,在图4所示的基础上,如图5所示,生成模块130可以包括抽取单元131、文本向量化单元132、获取单元133和生成单元134,其中:
[0079] 抽取单元131用于根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息,抽取本轮对话中与任务相关的实体信息,并根据实体抽取结果生成对应的实体向量。
[0080] 其中,实体向量的维度由任务所对应的实体要素集合中实体要素的总数量决定的,例如,任务为预定机票,假设该任务所对应的实体要素集合中包括5个实体要素,则实体向量的维度为5,即,实体向量为5维向量。
[0081] 其中,实体向量中每一维表示任务所对应的实体要素集合中一个实体要素(出现为1,不出现为0)。
[0082] 文本向量化单元132用于对本轮用户消息进行文本向量处理,以生成本轮用户消息的文本向量。
[0083] 获取单元133用于获取上一轮对话的隐向量。
[0084] 其中,上一轮对话的隐向量表示上一轮对话的状态所对应的向量。
[0085] 其中,需要说明的是,隐向量的维度是预先设定的,例如,在训练深度神经网络模型时人为设定隐向量的维度。
[0086] 生成单元134用于基于预先训练的深度神经网络模型,根据文本向量、实体向量、上一轮对话的隐向量、上一轮对话中任务对话系统反馈的对话动作的对话动作向量生成本轮对话中任务对话系统反馈的对话动作。
[0087] 在本发明的一个实施例中,深度神经网络模型是基于长短时记忆(LSTM)的循环神经网络预先建立的。
[0088] 在本发明的一个实施例中,在确定用户的任务时,抽取单元131具体用于:根据上一轮对话中任务对话系统反馈的对话动作和本轮用户消息确定用户的任务,判断本轮用户消息中是否存在与任务相关的实体关键词,若存在,则从本轮用户消息中抽取本轮对话中与任务相关的实体信息。
[0089] 其中,需要说明的是,前述对任务对话系统中的对话处理方法实施例的解释说明也适用于该实施例的任务对话系统中的对话处理装置,其实现原理类似,此处不再赘述。
[0090] 根据本发明实施例的任务对话系统中的对话处理装置,获取本轮用户消息,获取上一轮对话中任务对话系统反馈的对话动作,根据本轮用户消息和上一轮对话中任务对话系统反馈的对话动作,生成本轮对话中任务对话系统反馈的对话动作,以及显示本轮对话中任务对话系统反馈的对话动作,由此,结合上轮对话的对话动作生成本轮对话的对话动作,不需要针对不同领域的任务对话系统预先定义对话状态,该方法可以应用于任何领域的任务对话,也就是说,该方法具有很强的跨领域迁移能力。
[0091] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0092] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0093] 为实现上述实施例,本发明还提出了一种服务器。
[0094] 该服务器包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任务对话系统中的对话处理方法。
[0095] 一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任务对话系统中的对话处理方法。
[0096] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0097] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0098] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0099] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0100] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0101] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0102] 此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0103] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。