基于BERT-BJNN-EMGCRF模型的在线口语理解系统
未命名
07-15
阅读:133
评论:0
基于bert-bjnn-emgcrf模型的在线口语理解系统
技术领域
1.本发明涉及对话系统口语理解领域,特别是一种基于bert-bjnn-emgcrf模型的在线口语理解系统,具体来讲是一种基于bert-bjnn-emgcrf的语义槽填充与意图检测联合模型及以此模型作为核心的在线语义槽提取与意图检测系统,其可以应用于在线智能订餐以及个人语音助手等领域。
背景技术:
2.意图检测和语义槽填充是对话系统口语理解(spoken language understanding,slu)的重要组成部分,因此意图检测和语义槽填充的性能很大程度上影响了整个对话系统的性能。随着人工智能(artificial intelligence,ai)、深度学习(deep learning,dl)、大数据(big data)等技术的高速发展,为意图检测和语义槽填充提供了技术支持。为了提升语义槽填充与意图检测的准确度,使用最广泛的是意图检测和语义槽填充联合方法,其目的在于让意图和语义槽的误差同时传播来训练网络。现有的联合模型仍然面临许多挑战,例如模型中两个任务输出的对应隐藏层语义槽与意图的信息融合不充分使得两个任务的精度下降。再者语义槽内及意图和语义槽之间标签对的不匹配也会使得精度下降。
3.此外,随着人机便捷交互的需求增加,人们希望能够通过以简单口语的方式与机器对话来执行他们的要求。传统的系统需要用户自己选择一些限制条件或在线咨询工作人员来实现他们检索或订票等目的,例如查询、订购意图及时间、出发地点和目的地等语义槽值,此种方式并不能智能的通过用户简单的口语对话理解其粗略的意图及语义槽值具体细节来减少用户的操作及缓解工作人员的压力。
技术实现要素:
4.针对现有技术的缺陷及应用的不足,本发明提供了一种基于bert-bjnn-emgcrf模型的在线口语理解系统。
5.一种基于bert-bjnn-emgcrf模型的在线口语理解系统包括以下步骤:s1、构建一个由共享网络、双向联合网络以及端到端屏蔽图的条件随机场组成的模型框架,其中共享网络由“bert”构成,双向联合网络由“bjnn”组成,端到端屏蔽图的条件随机场由“emgcrf”构成;s2、对s1所述的模型进行训练,通过s1所述模型输出获得的两种预测向量和真实值的误差计算损失并更新整个网络模型的参数,得到语义槽填充与意图检测模型;s3、搭建一个由用户端和服务器端组成的在线系统;s4、将s2所述的语义槽填充与意图检测模型导入基于s3所述的在线系统中形成一个在线口语理解系统,系统的服务器根据用户从网页端提交的待检测的对话文本句子进行相应的处理并将结果异步返回到网页端,实现在线方式对待检测对话文本句子中语义槽的提取和意图的检测。
6.可选的,所述共享网络是将给定的对话文本句子数据在句首加入意图分类词后输入到bert模型中获得单词的上下文语义嵌入特征向量。在文本句子输入到词嵌入模型前,将
‘
[cls]’词加入到句首作为意图分类时的输入词,从而将语义槽填充和意图检测两个任
务统一为一个序列标签任务,接着对句子分词获得句子分词后的单词索引x
′
,然后进行嵌入获得词嵌入特征向量序列e
′
,最后通过选择操作输出最终词单词语义特征序列e;
[0007]
x
′
=token(x)
[0008]e′
=bert(x
′
)
[0009]
e=select(e
′
)
[0010]
其中x={x1,x2,
…
,xn}代表加入
‘
[cls]’词的输入句子单词序列,n代表输入句子单词的最大个数,对于有些单词个数小于n的句子会在句子末尾加入
‘
[pad]’进行填充。这里e1是
‘
[cls]’标记词的编码,它被训练来对整个序列进行分类。select将对应输入词为
‘
[pad]’的语义特征向量替换成零向量,从而使填充单词不作为信息传递的词。此外,由于bert模型中词典单词原子细粒度的特性,使用它对句子单词进行语义特征提取的时候,复杂的输入单词xi在分词过程中会被拆分成多个基础单词进行嵌入来获得该单词的丰富的语义表达,因此select还将在token阶段对单词细粒度化后的词向量就行求和,从而获得单词的最终语义特征向量ei。
[0011]
进一步的,所述双向联合网络包含两个部分:用于语义槽填充的intent2slot和用于意图分类的slot2intent;
[0012]
设di和ds分别为不同意图标签和语义槽标签的个数。为了实现语义槽与意图概率分布的双向联合,首先让e1通过一个由w
id
构建的全连接前馈神经网络层,然后除
‘
[cls]’词以外的最终语义特征向量h={e2,
…
,en}通过由w
sd
构建的全连接前馈神经网络层,最后应用一个softmax函数归一化语义槽和意图概率分布;
[0013]
p
id
=softmax(e1×wid
+b
id
)
[0014]
p
sd
=softmax(h
×wsd
+b
sd
)
[0015]
其中参数矩阵偏置矩阵偏置矩阵是意图概率分布,是语义槽概率分布;
[0016]
intent2slot是通过提取e1的语义信息来绘制意图概率分布,将p
id
复制n-1次并与语义槽概率分布拼接,使得每个语义槽标签的预测都能获得意图概率分布融入的信息。然后通过一个全连接前馈神经网络输出语义槽预测;
[0017]
p
ir
=repeat(p
id
),(n-1)times
[0018]
ps=[p
sd
;p
ir
]
×ws
+bs[0019]
其中参数矩阵参数矩阵为预测的语义槽标签,[;]代表矩阵的拼接;
[0020]
slot2intent是通过语义特征向量h来描绘语义槽概率分布。首先通过p
sd
为p
sd
中每个单词的语义槽概率分布计算一个权重,该权重决定了每个语义槽概率在补充信息中所占的比重,当某个语义槽概率分布与意图联结比较淡薄时会获得一个较小的权重。然后对乘以权重的每个语义槽概率分布进行求和获得来自语义槽的补充信息并与意图概率分布拼接,从而利用语义槽概率分布p
sd
来检测意图。最终通过一个全连接前馈神经网络计算出预测的意图;
[0021]
a=sigmoid(tanh(p
sd
×
wa)
×va
)
[0022]
pi=[p
id
;(a
t
×
p
sd
)]
×
wi+bi[0023]
其中计算权重a的参数矩阵预测意图
[0024]
其中,所述端到端屏蔽图的条件随机场的核心是一个由语义槽和意图节点组成的连接矩阵w
crf
,其作用是修正双向联合网络预测的意图和语义槽与真实的标签之间因兼容性引起的偏差;
[0025][0026]
它表示对节点i采用掩码机制即负无穷大-inf屏蔽字;i∈[1,n]其中1~n-1为语义槽节点,n为意图节点。由于意图节点只有意图类的标签,当预测修正后的意图时需要使用屏蔽机制将语义槽修正参数屏蔽,从而只保留di长度的意图修正参数对意图预测的修正。语义槽节点同理设置屏蔽;
[0027][0028]
其中unai为第i个节点的双向联合网络原始预测概率,根据掩码机制,unai需要用零向量来填充原始预测概率;
[0029][0030][0031][0032][0033][0034]
表示第i个节点的第t次迭代预测标签,其中i∈[1,n],t∈[0,t],是意图节点的第t次迭代预测标签,代表第i个节点最终的预测标签即意图或语义槽的预测标签。当i∈[1,n-1]时,表示来自第i个语义槽节点和意图节点预测标签分布的信息,当i=n时则表示所有节点的标签分布信息。是反映标签对兼容性隐式连接的变换矩阵,通过变换矩阵w
crf
计算出修正向量然后让修正向量和原始预测概率unai相加获得修正预测概率然后利用掩膜机制及归一化操作获得第t+1次迭代的预测标签。将到的计算过程迭代t次,从而获得最终的意图和语义槽预测标签
[0035]
可选的,所述模型训练的整个网络损失由语义槽和意图损失组成,将每个意图或语义槽视为一个不同的类别,标签平滑识别损失用于监督训练共享网络、双向联合网络及端到端屏蔽图的条件随机场中的各个参数。它们的损失定义为:
[0036][0037][0038][0039][0040]
l=δli+(1-δ)ls[0041]
其中qi表示意图i的真实标签,pi是预测意图标签;代表第j个词对应输出语义槽s的预测标签,是真实语义槽标签;li和ls分别代表意图损失和语义槽损失,δ∈[0,1]调节本方法对这两个损失的关注程度;
[0042]
将当前获得的损失反馈到网络模型中,通过adam优化器调整模型中的参数进行不断迭代优化,以降低损失并提高对目标预测的准确率。将训练得到的模型在所述测试数据集上进行测试,得到当前模型的检测精度,如果达不到预设精度,重新设置网络中的超参数或者优化器等,直至得到符合预设精度要求的模型,作为最终的语义槽填充与意图检测模型保存下来。
[0043]
所述步骤s3具体包括:s301、用户端界面由系统首页、语义槽提取界面和意图检测界面组成。系统首页包括head和body两部分。head内首先通过meta标签设置编码格式和兼容的浏览器等,接着使用title标签设置网页标题时在标签内嵌入flask的jinja语法模板block title块并在其中将标题设置为
‘
home’,该块的作用是对于不同网页切换时,当两个网页内有不同的内容时就可以在里面替换,而语法块外的内容通过继承保持不变。然后使用link和script标签从外部引入bootstrap和jquery库。最后预留一个block head块为其它网页增加设置提供接口。body部分通过html的控件将整个网页划分成头部、中间侧边导航栏、中间主体内容以及底部四个区域,分别对应header、aside、main以及footer控件。header内有a控件实现超链接到当前页,aside内有
‘
系统首页’超链接到本页、
‘
语义槽提取’超链接到语义槽提取界面及
‘
意图检测’超链接到意图检测界面,main内设置一个block body块并在其中嵌入h1及p控件显示内容标题及文本。在完成控件的布置后,通过引入的bootstrap库对上述的控件的尺寸、位置、颜色和大小等进行静态渲染,使用javascript技术对控件进行动态渲染;
[0044]
语义槽提取界面通过extend语法继承了系统首页的布局,仅对系统首页内block块的内容进行修改。本界面将block title块的内容修改成
‘
slot’实现网页标题的替换,在block head块内增加script控件引入slot.js文件实现本网页和后台通信。block body块中内容替换成与语义槽提取对应的标题和文本,此外还有form表单控件以及显示提取结果的div控件。将网络响应参数method设置成get或post的form表单中包含input和button控件实现对话文本的输入和提交。按照相同的方法可以得到意图检测界面;
[0045]
s302、服务器端使用flask框架创建一个app本地服务器对象,使用装饰视图函数的route创建路由,将url设置成
‘
/’作为根路由注册并绑定系统首页视图,通过返回参数设置成系统首页html文件的函数render_template加载系统首页。按照相同的方法配置语义
槽提取界面和意图检测界面。此外再设置一个事件处理路由
‘
/spoke_process’来处理语义槽提取和意图检测界面内的交互请求,并将methods参数设置成get或post来匹配前端的请求方式。最后使用run函数开启本地服务器,其中端口号port设置成2023,主机号host设置成0.0.0.0使得与本地主机相同网段即同一局域网内的设备可以访问本地服务器;
[0046]
s303、中间通信机制使用异步处理ajax技术,该方法在.js文件中通过#加控件的id号找到对应的控件并通过ajax函数实现前后端的通信。首先获取提交按钮控件并为其设置点击监听事件,当监听到点击动作后点击事件函数执行,在函数中通过id号获取input控件并通过val函数获取input控件中输入的内容。接着在ajax函数中设置请求类型参数type为
‘
get’,数据以字典的形式传过去,数据类型为文本格式。此外,在slot.js文件中ajax的url参数设置为“/spoke_process?intent_slot=slot”,其目的是为了找到事件处理路由并且实现语义槽提取功能,而intent.js中为“/spoke_process?intent_slot=intent”实现意图提取功能。最后,请求成功后会收到服务器传输过来的结果,通过id找到显示控件并且使用html函数将结果显示在控件内;
[0047]
在服务器的事件处理路由函数中,当接收前端的get请求后,通过request中args方法的get函数获取ajax的url参数中intent_slot变量的值然后判断为意图检测或者语义槽提取,并且通过request中的values方法获得数据字典中input输入框中的文本。最后在函数内预留模型对获得文本处理的接口,并通过return将处理的结果返回给相应的界面。
[0048]
本发明的有益效果是:本发明针对口语理解中意图检测和语义槽填充联合方法的隐藏层语义槽和意图信息融合不充分与语义槽内及意图和语义槽之间标签对的不匹配导致精度下降,以及模型的应用不足问题,提出了一种基于bert-bjnn-emgcrf模型的在线口语理解系统。它的主要优势在于:1)bjnn通过意图概率分布和语义槽概率分布分别为语义槽和意图分类提供关联语义信息和补充语义信息,使隐藏层语义槽和意图信息充分融合。2)emgcrf中由语义槽和意图节点组成的二维矩阵连接图通过学习语义槽内及意图和语义槽之间标签对的兼容性隐式连接,从而修正bjnn预测的意图和语义槽与真实的标签之间的偏差。3)将意图检测和语义槽填充联合模型嵌入到一个在线系统中,展示了模型的实用性,为实现领域内复杂的在线口语理解系统提供一个参考。
附图说明
[0049]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
[0050]
图1是本发明实施提供的基于bert-bjnn-emgcrf模型的在线口语理解系统的总体流程示意图;
[0051]
图2是本发明实施提供的bert-bjnn-emgcrf模型结构示意图;
[0052]
图3是本发明实施提供的共享网络模块功能结构示意图;
[0053]
图4是本发明实施提供的emgcrf模块结构示意图;
[0054]
图5是本发明实施提供的在线口语理解系统首页示意图;
[0055]
图6是本发明实施提供的在线口语理解系统语义槽提取示意图;
[0056]
图7是本发明实施提供的在线口语理解系统意图理解示意图;
具体实施方式
[0057]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明,使本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按比例绘制附图,重点在于示出本发明的主旨。
[0058]
总体而言,本发明提出了一种由bert、双向联合网络(bi-directional joint neural networks,bjnn)和端到端屏蔽图的条件随机场(end-to-end masked graph-based crf,emgcrf)组成的模型及基于该模型的在线口语理解系统。该系统的主要特征在于:1)搭建并训练由bert、bjnn和emgcrf三部分组成的模型,训练好的模型作为在线系统语义槽提取和意图检测的核心处理模块;2)在对话文本句子序列开头加入
‘
[cls]’标记词构成输入序列(x1,x2,
…
,xn)并进行词嵌入,bert语义模型在分词过程中将某些粗粒度或合成单词分成细粒度基础单词并进行单词的词嵌入后,再将该单词的细粒度词嵌入向量求和获得该单词最终的词嵌入向量;3)在bjnn双向联合时,意图概率分布和语义槽概率分布分别为语义槽和意图分类提供关联语义信息和补充语义信息;4)在bjnn之后引入emgcrf模块,其核心是一个由语义槽和意图节点组成的连接图,用一个二维矩阵表示,该矩阵通过学习语义槽内及意图和语义槽之间标签对的兼容性隐式连接,从而修正双向联合网络预测的意图和语义槽与真实的标签之间的偏差;5)在线系统由flask、bootstrap,jquery库及css、javascript等技术并通过pycharm编辑器搭建而成。
[0059]
基于bert-bjnn-emgcrf模型的在线口语理解系统的流程架构图如图1所示,包括以下步骤:
[0060]
s1、构建及训练模型一个由共享网络、双向联合网络及端到端屏蔽图的条件随机场组成的模型框架,如图2所示,其中共享网络由“bert”构成,双向联合网络由“bjnn”组成,端到端屏蔽图的条件随机场由“emgcrf”构成。
[0061]
s2、训练模型,通过模型输出获得的两种预测向量和真实值的误差计算损失并更新整个网络模型的参数,得到语义槽填充与意图检测模型。
[0062]
s3、搭建一个由用户端和服务器端组成的在线系统。
[0063]
s4、导入模型,将训练好的语义槽填充与意图检测模型导入已经搭建好的在线系统中形成一个在线口语理解系统,系统的服务器根据用户从网页端提交的待检测的对话文本句子进行相应的处理并将结果异步返回到网页端,实现在线方式对待检测对话文本句子中语义槽的提取和意图的检测。
[0064]
上述模型包括三个部分:共享网络、双向联合网络以及端到端屏蔽图的条件随机场;
[0065]
1)共享网络模型选择包含不区分大小写词典、一个嵌入层、12个编码器层、最终隐藏层维度为de=768和12个注意头的预训练bert模型“bert_uncased_l-12_h-768_a-12”。将给定的对话文本句子数据在句首加入意图分类词后输入到共享网络模型中获得单词的上下文语义嵌入特征向量。在文本句子输入到共享网络模型前,将
‘
[cls]’词加入到句首作为意图分类时的输入词,从而将语义槽填充和意图检测两个任务统一为一个序列标签任务,接着对句子分词获得句子分词后的单词索引x
′
,然后进行嵌入获得词嵌入特征向量序列e
′
,最后通过选择操作输出最终词单词语义特征序列e;
[0066]
x
′
=token(x)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0067]e′
=bert(x
′
)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0068]
e=select(e
′
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0069]
其中x={x1,x2,
…
,xn}代表加入
‘
[cls]’词的输入句子单词序列,n代表输入句子单词的最大个数,对于有些单词个数小于n的句子会在句子末尾加入
‘
[pad]’进行填充。这里e1是
‘
[cls]’标记词的编码,它被训练来对整个序列进行分类。select将对应输入词为
‘
[pad]’的语义特征向量替换成零向量,从而使填充单词不作为信息传递的词。此外,由于bert模型中词典单词原子细粒度的特性,使用它对句子单词进行语义特征提取的时候,复杂的输入单词xi在分词过程中会被拆分成多个基础单词进行嵌入来获得该单词的丰富的语义表达,因此select还将在token阶段对单词细粒度化后的词向量就行求和,从而获得单词的最终语义特征向量ei。该过程如图3所示。
[0070]
2)双向联合网络在共享网络之上,它包含两个部分:用于语义槽填充的intent2slot和用于意图分类的slot2intent。intent2slot在标记每个语义槽时将意图概率分布融入语义槽概率分布,为语义槽填充提供意图和语义槽关联的语义信息。slot2intent将语义槽标签概率分布作为意图分类的补充信息;
[0071]
设di和ds分别为不同意图标签和语义槽标签的个数。为了实现语义槽与意图概率分布的双向联合,首先让e1通过一个由wid构建的全连接前馈神经网络层,然后除
‘
[cls]’词以外的最终语义特征向量h={e2,
…
,en}通过由w
sd
构建的全连接前馈神经网络层,最后应用一个softmax函数归一化语义槽和意图概率分布;
[0072]
p
id
=softmax(e1×wid
+b
id
)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0073]
p
sd
=softmax(h
×wsd
+b
sd
)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0074]
其中参数矩阵偏置矩阵偏置矩阵是意图概率分布,是语义槽概率分布;
[0075]
intent2slot是通过提取e1的语义信息来绘制意图概率分布,并利用它来帮助检测每个单词的语义槽标签。为了利用意图概率分布p
id
来填充语义槽,将p
id
复制n-1次并与语义槽概率分布拼接,使得每个语义槽标签的预测都能获得意图概率分布融入的信息。然后通过一个全连接前馈神经网络输出语义槽预测;
[0076]
p
ir
=repeat(p
id
),(n-1)times
ꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0077]
ps=[p
sd
;p
ir
]
×ws
+bsꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0078]
其中参数矩阵参数矩阵为预测的语义槽标签,[;]代表矩阵的拼接;
[0079]
slot2intent是通过语义特征向量h来描绘语义槽概率分布,并在意图检测时利用它来提供语义槽的补充信息。首先通过p
sd
为p
sd
中每个单词的语义槽概率分布计算一个权重,该权重决定了每个语义槽概率在补充信息中所占的比重,当某个语义槽概率分布与意图联结比较淡薄时会获得一个较小的权重。然后对乘以权重的每个语义槽概率分布进行求和获得来自语义槽的补充信息并与意图概率分布拼接,从而利用语义槽概率分布p
sd
来检测意图。最终通过一个全连接前馈神经网络计算出预测的意图;
[0080]
a=sigmoid(tanh(p
sd
×
wa)
×va
)
ꢀꢀꢀꢀꢀꢀ
(8)
[0081]
pi=[p
id
;(a
t
×
p
sd
)]
×
wi+biꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0082]
其中计算权重a的参数矩阵预测意图
[0083]
3)端到端屏蔽图的条件随机场在双向联合网络之后,它的核心是一个由语义槽和意图节点组成的连接图,该图表示成连接矩阵w
crf
,如图4所示。该矩阵通过学习语义槽内及意图和语义槽之间标签对的兼容性隐式连接,从而修正双向联合网络预测的意图和语义槽与真实的标签之间因兼容性引起的偏差;
[0084][0085]
它表示对节点i采用掩码机制即负无穷大-inf屏蔽字;i∈[1,n]其中1~n-1为语义槽节点,n为意图节点。由于意图节点只有意图类的标签,当预测修正后的意图时需要使用屏蔽机制将语义槽修正参数屏蔽,从而只保留di长度的意图修正参数对意图预测的修正。语义槽节点同理设置屏蔽;
[0086][0087]
其中unai为第i个节点的双向联合网络原始预测概率,根据掩码机制,unai需要用零向量来填充原始预测概率;
[0088][0089][0090][0091][0092][0093]
表示第i个节点的第t次迭代预测标签,其中i∈[1,n],t∈[0,t],是意图节点的第t次迭代预测标签,代表第i个节点最终的预测标签即意图或语义槽的预测标签。当i∈[1,n-1]时,表示来自第i个语义槽节点和意图节点预测标签分布的信息,当i=n时则表示所有节点的标签分布信息。是反映标签对兼容性隐式连接的变换矩阵,通过变换矩阵w
crf
计算出修正向量然后让修正向量和原始预测概率unai相加获得修正预测概率然后利用掩膜机制及归一化操作获得第t+1次迭代的预测标签。将到的计算过程迭代t次,从而获得最终的意图和语义槽预测标签
[0094]
模型训练步骤如下:
[0095]
基于特定领域中对话系统文本训练和测试数据集对上述模型在pytorch框架上进行训练和测试。整个网络的损失由语义槽和意图损失组成。根据之前的工作,将每个意图或语义槽视为一个不同的类别。标签平滑识别损失用于监督训练共享网络、双向联合网络及端到端屏蔽图的条件随机场中的各个参数。它们的损失定义为:
[0096][0097][0098][0099][0100]
l=δli+(1-δ)lsꢀꢀꢀꢀꢀꢀꢀꢀ
(21)
[0101]
其中qi表示意图i的真实标签,pi是预测意图标签;代表第j个词对应输出语义槽s的预测标签,是真实语义槽标签;li和ls分别代表意图损失和语义槽损失,δ∈[0,1]调节本方法对这两个损失的关注程度。
[0102]
最终将当前获得的损失反馈到网络模型中,通过adam优化器调整模型中的参数进行不断迭代优化,以降低损失并提高对目标预测的准确率。将训练得到的模型在所述测试数据集上进行测试,得到当前模型的检测精度,如果达不到预设精度,重新设置网络中的超参数或者优化器等,直至得到符合预设精度要求的模型,作为最终的语义槽填充与意图检测模型保存下来。
[0103]
上述在线系统包括三个部分:用户端、服务器端以及中间通信机制;
[0104]
1)用户端界面包括三个部分:系统首页、语义槽提取界面和意图检测界面;
[0105]
如图5所示,系统首页包括head和body两部分。head内首先通过meta标签设置编码格式和兼容的浏览器等,接着使用title标签设置网页标题时在标签内嵌入flask的jinja语法模板block title块并在其中将标题设置为
‘
home’,该块的作用是对于不同网页切换时,当两个网页内有不同的内容时就可以在里面替换,而语法块外的内容通过继承保持不变。然后使用link和script标签从外部引入bootstrap和jquery库。最后预留一个block head块为其它网页增加设置提供接口。body部分通过html的控件将整个网页划分成头部、中间侧边导航栏、中间主体内容以及底部四个区域,分别对应header、aside、main以及footer控件。header内有a控件实现超链接到当前页,aside内有
‘
系统首页’超链接到本页、
‘
语义槽提取’超链接到语义槽提取界面及
‘
意图检测’超链接到意图检测界面,main内设置一个block body块并在其中嵌入h1及p控件显示内容标题及文本。在完成控件的布置后,通过引入的bootstrap库对上述的控件的尺寸、位置、颜色和大小等进行静态渲染,使用javascript技术对控件进行动态渲染;
[0106]
如图6所示,语义槽提取界面通过extend语法继承了系统首页的布局,仅对系统首页内block块的内容进行修改。本界面将block title块的内容修改成
‘
slot’实现网页标题的替换,在block head块内增加script控件引入slot.js文件实现本网页和后台通信。block body块中内容替换成与语义槽提取对应的标题和文本,此外还有form表单控件以及
显示提取结果的div控件。将网络响应参数method设置成get或post的form表单中包含input和button控件实现对话文本的输入和提交。按照相同的方法可以得到意图检测界面,如图7所示。
[0107]
2)服务器端使用轻量级的web应用可定制框架flask创建一个app本地服务器对象,使用装饰视图函数的route创建路由,将url设置成
‘
/’作为根路由注册并绑定系统首页视图,通过返回参数设置成系统首页html文件的函数render_template加载系统首页。按照相同的方法配置语义槽提取界面和意图检测界面。此外再设置一个事件处理路由
‘
/spoke_process’来处理语义槽提取和意图检测界面内的交互请求,并将methods参数设置成get或post来匹配前端的请求方式。最后使用run函数开启本地服务器,其中端口号port设置成2023,主机号host设置成0.0.0.0使得与本地主机相同网段即同一局域网内的设备可以访问本地服务器。
[0108]
3)中间通信机制使用异步处理ajax技术,该方法在.js文件中通过#加控件的id号找到对应的控件并通过ajax函数实现前后端的通信。首先获取提交按钮控件并为其设置点击监听事件,当监听到点击动作后点击事件函数执行,在函数中通过id号获取input控件并通过val函数获取input控件中输入的内容。接着在ajax函数中设置请求类型参数type为
‘
get’,数据以字典的形式传过去,数据类型为文本格式。此外,在slot.js文件中ajax的url参数设置为“/spoke_process?intent_slot=slot”,其目的是为了找到事件处理路由并且实现语义槽提取功能,而intent.js中为“/spoke_process?intent_slot=intent”实现意图提取功能。最后,请求成功后会收到服务器传输过来的结果,通过id找到显示控件并且使用html函数将结果显示在控件内;
[0109]
在服务器的事件处理路由函数中,当接收前端的get请求后,通过request中args方法的get函数获取ajax的url参数中intent_slot变量的值然后判断为意图检测或者语义槽提取,并且通过request中的values方法获得数据字典中input输入框中的文本。最后在函数内预留模型对获得文本处理的接口,并通过return将处理的结果返回给相应的界面。
[0110]
将训练好的网络模型导入到在线系统形成在线口语理解系统,实现对话文本的在线意图检测和语义槽提取。首先在后台文件中从搭建模型的文件中导入模型并创建模型对象,接着将保存的模型参数加载到模型对象内完成导入训练好的模型,然后在事件处理路由函数预留的接口内用预处理函数将获的文本转换成模型需要的单词索引列表,将列表输入模型完成意图的检测和语义槽的提取,最后将结果处理成需要的文本形式并返回给界面。
[0111]
虽然技术已经关于一个或者多个实施方式进行说明和描述,但是在不脱离所附权利要求书的精神和范围的情况下可以对所说明的示例做出变更和/或修改。特别是关于由上述部件或结构(组件、器件、电路、系统等)所执行的各种功能,用于描述这样的部件的术语(包括对“装置”的参考)旨在对应于执行所描述的部件的指定功能的任何部件或者结构(例如,功能上等价),即便在结构上不等价于执行本文所说明的示例实施方式中的功能的所公开的结构,除非另外指明。另外,虽然特定特征可能已经关于若干实施方式中的一个实施方式被公开,但是如可能对于任何给定或者特定应用所期望且有利的,这样的特征可以与其他实施方式中的一个或者多个其他特征组合。此外,就详细描述或者权利要求书中使用术语“包含了”、“包含”、“具有了”、“具有”、“含有”或其变形而言,这样的术语以类似于术
语“包括”的方式旨在是包括性的。
[0112]
在以上的描述中阐述了很多具体细节以便于充分理解本发明。但是以上描述仅是本发明的较佳实施例而已,本发明能够以很多不同于在此描述的其它方式来实施,因此本发明不受上面公开的具体实施的限制。同时任何熟悉本领域技术人员在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
技术特征:
1.一种基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,包括如下步骤:s1、构建一个由共享网络、双向联合网络以及端到端屏蔽图的条件随机场组成的模型框架,其中共享网络由“bert”构成、双向联合网络由“bjnn”构成、端到端屏蔽图的条件随机场由“emgcrf”构成;s2、对s1所述的模型进行训练,通过s1所述模型输出获得的两种预测向量和真实值的误差计算损失并更新整个网络模型的参数,得到语义槽填充与意图检测模型;s3、搭建一个由用户端和服务器端组成的在线系统;s4、将s2所述的语义槽填充与意图检测模型导入基于s3所述的在线系统中形成一个在线口语理解系统,系统的服务器根据用户从网页端提交的待检测的对话文本句子进行相应的处理并将结果异步返回到网页端,实现在线方式对待检测对话文本句子中语义槽的提取和意图的检测。2.根据权利要求1所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述共享网络是将给定的对话文本句子数据在句首加入意图分类词后输入到bert模型中获得单词的上下文语义嵌入特征向量,在文本句子输入到词嵌入模型前将
‘
[cls]’词加入到句首作为意图分类时的输入词,从而将语义槽填充和意图检测两个任务统一为一个序列标签任务,接着对句子分词获得句子分词后的单词索引x
′
,然后进行嵌入获得词嵌入特征向量序列e
′
,最后通过选择操作输出最终词单词语义特征序列e;x
′
=token(x)e
′
=bert(x
′
)e=select(e
′
)其中x={x1,x2,
…
,x
n
}代表加入
‘
[cls]’词的输入句子单词序列,n代表输入句子单词的最大个数,对于有些单词个数小于n的句子会在句子末尾加入
‘
[pad]’进行填充,这里e1是
‘
[cls]’标记词的编码,它被训练来对整个序列进行分类,select将对应输入词为
‘
[pad]’的语义特征向量替换成零向量,从而使填充单词不作为信息传递的词,此外select还将在token阶段对单词细粒度化后的词向量就行求和,从而获得单词的最终语义特征向量e
i
。3.根据权利要求2所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述双向联合网络包含两个部分:用于语义槽填充的intent2slot和用于意图分类的slot2intent;设d
i
和d
s
分别为不同意图标签和语义槽标签的个数,为了实现语义槽与意图概率分布的双向联合,首先让e1通过一个由w
id
构建的全连接前馈神经网络层,然后除
‘
[cls]’词以外的最终语义特征向量h={e2,
…
,e
n
}通过由w
sd
构建的全连接前馈神经网络层,最后应用一个softmax函数归一化语义槽和意图概率分布;p
id
=softmax(e1×
w
id
+b
id
)p
sd
=softmax(h
×
w
sd
+b
sd
)其中参数矩阵偏置矩阵偏置矩阵是意图概率分布,是语义槽概率分布。4.根据权利要求3所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述intent2slot是通过提取e1的语义信息来绘制意图概率分布,将p
id
复制n-1次并与
语义槽概率分布拼接,然后通过一个全连接前馈神经网络输出语义槽预测;p
ir
=repeat(p
id
),(n-1)timesp
s
=[p
sd
;p
ir
]
×
w
s
+b
s
其中参数矩阵参数矩阵为预测的语义槽标签,[;]代表矩阵的拼接。5.根据权利要求3所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述slot2intent首先通过p
sd
为p
sd
中每个单词的语义槽概率分布计算一个权重,然后对乘以权重的每个语义槽概率分布进行求和获得来自语义槽的补充信息并与意图概率分布拼接,从而利用语义槽概率分布p
sd
来检测意图,最终通过一个全连接前馈神经网络计算出预测的意图;a=sigmoid(tanh(p
sd
×
w
a
)
×va
)p
i
=[p
id
;(a
t
×
p
sd
)]
×
w
i
+b
i
其中计算权重a的参数矩阵预测意图6.根据权利要求5所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述端到端屏蔽图的条件随机场的核心是一个由语义槽和意图节点组成的连接矩阵w
crf
;;它表示对节点i采用掩码机制即负无穷大-inf屏蔽字,i∈[1,n]其中1~n-1为语义槽节点,n为意图节点,语义槽节点同理设置屏蔽;其中una
i
为第i个节点的双向联合网络原始预测概率,根据掩码机制,una
i
需要用零向量来填充原始预测概率;量来填充原始预测概率;量来填充原始预测概率;量来填充原始预测概率;量来填充原始预测概率;量来填充原始预测概率;表示第i个节点的第t次迭代预测标签,其中i∈[1,n],t∈[0,t],是意图节点的第t次迭代预测标签,代表第i个节点最终的预测标签即意图或语义槽的预测标签,当i∈[1,n-1]时,表示来自第i个语义槽节点和意图节点预测标签分布的信息,当i=n时则表示所有节点的标签分布信息,是反映标签对兼
容性隐式连接的变换矩阵,通过变换矩阵w
crf
计算出修正向量然后让修正向量和原始预测概率una
i
相加获得修正预测概率然后利用掩膜机制及归一化操作获得第t+1次迭代的预测标签,将到的计算过程迭代t次,从而获得最终的意图和语义槽预测标签7.根据权利要求6所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述模型训练的整个网络损失由语义槽和意图损失组成,将每个意图或语义槽视为一个不同的类别,标签平滑识别损失用于监督训练共享网络、双向联合网络及端到端屏蔽图的条件随机场中的各个参数,它们的损失定义为:的条件随机场中的各个参数,它们的损失定义为:的条件随机场中的各个参数,它们的损失定义为:的条件随机场中的各个参数,它们的损失定义为:l=δl
i
+(1-δ)l
s
其中q
i
表示意图i的真实标签,p
i
是预测意图标签;代表第j个词对应输出语义槽s的预测标签,是真实语义槽标签,l
i
和l
s
分别代表意图损失和语义槽损失,δ∈[0,1]调节本方法对这两个损失的关注程度;将当前获得的损失反馈到网络模型中,通过adam优化器调整模型中的参数进行不断迭代优化,以降低损失并提高对目标预测的准确率。8.根据权利要求7所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述步骤s3具体包括:s301、用户端界面由系统首页、语义槽提取界面和意图检测界面组成,系统首页包括head和body两部分;head内首先通过meta标签设置编码格式和兼容的浏览器等,接着使用title标签设置网页标题时在标签内嵌入flask的jinja语法模板blocktitle块并在其中将标题设置为
‘
home’,然后使用link和script标签从外部引入bootstrap和jquery库,最后预留一个block head块为其它网页增加设置提供接口;body部分通过html的控件将整个网页划分成头部、中间侧边导航栏、中间主体内容以及底部四个区域,分别对应header、aside、main以及footer控件,header内有a控件实现超链接到当前页,aside内有
‘
系统首页’超链接到本页、
‘
语义槽提取’超链接到语义槽提取界面及
‘
意图检测’超链接到意图检测界面,main内设置一个block body块并在其中嵌入h1及p控件显示内容标题及文本;在完成控件的布置后,通过引入的bootstrap库对上述的控件的尺寸、位置、颜色和大小等进行静态渲染,使用javascript技术对控件进行动态渲染;语义槽提取界面通过extend语法继承了系统首页的布局,仅对系统首页内block块的内容进行修改;本界面将block title块的内容修改成
‘
slot’实现网页标题的替换,在block head块内增加script控件引入slot.js文件实现本网页和后台通信;block body块中内容替换成与语义槽提取对应的标题和文本,此外还有form表单控件以及显示提取结果
的div控件,将网络响应参数method设置成get或post的form表单中包含input和button控件实现对话文本的输入和提交,按照相同的方法可以得到意图检测界面;s302、服务器端使用flask框架创建一个app本地服务器对象,使用装饰视图函数的route创建路由,将url设置成
‘
/’作为根路由注册并绑定系统首页视图,通过返回参数设置成系统首页html文件的函数render_template加载系统首页,按照相同的方法配置语义槽提取界面和意图检测界面;此外再设置一个事件处理路由
‘
/spoke_process’来处理语义槽提取和意图检测界面内的交互请求,并将methods参数设置成get或post来匹配前端的请求方式,最后使用run函数开启本地服务器,其中端口号port设置成2023,主机号host设置成0.0.0.0使得与本地主机相同网段即同一局域网内的设备可以访问本地服务器;s303、中间通信机制使用异步处理ajax技术,该方法在.js文件中通过#加控件的id号找到对应的控件并通过ajax函数实现前后端的通信;首先获取提交按钮控件并为其设置点击监听事件,当监听到点击动作后点击事件函数执行,在函数中通过id号获取input控件并通过val函数获取input控件中输入的内容;接着在ajax函数中设置请求类型参数type为
‘
get’,数据以字典的形式传过去,数据类型为文本格式,此外,在slot.js文件中ajax的url参数设置为“/spoke_process?intent_slot=slot”,其目的是为了找到事件处理路由并且实现语义槽提取功能,而intent.js中为“/spoke_process?intent_slot=intent”实现意图提取功能;最后,请求成功后会收到服务器传输过来的结果,通过id找到显示控件并且使用html函数将结果显示在控件内;在服务器的事件处理路由函数中,当接收前端的get请求后,通过request中args方法的get函数获取ajax的url参数中intent_slot变量的值然后判断为意图检测或者语义槽提取,并且通过request中的values方法获得数据字典中input输入框中的文本,最后在函数内预留模型对获得文本处理的接口,并通过return将处理的结果返回给相应的界面。9.根据权利要求8所述的基于bert-bjnn-emgcrf模型的在线口语理解系统,其特征在于,所述在线口语理解系统是将训练好的网络模型导入到在线系统形成,实现对话文本的在线意图检测和语义槽提取,在后台文件中从搭建模型的文件中导入模型并创建模型对象,接着将保存的模型参数加载到模型对象内完成导入训练好的模型。
技术总结
本发明公开了一种基于BERT-BJNN-EMGCRF模型的在线口语理解系统,包括如下步骤:S1、构建一个由共享网络、双向联合网络以及端到端屏蔽图的条件随机场组成的模型框架;S2、对S1所述的模型进行训练,更新整个网络模型的参数,得到语义槽填充与意图检测模型;S3、搭建一个由用户端和服务器端组成的在线系统;S4、将S2所述的语义槽填充与意图检测模型导入基于S3所述的在线系统中形成一个在线口语理解系统。本发明极大利用意图和语义槽之间的关联信息以及充分学习语义槽内及意图和语义槽之间标签对的兼容性隐式连接提高两个任务的整体性能,并实现在线方式对待检测对话文本句子中语义槽的提取和意图的检测。义槽的提取和意图的检测。义槽的提取和意图的检测。
技术研发人员:唐小勇 许佳豪
受保护的技术使用者:长沙理工大学
技术研发日:2023.03.06
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
