关键词自动采集生成内容系统( 本发明涉及智能机器人技术领域,具体涉及一种聊天机器人回复自动生成方法及系统)
优采云 发布时间: 2021-11-06 19:22本发明涉及智能机器人技术领域,具体涉及一种聊天机器人回复自动生成方法及系统)
本发明涉及智能机器人技术领域,尤其涉及一种聊天机器人自动生成回复的方法及系统。
背景技术:
开放领域的人机对话技术需要根据用户输入和输出做出符合当前对话场景和上下文的响应。目前为机器人生成自动响应的方式有很多种,大致可以分为以下两类:
(1)基于检索的响应生成方法:问答对存储在数据库中。对于新输入的用户请求,查询数据库中问答对中“输入s”与新输入的相似度输入句子,并选择相似度最高的“输入s”对应的“输出r”作为机器人对用户输入的响应。数据库中的问答对数量有限,难以覆盖所有应用场景。
(2)Generation-based method:使用机器学习方法,根据用户输入生成响应。现有技术主要使用基于统计的机器翻译系统或端到端的神经网络系统来实现对话生成(自然语言生成)),具体方法是通过优化最大似然估计(mle)目标函数来预测对话过程中输入句子s的回复句子r。该技术的缺点是模型训练过程中使用的最大浮雕估计目标函数过于简单,无法完全捕捉定义理想对话的所有关键点,导致生成的对话过于生硬、重复和一般,并且对上述内容缺乏深入了解。换句话说,
综上所述,现有的人机对话技术无法自动生成连贯的回复语句,无法应用于开放领域。目前,迫切需要一种可以应用于开放领域,能够进行连贯对话的聊天机器人。
技术实现要素:
本发明针对现有技术存在的缺陷,提供一种聊天机器人回复自动生成方法及系统,使机器人自动生成的对话更接近真实的人与人对话,可应用于开放的领域。
在第一方面,本发明提供了一种自动生成聊天机器人回复的方法,包括:
提取用户输入的句子中的关键词,以关键词为索引,在先验知识库中找到对应的问答对;
如果找到对应的问答对,则将问答对中的回复语句作为回复语句输出;
如果没有找到对应的问答对,则将用户输入的句子输入到答案生成模块中,得到回复句子输出。
优选地,该方法还包括:如果未找到对应的问答对,则获取用户的下一次输入,根据用户的下一次输入判断本轮对话输出的回复句是否正确,对答案生成进行修正模块根据判断结果。
优选地,答案生成模块的训练方法包括:
对获取的真实对话数据进行句子,以问答对的形式对真实问答对{s,r}进行采样,其中s为输入语句,r为输入语句的真实响应;
将真实的问答对{s,r}分为训练集和测试集两部分;
通过训练集建立初始答案生成模块;
答案生成模块通过测试集更新。
优选地,通过训练集建立初始答案生成模块包括:
对训练集中真实的问答对{si, ri}进行分割并识别其中的实体,对识别出的实体用词性进行标记,得到每个{对应的问答实体对{,} si, ri}在训练样本中,其中,Sij为si中的实体,rit为ri中的实体,j=1, 2,...,n, i=1, 2,...,m;
分别对 sij 和 rit 进行参考解析和消歧;
统计条件概率p(rit|sij)和联合概率;
计算sij和rit的词向量;
获取初始答案生成模块。
优选地,所述通过所述测试集更新所述答案生成模块包括:
获取测试集中真实的问答对{s', r'};
将输入句子s'输入到答案生成模块,得到机器回复r',形成机器答案对{s', r'};
将机器答案{s',r'}输入回复判断模块,计算{s',r'}的置信度;
根据{s', r'}的置信度更新答案生成模块。
优选地,生成模块的训练过程还包括:
将真实问题答案对{s', r'}标记为正训练样本,将机器答案对{s', r'}标记为负训练样本;
将标记后的{s', r'}和{s', r'}作为训练样本,使用聚类算法训练回复判断。
优选地,所述根据{s,r}的置信度更新答案生成模块包括:
根据{s',r'}的置信度,调整对应的条件概率p(rit|sij)和联合概率来更新答案生成模块。
在第二方面,本发明提供了一种聊天机器人回复自动生成系统,包括:
先验知识搜索单元,用于在用户输入的句子中提取关键词,以关键词为索引,在先验知识库中找到对应的问答对;
第一回复单元,用于如果找到对应的问答对,则将问答对中的回复语句作为回复语句输出;
第二回复单元用于在未找到对应的问答对的情况下,将用户输入的语句输入到答案生成模块中,得到回复语句输出。
优选地,还包括负反馈单元,用于在未找到对应的问答对的情况下获取用户的下一个输入,根据用户的下一个输入判断本轮对话输出的回复语句是否正确,并根据到判断结果Answer生成模块。
第三方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,当该程序由处理器执行时,实现了第一方面中任一项所述的方法。
本实施例提供的聊天机器人回复自动生成方法及系统结合先验知识对生成的回复语句进行后验判断,通过将回复语句与相关先验知识进行比较来调整不符合要求的回复语句。提高回复语句的输出质量。与现有的基于端到端神经网络的系统或基于短语的统计机器翻译系统相比,本实施例的方法生成的对话将更接近真实的人与人对话,即对话逻辑上更连贯一致且有意义。
图纸说明
无花果。附图说明图1为本发明实施例提供的聊天机器人自动生成回复的方法流程图;
图2为本发明实施例提供的答案生成模块的训练过程*敏*感*词*;
图3为本发明实施例提供的聊天机器人回复自动生成系统的结构框图。
详细方法
下面结合附图对本发明技术方案的实施例进行详细说明。以下实施例只是为了更清楚地说明本发明的技术方案,仅作为举例,不能用于限制本发明的保护范围。
需要说明的是,除非另有说明,本申请中所使用的技术术语或科学术语应具有本发明所属领域的技术人员所理解的通常含义。
如图1所示,本实施例提供了一种聊天机器人自动生成回复的方法,包括:
步骤s1,提取用户输入的句子中的关键词,以关键词为索引,在先验知识库中搜索对应的问答对。
其中,先验知识库由采集真实问答对{s, r}组成,其中s为问句,r为回复句,即与问题句 s 对应的答案。
在步骤s2中,如果找到对应的问答对,则将问答对中的回复语句作为回复语句输出。
其中,判断用户输入的句子与先验知识库中问答对中的问题句s的语义相似度,得到相似度高的问答对中的回答句作为回复机器人输出的句子。
在步骤s3中,如果没有找到对应的问答对,则将用户输入的句子输入到答案生成模块中,得到回复句子输出。
其中,答案生成模块是基于大量的人机交互真实语料库训练得到的,具体的训练方法在本实施例后续内容中详述,在此不再赘述。
本实施例提供的聊天机器人自动生成回复的方法,首先结合先验知识库,找到合适的回复语句。由于先验知识库中的问答对都来自于人与人交互过程中的真实句子,机器人通过该方法输出的回复完全符合人类的自然语言;当无法通过先验知识库获得回复语句时,利用训练得到的答案生成模块生成符合人类自然语言规律的回复,提高回复语句的输出质量。与现有的端到端神经网络系统或基于短语的统计机器翻译系统相比,
本实施例的方法还包括步骤s4。如果没有找到对应的问答对,则获取用户的下一个输入,判断用户的下一个输入本轮对话输出的回复句是否正确,根据判断结果更正答案 生成模块.
步骤s4构成负反馈模型。在使用答案生成模块的过程中,根据用户对机器人的回复做出的回答,判断答案生成模块生成的回复语句是否正确。当回复不正确时,用户会输入“你说错了”、“你说了什么”等句子对本轮回复进行评论。此时可以判断答案生成模块生成的回复语句有误,会实时调整答案。生成模块不断提高答案生成模块生成的回复语句的质量。
在机器人与用户之间的问答过程中,由于人类语音的随机性,相同的意思会以不同的方式表达。例如,在询问机器人的年龄时,它可能会问“你多大了”或“你多大了”。它使用句子相似性在先验知识库中寻找答案。因此,可能会发现两种不同的响应,例如“17 岁”、“高 50 厘米和宽 30 厘米”。这时候就需要保证回复信息的一致性,尤其是机器人的一些固定常识和固定属性。因此,本实施例的方法还包括对先验知识库的如下处理:预设一些固定问题,为这些固定问题列举出多个问题方法,并仅将唯一答案设置为多个问题方法的输出回复。陈述。
由于机器人利用句子相似度在先验知识库中寻找答案,相似度的判断是通过分析句子中单词出现的概率来判断的,所以一般选择概率最高的句子进行输出. 但是,先验知识库中的某些词是大量重复的,这会大大增加干扰项,例如“你”、“我”、“他”等代词,以及“嗯”等情态辅助词”和“啊”等噪音词。为了解决上述问题,本实施例的方法还包括在先验知识库中搜索对应的问答对时,忽略噪声词,即,
在上述任一方法实施例的基础上,为了提高响应生成模块生成响应语句的准确率,本实施例通过获取大量真实对话数据获得真实问答对{s,r},其中s为输入句(问题),r为输入句的真实回复(问题对应的答案),以上真实语料分为两部分,一部分真实问答对{s,r}形成训练集,用于初始答案生成模块建立,另一部分真实问答对{s,r}形成测试集,用于优化答案生成模块的更新。答案生成模块通过这些对话材料进行训练和更新。
图2为本发明实施例提供的答案生成模块的训练过程*敏*感*词*。本实施例基于上述预处理后的真实语料库,采用以下方法对答案生成模块进行训练和更新:
方法一:基于概率统计训练和更新答案生成模块。
首先建立初始答案生成模块,在训练集中分割{s,r}得到sij和rit,然后参考resolving和disambiguation,计算条件概率p(rit|sij)和联合条件概率;计算sij和rit的词向量;获取初始答案生成模块。具体包括以下步骤:
在步骤s501中,对训练集中的真实对话数据进行分割,以问答对的形式对真实问答对{si,ri}进行采样,其中i代表真实问答对的第i对。
其中,真实问答对是人与人之间真实对话中的n个对话句对,分别表示为{s1,r1},{s2,r2},{s3,r3},...,{sn, rn} , 其中句子 ri 是对话中句子 si 的回复。
步骤s502:识别真实问答对{si,ri}中的实体,并对识别出的实体进行词性标注,得到每个{si,ri}对应的问答实体对{,} } 在训练样本中,其中 sij 是 si 中的实体,rit 是 ri 中的实体,j=1, 2,...,n, i=1, 2,...,m。
在步骤s503中,分别对sij和rit进行参照解析和消歧。
在步骤s504中,统计条件概率p(rit|sij)和联合概率。
在步骤s505中,计算sij和rit的词向量。
通过步骤s501-s505得到初始答案生成模块。
根据从真实对话数据中得到的真实问答对{s,r},形成先验知识库。
然后对初始答案生成模块进行不断的训练和优化,具体包括以下步骤:
在步骤s601中,得到测试集中真实的问答对{s',r'}。
在步骤s602中,将输入语句s'输入到答案生成模块,得到机器回复r',形成机器答案对{s',r'}。
其中,步骤s602的优选实施方式包括:
步骤s201:识别输入句子s'中的实体。
在步骤s202中,将所有识别出的实体与预先构建的问答实体对{,}中的实体sij进行实体链接。所谓实体链接是指在问答实体对中寻找与输入句子s'中的实体相关性较大的实体sij。
在步骤s203中,根据实体链接的结果得到统计条件概率。其中,得到的条件概率为步骤s202中链接的实体sij对应的条件概率p(rit|sij),即在实体sij收录在回复语句中的前提下,rit出现在回复语句中的概率。输入句子s'。
步骤s204,根据条件概率,从问答实体对中的rit中采样,得到构成机器回复r的实体。条件概率越高,响应中出现 rit 的概率就越高。
在步骤s205中,根据获取的构成机器回复r'的实体,生成机器回复r'。
其中,步骤s205是根据人类自然语言添加适当的连接词等,由回复r'中收录的实体组成流畅的回复语句。
在步骤s603中,将机器回答对{s',r'}输入到回答判断模块,计算{s',r'}的置信度。
其中,回复判断模块用于判断输入的对话句对是由自然人机交互生成还是由答案生成模块生成。本质上,回复判断模块是一个二元分类器,这个分类器的输入是一个对话句对{s, r},输出标签表示这个对话句对{s, r}是否来自真人对- 人对话或来自答案生成模块。回复判断模块的思路是:先用分层编码器对拼接后的s和r进行编码,然后将编码转换成二进制的softmax函数为{s, r}即概率p+{s, r 来自真实对话},以及来自答案生成模块的概率 p-{s,r},输入响应判断模块根据概率值对答案打上真/假标签,根据计算出的概率生成{s,r}的置信度。信心相当于一个分数。置信度是概率归一化的结果。分数越高,真实问答对为真的概率就越高。
在步骤s604中,根据{s',r'}的置信度更新答案生成模块。
其中,根据{s', r'}的置信度更新答案生成模块的具体方法包括:根据{s', r'}的置信度调整对应的条件概率p(rit|sij)和联合条件概率, r} 更新答案生成模块。
方法二:基于机器学习训练和更新答案生成模块。
首先设置初始答案生成模块,将训练集中真实的问答对{s, r}输入到rnn或lstm中,得到每个句子和每对的句子向量表示和问答对向量表示的问答对,使用 rnn 或 lstm 等算法学习得到初始答案生成模块。
然后,在测试集中得到真实的问答对{s', r'},将输入的句子s'表示成句向量后,进入答案生成模块得到机器回复r',输入r '进入判断模块,并把r的值放入'判断结果和置信度作为反馈信息来调整和更新答案生成模块。
优选地,在本实施例中,响应判断模块将句对{s,r}的概率p+{s,r}来自真实对话作为奖励分数反馈给答案生成模块,响应生成模块由这种强化学习算法处理。训练,训练的目标是最大化生成的句子对的奖励分数的期望值。
根据得到的真实对话数据,得到大量真实答案对作为训练样本,不断重复步骤s601-s604,利用这些训练样本不断更新答案生成模块,使得机器响应r机器输出的语言越来越接近人类的自然语言。在训练过程中,答案生成模块通过回复判断模块不断优化,使答案生成模块对给定输入语句的响应尽可能接近人与人之间的自然对话,从而使回复语句输出由答案生成模块无法由响应判断模块回答判断是来自真实对话还是来自答案生成模块。
在训练生成模块的过程中,也会同时训练响应判断模块,具体包括:将真实问答对{s,r}标记为正训练样本,机器答案对{ s, r} 作为负训练样本;使用带标签的{s, r}和{s, r}作为训练样本,使用聚类算法训练回复判断模块。使用训练训练样本训练响应判断模块有助于提高响应判断模块的判断准确率,从而获得更严格、真实的判断标准来监督答案生成模块的输出。
上述答案生成模块的训练方法在生成对抗网络中引入了强化学习机制,并改进了强化学习中使用的目标函数,使得生成网络生成的对话能够以更大的概率欺骗判别网络(即生成对话更接近真实对话),从而提高生成对话的质量和拟人化程度,解决传统端到端神经网络系统或基于统计的机器翻译系统生成的对话质量不理想的问题.
基于方法一训练得到的答案生成模块,步骤s1的具体实现包括:
步骤 s101:识别输入句子 s 中的实体。
步骤s102:将所有识别出的实体与预先构建的问答实体对{,}中的实体sij进行实体链接。
步骤s103,根据实体链接结果获取统计条件概率。
步骤s104,根据条件概率,从问答实体对中的rit中采样,得到构成机器回复r的实体。
在步骤s105中,根据获取的构成机器回复r的实体生成机器回复r。
对于使用方法2训练的答案生成模块,步骤s1的具体实现包括:将输入的句子s用句子向量表示后,输入答案生成模块,得到机器回复r。
如图所示。参见图3,基于与上述聊天机器人回复自动生成方法相同的发明构思,本实施例提供了一种聊天机器人回复自动生成系统,包括:
先验知识搜索单元,用于在用户输入的句子中提取关键词,以关键词为索引,在先验知识库中找到对应的问答对;
第一回复单元,用于如果找到对应的问答对,则将问答对中的回复语句作为回复语句输出;
第二回复单元用于在未找到对应的问答对的情况下,将用户输入的语句输入到答案生成模块中,得到回复语句输出。
本实施例的系统还包括负反馈单元,用于在没有找到对应的问答对的情况下,获取用户的下一次输入,并根据本轮对话输出的回复语句是否正确进行判断。用户的下一个输入。结果更正答案生成模块。
其中,问答对、先验知识库、答案生成模块的构建方法与上述方法实施例中的构建方法相同,在此不再赘述。
本实施例提供的系统与上述方法属于同一发明构思,具有相同的有益效果,在此不再赘述。
基于与上述方法相同的发明构思,本实施例提供了一种存储计算机程序的计算机可读存储介质,当该程序由处理器执行时,可以实现上述任一方法实施例中描述的方法.
最后需要说明的是,上述实施例仅用于说明本发明的技术方案,并不用于限制本发明;虽然已经结合上述实施例对本发明进行了详细说明,但是本领域普通技术人员应当理解:上述实施例中记载的技术方案仍然可以修改,或者部分或全部技术特征等效替换;这些修改或替换并不使相应技术方案的实质背离本发明实施例的技术方案。范围,均应收录在本发明的权利要求和说明书的范围内。