利索能及
我要发布
收藏
专利号: 2022100526651
申请人: 珠海大地软件科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2025-01-07
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于语义感知的一对多对话生成方法,其特征在于,获取实时输入问题,将实时输入问题送入训练好的对话生成模型,对话生成模型根据输入问题得到多样性的回复,对话生成模型包括输入编码器、输出编码器、识别网络、先验网络、分类器、no emotion解码器、positive解码器、negative解码器;

对话生成模型的训练过程包括预训练和训练两个过程,具体表示为:

101、获取多组对话样本对输入编码器、输出编码器、识别网络、先验网络、分类器、预训练解码器进行预训练,预训练过程包括:S11.对多组对话样本进行预处理,每组对话样本包括问题、回复、问题的情感标签;

S12.从多组预处理后的对话样本中抽取一组对话样本,将对话样本中预处理后的问题和回复分别送入输入编码器和输出编码器进行编码,得到问题向量表示和回复向量表示;

S13.将问题向量表示送入先验网络得到先验分布的参数,将回复向量表示送入识别网络得到近似后验分布的参数,计算先验分布和近似后验分布的KL散度并计算KL散度损失;

S14.根据近似后验分布的参数得到隐变量,将隐变量输入分类器计算当前对话样本属于各类别的归一化概率,取最大的归一化概率的类别作为分类结果,并计算分类损失;

S15.将隐变量作为预训练解码器的初始状态,将回复输入预训练解码器得到输出结果,并根据输出结果计算重构期望损失;

S16.将KL散度损失、分类损失和重构期望损失相加,通过梯度反向传播更新对话生成模型的参数,参数更新后返回步骤S12进行迭代,直到参数收敛完成对话生成模型的预训练;

102、完成预训练后,固定输入编码器、输出编码器、识别网络、先验网络和分类器的参数,将对话样本按照无情感、积极情感和消极情感分为三种类型的对话数据,分别用于no emotion解码器、positive解码器、negative解码器,采用重构损失函数依次训练三种解码器,直到三种解码器的参数收敛完成对话生成模型的训练。

2.根据权利要求1所述的一种基于语义感知的一对多对话生成方法,其特征在于,对多组对话样本采用Word2vec进行预处理包括,得到问题词嵌入序列{e(C1),e(C2),...,e(Cn)}和回复词嵌入序列{e(X1),e(X2),...,(Xn)},e(·)表示对对话样本中的单词做词嵌入,{C1,C2,...,Cn}为对话样本中的问题,{X1,X2,...,Xn}为对话样本中的回复。

3.根据权利要求1所述的一种基于语义感知的一对多对话生成方法,其特征在于,计算KL散度的公式为:其中,μ、σ为近似后验分布的参数,μ'、σ'为先验分布的参数,dz是隐变量维度,qφ表示近似后验分布, 表示先验分布,j表示当前维度数。

4.根据权利要求1所述的一种基于语义感知的一对多对话生成方法,其特征在于,步骤S14中,根据近似后验分布的参数重参数化得到隐变量,重参数化表示为:z=μ+σε;

其中,ε从标准高斯分布中采样得到,z为隐变量,μ、σ为近似后验分布的高斯分布参数。

5.根据权利要求1所述的一种基于语义感知的一对多对话生成方法,其特征在于,步骤S15中将隐变量通过多层感知机mlp转化成和预训练解码器相同维度的张量,从而将其作为预训练解码器的初始化隐状态h0和初始化细胞状态c0。

6.根据权利要求1所述的一种基于语义感知的一对多对话生成方法,其特征在于,步骤S16中由KL散度损失、分类损失和重构期望损失构成的预训练损失函数为:其中,‑Eqφ(z|X,C)[·]表示重构期望损失,KL(·)表示KL散度损失,NLLLoss(·)表示分类损失,X表示回复,C表示问题,z表示隐变量,label表示问题的emotion标签,P(E)表示当前对话样本属于各类别的归一化概率,Pθ(X|z,C)表示条件概率分布,qφ(z|X,C)表示近似后验分布, 表示先验分布,φ、 θ为概率分布的参数。

7.根据权利要求6所述的一种基于语义感知的一对多对话生成方法,其特征在于,通过分类器得到归一化概率P(E),分类器包括一个多层感知机和softmax层,隐变量为多层感知机的输入,多层感知机的输出作为softmax层的输入,softmax层的输出即为P(E),其表示为:p(E)=Clf(z);

Clf(z)=softmax(o);

o=MLP(z);

其中,Clf(·)表示分类器,MLP(·)表示多层感知机,softmax(·)表示softmax层,o表示多层感知机的输出。

8.一种基于语义感知的一对多对话生成装置,用于实现权利要求1‑7任一项所述基于语义感知的一对多对话生成方法,其特征在于,包括:获取模块,用于实时获取输入语句;

编码器模块,用于对获取模块的输入语句进行编码,得到输入语句的向量表示;

识别模块,用于拟合编码器模块得到的向量表示,得到包含对话类别信息的隐变量;

分类模块,用于根据隐变量确定输入语句的语义分类结果;

生成模块,用于根据语义分类结果确定对应的解码器,根据解码器生成相应语义的回复。