聊天机器人回复自动生成方法及系统与流程

文档序号:13422025阅读:10733来源:国知局
聊天机器人回复自动生成方法及系统与流程

本发明涉及智能机器人技术领域,具体涉及一种聊天机器人回复自动生成方法及系统。



背景技术:

开放领域的人机对话技术,需要根据用户输入输出符合当前对话场景及上下文的回复。目前,机器人自动回复生成方法有许多种,大体可分为以下两大类:

(1)基于检索的回复生成方法:数据库中存储<输入s,输出r>问答对,对于新输入的用户请求,查询数据库中问答对中的“输入s”与新输入句子的相似度,将相似度最高的“输入s”对应的“输出r”作为机器人对用户输入的响应。该方法的缺点是需要投入大量的精力构建数据库,且数据库中的问答对数量有限,难以覆盖所有应用场景。

(2)基于生成的方法:使用机器学习的方法,根据用户输入生成回复,现有技术主要是使用基于统计的机器翻译系统或端到端的神经网络系统来实现对话生成(自然语言生成),具体的做法是通过优化最大似然估计(mle)目标函数来预测在对话过程中输入句子s的回复句子r。该技术的缺点在于,训练模型过程中所使用的最大释然估计目标函数过于简单,不能完全捕捉到定义理想对话的所有关键要点,从而导致生成的对话过于生硬、重复和通用,且缺乏对上文的深入理解。换言之,通过该方法生成的回复难以保证语法正确、上下文等的一致性,生成的对话拟人性较差,不像人与人之间真实的对话。

综上,现有的人机对话技术无法生成自动连贯的回复句子,且无法应用于开放领域,目前,亟需一种能够应用于开放领域且能够进行连贯的对话的聊天机器人。



技术实现要素:

针对现有技术中的缺陷,本发明提供的一种聊天机器人回复自动生成方法及系统,使得机器人自动生成的对话会更加接近真实的人与人之间的对话,且能应用于开放领域。

第一方面,本发明提供了一种聊天机器人回复自动生成方法,包括:

提取用户输入的语句中的关键词,以所述关键词为索引查找在先验知识库中查找到对应的问答对;

若查找到相应的问答对,则将所述问答对中的回复句子作为回复语句输出;

若未查找到相应的问答对,则将所述用户输入的语句输入回答产生模块,得到回复语句输出。

优选地,还包括:若未查找到相应的问答对,则获取用户下一步的输入,根据用户下一步的输入判断本轮对话中输出的回复语句是否正确,根据判断结果矫正回答产生模块。

优选地,所述回答产生模块的训练方法包括:

对获取的真实对话语料进行断句,并按照问答对的形式采样得到真实问答对{s,r},其中,s为输入句子,r为所述输入句子的真实回复;

将真实问答对{s,r}分为训练集和测试集两部分;

通过所述训练集建立初始的回答产生模块;

通过所述测试集更新所述回答产生模块。

优选地,所述通过所述训练集建立初始的回答产生模块,包括:

对训练集中的真实问答对{si,ri}进行分词并识别其中的实体,并对识别的实体进行词性标注,得到训练样本中每个{si,ri}对应的问答实体对{<si1,si2,...,sin>,<ri1,ri2,...,rim>},其中,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)和联合概率,以更新回答产生模块。

第二方面,本发明提供了一种聊天机器人回复自动生成系统,包括:

先验知识查找单元,用于提取用户输入的语句中的关键词,以所述关键词为索引查找在先验知识库中查找到对应的问答对;

第一回复单元,用于若查找到相应的问答对,则将所述问答对中的回复句子作为回复语句输出;

第二回复单元,用于若未查找到相应的问答对,则将所述用户输入的语句输入回答产生模块,得到回复语句输出。

优选地,还包括负反馈单元,用于若未查找到相应的问答对,则获取用户下一步的输入,根据用户下一步的输入判断本轮对话中输出的回复语句是否正确,根据判断结果矫正回答产生模块。

第三方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一所述的方法。

本实施例提供的聊天机器人回复自动生成方法及系统,结合先验知识对生成的回复语句进行后验判断,通过将回复语句与相关的先验知识进行比对,对不符合的回复语句进行调整,以提高回复语句的输出质量。与现有的基于端到端神经网络系统或基于短语统计机器翻译系统相比,通过本实施例的方法生成的对话会更加接近真实的人与人之间的对话,即对话在逻辑上更加连贯一致且有意义。

附图说明

图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,然后指代消解和消歧,统计条件概率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}对应的问答实体对{<si1,si2,...,sin>,<ri1,ri2,...,rim>},其中,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,对识别的所有实体与预先构建的问答实体对{<si1,si2,...,sin>,<ri1,ri2,...,rim>}中的实体sij进行实体链接。所谓实体链接是指在问答实体对中找到与输入句子s’中的实体相关性较大的实体sij。

步骤s203,根据实体链接结果,获取统计的条件概率。其中,获取的条件概率为步骤s202中链接到的实体sij对应的条件概率p(rit|sij),即在输入句子s’中包含实体sij的前提下,回复语句中出现rit的概率。

步骤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)和联合条件概率,以更新回答产生模块。

方法二:基于机器学习训练和更新回答产生模块。

首先,建立初始的回答产生模块,将训练集中的真实问答对{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,对识别的所有实体与预先构建的问答实体对{<si1,si2,...,sin>,<ri1,ri2,...,rim>}中的实体sij进行实体链接。

步骤s103,根据实体链接结果,获取统计的条件概率。

步骤s104,根据所述条件概率,从所述问答实体对中的rit中采样获得组成机器回复r的实体。

步骤s105,根据获得的组成机器回复r的实体生成机器回复r。

对于采用方法二训练得到的得到回答产生模块,步骤s1的具体实现方式包括:将输入句子s进行句向量表示后,输入回答产生模块,得到机器回复r。

如图3所示,基于与上述聊天机器人回复自动生成方法相同的发明构思,本实施例提供了一种聊天机器人回复自动生成系统,包括:

先验知识查找单元,用于提取用户输入的语句中的关键词,以所述关键词为索引查找在先验知识库中查找到对应的问答对;

第一回复单元,用于若查找到相应的问答对,则将所述问答对中的回复句子作为回复语句输出;

第二回复单元,用于若未查找到相应的问答对,则将所述用户输入的语句输入回答产生模块,得到回复语句输出。

本实施例的系统还包括负反馈单元,用于若未查找到相应的问答对,则获取用户下一步的输入,根据用户下一步的输入判断本轮对话中输出的回复语句是否正确,根据判断结果矫正回答产生模块。

其中,问答对、先验知识库、回答产生模块的构建方法与上述方法实施例中构建方法相同,在此不再赘述。

本实施例提供的系统与上述方法出于相同的发明构思,具有相同的有益效果,此处不再赘述。

基于与上述方法相同的发明构思,本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法实施例中任一所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1