技术领域
[0001] 本发明涉及自然语言处理与神经网络技术领域,尤其涉及一种意图识别方法和意图识别装置。
相关背景技术
[0002] Transformer模型是谷歌Google公司开发的一种自然语言处理模型(Natural Language Processing,简称NLP),是NLP发展的一个重要的创新。Bert模型(Bidirectional Encoder Representations from Transformers)则基于所述Transformer模型的编码器(encoder)结构,编码器包括多个编码层,一个编码层包括自注意力(self-attention)层、相加&归一化层和全连接前馈神经网络层,而自注意力层由N个Scaled Dot Product Attention(SDPA)组件经过堆叠而成,即SDPA为所述Bert模型的组成组件,Bert模型中通过嵌入层对输入句子转化为特征向量后,再通过自注意力机制中的SDPA组件对待识别的句子进行分析并进行最后的意图识别。其中,传统的SDPA组件中,通过如下方式对输入句子进行相关处理得到可以进行意图识别的句子向量:
[0003] Q=K=V=embedding(sen);
[0004]
[0005] vec=linear(sum(Attention(Q,K,V),dim=0));
[0006] 其中,sen表示输入句子,vec表示最后得到的用于意图识别的句子向量,矩阵Q、矩阵K和矩阵V是输入句子经过嵌入层(embedding)后的向量得到,可见,在传统的SDPA组件中,由于矩阵Q等于矩阵K,矩阵Q与矩阵K的转置的点乘的值是一个对角矩阵,使得该对角矩阵中非对角线的元素来说,一般都会比较小,对于输入向量维度较大的情况下非对角线的元素容易出现为近似0的数。对于两个不同的待识别句子而言,其中一个句子的矩阵Q1与矩阵K1的转置的点乘与另一个句子矩阵Q2与矩阵K2的转置的点乘所对应的距离更小,这限制了对输入句子意图识别的性能,使得得到的句子向量包含的信息较少,影响了最后的句子意图识别准确度。
具体实施方式
[0067] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068] 本实施例中的意图识别方法基于Bert模型,为了便于理解本发明实施例,这里先对Bert模型作一些介绍,Bert模型基于Transformer模型的编码器(encoder)中的编码器结构,具体地,如图1所示,所述Transformer模型包括编码器(encoder)和解码器(decoder),但由于在该Bert模型中并未使用到解码器,在此对其不作详述。所述Transformer模型的编码器结构中,编码器包括多个编码(encoder)层,encoder层包括自注意力(self-attention)层、相加&归一化层和全连接前馈神经网络层,如图2所示,所述自注意力层由N个Scaled Dot Product Attention(简称SDPA)组件经过堆叠而成,即可理解为SDPA为所述Bert模型的组成组件。本实施例中,基于所述Bert模型,通过将待识别句子经嵌入层(embedding)转化得到第一向量、第二向量和第三向量,并输入到SDPA组件中,经编码器输入端进行输入至编码器的SDPA基础组件中,所述第一向量、第二向量和第三向量在自注意力层中的SDPA组件处理后输出处理后的目标句子向量。其中,在本发明实施例中,所述SDPA组件与传统SDPA组件的处理方式不同,以使得到的矩阵Q'不等于矩阵K',矩阵Q'与矩阵K'的转置的点乘不是一个对角矩阵,不会出现只有对角线元素大,非对角线元素小的情况,使得矩阵Q'与矩阵K'的转置的点乘得到的距离更大,可使得到的最后得到的句子向量包含的信息更多,提高了句子意图识别准确度。详见如下实施例的描述:
[0069] 具体地,如图3所示,该意图识别方法包括如下步骤:
[0070] S10:获取待识别句子。
[0071] S11:通过嵌入层将所述待识别句子转化得到第一向量、第二向量和第三向量。
[0072] 其中,设待识别句子为sen,则可以得到:
[0073] 所述第一向量=第二向量=第三向量=embedding(sen)。
[0074] 为了便于理解,下面以实际的词汇进行说明,对于待识别句子对应的词汇而言,示例性的,假设输入的待识别句子经过分词处理后包括N个词汇,相应地通过嵌入层(embedding)对每一个词汇进行词向量转化而得到对应的词向量,即可得到N个词向量,可理解,所述N个词向量对应N个第一向量、N个第二向量和N个第三向量,其中所述N个第一向量组成矩阵Q,N个第二向量组成矩阵K,N个第三向量组成矩阵V。
[0075] 示例性地,设第1个词汇为Apple,即第1个词汇通过的嵌入层(embedding)得到第一向量为Q1,相应地,通过嵌入层(embedding)将所述词汇Apple转化还得到第二向量K1和第三向量V1,其中:
[0076] 所述第一向量Q1=第二向量K1=第三向量V1=embedding(Apple)。
[0077] 相应地,对于一个待识别句子而言,涉及到多个词汇,因此,在实际应用中,可将待识别句子中所有词汇对应的第一向量、第二向量和第三向量以矩阵的形式参与计算,分别形成矩阵Q、矩阵V和矩阵K。也即,通过嵌入层(embedding)将所述待识别句子转化可求得该待识别句子对应的矩阵Q、矩阵K和矩阵V,也即:
[0078] 所述矩阵Q=矩阵K=矩阵V=embedding(待识别句子)。
[0079] 具体地,在需要对某个句子进行意图识别时,可以获取待识别句子并将所述待识别句子输入Bert模型的线性层,通过所述Bert模型的嵌入层将所述待识别句子转化可得到第一向量、第二向量和第三向量。其中,待识别句子可以为文本信息或语音形式的句子,此处并不限定;基于待识别句子,通过嵌入层将待识别句子分词并向量化处理转化成第一向量、第二向量和第三向量或矩阵Q、矩阵K和矩阵V,即通过嵌入层将待识别句子转化成向量形式或矩阵形式。可以理解,嵌入层可使用one-hot或Word2Vec等方式实现上述词向量转化处理,此处并不限定。
[0080] 在一种实施例中,所述通过嵌入层将所述当前获取输入的信息转化成特征向量,具体地,可以通过嵌入层,采用Word2Vec方式将所述当前获取输入的句子转化成为第一向量、第二向量和第三向量。所述嵌入层(embedding)为NLP中一组语言模型和特征学习技术的总称,即把词汇表中的词汇或者短语映射成由实数构成的向量上,Word2Vec词嵌入方式是嵌入层(embedding)其中一种方式,通过Word2Vec方式将获取的待识别句子转化为向量的形式,具体地,根据给定的语料库,Word2Vec可通过优化后的训练模型快速有效地将一个词语表达成向量形式,这里不展开描述。
[0081] S12:分别对所述第一向量和第二向量进行线性映射,得到第一映射向量和第二映射向量。
[0082] 在本实施例中,在得到第一向量和第二向量后,分别对所述第一向量和第二向量进行线性映射,得到第一映射向量和第二映射向量,具体地,可将待识别句子中所有词汇对应的第一向量、第二向量和第三向量以矩阵的形式参与计算,得到该待识别句子对应的矩阵Q、矩阵K和矩阵V,之后对第一向量和第二向量对应的矩阵Q和矩阵K进行线线性映射,可表示为,Q'=linear1(Q),K'=linear2(K),也就是说,在得到第一向量Q和第二向量之后,可通过linear线程层分别对第一向量和第二向量各自对应的矩阵Q和矩阵V,进行线性映射,得到对应的矩阵Q'和矩阵K',步骤S12中通过对矩阵Q和矩阵K进行线性映射,可使得到的矩阵Q'不等于矩阵K'。
[0083] S13:根据第一映射向量获取第一注意力向量,并根据第二映射向量获取第二注意力向量。
[0084] 基于步骤S10-S12,通过嵌入层将待识别句子转化得到第一向量、第二向量和第三向量,并对第一向量和第二向量进行线性映射,得到第一映射向量和第二映射向量。步骤S13中,根据第一映射向量获取第一注意力向量,并根据第二映射向量获取第二注意力向量,在一具体实施例中,具体地,如图4所示,可通过步骤S131-S133获取第一注意力向量和第二注意力向量。
[0085] S131:将所述第一映射向量,与所述第二映射向量的转置进行点乘得到第一关注度,并将所述第二映射向量,与所述第一映射向量的转置进行点乘得到第二关注度。
[0086] 在得第一映射向量和第二映射向量之后,根据第一映射向量和转置后的第二映射向量得到第一关注度,并根据第二映射向量,与第一映射向量的转置得到第二关注度。
[0087] 在本发明实施例中,可以采取两种获取上述第一关注度和第二关注度的方式,第一种是将第一映射向量和转置后的第二映射向量进行点乘得到第一关注度,并将第二映射向量,与第一映射向量的转置进行点乘得到第二关注度,当以矩阵形式参与计算时,具体可以如下公式所示:
[0088] score1=Q'K'T,score2=(Q'K'T)T=Q'TK';
[0089] 其中,score1表示第一关注度,score2表示第二关注度,Q'表示对第一向量对应的矩阵Q进行线性映射得到的矩阵,K'表示对第二向量对应的矩阵K进行线性映射时得到的矩阵,Q'T表示矩阵Q'的转置,K'T表示矩阵K'的转置。第二种是将第一映射向量,与第二映射向量的转置进行点乘后得到第一分数值,并将第一分数值除于缩放因子 后得到第一关注度,将第二映射向量,与第一映射向量的转置进行点乘得到第二数值;将第二数值除于缩放因子所述 后得到第二关注度,其中,dK为所述第二向量的维度,当以矩阵形式参与计算时,具体可以如下公式所示:
[0090]
[0091] 步骤S131中,基于步骤S12得到的矩阵Q'不等于矩阵K',矩阵Q'与矩阵K'的转置的点乘不是一个对角矩阵,也不会出现只有对角线元素大,非对角线元素小的情况。
[0092] S132:分别对所述第一关注度和第二关注度进行归一化处理,得到第一目标关注度和第二目标关注度。
[0093] 在得到第一关注度和第二关注度之后,分别对所述第一关注度和第二关注度进行归一化处理,得到第一目标关注度和第二目标关注度,为了便于计算和分析,需对第一关注度和第二关注度进行归一化处理。示例性的,可用如下公式表示:
[0094] softmax(Q'K'T);
[0095] soft max(Q'K'T)T=sof tmax(Q'TK');
[0096] 或,
[0097]
[0098]
[0099] 其中,soft max(Q'K'T)表示所述第一目标关注度,soft max(Q'K'T)T表示所述第二目标 关注 度 ;或 者 表示所 述第 一目标 关注 度,或 者表示第二目标关注度。
[0100] 其中,在上述第二种方式中,通过增加缩放因子,对于K的维度很大的矩阵时,所述第一向量和第二向量进行点乘得到结果的维度也会很大,而使得结果处于softmax函数梯度很小的区域,对于梯度很小的情况,这对反向传播不利,为了克服这个负面影响,除以一个缩放因子,可以一定程度上减缓这种情况。具体地,示例性的,上述缩放因子一般采用64的开方8,此处可理解为其中一个设定的默认值,当然也可以选择其他的值,此处并不限定。
[0101] 上述的步骤S132过程,将步骤S131计算出的结果传递给softmax层,通过softmax层将score值归一化,便于模型处理和分析。
[0102] S133:将所述第一目标关注度与所述第三向量进行点乘得到第一注意力向量,并将所述第二目标关注度与所述第三向量进行点乘得到第二注意力向量。
[0103] 在得到第一目标关注度和第二目标关注度之后,分别将第一目标关注度和第二目标关注度与第三向量进行点乘得到第一注意力向量和第二注意力向量,当以矩阵形式参与运算时,具体可以如下述公式所示:
[0104] Attention1(Q'、K'、V)=soft max(Q'K'T)V;
[0105] Attention2(Q'、K'、V)=soft max(Q'K'T)TV=soft max(Q'TK')V;
[0106] 或,
[0107]
[0108]
[0109] 其中,Attention1表示第一注意力向量对应的矩阵,Attention2表示第二注意力向量对应的矩阵,V为第三向量对应的矩阵V。
[0110] S14:根据所述第一注意力向量获取第一句子向量,并根据所述第二注意力向量获取第二句子向量。
[0111] 在一种实施例中,根据所述第一注意力向量获取第一句子向量,并根据所述第二注意力向量获取第二句子向量,具体是指对所述第一注意力向量的第N维进行累加得到所述第一句子向量;对所述第二注意力向量的第N维进行累加得到所述第二句子向量,可用如下公式表示:
[0112] vec1=sum(Attention1(Q'、K'、V),dim=N);
[0113] vec2=sum(Attention2(Q'、K'、V),dim=N);
[0114] 其中,vec1表示第一句子向量,vec2表示第二句子向量,在实际应用中,可对第一注意力向量的对应的矩阵Attention1的第0维进行累加得到第一句子向量;对所述第二注意力向量对应的矩阵Attention2的第0维进行累加得到第二句子向量,可用如下公式表示:
[0115] vec1=sum(Attention1(Q'、K'、V),dim=0);
[0116] vec2=sum(Attention2(Q'、K'、V),dim=0);
[0117] S15:根据所述第一句子向量和所述第二句子向量获取目标句子向量。
[0118] S16:将所述目标句子向量输入Bert模型的线性层进行意图识别,获取意图识别结果。
[0119] 在获取上述第一句子向量和第二句子向量之后,可根据所述第一句子向量和所述第二句子向量获取目标句子向量,将目标句子向量输入Bert模型的线性层进行意图识别,从而获取意图识别结果。在一种实施例中,所述根据第一句子向量vec1和第二句子向量vec2进行合并得到目标句子向量vec,可用如下公式表示:
[0120] vec=vec1+vec2。
[0121] 可见,在本发明中,由于待识别句子的特征向量对应的第一向量、第二向量做了线性转换,得到的第一映射向量不等于第二映射向量,根据第一映射向量和第二映射向量得到不相等的矩阵,因此本发明实施例中,通过得到的矩阵Q'不等于矩阵K',矩阵Q'与矩阵K'的转置的点乘不是一个对角矩阵,也不会出现只有对角线元素大,非对角线元素小的情况,对于两个不同的待识别句子而言,其中一个句子的矩阵Q'1与矩阵K'1的转置的点乘与另一个句子矩阵Q'2与矩阵K'2的转置的点乘所对应的距离更大,可使得到的目标句子向量包含的信息更多,提高了最后的句子意图识别准确度。
[0122] 图5示出与实施例1中意图识别方法一一对应的意图识别装置的原理框图。如图5所示,该意图识别装置包括获取模块20和处理模块21。
[0123] 获取模块20,用于获取待识别句子;
[0124] 处理模块21,将通过嵌入层将所述待识别句子转化得到第一向量、第二向量和第三向量;
[0125] 分别对所述第一向量和第二向量进行线性映射,得到第一映射向量和第二映射向量;
[0126] 根据所述第一映射向量获取第一注意力向量,并根据第二映射向量获取第二注意力向量;
[0127] 根据所述第一注意力向量得到第一句子向量,并根据所述第二注意力向量得到第二句子向量;
[0128] 根据所述第一句子向量和所述第二句子向量得到目标句子向量;
[0129] 将所述目标句子向量输入Bert模型的线性层进行意图识别,获取意图识别结果。
[0130] 可选地,所述处理模块21还用于:
[0131] 将所述第一映射向量,与所述第二映射向量的转置进行点乘得到第一关注度,并将所述第二映射向量,与所述第一映射向量的转置进行点乘得到第二关注度;
[0132] 分别对所述第一关注度和第二关注度进行归一化处理,得到第一目标关注度和第二目标关注度;
[0133] 将所述第一目标关注度与所述第三向量进行点乘得到第一注意力向量,并将所述第二目标关注度与所述第三向量进行点乘得到第二注意力向量。
[0134] 可选地,所述处理模块21还用于:
[0135] 将所述第一映射向量,与所述第二映射向量的转置进行点乘得到第一数值;
[0136] 将所述第一数值除以缩放因子 后得到所述第一关注度,其中,所述dK为所述第二向量的维度;
[0137] 将所述第二映射向量,与所述第一映射向量的转置进行点乘得到第二数值;
[0138] 将所述第二数值除于缩放因子所述 后得到所述第二关注度。
[0139] 可选地,所述处理模块21还用于:
[0140] 将所述第一映射向量,与所述第二映射向量的转置进行点乘得到第一数值;
[0141] 将所述第一数值除以缩放因子 后得到所述第一关注度,其中,所述dK为所述第二向量的维度;
[0142] 将所述第二映射向量,与所述第一映射向量的转置进行点乘得到第二数值;
[0143] 将所述第二数值除于缩放因子所述 后得到所述第二关注度。
[0144] 可选地,所述处理模块21还用于:
[0145] 对所述第一注意力向量的第N维进行累加得到所述第一句子向量;
[0146] 对所述第二注意力向量的第N维进行累加得到所述第二句子向量。
[0147] 可选地,所述N为0。
[0148] 可选地,所述处理模块21还用于:
[0149] 对所述第一句子向量与所述第二句子向量进行合并得到所述目标句子向量。
[0150] 可选地,所述处理模块21还用于:
[0151] 通过所述嵌入层,采用Word2Vec方式将所述待识别句子转化成特征向量。
[0152] 其中,上述模块实现功能与实施例中意图识别方法对应的步骤相对应,为避免赘述,本实施例不一一详述。
[0153] 本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例中所述的意图识别方法,为避免重复,这里不再赘述。或者,该计算机程序被处理器执行时实现实施例中意图识别装置中各模块对应的功能,为避免重复,这里不再赘述。可以理解地,所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号和电信信号等。
[0154] 在一个实施例中,提供了一种意图识别转置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中所述的意图识别方法,或者,该处理器执行计算机程序时实现实施例中意图识别装置中各模块对应的功能,为避免重复,这里不再赘述。
[0155] 图6是本发明一实施例提供的意图识别装置的示意图。如图6所示,该实施例的意图识别装置60包括:处理器61、存储器62以及存储在存储器62中并可在处理器61上运行的计算机程序63。处理器61执行计算机程序63时实现上述实施例1中意图识别方法的步骤,例如图3所示的步骤S10至S16或者图4所示的步骤S131至S133。或者,处理器61执行计算机程序63时实现上述实施例中的意图识别装置中各模块对应的功能,实现功能与实施例1中意图识别方法对应的步骤相对应,为避免赘述,本实施例不一一详述。
[0156] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将所述装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0157] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。