一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于知识图谱和胶囊网络的小样本意图识别方法与流程

2021-10-24 06:14:00 来源:中国专利 TAG:自然语言 人机 图谱 样本 胶囊


1.本发明涉及口语理解领域,具体涉及一种基于知识图谱和胶囊网络的小样本意图识别方法,属于自然语言处理中的人机对话领域。


背景技术:

2.口语理解是任务型人机对话系统中不可或缺的一部分,而意图识别是口语理解当中的1个关键任务。该任务的关键是识别出用户语句的目的。当前意图识别模型通常需要在大量标注好的数据集上进行训练,而当模型需要判别领域内新的意图时,往往仅有少量的相关数据可供训练,所以越来越多的研究人员采用基于小样本学习的意图识别方法。在现有的方法中,通常将样本表示进行求和或者求平均的方式来得到意图表示,这样做的问题是同一意图中的噪声样本会导致该意图的高维特征表示丢失“关键信息”,并且该问题在样本数据变多时会更加突出。实际上,同一意图的内部样本通常会共享某些特征,但是每个样本也拥有自己的独立特征。如果在嵌入空间中,仅通过累加或者求平均的方式得到意图表示,会使意图之间的距离过于接近而导致分类失败。因此本发明采用胶囊网络对语句进行层次化建模分别得到高维意图表示和语句表示。小样本学习模型仅能在容量有限的数据集上训练,这会使模型不能充分学习样本的分布特征,从而导致得到的语句向量表示不能包含全部语义。类比人类在学习新事物前拥有的丰富先验知识,可通过加入先验信息的方法,从已有外部知识库中抽取语句中实体的相关信息来加强实体的语义表示。考虑到抽取的外部先验信息可能与实体在语句中需表示的语义信息不一致,因此,可结合实体在语句中的上下文信息,通过阀门机制控制先验信息与上下文信息对实体表示的影响。综上所述,本发明首先从已有知识图谱中,抽取数据集中与语句相关的先验信息,并且结合语句中原本存在的上下文信息,来加强语句中实体的语义表示,随后采用胶囊网络对语句进行层次化建模。将低维语义特征表示映射到高维意图特征表示,最后结合该高维意图特征表示对未知语句进行分类。


技术实现要素:

3.本发明的目的是针对现有技术的不足,提出一种基于知识图谱和胶囊网络的小样本意图识别方法,以解决在小样本意图识别中,语句语义表示不充分,和不能得到有效意图特征表示的问题。
4.本发明解决其技术问题所采用的技术方案包括以下步骤:
5.步骤(1)获取银行业务数据集并进行预处理,根据数据集中每条语句所属的意图,将数据集划分为10个子业务模块;
6.步骤(2)确定模型需识别的同业务意图和跨业务意图,并且设置训练规则;
7.步骤(3)建立基于知识图谱和胶囊网络的小样本意图识别架构,确定网络组成部分以及层数和维度,得到小样本意图识别模型;
8.步骤(4)将步骤(1)预处理后的语句输入双向lstm模型,使语句中单词的表示能够
获取语句的前后文信息;
9.步骤(5)利用实体识别工具识别出步骤(1)预处理后的语句中存在的实体,并且映射至知识图谱中对应的实体,抽取该实体相关联的知识表示向量;
10.步骤(6)利用注意力机制计算步骤(5)抽取到的每一个知识表示向量,与语句中当前实体之间的关联程度;
11.步骤(7)根据步骤(4)中前一时刻的双向lstm的隐藏层状态和当前时刻单词输入,得到上下文关联向量,并计算该向量与当前实体之间的关联程度;
12.步骤(8)先将知识表示向量与对应关联度相乘,后将上下文关联向量与对应影响权重值相乘,将两个相乘结果相加后与原先实体表示进行融合,得到新的实体表示;
13.步骤(9)利用胶囊网络将低层次的语句语义表示,映射到高维的意图特征表示;
14.步骤(10)基于步骤(4)至步骤(8)对未知语句进行操作后,得到未知语句表示,结合步骤(9)中的高维意图特征表示,对未知语句进行分类;
15.步骤(11)将预测的意图与语句对应的真实意图进行对比,计算损失函数,迭代更新网络模型中的参数;
16.步骤(12)将需测试的目标意图与对应的语句输入训练好的小样本意图识别模型,正确获得语句表示和高维意图特征表示,结合该高维意图特征表示对未知语句进行分类,输出未知语句对应的意图。
17.本发明所具有的优点如下:
18.针对现有技术的不足,提供一种基于知识图谱和胶囊网络的小样本意图识别方法,首先将语句中存在的实体映射到知识图谱,提取该实体在知识图谱中相关联的所有类别信息,并通过注意力机制获得知识先验向量。随后使用阀门机制来控制语句中原本存在的上下文语义向量,以及该知识先验向量对当前实体表示的影响。下一步利用胶囊网络将已包含先验知识的语句表示映射到高层次的意图表示。最后通过计算未知语句与各个意图之间的相似度,对未知语句做意图分类处理。同时本发明对训练集中的数据进行了划分,在训练时采用了元学习的训练方法,使得本发明学习到的模型更加具有说服力和通用性。
附图说明
19.图1是本发明的整体实施方案流程图;
20.图2是本发明的训练方式示意图;
21.图3是本发明的训练模型示意图;
22.图4是胶囊网络模型图;
23.图5是本发明工艺实施方案的具体流程图;
具体实施方式
24.下面结合附图对本发明作进一步描述。
25.本发明的整体实施方案流程图参照图1,一种基于知识图谱和胶囊网络的小样本意图识别方法包括以下步骤:
26.步骤(1)获取银行业务数据集并进行预处理,根据数据集中每条语句所属的意图,将数据集划分为10个子业务模块;
27.步骤(2)确定模型需识别的同业务意图和跨业务意图,并且设置训练规则;
28.步骤(3)建立基于知识图谱和胶囊网络的小样本意图识别架构,确定网络组成部分以及层数和维度,得到小样本意图识别模型;
29.步骤(4)将步骤(1)预处理后的语句输入双向lstm模型,使语句中单词的表示能够获取语句的前后文信息;
30.步骤(5)利用实体识别工具识别出步骤(1)预处理后的语句中存在的实体,并且映射至知识图谱中对应的实体,抽取该实体相关联的知识表示向量;
31.步骤(6)利用注意力机制计算步骤(5)抽取到的每一个知识表示向量,与语句中当前实体之间的关联程度;
32.步骤(7)根据步骤(4)中前一时刻的双向lstm的隐藏层状态和当前时刻单词输入,得到上下文关联向量,并计算该向量与当前实体之间的关联程度;
33.步骤(8)先将知识表示向量与对应关联度相乘,后将上下文关联向量与对应影响权重值相乘,将两个相乘结果相加后与原先实体表示进行融合,得到新的实体表示;
34.步骤(9)利用胶囊网络将低层次的语句语义表示,映射到高维的意图特征表示;
35.步骤(10)基于步骤(4)至步骤(8)对未知语句进行操作后,得到未知语句表示,结合步骤(9)中的高维意图特征表示,对未知语句进行分类;
36.步骤(11)将预测的意图与语句对应的真实意图进行对比,计算损失函数,迭代更新网络模型中的参数;
37.步骤(12)将需测试的目标意图与对应的语句输入训练好的小样本意图识别模型,正确获得语句表示和高维意图特征表示,结合该高维意图特征表示对未知语句进行分类,输出未知语句对应的意图。
38.步骤(1)具体过程如下:
39.(1

1)采用单领域银行业务数据集banking 77,该数据集采样于银行线上真实的客服问答场景,并且已经通过手动转录的方式将用户的话语转换为文本。该数据集中共包含银行业务的77个意图和13083条语句,涉及了用户在银行中办理的大部分业务,并且正确标记了每一句语句对应的意图;
40.(1

2)根据银行业务划分准则,又对77个意图划分成10个子业务,分别有“银行卡业务,汇率业务,转账业务,存款业务,账户信息业务,手续费业务,取现业务,货币或银行卡兼容性业务,第三方设备业务,付款业务”;
41.步骤(2)具体过程如下:
42.(2

1)设置训练规则,将提供给模型训练的意图称为“源领域意图”,将模型需要分类的意图称为“目标域意图”。在学习分类目标域意图的过程中,将提供给模型训练的样本称为“支持集”,模型需测试的样本称为“查询集”。假设共有c个意图,在支持集中每个意图有k个样本,在查询集中每个意图有l个样本,并且支持集与查询集中的样本均不重合。模型需要在支持集的c
×
k个样本上训练后,可以辨别查询集中的c
×
l个样本,称该类问题为“c

way k

shot”小样本分类问题;
43.(2

2)假设当前的小样本分类目标为辨别“activate_my_card”和“card_swallowed”,这2个意图构成“目标域意图”。每个意图提供k个样本进行训练,l个样本进行测试,把模型在目标域意图的训练和测试过程划入“元学习的测试阶段”。在元学习的训练
阶段,每次从源领域意图集合中随机抽取2个与目标意图(activate_my_card,card_swallowed)不重合的意图构成1个训练任务的分类目标。训练任务的目标为分类“card_arrival”和“card_linking”。在一个训练任务的构建过程中,首先从这2个意图对应的样本中分别抽取k个构成“支持集s”,随后在2个意图的剩余样本中分别随机抽取l个构成“查询集q”。模型经1个训练任务上的支持集s训练后,在查询集q上通过计算分类准确率得到模型的误差,根据该误差更新整体参数;
44.(2

3)设置本发明的训练场景,分别为跨业务和相同业务内的小样本意图识别测试场景。在这2种测试场景内又分为3

way 10

shot和3

way 30

shot两种测试问题;
45.(2

4)跨业务的小样本意图识别场景:以3

way 10

shot问题举例,首先从10个业务中随机抽取3个业务,随后每个业务内随机抽取1个意图组成目标意图。例如随机抽取的业务为转账、存款和取现业务,随机抽取的目标意图集合为(cancel_transfer,verify_top_up,pending_cash_withdrawal)。3个意图各提供10个训练样本,随后对每个意图剩余数据中的30个不重合样本进行测试。按照步骤(2

2)提到的训练方法,在训练阶段的每1个任务中,从3个业务中分别随机抽取1个意图组成训练意图集合,该训练意图集合与目标意图不重合。每个意图提供10个样本组成支持集进行训练,随后从3个训练意图的剩余样本中,各随机抽取30个样本组成查询集,即1个训练任务共需3
×
10 3
×
30=120个样本;
46.(2

5)相同业务内的小样本意图识别场景:以3

way 10

shot问题在“银行卡业务”中的实践为例。在银行卡业务中随机抽取3个意图作为目标意图。例如目标意图集合为(card_arrival,card_not_working,activate_my_card),每个意图提供10个训练样本,模型经训练后对每个意图剩余数据中的30个样本进行测试。按照步骤(2

2)提到的训练方法,从银行卡业务的剩余意图中随机抽取3个意图作为1个训练任务的意图集合,并保证该训练意图集合与目标意图不重合。每个意图提供10个样本组成支持集进行训练,随后从3个训练意图的剩余样本中,各随机抽取30个样本组成查询集,即1个训练任务共需3
×
10 3
×
30=120个样本;
47.步骤(3)所述的小样本意图识别具体过程如下:
48.小样本意图识别模型主要由3个部分组成,分别为知识图谱增强语义表示层、动态路由映射层以及查询集语句分类计算层,每层的维度为256;知识图谱增强语义表示层由知识图谱和双向lstm组成,动态路由映射层由胶囊网络组成;查询集语句分类计算层由多层感知机组成。
49.步骤(4)具体过程如下:
50.(4

1)首先使用预训练的词向量模型将语句转换为对应的词向量矩阵x=[x1,x2,...,x
t
],其中语句的长度为t,x
i
的维度为d
w

[0051]
(4

2)随后将语句输入双向lstm,在lstm网络的神经元内部共有3个门用于控制细胞状态c
t
和隐藏层状态h
t
的更新,分别为输入门、遗忘门和输出门。以从左往右的单向lstm网络在t时刻的更新为例,3个门机制的计算和状态的更新分别如下所示:
[0052][0053][0054]
[0055][0056][0057]
其中,w
i
,w
f
,w
o
,w
c
,u
i
,u
f
,u
o
,u
c
分别为需要学习的权重矩阵,x
t
为t时刻的单词词向量表示,和分别表示t

1时刻和t时刻lstm网络的隐藏层状态表示,c
t
‑1和c
t
分别表示t

1时刻和t时刻lstm网络的细胞状态表示;
[0058]
(4

3)将从左往右和从右往左的lstm网络在当前t时刻的隐藏层状态拼接,得到双向lstm的隐藏层状态表示h
t
,拼接过程如下所示:
[0059][0060]
步骤(5)具体过程如下:
[0061]
(5

1)首先利用实体识别工具corenlp识别出语句x中的实体e
i
,随后利用字符串之间的精确匹配将e
i
映射到知识图谱中对应的实体g
i
。抽取g
i
在知识图谱中关联的所有类别信息,并将每个类别信息对应的知识表示向量v
i
添加进e
i
的知识向量集合v(x
t
)中;
[0062]
步骤(6)具体过程如下:
[0063]
(6

1)采用双线性函数计算知识表示向量v
i
的影响权重值a
ti
,获得抽取到的每个知识表示向量v
i
与当前单词的关联度,如下所示:
[0064][0065]
其中w
v
为需要学习的权重矩阵,v
i
∈v(x
t
),h
t
为由步骤(4

3)中利用双向lstm模型得到的t时刻单词对应的隐藏层状态表示;
[0066]
步骤(7)具体过程如下:
[0067]
(7

1)首先将前一时刻lstm网络的隐藏层状态h
t
‑1和当前实体的词向量表示x
t
输入sigmoid门函数,来计算有多少信息输出。随后将得到的b
t
与当前时刻lstm细胞状态c
t
进行哈达玛乘积操作得到上下文影响向量s
t
,最后利用双线性函数计算上下文影响向量s
t
对当前时刻lstm隐藏层状态h
t
的影响权重值β
t
。如下所示:
[0068]
b
t
=σ(w
b
h
t
‑1 u
b
x
t
)
[0069]
s
t
=b
t

tanh(c
t
)
[0070][0071]
其中w
b
、u
b
和w
s
是需要学习的权重矩阵;
[0072]
步骤(8)具体过程如下:
[0073]
(8

1)首先将步骤(4)中得到的每个知识表示向量v
i
和步骤(7)得到的上下文影响向量s
t
进行融合,得到新的实体表示m
t
,随后结合原先t时刻隐藏层状态表示h
t
得到计算过程如下所示:
[0074][0075]
其中,要求该条件起到控制知识表示向量和上下文向量影响
程度大小比较的作用,支持集中的语句经步骤(4)至步骤(8)操作后,得到新的语句表示
[0076]
步骤(9)具体过程如下:
[0077]
(9

1)随机初始化意图i,与该意图对应支持集的一个样本语句j之间的连接权重。随后使用softmax函数进行归一化,使得类别i与该类中样本语句之间的耦合系数总和为1,计算过程如下所示:
[0078][0079]
其中,w
ij
表示意图i与对应支持集中的一个样本语句j之间的连接权重,k表示意图i对应支持集中的语句数目,w
im
表示意图i与对应支持集中的任意一个样本语句m之间的连接权重;
[0080]
(9

2)通过加权聚合操作得到高维胶囊输入c
i
,计算过程如下所示:
[0081][0082]
其中k表示一个意图在支持集中对应的样本语句数目,b
ij
表示经softmax函数归一化后的连接权重,为语句经步骤(4)至步骤(8)后得到的低维语句表示,c
i
为语句经聚合操作后得到的高维胶囊输入;
[0083]
(9

3)通过胶囊网络的squash激活函数对高维胶囊输入c
i
进行压缩,得到意图表示该压缩方式可使向量的长度压缩在0

1之间并且方向保持不变,计算过程如下所示:
[0084][0085]
(9

4)最后胶囊网络通过自顶向下的方式,动态地调节连接权重w
ij
,即当语句对于当前意图表示影响较大时,对应的权重w
ij
会被调节地更大。反之则会减小对应的连接权重w
ij
。调节过程如下所示:
[0086][0087]
步骤(10)具体过程如下:
[0088]
(10

1)为了计算查询集中1条语句q与各个意图之间的相似度,本发明首先经过步骤(4)至步骤(8)操作语句q,得到查询向量
[0089]
(10

2)将查询语句向量与各个意图拼接随后输入mlp多层感知机获取各个意图的预测分数,计算方式如下:
[0090][0091][0092]
其中,是一个可训练的权重转置矩阵,b是对应的偏置项。本模型采用tanh作
为激活函数。在多层感知机输出端采用softmax函数进行归一化操作;
[0093]
步骤(11)具体过程如下:
[0094]
(11

1)基于均方误差(mse)损失函数来进行训练,将得到的预测意图与真实意图进行比较,若匹配成功则赋值为1,反之则赋值为0。损失函数如下所示:
[0095][0096]
其中s,q分别表示给定具有c个意图的支持集和查询集样本数量大小,y

q
表示模型预测的意图,y
q
表示查询集语句q对应的真正意图;
[0097]
步骤(12)具体过程如下:
[0098]
(12

1)将目标意图对应的支持集语句与查询集语句输入训练好的小样本意图识别网络模型,正确得到高维意图表示,结合该意图表示对该查询集语句做意图分类;
[0099]
如图3所示,小样本意图识别模型主要由3个模块组成,首先将语句中存在的实体映射到知识图谱,提取该实体在知识图谱中相关联的所有类别信息,并通过注意力机制获得知识先验向量。随后使用阀门机制来控制语句中原本存在的上下文语义向量,以及该知识先验向量对当前实体表示的影响。下一步利用胶囊网络将已包含先验知识的语句表示映射到高层次的意图表示。最后通过计算未知语句与各个意图之间的相似度,对未知语句做意图分类处理。
[0100]
所述的胶囊网络结构如图4所示:
[0101]
在图像处理中,cnn仅能提取图片中的局部特征,并不能提取特征之间的相对位置关系,例如在人脸中,“嘴巴”处于“眼睛”下方,cnn会因为池化等操作不能提取相对位置特征,然而这种特征对于预测结果会产生较大的影响。因可使用胶囊网络来提取特征之间的相对位置关系。胶囊网络认为大脑是由一个个的“胶囊”组成的。这些胶囊可以提取图片中不同的信息,例如色调、速度、姿势和方向等。并且为了对图片进行层次化建模,胶囊网络也会被划分为不同的层次,例如低级胶囊和高级胶囊。在对图片中的空间信息进行编码后,可利用动态路由机制将低层次胶囊处理得到的信息“导航”到对应的高层次胶囊。
[0102]
动态路由算法由如下5个步骤组成:
[0103]
(1)输入低层次的胶囊向量u
i
∈r
k
×1,i=1,2,...n,其中n表示低层次的胶囊个数,k表示胶囊内的神经元个数,u
i
为低层次胶囊提取到的特征值;
[0104]
(2)使用转换矩阵w
ij
∈r
p
×
k
将输入向量u
i
∈r
k
×1转换为预测向量转换过程如下所示:
[0105][0106]
其中,p表示输出的高层次胶囊中神经元的数量;
[0107]
(3)随机初始化预测向量与高层次胶囊之间的连接权重c
ij
。将预测向量与对应权重系数相乘求和后,得到高层胶囊j的总输入s
j
,如下所示:
[0108][0109]
其中c
ij
表示低层次胶囊i与高层次胶囊j之间的概率系数,要求∑
j
c
ij
=1;
[0110]
(4)采用squash函数代替传统的激活函数,例如relu等,对高层次胶囊s
j
进行压缩。如下所示:
[0111][0112]
其中,v
j
是第j个胶囊的输出向量,s
j
为当前层所有胶囊的总输出向量。squash压缩函数可以使高层次胶囊的输入向量长度限制在一定范围内。所起的作用为当s
j
数值较小时,会把v
j
的长度压缩至接近于0,反之如果s
j
的长度较长,则会将v
j
的输出长度控制在1以内。并且v
j
的方向s
j
保持一致;
[0113]
(5)通过计算激活向量v
j
与预测向量之间的相似度,判断2个胶囊之间的相关性。将具有强相关性的胶囊对应的连接权重值,通过自顶向下的方式进行更新,如下所示:
[0114][0115]
与cnn中的最大池化层相比,胶囊网络中的高层次胶囊保留的是低层次胶囊提取到的特征加权总和,并且不会因为特征移出池化窗口而丢失。因此,胶囊网络可以最大化的保留提取到的特征并判断它们之间的关系。
[0116]
一种基于知识图谱和胶囊网络的小样本意图识别方法。工艺实施方案的具体流程图如图5所示,从输入数据集到输出对应语句意图,迭代训练该模型。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜