首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

基于深度学习的情绪感知与支持的对话系统构建方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:华东师范大学

摘要:本发明公开了一种基于深度学习的情绪感知与支持的对话系统构建方法,该方法包括构建对话策略选择模块、对话生成模块、心理状态认知模块和建议推荐模块。对话策略选择模块控制对话的过程,根据用户对话历史实时的选择对话策略;对话生成模块将用户对话历史、当前对话策略信息输入到解码器中,通过解码器生成回复语句;心理状态认知模块通过用户对话历史,对用户当前的心理认知状态进行分类;建议推荐模块根据用户心理认知状态以及对话历史,对知识库进行检索生成建议回复。该系统通过引入自适应对话策略选择模块,构建了多种对话策略,并能够根据上下文选择对话策略,引导模型生成更具有同理心的回复内容,给予用户更加有效的情感支持。

主权项:1.一种基于深度学习的情绪感知与支持的对话系统构建方法,其特征在于,该方法包括如下步骤:1建立对话策略选择模块使用对话数据集,对话数据集要满足:每条数据要有多轮的对话历史,且在每轮对话中要标注出该轮对话中回复时所使用的对话策略,并且要标注出用户心理认知状态类型;对所述的对话数据集,设给定的对话上下文历史为{u1,r1,u2,r2,...,um,rm},其中i表示对话轮次,ui表示第i轮对话中的用户的语句,ri表示第i轮对话对中系统回复的语句,给定对话策略{S1,S2,...,Sm},给定用户心理认知状态O,给定当前的对话轮次i的条件下,选择最近的两轮对话作为用户当前对话历史,设为U={ui-2,ri-2,ui-1,ri-1,ui},不足两轮时则选择第1轮对话到当前轮次对话语句;对当前对话历史U,按照对话历史顺序依次进行拼接,并通过独立标签[SEP]将不同的对话进行分隔,并在拼接的序列前添加标签[CLS],序列最后添加标签[SEP],得到拼接序列Ucat=[CLS]ui-2[SEP]ri-2[SEP]ui-1[SEP]ri-1[SEP]ui[SEP];将拼接序列Ucat作为输入,通过预训练好的TransformerEncoder模型对拼接序列Ucat进行编码,得到TransformerEncoder模型输出的编码序列具体过程如下:UE=EmbeddingUcat EncoderUE=AddNormMultiHeadUE,UE,UEAddNormx=LayerNorm[FFNx+x]FFNx=ReluxW1+b1W2+b2MultiHeadQ,K,V=LayerNormConcathead1,...headhWO+Qheadi=AttentionQWiQ,KWiK,VWiV Embedding函数的功能是将输入序列转换成连续的嵌入矩阵,其中KT表示矩阵K的转置矩阵,dk是一个常数,大小取决于计算时矩阵Q的列数;WiQ、WiK、WiV是Attention模块可学习的参数矩阵,每种共有h个,h为Attention模块数量,WiQ、WiK、WiV的下标i表示第i个Attention模块,上标Q、K、V表示分别对应矩阵是Q、K、V,WO是MultiHead模块中一个可学习的参数矩阵,LayerNorm表示层归一化函数;W1、b1,W2、b2则分别表示两层前馈神经网络,FeedForwardNeuralNetworks,FFN,的可学习参数矩阵,选择Relu作为激活函数;得到编码序列后,根据拼接序列Ucat中标签[CLS]的位置PCLS,取编码序列的第PCLS位置的向量表示,作为当前历史对话的特征表示,记为再将输入到两层FFN和Softmax层进行分类,得到对话策略为i表示当前的对话轮次: 最后训练对话策略选择模块的损失计算函数为多分类的交叉熵损失函数: 其中i表示当前对话轮次,表示对话策略的总数量,表示第i轮对话中,预测第j种策略的得分,是第i轮对话的第j种策略的真实标签,正样本标签为1,负样本标签为0;在所述的对话数据集中共定义6种对话策略,分别是“提问”、“情感反映”、“自我表露”、“肯定与安慰”、“给予建议”及“其他”;在对话策略预测为“提问”、“情感反映”、“自我表露”、“肯定与安慰”或“其他”时,转入对话生成模块给予回复,若对话策略预测为“给予建议”,则转入心理状态认知模块预测用户心理认知类型,并通过用户心理认知类型引导建议推荐模块进行回复;2建立对话生成模块将最近的两轮对话作为对话历史与对话策略进行拼接,设为输入到预训练好的TransformerDecoder中,将Decoder每一步结果进行输出,得到完整的回复Response;USE=EmbeddingUcatResponse=DecoderUSEDecoderUSE=AddNormMaskedMultiHeadUSE,USE,USEMaskedMultiHeadQ,K,V=LayerNormConcathead1,...headhWO+Qheadi=MaskedAttentionQWiQ,KWiK,VWiV MaskedMultiHead和MultiHead区别在于,计算Attention时,为确保对位置i的预测只能依赖于小于i位置的已知输出,所以把大于等于i位置的序列进行Mask操作,其中运算符⊙表示矩阵的对应位置相乘,Mask是一个幂零矩阵,主对角线上全为1;最后训练对话生成模块的损失计算函数为: 其中Tr表示真实回复ri的长度,i表示当前对话轮次,rij表示第i轮对话中,真实回复ri的第j个回复字符,ri1:j-1表示第i轮对话中,真实回复ri的第1个字符到第j-1个回复字符序列;3建立心理状态认知模块对当前所有用户对话历史进行拼接,设为Ucur=[CLS]ui[SEP]ri-1[SEP]ui-1[SEP]...[SEP]u1[SEP]r1[SEP],i表示当前轮次,若拼接某对话轮次j的对话uj和回复rj后会导致序列Ucur长度超过512,则省略该轮次j的对话历史,且轮次j前的对话历史也都省略不做拼接,将Ucur输入到预训练好的TransformerEncoder中得到句级别特征表示,并通过FFN和Softmax层进行分类: 得到编码序列后,根据拼接序列Ucur中标签[CLS]的位置PCLS,取编码序列的第PCLS位置的向量表示,作为当前所有用户对话历史的特征表示,记为再将输入到两层FFN和Softmax层中分类,预测得到用户当前的心理认知类型 最后训练心理状态认知模块的损失计算函数为多分类的交叉熵损失函数: 其中表示心理认知状态类型的总数量,表示预测第j种心理认知状态类型的得分,Oj表示第j种心理认知状态类型的真实标签,正样本标签为1,负样本标签为0;4建立建议推荐模块使用问答建议知识库,问答建议知识库要满足:问答建议知识库中每一个问题,有多个回复,每一个问答对要标注该问题的用户心理认知状态类型;将当前轮次对话中用户的语句作为关键句,即当前对话轮次j下的uj,并通过预训练语言模型转化为句向量,设为Ukey,同样也将问答建议知识库中的所有问题,通过预训练语言模型转化为向量表示;在获取到用户的对话向量Ukey和在心理认知模块预测得到的心理认知类型后,首先通过心理认知类型对问答建议知识库中的问题进行筛选,选择相同心理认知类型的问题,并通过Annoy工具对筛选问题的向量表示进行相似度匹配,选取最相似的10个问题,并将这些问题下的所有回复,记为候选回复集A,将候选回复集A中所有的候选回复Ai分别与关键句uj进行拼接,即[uj;Ai]=[CLS]uj[SEP]Ai[SEP],最后将所有拼接后的句子分别输入到由TransformerEncoder和Sigmoid函数构成的打分模型Score中进行打分评判,并回复用户得分最高的候选回复Ai; Scorei=ScoreAiScoreAi=SigmoidEncoder[uj;Ai] 其中表示问答建议知识库,A表示利用Annoy工具检索出在问答建议知识库中与关键句Ukey最相关的10个问题下的所有推荐回复;Scorei表示候选回复Ai与Ukey的得分,Abest表示得分最高的候选回复;训练由TransformerEncoder和Sigmoid函数构成的打分模型Score,要对问答建议知识库的数据做预处理:首先对于问答建议知识库中的每一个问题语句Query的所有N条回复记为推荐回复Rpos,同时从其他问题的回复中随机不重复的选取N条回复记为不推荐回复Rneg,推荐回复Rpos和不推荐回复Rneg组成回复集记为R,然后再分别将问题语句和回复集R中所有的回复进行拼接,记为URi=[CLS]Query[SEP]Ri[SEP],Ri表示R中的第i条回复,当拼接的Ri属于推荐回复Rpos,设为正样本,记标签y=1,当拼接为不推荐回复Rneg,设为负样本,记标签y=0;Scorei=ScoreURiScoreURi=SigmoidEncoder[Query;URi]最后训练打分模型的损失计算函数为二分类交叉熵损失:

全文数据:

权利要求:

百度查询: 华东师范大学 基于深度学习的情绪感知与支持的对话系统构建方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。