根据用户问句召回标准问句的方法和装置
技术领域
本说明书一个或多个实施例涉及计算机领域,尤其涉及根据用户问句召回标准问句的方法和装置。
背景技术
在客服机器人回答用户问题的场景下,针对用户问句倾向于口语化,无法明确用户述求的情况,可以根据用户问句从知识库中召回多个标准问句,由用户从上述多个标准问句中选择符合该用户述求的标准问句。
现有技术中,在根据用户问句召回标准问句时,常常存在时延大、以及召回的标准问句不满足用户述求的问题。
因此,希望能有改进的方案,能够高效地根据用户问句召回标准问句,并且召回的标准问句有较大概率符合用户述求。
发明内容
本说明书一个或多个实施例描述了一种根据用户问句召回标准问句的方法和装置,能够高效地根据用户问句召回标准问句,并且召回的标准问句有较大概率符合用户述求。
第一方面,提供了一种根据用户问句召回标准问句的方法,方法包括:
针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;
将所述分词集合作为预先训练的第一卷积神经网络(convolutional neuralnetwork,CNN)模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;
获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;
根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句;
其中,所述第一CNN模型、所述第二CNN模型作为深度结构语义模型(deepstructured semantic model,DSSM)模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。
在一种可能的实施方式中,所述第一CNN模型或所述第二CNN模型采用如下至少一种滑动窗口:
一个分词的滑动窗口、两个分词的滑动窗口和三个分词的滑动窗口。
在一种可能的实施方式中,对所述DSSM模型进行训练的方式如下:
将历史用户问句对应的分词集合作为所述第一CNN模型的样本输入,将针对所述历史用户问句召回的历史标准问句作为所述第二CNN模型的样本输入,根据用户对历史标准问句的点击结果生成所述DSSM模型的样本标签,对所述DSSM模型进行训练。
在一种可能的实施方式中,所述根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句,包括:
通过余弦相似度或欧式距离确定所述第一句子表示向量与各第二句子表示向量之间的相似度;
获取排序在前预定数目位的相似度对应的第二句子表示向量,将获取的第二句子表示向量对应的标准问句确定为召回的标准问句。
在一种可能的实施方式中,所述根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句,包括:
获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量;
将预定数目个第二句子表示向量对应的标准问句确定为召回的标准问句。
进一步地,所述获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量,包括:
在所述第一句子表示向量与各第二句子表示向量构成的向量空间中,基于对所述向量空间的划分,获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量。
在一种可能的实施方式中,所述根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句之后,通过余弦相似度或欧式距离确定所述第一句子表示向量与召回的标准问句对应的各第二句子表示向量之间的相似度。
第二方面,提供了一种根据用户问句召回标准问句的装置,装置包括:
分词单元,用于针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;
生成单元,用于将所述分词单元得到的分词集合作为预先训练的第一CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;
获取单元,用于获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;
确定单元,用于根据所述生成单元得到的第一句子表示向量与所述获取单元获取的各第二句子表示向量,确定召回的标准问句;
其中,所述第一CNN模型、所述第二CNN模型作为DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。
第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的方法和装置,首先针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;然后将所述分词集合作为预先训练的第一CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;接着获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;最后根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句;其中,所述第一CNN模型、所述第二CNN模型作为DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。由上可见,一方面,由于DSSM模型在模型架构上就集成了基于余弦相似度的损失函数,所以在结合CNN与DSSM模型得到的句子向量空间中能更好地计算出句子之间的相似度,从而使得召回的标准问句有较大概率符合用户述求;另一方面,由于CNN模型并行度非常高,模型处理时间段,因此能够高效地根据用户问句召回标准问句。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的根据用户问句召回标准问句的方法流程图;
图3示出根据一个实施例的DSSM模型的结构示意图;
图4示出根据一个实施例的采用KDTree算法进行向量召回的示意图;
图5示出根据一个实施例的根据用户问句召回标准问句的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及根据用户问句召回标准问句。在客服机器人回答用户问题的场景下,针对用户问句倾向于口语化,无法明确用户述求的情况,可以根据用户问句从知识库中召回多个标准问句,由用户从上述多个标准问句中选择符合该用户述求的标准问句。其中,上述用户问句可以为包含字数较多的长句,也可以为包含字数较少的短句。参照图1,针对用户问句召回了三个标准问句,这三个标准问句分别为标准问句1、标准问句2和标准问句3,用户可以通过点击其中一个标准问句来确认其符合用户述求,例如,用户点击了标准问句1以确认标准问句1符合用户述求。
本说明书实施例中,为了能够高效地根据用户问句召回标准问句,并且召回的标准问句有较大概率符合用户述求,提出了相应的解决方案。
图2示出根据一个实施例的根据用户问句召回标准问句的方法流程图,该方法可以基于图1所示的应用场景。如图2所示,该实施例中根据用户问句召回标准问句的方法包括以下步骤:步骤21,针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;步骤22,将所述分词集合作为预先训练的第一卷积神经网络(convolutional neuralnetwork,CNN)模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;步骤23,获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;其中,所述第一CNN模型、所述第二CNN模型作为深度结构语义模型(deepstructured semantic model,DSSM)模型中的特征提取器,通过对所述DSSM模型的训练而训练获得;步骤24,根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句。下面描述以上各个步骤的具体执行方式。
首先在步骤21,针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合。其中,当前用户问句可以为用户最近一次输入的问句,也可以为综合用户多次输入的信息而得到的问句,例如,渐进提示场景中,根据用户首次输入的问句无法明确用户述求,可以提示用户进一步输入相应信息,以便明确用户述求。
本说明书实施例中,每个分词可以表示为一个词向量,用于表示一个分词的高维向量通常称为词嵌入。采用的产生词嵌入的方法可以但不限于为Word2Vec。Word2Vec通过训练,可以把对文本内容的处理简化为k维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。
然后在步骤22,将所述分词集合作为预先训练的第一CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量。可以理解的是,利用各分词的词向量的表示,就可以把分词集合表示为用矩阵表示的数据结构。将矩阵作为CNN模型的输入,通过CNN模型实现对该分词集合的特征提取。
本说明书实施例,通过滑动窗口(也称为卷积核或filter)来扫描输入的矩阵,滑动窗口的大小作为扫描的感受野。CNN模型可以采用如下至少一种滑动窗口:一个分词的滑动窗口、两个分词的滑动窗口和三个分词的滑动窗口。比如,一个分词的向量维度是200,那么对三个分词进行卷积的滑动窗口对应的输入是一个3*200的矩阵。
其中,滑动窗口用于产生权重(weight),通过权重组合各分词的词向量,从而得到句子表示向量。
接着在步骤23,获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;其中,所述第一CNN模型、所述第二CNN模型作为DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。
可以理解的是,可以预先生成各标准问句对应的句子表示向量,需要时直接获取即可。
本说明书实施例,第二CNN模型可以采用如下至少一种滑动窗口:一个分词的滑动窗口、两个分词的滑动窗口和三个分词的滑动窗口。
图3示出根据一个实施例的DSSM模型的结构示意图。参照图3,在该DSSM模型中,通过CNN模型作为特征提取器对句子进行特征提取。其中,对所述DSSM模型进行训练的方式如下:将历史用户问句对应的分词集合作为所述第一CNN模型的样本输入,将针对所述历史用户问句召回的历史标准问句作为所述第二CNN模型的样本输入,根据用户对历史标准问句的点击结果生成所述DSSM模型的样本标签,对所述DSSM模型进行训练。可以理解的是,图3中word1、word2等代表各分词,标问标题即标准问句。
DSSM模型在模型架构上就集成了基于余弦相似度(Cosine Similarity)的损失函数,并且经过了归一化指数函数(Softmax)函数进行处理,所以在结合CNN与DSSM模型得到的句子向量空间中能更好地计算出句子之间的相似度。
在向量空间召回中,用户问句会通过第一CNN模型生成对应的问句表示向量,CNN模型包括卷积层和池化层,池化层采用了最大值池化(maxpooling)卷积层得到的向量通过池化层可以最终得出一个句子表示向量,通过该句子表示向量表示用户问句。所有的标问标题向量和标问问法向量会事先生成好并加入此向量空间中。
最后在步骤24,根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句。可以理解的是,由于根据第一句子表示向量和第二句子表示向量能够更好地计算出句子之间的相似度,因此有利于确定召回的标准问句。
在一个示例中,先通过余弦相似度或欧式距离确定所述第一句子表示向量与各第二句子表示向量之间的相似度,再获取排序在前预定数目位的相似度对应的第二句子表示向量,将获取的第二句子表示向量对应的标准问句确定为召回的标准问句。
在另一个示例中,先获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量,再将预定数目个第二句子表示向量对应的标准问句确定为召回的标准问句。
进一步地,在所述第一句子表示向量与各第二句子表示向量构成的向量空间中,基于对所述向量空间的划分,获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量。
图4示出根据一个实施例的采用KDTree算法进行向量召回的示意图。参照图4,由于向量空间是高维空间,可以根据维度数将向量空间划分为多层,每一层采用不同的维度的数值来进行比较。例如,对于一个二维数据,第一层用第一维,第二层用第二维,第三层第一维,第四层第二维……。对于给定的查询点,即用户问句在向量空间中对应的点,首先要确定该点所在的最小的区域,然后找到目前为止能够确定的距离查询点最近的点,再以这两点之间的距离为半径,查询点为圆心做一个圆或者超球体,判断这个圆或者超球体内是否还有距离查询点更近的点。
参照图4,KDTree算法会寻找到与用户问句的句子标识向量距离最接近的N个向量,完成标问与标问问法的召回。图中的实心圆点代表需要召回的正确的标问,KDTree会动态地调整圆圈的半径(如图中两个不同半径的圆),去召回预定的N个点,也就是预定数量的句子。
在一个示例中,在步骤24之后,还可以通过余弦相似度或欧式距离确定所述第一句子表示向量与召回的标准问句对应的各第二句子表示向量之间的相似度。后续可以根据上述相似度,对召回的多个标准问句进行排序,或者进行其他处理。
通过本说明书实施例提供的方法,首先针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;然后将所述分词集合作为预先训练的第一CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;接着获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;最后根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句;其中,所述第一CNN模型、所述第二CNN模型作为DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。由上可见,一方面,由于DSSM模型在模型架构上就集成了基于余弦相似度的损失函数,所以在结合CNN与DSSM模型得到的句子向量空间中能更好地计算出句子之间的相似度,从而使得召回的标准问句有较大概率符合用户述求;另一方面,由于CNN模型并行度非常高,模型处理时间段,因此能够高效地根据用户问句召回标准问句。
本说明书实施例,比对了检验词向量取平均生成的句子表示向量与基于CNN+DSSM生成的句子向量的性能差异,在渐进提示点击日志上进行了实验,其中,基于CNN+DSSM生成句子向量的方式即本说明书实施例中提供的生成句子向量的方式。渐进提示的日志记录记录了用户在使用渐进提示时展示给用户的三条推荐的标准问句与用户点击的是哪条标准问句。
如下是两种方法在渐进提示点击日志测试集上表现对比:
平均词向量生成句子向量,与用户问句余弦相似度最高的标准问句是用户点击的标准问句的概率为42%;
CNN+DSSM生成句子向量,与用户问句余弦相似度最高的标准问句是用户点击的标准问句的概率为66.2%;
CNN+DSSM生成句子向量,与用户问句欧氏距离最小的标准问句是用户点击的标准问句的概率为65.5%。
通过实验数据发现基于CNN+DSSM生成的句子向量可以更好的表示句子。所以在基于此种句子向量生成方式生成的句子向量中进行的召回,会好于在平均词向量空间中进行的召回。
通过CNN+DSSM生成的句子向量之间可以通过余弦相似度或欧式距离等计算句子之间的相关程度,供后续模型使用。
根据另一方面的实施例,还提供一种根据用户问句召回标准问句的装置,该装置用于执行本说明书实施例提供的根据用户问句召回标准问句的方法。
图5示出根据一个实施例的根据用户问句召回标准问句的装置的示意性框图。如图5所示,该装置500包括:
分词单元51,用于针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;
生成单元52,用于将所述分词单元51得到的分词集合作为预先训练的第一卷积神经网络CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;
获取单元53,用于获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;
确定单元54,用于根据所述生成单元52得到的第一句子表示向量与所述获取单元53获取的各第二句子表示向量,确定召回的标准问句;
其中,所述第一CNN模型、所述第二CNN模型作为深度结构语义模型DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。
可选地,作为一个实施例,所述第一CNN模型或所述第二CNN模型采用如下至少一种滑动窗口:
一个分词的滑动窗口、两个分词的滑动窗口和三个分词的滑动窗口。
可选地,作为一个实施例,对所述DSSM模型进行训练的方式如下:
将历史用户问句对应的分词集合作为所述第一CNN模型的样本输入,将针对所述历史用户问句召回的历史标准问句作为所述第二CNN模型的样本输入,根据用户对历史标准问句的点击结果生成所述DSSM模型的样本标签,对所述DSSM模型进行训练。
可选地,作为一个实施例,所述确定单元54,具体包括:
相似度计算子单元,用于通过余弦相似度或欧式距离确定所述第一句子表示向量与各第二句子表示向量之间的相似度;
第一确定子单元,用于获取所述相似度计算子单元确定的各相似度中排序在前预定数目位的相似度对应的第二句子表示向量,将获取的第二句子表示向量对应的标准问句确定为召回的标准问句。
可选地,作为一个实施例,所述确定单元54,具体包括:
获取子单元,用于获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量;
第二确定子单元,用于将所述获取子单元获取的预定数目个第二句子表示向量对应的标准问句确定为召回的标准问句。
进一步地,所述获取子单元,具体用于在所述第一句子表示向量与各第二句子表示向量构成的向量空间中,基于对所述向量空间的划分,获取与所述第一句子表示向量距离最接近的预设数目个第二句子表示向量。
可选地,作为一个实施例,所述装置还包括:
相似度计算单元,用于在所述确定单元54根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句之后,通过余弦相似度或欧式距离确定所述第一句子表示向量与召回的标准问句对应的各第二句子表示向量之间的相似度。
通过本说明书实施例提供的装置,首先分词单元51针对当前用户问句进行分词处理,得到所述当前用户问句对应的分词集合;然后生成单元52将所述分词集合作为预先训练的第一CNN模型的输入,通过所述第一CNN模型的输出得到所述当前用户问句的第一句子表示向量;接着获取单元53获取根据预先训练的第二CNN模型生成的各标准问句对应的各第二句子表示向量;最后确定单元54根据所述第一句子表示向量与各第二句子表示向量,确定召回的标准问句;其中,所述第一CNN模型、所述第二CNN模型作为DSSM模型中的特征提取器,通过对所述DSSM模型的训练而训练获得。由上可见,一方面,由于DSSM模型在模型架构上就集成了基于余弦相似度的损失函数,所以在结合CNN与DSSM模型得到的句子向量空间中能更好地计算出句子之间的相似度,从而使得召回的标准问句有较大概率符合用户述求;另一方面,由于CNN模型并行度非常高,模型处理时间段,因此能够高效地根据用户问句召回标准问句。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所描述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。