CN114969250A - 人机对话生成方法、装置、电子设备及存储介质 - Google Patents
人机对话生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114969250A CN114969250A CN202210513919.5A CN202210513919A CN114969250A CN 114969250 A CN114969250 A CN 114969250A CN 202210513919 A CN202210513919 A CN 202210513919A CN 114969250 A CN114969250 A CN 114969250A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- user
- dialog
- dialogue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Machine Translation (AREA)
Abstract
本公开提供一种人机对话生成方法、装置、电子设备及存储介质,该方法包括:接收用户对话数据;根据用户对话数据遍历预先获取的历史对话数据,确定历史对话数据中是否存在与用户对话数据对应的记忆数据;响应于历史对话数据中存在与用户对话数据对应的记忆数据,对记忆数据进行分词处理,提取得到记忆数据的记忆多元组;根据记忆多元组生成回复语句。在数据匮乏的情况下,通过少量的定制成本来实现落地场景中所需要的记忆能力,实时在对话过程中生效,提高了历史对话数据中的记忆数据在对话生成过程中的利用率,实现了记忆内容的可控性以及灵活扩展性,使得生成的回复语句与用户相关性更高,避免了回复语句过于生硬的问题。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种人机对话生成方法、装置、电子设备及存储介质。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
相关技术中,人机对话过程中机器人是对用户输入的对话内容进行分析,总结本次对话中用户输入的对话内容来生成回复语句,而在训练机器人的过程中需要依赖大量标注好的数据集,包括但不限于对话生成数据集和对话总结数据集。因此,相关技术存在着标注成本高,对历史对话中的记忆数据利用率低,进而造成回复语句生硬不灵活的问题。
发明内容
有鉴于此,本公开的目的在于提出一种人机对话生成方法、装置、电子设备及存储介质。
基于上述目的,在第一方面,本公开提供了一种人机对话生成方法,包括:
接收用户对话数据;
根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据;
响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组;
根据所述记忆多元组生成回复语句。
在一种可能的实现方式中,所述对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组,包括:
分析所述记忆数据中的词之间的依存关系,得到若干由两个具有所述依存关系的词组成的数据对,将包括同一个词的两个所述数据对进行合并,得到所述记忆多元组。
在一种可能的实现方式中,所述接收用户对话数据之后,还包括:
提取用于表征所述用户对话数据的第一对话多元组;
根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型。
在一种可能的实现方式中,所述根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型之后,还包括:
根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长。
在一种可能的实现方式中,所述记忆类型,包括:固有属性记忆类型、长时记忆类型、短时记忆类型和冗余记忆类型;
所述根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长,包括:
响应于确定所述第一对话多元组的记忆类型为所述固有属性记忆类型,将所述第一对话多元组的存储时长确定为第一存储时长;
响应于确定所述第一对话多元组的记忆类型为所述长时记忆类型,将所述第一对话多元组的存储时长确定为第二存储时长;
响应于确定所述第一对话多元组的记忆类型为所述短时记忆类型,将所述第一对话多元组的存储时长确定为第三存储时长;
响应于确定所述第一对话多元组的记忆类型为所述冗余记忆类型,将所述第一对话多元组的存储时长确定为第四存储时长;
其中,所述第一存储时长大于所述第二存储时长,所述第二存储时长大于所述第三存储时长,所述第三存储时长大于所述第四存储时长。
在一种可能的实现方式中,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据之前,还包括:
获取所述历史对话数据;
根据所述历史对话数据提取对话ID;
根据所述对话ID标记所述历史对话数据,以绑定所述对话ID和所述历史对话数据。
在一种可能的实现方式中,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据,包括:
根据所述用户对话数据确定所述用户对话数据对应的用户ID;
根据所述用户ID确定所述历史对话数据中是否存在与所述用户ID相对应的所述对话ID;
响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据;
对比所述用户对话数据与所述候选记忆数据,以确定与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据,并将与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据作为所述记忆数据。
在一种可能的实现方式中,所述根据所述记忆多元组生成回复语句,包括:
根据通用对话模板拼接所述记忆多元组以确定候选回复语句;
将所述候选回复语句输入至预训练好的语言模型以确定所述候选回复语句的困惑度;
响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句。
在一种可能的实现方式中,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
响应于所述困惑度小于预设困惑度阈值,根据所述记忆数据确定背景信息;
根据所述背景信息调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
提取所述历史对话数据的第二对话多元组;
将所述第二对话多元组关联到所述历史对话数据,并将所述第二对话多元组和所述历史对话数据作为训练集数据;
利用所述训练集数据训练对话生成模型;
利用所述对话生成模型调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:首轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据之后,还包括:
确定所述首轮对话中是否存在文字文本;
响应于所述首轮对话中不存在所述文字文本,根据任意一个所述候选记忆数据生成回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:多轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据,之后还包括:
确定所述多轮对话中是否存在相邻至少两轮对话中不存在文字文本;
响应于存在相邻至少两轮对话中不存在文字文本,根据任意一个所述候选记忆数据生成回复语句。
在第二方面,本公开提供了一种人机对话生成装置,包括:
接收模块,被配置为接收用户对话数据;
确定模块,被配置为根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据;
提取模块,被配置为响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组;
生成模块,被配置为根据所述记忆多元组生成回复语句。
在第三方面,本公开提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的人机对话生成方法。
在第四方面,本公开提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使计算机执行如第一方面所述的人机对话生成方法。
从上面所述可以看出,本公开提供的一种人机对话生成方法、装置、电子设备及存储介质,根据接收到的用户对话数据,从预先获取到的该用户的历史对话数据中寻找与用户对话数据对应的记忆数据,当存在与用户对话数据对应的记忆数据时,进一步可以提取记忆数据的记忆多元组,进而根据记忆多元组生成与该用户记忆数据相关的回复语句。在数据匮乏的情况下,通过少量的定制成本来实现落地场景中所需要的记忆能力,实时在对话过程中生效,提高了历史对话数据中的记忆数据在对话生成过程中的利用率,实现了记忆内容的可控性以及灵活扩展性,使得生成的回复语句与用户相关性更高,避免了回复语句过于生硬的问题。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本公开实施例所提供的一种人机对话生成方法的示例性流程示意图;
图2示出了根据本公开的实施例的在线与离线结合的对话生成方法的示例性流程示意图;
图3示出了本公开实施例所提供的一种人机对话生成装置的示例性结构示意图;
图4示出了本公开实施例所提供的一种电子设备的示例性结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
根据本公开的实施方式,提出了一种人机对话生成方法、装置、电子设备及存储介质。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
如背景技术部分所述,近几年有一些对对话过程中的记忆进行研究工作,但是在工业界,还没有成熟的技术方案,一方面是因为对话记忆这个方向目前还没有清晰统一的定义标准,另外找到合适应用场景也是一个大的挑战。
在一些相关技术中,现有的开放域闲聊机器人,比如微软小冰,在其公开技术中,没有涉及对长时记忆进行提取和使用的能力;百度的PLATO-2、google的Meena也没有显示的对对话记忆进行建模使用。
另一些相关技术中,在对话过程中通过不断对历史对话内容进行总结,然后利用这些总结和最近的对话历史来生成回复,其中对话总结用的是在人工标注的大规模语料上训练的conversation summary模型;对话回复生成也是基于大规模预训练模型,在搜集的大量对话数据上训练的模型,将summary结果和对话历史放一起,作为对话上文来生成回复。
申请人通过研究发现,相关技术中,人机对话过程中机器人是对用户输入的对话内容进行分析,总结本次对话中用户输入的对话内容来生成回复语句,而在训练机器人的过程中需要依赖大量标注好的数据集,包括但不限于对话生成数据集和对话总结数据集;在实际落地应用的时候我们通常需要快速验证记忆内容对对话效果的影响,如果依赖标注的大规模数据集,且不同场景可能需要不一样的数据集,需要标注多领域的数据,会严重影响产品落地应用的进度;对记忆的内容不可控,因为不同记忆的记忆时间可能不同,太过久远的记忆我们可能需要抛弃,另外也可能存在前后记忆矛盾的情况,现有方法并未解决这些问题。
正因如此,本公开提供的一种人机对话生成方法、装置、电子设备及存储介质,根据接收到的用户对话数据,从预先获取到的该用户的历史对话数据中寻找与用户对话数据对应的记忆数据,当存在与用户对话数据对应的记忆数据时,进一步可以提取记忆数据的记忆多元组,进而根据记忆多元组生成与该用户记忆数据相关的回复语句。在数据匮乏的情况下,通过少量的定制成本来实现落地场景中所需要的记忆能力,实时在对话过程中生效,提高了历史对话数据中的记忆数据在对话生成过程中的利用率,实现了记忆内容的可控性以及灵活扩展性,使得生成的回复语句与用户相关性更高,避免了回复语句过于生硬的问题。
下面通过具体的实施例来对本公开实施例所提供的人机对话生成方法进行具体说明。
图1示出了本公开实施例所提供的一种人机对话生成方法的示例性流程示意图。
参考图1,本公开实施例所提供的一种人机对话生成方法具体包括以下步骤:
S102:接收用户对话数据。
在一种可能的实现方式中,所述接收用户对话数据之后,还包括:
提取用于表征所述用户对话数据的第一对话多元组;
根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型。
在一种可能的实现方式中,所述根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型之后,还包括:
根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长。
在一种可能的实现方式中,所述记忆类型,包括:固有属性记忆类型、长时记忆类型、短时记忆类型和冗余记忆类型;
所述根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长,包括:
响应于确定所述第一对话多元组的记忆类型为所述固有属性记忆类型,将所述第一对话多元组的存储时长确定为第一存储时长;
响应于确定所述第一对话多元组的记忆类型为所述长时记忆类型,将所述第一对话多元组的存储时长确定为第二存储时长;
响应于确定所述第一对话多元组的记忆类型为所述短时记忆类型,将所述第一对话多元组的存储时长确定为第三存储时长;
响应于确定所述第一对话多元组的记忆类型为所述冗余记忆类型,将所述第一对话多元组的存储时长确定为第四存储时长;
其中,所述第一存储时长大于所述第二存储时长,所述第二存储时长大于所述第三存储时长,所述第三存储时长大于所述第四存储时长。
S104:根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据。
在一种可能的实现方式中,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据之前,还包括:
获取所述历史对话数据;
根据所述历史对话数据提取对话ID;
根据所述对话ID标记所述历史对话数据,以绑定所述对话ID和所述历史对话数据。
在一种可能的实现方式中,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据,包括:
根据所述用户对话数据确定所述用户对话数据对应的用户ID;
根据所述用户ID确定所述历史对话数据中是否存在与所述用户ID相对应的所述对话ID;
响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据;
对比所述用户对话数据与所述候选记忆数据,以确定与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据,并将与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据作为所述记忆数据。
S106:响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组。
在一种可能的实现方式中,所述对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组,包括:
分析所述记忆数据中的词之间的依存关系,得到若干由两个具有所述依存关系的词组成的数据对,将包括同一个词的两个所述数据对进行合并,得到所述记忆多元组。
S108:根据所述记忆多元组生成回复语句。
在一种可能的实现方式中,所述根据所述记忆多元组生成回复语句,包括:
根据通用对话模板拼接所述记忆多元组以确定候选回复语句;
将所述候选回复语句输入至预训练好的语言模型以确定所述候选回复语句的困惑度;
响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句。
在一种可能的实现方式中,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
响应于所述困惑度小于预设困惑度阈值,根据所述记忆数据确定背景信息;
根据所述背景信息调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
提取所述历史对话数据的第二对话多元组;
将所述第二对话多元组关联到所述历史对话数据,并将所述第二对话多元组和所述历史对话数据作为训练集数据;
利用所述训练集数据训练对话生成模型;
利用所述对话生成模型调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:首轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据之后,还包括:
确定所述首轮对话中是否存在文字文本;
响应于所述首轮对话中不存在所述文字文本,根据任意一个所述候选记忆数据生成回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:多轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据,之后还包括:
确定所述多轮对话中是否存在相邻至少两轮对话中不存在文字文本;
响应于存在相邻至少两轮对话中不存在文字文本,根据任意一个所述候选记忆数据生成回复语句。
在一些实施例中,在人机对话场景中,用户和机器人会相互进行沟通,机器人可以通过用户输入的对话数据,来进行回复,在接收到用户输入的用户对话数据后,为了便于对用户对话数据的主要内容进行快速理解,可以将用户对话数据用多元组的形式进行表示。具体地,多元组可以包括三元组,例如主语subject、谓语predicate和宾语object,例如当用户对话数据为“我可喜欢吃番茄炒蛋了。”,则提取到的用于表征该用户对话数据的多元组可以为“我,喜欢吃,番茄炒蛋”,从而快速确定用户输入的对话数据的主要内容。
进一步地,每当接收到一段用户对话数据后,机器人都可以将其进行存储,存储形式可以为提取该段用户对话数据的多元组,然后将该多元组作为该段用户对话数据的表征存储起来。被存储起来的用户对话数据作为机器人的记忆,从而使得机器人更加拟人化,使得人机对话场景更加贴近自然。
每一段记忆都会对应有一种记忆类型,使其在被存储或在被抽取出来用于生成回复语句时更加清晰快捷,以不同类别对不同记忆进行分类划分。其中,记忆类型指的是不同类型的多元组,也即不同的主谓语关系。记忆类型可以通过人工提前定义,例如基于本领域的对话数据库抽取出的高频主谓语关系,对该段记忆进行人工标注,例如姓名、年龄、好友、喜欢吃等。以游戏玩家和游戏内NPC的对话场景为例,在多轮对话中,提取用户对话数据的多元组,然后对其中高频的主谓语关系进行标注,标注内容主要包括合并同义关系、剔除太通用关系(例如“是”)以及自定义一些多元组存储的生命周期,进而减少上线使用时面对用户输入的用户对话数据会产生不确定性因素造成的负面影响。
在一些实施例中,当接收到一段用户对话数据后,可以确定其记忆类型,进而针对不同类型的记忆,设置不同的生命周期,对超过周期的记忆可以进行清除,从而减小系统存储的压力。具体地,记忆类型可以包括:固有属性记忆类型、长时记忆类型、短时记忆类型和冗余记忆类型,在确定用于表征用户对话数据的第一对话多元组的记忆类型后,进一步判断该记忆类型具体属于哪一类。当确定该第一对话多元组的的记忆类型为固有属性记忆类型后,可以将该第一对话多元组的存储时长确定为第一存储时长,例如固有属性可以包括用户的姓名、昵称、年龄、爱好等。
进一步地,当确定该第一对话多元组的记忆类型为长时记忆类型时,可以将该第一对话多元组的存储时长确定为第二存储时长,其中长时记忆类型的记忆可以为在长时间内都很难会产生变化的记忆内容,例如婚姻状况、伴侣等。当确定该第一对话多元组的记忆类型为短时记忆类型时,可以将该第一对话多元组的存储时长确定为第三存储时长,其中短时记忆类型的记忆可以为在短时间内很难会产生变化的记忆内容,例如昨天午饭吃了什么、刚刚喝了一杯水等。当确定该第一对话多元组的记忆类型为冗余记忆类型时,可以将该第一对话多元组的存储时长确定为第四存储时长,其中冗余记忆类型的记忆内容可以为语气助词,例如哦、行、好吧等。
由于固有属性记忆类型的记忆内容几乎不会发生改变,所以第一存储时长可以定义为最长,例如永久记忆或十年内记忆;长时记忆类型的记忆内容会保持一段时间,但可能会发生变化,所以第二存储时长可以短于第一存储时长,例如一周内记忆;短时记忆类型的记忆内容仅仅会保持几天或者一天内就会发生变化,所以第三存储时长可以短于第二存储时长,例如三天内记忆;而冗余记忆类型的记忆内容通常不需要进行记忆,或是在一轮对话中需要进行记忆,例如机器人在提出一个需要确认的问题时,用户给出的回应是肯定的,例如“是的”,那么在本轮对话中可能会根据用户确定的语气进行回复,因此第四存储时长可以短于第三存储时长,例如一轮对话持续时间内记忆。
图2示出了根据本公开的实施例的在线与离线结合的对话生成方法的示例性流程示意图。
参考图2,对于记忆数据的存储,以及抽取记忆数据进而用于生成对话都可以在离线模式下进行。对于需要被存储的记忆内容而言,可以将其存储在数据库(例如MongoDB)中,防止数据的丢失。由于在人机对话场景中,可能存在着一个用户与多个机器人进行对话,或者多个用户与一个机器人进行对话,或者多个用户与多个机器人进行对话的复杂场景,所以需要机器人的ID和用户的ID对记忆内容进行区分,这样当对话需要局限在“机器人-用户”双方对话的场景中,其他用户和机器人的记忆内容不会对其对话场景进行干扰。通过机器人ID和用户ID来区分不同的二记忆内容,便可以实现不同用户不同机器人的记忆数据的隔离,同时也避免了由于其他用户或机器人的记忆数据而影响当前用户和机器人的对话生成。
在一些实施例中,可以获取该用户与机器人的历史对话数据,如果该用户从未与当前机器人进行过对话,则获取该用户与其他机器人的历史对话数据。根据历史对话数据提取对话ID,其中,对话ID可以包括与历史对话数据对应的用户ID和或机器人ID,进而根据对话ID对历史对话数据进行绑定,确定对话ID与历史对话数据的对应关系。
为了避免记忆内容无限扩充,除了定义不同的存储时长,还可以设置记忆内容的存储上线,例如设置最多记忆100条记忆内容,另外对于存在记忆内容冲突的情况,可以直接覆盖原有的记忆内容,以最新的记忆内容为准。当然也可以通过主动对话的形式,询问用户哪个记忆内容是正确的,从而在得到用户的肯定回复后,保留被确定的记忆内容。
针对于步骤S104,在接收到用户对话数据后,可以根据用户对话数据遍历历史对话数据,从中寻找是否存在与用户对话数据对应的记忆数据,也即是否能够在已经存储的记忆内容中找到与当前用户对话数据对应的记忆数据。
在一些实施例中,在接收到用户对话数据后,可以根据用户对话数据确定用户对话数据对应的用户ID,根据用户ID确定历史对话数据中是否存在与该用户ID相对应的对话ID,例如确定是否存在包含该用户ID的对话ID。一旦确定存在与用户ID相对应的对话ID,则可以获取与对话ID绑定的历史对话数据,从而将该历史对话数据确定为与该用户ID相对应的候选记忆数据。由于可能会找到多条与当前用户ID相对应的候选记忆数据,因此需要对候选记忆数据进行进一步地筛选,可以对比用户对话数据与候选记忆数据,利用相关度模型确定二者之间的相关度,进而确定与用户对话数据相关度达到预设相关度阈值的候选记忆数据,将该候选记忆数据作为记忆数据,用于后续回复语句的生成。
针对于步骤S106,当存在与用户对话数据对应的记忆数据时,可以通过提取记忆数据的记忆多元组,由于为了便于存储和快速理解对话内容,对话数据与其对应的多元组存在关联关系,并且通过多元组来表征该对话数据,所以可以提取记忆数据的记忆多元组,用于后续回复语句的生成。
针对于步骤S108,在提取到记忆数据的记忆多元组后,可以进一步根据记忆多元组生成与用户对话数据相关的回复语句。
在一些实施例中,可以利用开源的句法分析工具HanLP提取记忆多元组,由于HanLP抽取出的是词和词之间依存关系,比如:介宾关系、动宾关系、定中关系等,并未直接给出多元组,因此对“主谓关系”中“谓语”和“动宾关系”中“动词”相同的两对关系进行合并,得到一组完整的多元组。例如,主语为“曹操”,谓语为“攻打”,构成主谓关系,谓语为“攻打”,宾语为“荆州”,构成动宾关系,进而将动词相同的两对关系进行合并,得到一组完整的主谓宾多元组,也即“曹操、攻打、荆州”。为了保证通过记忆多元组合成的回复语句能够更加合理,可以根据通用对话模板拼接记忆多元组从而确定多个候选回复语句。其中,通用模板指的是将抽到的多元组组成一句话的模板,比如多元组为(s,p,o),也即(主,谓,宾),模板可以是:<s><p><o>,也可以是<o>被<s><p>,例如得到的候选回复语句为“曹操攻打荆州”。
进一步地,可以将候选回复语句输入到预训练好的语言模型,从而确定候选回复语句的困惑度,其中语言模型可以采用在本领域的语料上,例如游戏场景的对话数据、游戏文案数据、游戏相关的小说数据等,在这些语料上对GPT语言模型进行预训练。将候选回复语句输入到GPT语言模型后,可以确定该候选回复语句的困惑度(PPL),困惑度分数越低说明该候选回复语句越合理,可以设置困惑度阈值,当候选回复语句的困惑度小于预设困惑度阈值时,则证明该候选回复语句合理,可以根据候选回复语句确定回复语句,总而保证回复语句的合理性。
需要说明的是,一个训练好的GPT语言模型,可以直接用来生成本文,比如s=“曹操攻打荆州”,指定GPT语言模型生成出这段文本,每个字位置都会有个一生成概率p(wi),这段文本的生成概率则为字概率累乘p(s)=p(w1)...p(wn),PPL(s)=p(s)-1/n。
再进一步地,在获取记忆数据的时候,也可以通过上述方式,通过确定记忆数据的困惑度,进而确定更为合理的记忆数据。
在一些实施例中,在得到可以用来确定回复语句的合理的候选回复语句后,可以根据记忆数据确定背景信息,例如用户背景、机器人背景、用户和机器人之间的关系,进而根据背景信息对候选回复语句进行调整,确定输出的回复语句。
以一个具体的实施方式为例,在游戏实时场景中,比如用户说到“记住了,你的小名是小花。”,记忆类型为“昵称”,抽取到的多元组为(花生米、昵称、小花),该记忆内容是以NPC的第一人称的视角来描述,故其中人称“你”要替换成NPC的真实名字比如是“花生米”。将当前提取到的多元组拼接为候选回复语句,并在确定其困惑度满足要求后,可以得到主动对话内容,再根据用户背景、NPC背景、用户和NPC之间的关系对候选回复语句进行调整,从而得到回复语句,比如“爹,我的昵称是叫小花。”其中,背景指的是说话人的姓名、性别、性格等信息(不局限这些字段),用来交代发生对话的背景。这里涉及到用户和NPC两个角色,那用户背景比如“仗剑天涯是一个游戏玩家”,NPC背景比如“花生米是一个10岁的小女孩”。如果涉及到多个人的聊天,那可以把多人的背景都列出来。
具体来说,可以在大规模小说语料上训练了一个带关键词控制的语言模型,因为小说语料通常是旁白+对话的形式组成,所以在构造训练语料时,提取对话内容的关键词(用jieba工具提取比如动词、名词),随机抽取0~5个,打乱顺序放在对话的前面,并用标识符区分,接着按照正常训练GPT语言模型的方法训练即可。原始小说文本比如是:小伙子一边蹦跳着躲避身后恶通天的突然袭击,一边接话:“要改娶兵部尚书的女儿嘛。”,我们提取说话里的关键词为“娶、兵部尚书、女儿”。则新构造的训练文本为:小伙子一边蹦跳着躲避身后恶通天的突然袭击,一边接话【娶,兵部尚书,女儿】:“要改娶兵部尚书的女儿嘛。”。训练好GPT语言模型后,可以针对当前提取到的多元组构造出类似的前缀,比如:仗剑天涯是一个游戏玩家,花生米是一个10岁的小女孩,花生米是仗剑天涯的女儿,仗剑天涯是花生米的爹。花生米对爹说道【花生米,昵称,小花】:“。此时生成的话比如为“爹爹,我的昵称是小花。”。
在一些实施例中,根据候选回复语句确定回复语句的方式还可以是,提取历史对话数据的第二对话多元组,将第二对话多元组关联到历史对话数据,进而确定训练集数据,进而利用训练集数据训练对话生成模型,再利用对话生成模型拼接提取到的记忆多元组,进而确定回复语句。
具体地,可以在中文维基语料上训练了一个带关键词控制的语言模型,也即对话生成模型。对每个样本句子提取关键词(比如动词、名词),然后将关键词通过一定规则放在句子前面,训练一个GPT语言模型模型作为对话生成模型即可。比如原始句子为:中文维基百科将自己定位为一个包含人类所有知识领域的百科全书,而不是一本字典、词典、论坛或任何其他性质的网站。抽取到的关键词为“维基百科、知识领域、百科全书、字典...”,拼接后的训练样本为:【维基百科、知识领域、百科全书、字典】中文维基百科将自己定位为一个包含人类所有知识领域的百科全书,而不是一本字典、词典、论坛或任何其他性质的网站。训练好对话生成模型后,对提取到记忆多元组构造前缀:【花生米,昵称,小花】,让模型接着往下生成:花生米的昵称是小花。可以同时生成多条回复语句,通过回复语句对用户进行引导,从而增加引导信息的多样性。
需要说明的是,将关键词通过一定规则放在句子前面,对于这个拼接规则,具体地,可以为【<关键词1>、<关键词2>、<关键词3>、...】<原始句子>,按照这个规则,可以得到大量训练样本,切分成训练集、验证集和测试集。对于关键词打乱规则,具体地,可以为<原始句子>中可能会提取到多个关键词,但是没有必要将所有的关键词都放到前面【】中,随机1~5个关键词。如果提取出的关键词低于5个,则上限为提取到的关键词个数,如果没有关键词,那【】中的内容为空。并且打乱关键词的顺序,再放入【】中,组成样本。乱序的目的是让模型能够学到关键词之间的顺序不影响生成句子的通顺。其中,关键词的确定可以通过对原始句子分词和词性进行分析,将标记为名词和动词的这些词作为关键词,因为这些词可以代表一定的具体含义,更具参考价值。
在一些实施例中,在用户表现出不想聊天的时候,主动切换话题,其中话题可以为已经被存储的记忆数据。历史记忆可能会存在多条,所以先会通过生命周期过滤过期的记忆,然后随机挑选一条记忆内容进行抛出,或者基于一定的策略来抛出,比如相邻两次抛出不一样的记忆类型。在判断用户是否不想聊天时,可以通过以下方式进行确定。
具体地,用户对话数据可以包括首轮对话,确定用户当前对话场景中首轮对话是否存在文字文本,也即是否发送包含中文的文本,如果在首轮对话中不存在文字文本,则判断用户当前不想聊天,可以根据任意一个候选记忆数据生成回复语句,对当前用户话题进行切换。
在一些实施例中,用户对话数据,还可以包括多轮对话,确定多轮对话中是否存在相邻至少两轮对话中不存在文字文本,当存在相邻至少两轮对话中不存在文字文本,例如在用户对话过程中,连续两轮对话发送数字和或无关的英文符号,则可以根据任意一个候选记忆数据生成回复语句,对当前用户话题进行切换。
需要说明的是,可以通过获取历史对话数据,确定用户对话数据是否表现出不想聊天的意图,对用户输入的用户对话数据进行标注,进而训练一个二分类模型,可以通过二分类模型对当前用户输入的用户对话数据进行判断,确定用户是否存在不想聊天的意图。
在一些实施例中,在对话过程中,可以从预先构建的话题库中检索出相关的内容,用于生成能够引导用户话题的回复语句。话题库中的内容包括根据不同的候选记忆数据生成的多个候选回复语句。具体检索策略可以用es检索、向量检索等方法。比如用户说到苹果相关话题时,可以检索出相关记忆内容“花生米记得,爹之前说过自己喜欢吃苹果”,用于辅助回复语句的生成。
在一些实施例中,基于对话历史、用户对话数据以及话题引导的结果,产生回复语句的过程中,可以采用在大规模中文语料(大部分是小说语料)上训练的GPT-2模型,利用模型的few-shot能力,来生成回复语句。将所有输入信息拼接成一句自然语言文本,作为前缀,引导GPT-2模型生成回复,比如前缀为:爹对花生米说:“我今天买了几个苹果”。花生米记得,爹之前说过自己喜欢吃苹果。GPT-2模型继续生成回复比如为:“爹,你喜欢吃苹果,就多买点哦。”。
在一个具体的对话场景中,对话背景为用户是机器人的爹,NPC为一个10岁的小男孩,对话如下:
用户:你好。
此时,根据用户对话数据无法找到对应的记忆数据,则可以根据背景信息生成回复语句。
NPC:爹爹,你好呀。
用户:我喜欢吃红烧肉。
此时,根据用户对话数据匹配到历史对话数据中的记忆数据对应的记忆多元组为【爹、喜欢吃、红烧肉】,并且该记忆多元组的存储时长为第一存储时长,例如设置为永久存储,则可以根据记忆多元组进一步生成回复语句。
NPC:红烧肉肥瘦相间,口感很好。
用户:我喜欢吃什么?
此时,将本轮对话中用户输入的用户对话数据已经存储在历史对话数据中,并且通过热更新的方式更新到在线模式中,因此可以根据本轮对话中存储的记忆数据来生成回复语句。
NPC:喜欢吃红烧肉就多吃点哦。
用户:123。
此时,用户输入的用户对话数据不存在具有实质含义的文字文本,因此可以通过本轮对话中存储的记忆数据生成引导话题或切换话题的回复语句,将当前对话引导回正常对话。
bot:爹,我记得你说过你喜欢吃红烧肉吧。
从上面所述可以看出,本公开提供的一种人机对话生成方法、装置、电子设备及存储介质,根据接收到的用户对话数据,从预先获取到的该用户的历史对话数据中寻找与用户对话数据对应的记忆数据,当存在与用户对话数据对应的记忆数据时,进一步可以提取记忆数据的记忆多元组,进而根据记忆多元组生成与该用户记忆数据相关的回复语句。首先,定义了一套对话记忆内容的数据格式规范,方便对话数据的管理和存储,并且在数据匮乏的情况下,通过少量的定制成本来实现落地场景中所需要的记忆能力;其次,可以将记忆数据的存储以及利用记忆数据生成主动回复语句的功能放在离线流程中,不会阻塞在线对话流程的运行,并且在接收到新的用户对话数据后,热更新已存储的历史对话数据,保证在后续对话过程中能够及时应用用户再次之前输入的被存储的全部记忆数据;最后,实时在对话过程中生效,提高了历史对话数据中的记忆数据在对话生成过程中的利用率,实现了记忆内容的可控性以及灵活扩展性,使得生成的回复语句与用户相关性更高,避免了回复语句过于生硬的问题。通过困惑度的判断来筛选合理的候选回复语句,降低了人工介入成本,针对每条记忆内容,自动扩充主动对话内容以及话题引导内容,增加了文本的多样性,为后续的话题切换和话题引导提供了丰富的素材。并且可以主动抛出记忆话题,增加用户聊天的意愿,从而提升对话轮数,增加用户对产品的粘性。还可以在提到记忆中相关内容时,引导之前记住的内容,得到和历史对话一至的回复,增加用户的惊喜感,提升用户的聊天热情,增强用户体验。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图3示出了本申请实施例所提供的一种人机对话生成装置的示例性结构示意图。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种人机对话生成装置。
参考图3,所述人机对话生成装置,包括:接收模块、确定模块、提取模块和生成模块;其中,
接收模块,被配置为接收用户对话数据;
确定模块,被配置为根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据;
提取模块,被配置为响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组;
生成模块,被配置为根据所述记忆多元组生成回复语句。
在一种可能的实现方式中,所述提取模块,具体被配置为:
分析所述记忆数据中的词之间的依存关系,得到若干由两个具有所述依存关系的词组成的数据对,将包括同一个词的两个所述数据对进行合并,得到所述记忆多元组。
在一种可能的实现方式中,所述人机对话生成装置,还被配置为:
提取用于表征所述用户对话数据的第一对话多元组;
根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型。
在一种可能的实现方式中,所述人机对话生成装置,还被配置为:
根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长。
在一种可能的实现方式中,所述记忆类型,包括:固有属性记忆类型、长时记忆类型、短时记忆类型和冗余记忆类型;
所述人机对话生成装置,还被配置为:
响应于确定所述第一对话多元组的记忆类型为所述固有属性记忆类型,将所述第一对话多元组的存储时长确定为第一存储时长;
响应于确定所述第一对话多元组的记忆类型为所述长时记忆类型,将所述第一对话多元组的存储时长确定为第二存储时长;
响应于确定所述第一对话多元组的记忆类型为所述短时记忆类型,将所述第一对话多元组的存储时长确定为第三存储时长;
响应于确定所述第一对话多元组的记忆类型为所述冗余记忆类型,将所述第一对话多元组的存储时长确定为第四存储时长;
其中,所述第一存储时长大于所述第二存储时长,所述第二存储时长大于所述第三存储时长,所述第三存储时长大于所述第四存储时长。
在一种可能的实现方式中,所述人机对话生成装置,还被配置为:
获取所述历史对话数据;
根据所述历史对话数据提取对话ID;
根据所述对话ID标记所述历史对话数据,以绑定所述对话ID和所述历史对话数据。
在一种可能的实现方式中,所述确定模块,具体被配置为:
根据所述用户对话数据确定所述用户对话数据对应的用户ID;
根据所述用户ID确定所述历史对话数据中是否存在与所述用户ID相对应的所述对话ID;
响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据;
对比所述用户对话数据与所述候选记忆数据,以确定与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据,并将与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据作为所述记忆数据。
在一种可能的实现方式中,所述生成模块,具体被配置为:
根据通用对话模板拼接所述记忆多元组以确定候选回复语句;
将所述候选回复语句输入至预训练好的语言模型以确定所述候选回复语句的困惑度;
响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句。
在一种可能的实现方式中,所述生成模块,具体被配置为:
响应于所述困惑度小于预设困惑度阈值,根据所述记忆数据确定背景信息;
根据所述背景信息调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述生成模块,具体被配置为:
提取所述历史对话数据的第二对话多元组;
将所述第二对话多元组关联到所述历史对话数据,并将所述第二对话多元组和所述历史对话数据作为训练集数据;
利用所述训练集数据训练对话生成模型;
利用所述对话生成模型调整所述候选回复语句以确定所述回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:首轮对话;
所述生成模块,还被配置为:
确定所述首轮对话中是否存在文字文本;
响应于所述首轮对话中不存在所述文字文本,根据任意一个所述候选记忆数据生成回复语句。
在一种可能的实现方式中,所述用户对话数据,包括:多轮对话;
所所述生成模块,还被配置为:
确定所述多轮对话中是否存在相邻至少两轮对话中不存在文字文本;
响应于存在相邻至少两轮对话中不存在文字文本,根据任意一个所述候选记忆数据生成回复语句。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述任一实施例中相应的人机对话生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
图4示出了本申请实施例所提供的一种电子设备的示例性结构示意图。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的人机对话生成方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的人机对话生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的人机对话生成方法。
上述非暂态计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上示例性方法部分中任一实施例所述的人机对话生成方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
本领域技术技术人员知道,本公开的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本公开还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (15)
1.一种人机对话生成方法,其特征在于,包括:
接收用户对话数据;
根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据;
响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组;
根据所述记忆多元组生成回复语句。
2.根据权利要求1所述的方法,其特征在于,所述对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组,包括:
分析所述记忆数据中的词之间的依存关系,得到若干由两个具有所述依存关系的词组成的数据对,将包括同一个词的两个所述数据对进行合并,得到所述记忆多元组。
3.根据权利要求1所述的方法,其特征在于,所述接收用户对话数据之后,还包括:
提取用于表征所述用户对话数据的第一对话多元组;
根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型。
4.根据权利要求3所述的方法,其特征在于,所述根据预设类型标签标注所述第一对话多元组,以确定所述第一对话多元组的记忆类型之后,还包括:
根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长。
5.根据权利要求4所述的方法,其特征在于,所述记忆类型,包括:固有属性记忆类型、长时记忆类型、短时记忆类型和冗余记忆类型;
所述根据所述第一对话多元组的记忆类型,确定所述第一对话多元组的存储时长,包括:
响应于确定所述第一对话多元组的记忆类型为所述固有属性记忆类型,将所述第一对话多元组的存储时长确定为第一存储时长;
响应于确定所述第一对话多元组的记忆类型为所述长时记忆类型,将所述第一对话多元组的存储时长确定为第二存储时长;
响应于确定所述第一对话多元组的记忆类型为所述短时记忆类型,将所述第一对话多元组的存储时长确定为第三存储时长;
响应于确定所述第一对话多元组的记忆类型为所述冗余记忆类型,将所述第一对话多元组的存储时长确定为第四存储时长;
其中,所述第一存储时长大于所述第二存储时长,所述第二存储时长大于所述第三存储时长,所述第三存储时长大于所述第四存储时长。
6.根据权利要求1所述的方法,其特征在于,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据之前,还包括:
获取所述历史对话数据;
根据所述历史对话数据提取对话ID;
根据所述对话ID标记所述历史对话数据,以绑定所述对话ID和所述历史对话数据。
7.根据权利要求6所述的方法,其特征在于,所述根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据,包括:
根据所述用户对话数据确定所述用户对话数据对应的用户ID;
根据所述用户ID确定所述历史对话数据中是否存在与所述用户ID相对应的所述对话ID;
响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据;
对比所述用户对话数据与所述候选记忆数据,以确定与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据,并将与所述用户对话数据相关度达到预设相关度阈值的候选记忆数据作为所述记忆数据。
8.根据权利要求1所述的方法,其特征在于,所述根据所述记忆多元组生成回复语句,包括:
根据通用对话模板拼接所述记忆多元组以确定候选回复语句;
将所述候选回复语句输入至预训练好的语言模型以确定所述候选回复语句的困惑度;
响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句。
9.根据权利要求8所述的方法,其特征在于,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
响应于所述困惑度小于预设困惑度阈值,根据所述记忆数据确定背景信息;
根据所述背景信息调整所述候选回复语句以确定所述回复语句。
10.根据权利要求8所述的方法,其特征在于,所述响应于所述困惑度小于预设困惑度阈值,则根据所述候选回复语句确定回复语句,包括:
提取所述历史对话数据的第二对话多元组;
将所述第二对话多元组关联到所述历史对话数据,并将所述第二对话多元组和所述历史对话数据作为训练集数据;
利用所述训练集数据训练对话生成模型;
利用所述对话生成模型调整所述候选回复语句以确定所述回复语句。
11.根据权利要求7所述的方法,其特征在于,所述用户对话数据,包括:首轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据之后,还包括:
确定所述首轮对话中是否存在文字文本;
响应于所述首轮对话中不存在所述文字文本,根据任意一个所述候选记忆数据生成回复语句。
12.根据权利要求7所述的方法,其特征在于,所述用户对话数据,包括:多轮对话;
所述响应于存在与所述用户ID相对应的所述对话ID,获取与所述对话ID绑定的所述历史对话数据以确定与所述用户ID对应的候选记忆数据,之后还包括:
确定所述多轮对话中是否存在相邻至少两轮对话中不存在文字文本;
响应于存在相邻至少两轮对话中不存在文字文本,根据任意一个所述候选记忆数据生成回复语句。
13.一种人机对话生成装置,其特征在于,包括:
接收模块,被配置为接收用户对话数据;
确定模块,被配置为根据所述用户对话数据遍历预先获取的历史对话数据,确定所述历史对话数据中是否存在与所述用户对话数据对应的记忆数据;
提取模块,被配置为响应于所述历史对话数据中存在与所述用户对话数据对应的所述记忆数据,对所述记忆数据进行分词处理,提取得到所述记忆数据的记忆多元组;
生成模块,被配置为根据所述记忆多元组生成回复语句。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至12任意一项所述的方法。
15.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使所述计算机实现权利要求1至12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210513919.5A CN114969250A (zh) | 2022-05-11 | 2022-05-11 | 人机对话生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210513919.5A CN114969250A (zh) | 2022-05-11 | 2022-05-11 | 人机对话生成方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114969250A true CN114969250A (zh) | 2022-08-30 |
Family
ID=82981307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210513919.5A Pending CN114969250A (zh) | 2022-05-11 | 2022-05-11 | 人机对话生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114969250A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115146050A (zh) * | 2022-09-05 | 2022-10-04 | 苏州浪潮智能科技有限公司 | 一种文本生成方法、装置、设备及可读存储介质 |
-
2022
- 2022-05-11 CN CN202210513919.5A patent/CN114969250A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115146050A (zh) * | 2022-09-05 | 2022-10-04 | 苏州浪潮智能科技有限公司 | 一种文本生成方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200301954A1 (en) | Reply information obtaining method and apparatus | |
CN110121706B (zh) | 提供会话中的响应 | |
Li et al. | A persona-based neural conversation model | |
CN106407178B (zh) | 一种会话摘要生成方法、装置、服务器设备以及终端设备 | |
US11729120B2 (en) | Generating responses in automated chatting | |
US20210225380A1 (en) | Voiceprint recognition method and apparatus | |
US20170124064A1 (en) | Reply information recommendation method and apparatus | |
WO2015062482A1 (en) | System and method for automatic question answering | |
US20200311147A1 (en) | Sentence recommendation method and apparatus based on associated points of interest | |
CN110930980B (zh) | 一种中英文混合语音的声学识别方法及系统 | |
Goyal et al. | Fast and scalable expansion of natural language understanding functionality for intelligent agents | |
CN109314660A (zh) | 在自动聊天中提供新闻推荐 | |
JP7204801B2 (ja) | ニューラルネットワークに基づくマンマシンインタラクション方法、装置、及び媒体 | |
CN109284502B (zh) | 一种文本相似度计算方法、装置、电子设备及存储介质 | |
CN110472043B (zh) | 一种针对评论文本的聚类方法及装置 | |
CN113505198B (zh) | 关键词驱动的生成式对话回复方法、装置及电子设备 | |
CN112131885A (zh) | 语义识别方法、装置、电子设备及存储介质 | |
CN110175323A (zh) | 消息摘要的生成方法和装置 | |
CN113641807A (zh) | 对话推荐模型的训练方法、装置、设备和存储介质 | |
Chowanda et al. | Recurrent neural network to deep learn conversation in indonesian | |
CN108306813B (zh) | 会话消息的处理方法、服务器及客户端 | |
CN108334491B (zh) | 文本分析方法、装置、计算设备及存储介质 | |
CN107657949A (zh) | 游戏数据的获取方法及装置 | |
CN110929003A (zh) | 互动响应方法及其相关计算机系统 | |
CN114969250A (zh) | 人机对话生成方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |