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

面向教育咨询服务的智能语义匹配方法和装置与流程

2021-11-29 13:47:00 来源:中国专利 TAG:


1.本发明涉及人工智能、自然语言处理技术领域,具体涉及一种面向教育咨询服务的智能语义匹配方法和装置。


背景技术:

2.句子对语义匹配任务旨在衡量两个句子所蕴含的语义意图是否一致,是许多自然语言处理任务的重要基础。随着相关政策的调整,教育咨询的需求不断增长。教育咨询服务正以科技形态出现在人们的生活中,以大数据、云计算以及人工智能为代表的高新科技,将从根本上改变传统教育咨询的运作方式。对于教育咨询服务,句子对语义匹配就是一项至关重要的工作。句子对语义匹配可用以衡量用户咨询的问题和教育咨询服务后台数据库中所包含标准问题的语义是否一致,从而选择标准问题的答案答复用户的咨询。句子对语义匹配任务是一项基础性且极具挑战性的工作,该工作所面临的许多问题目前还没有完善的解决方案,即使是针对特定领域的句子对语义匹配工作也有许多亟待解决的问题。
3.目前句子对语义匹配任务的解决方案大致可以分为两类,一类是基于表示的方法,该类方法通过对两个句子分别进行编码来获得两个句子各自的语义特征表示,随后通过相似度函数度量两个句子的语义相似性;另一类方法是基于交互的方法,这类方法首先对两个句子进行编码操作,随后通过注意力机制来实现两个句子之间的特征交互操作,最后将两个句子的特征表示传入相似度函数进行计算。在句子对语义匹配任务中,基于表示的方法有实现方式简单高效且训练速度快的优点,但是缺乏一个句子对另外一个句子的语义特征感知,从而使得提取到的语义特征较为单一。相较于基于表示的语义匹配方法,基于交互的句子对语义匹配方法,在获得自身语义特征的同时,还可以从自身语义特征出发去感知另外一个句子的语义特征,从而可以得到更加全面丰富的语义特征表示。具体到中文的句子对语义匹配任务,不少工作考虑了中文中单个字可以表达一定语义的特点,故而有些工作考虑将字词粒度分别进行编码以提取不同粒度的语义信息,同时进行一些交互操作,但是许多工作忽视了对句子对进行字词粒度的自注意力机制以提取关键的语义特征,同时也忽略了将得到的关键语义特征表示进行句子对之间的语义感知与对齐。
4.针对现有的句子对语义匹配方法存在的不足,本发明提出了一种面向教育咨询服务的智能语义匹配方法和装置。该方法首先对句子进行多粒度嵌入处理,捕获更加全面细致的语义特征信息;实现一种双注意力语义匹配模块,对句子的字词粒度分别进行编码,随后通过对两个句子的字词粒度进行自注意力操作以提取其所包含的关键语义特征表示,并对两个句子的同一粒度进行互注意力机制以获取句子对的语义对齐特征表示,并对提取到的语义对齐特征表示进行编码以感知上下文语义信息,从而可以提取到感知上下文的语义对齐特征表示;实现一种特征聚合模块,度量两个句子的相似性,并与感知上下文的语义对齐特征表示进行连接,随后进行一维最大池化操作;实现标签预测模块,以达到判断句子对所蕴含的语义是否一致的目的。


技术实现要素:

5.本发明的技术任务是提供面向教育咨询服务的智能语义匹配方法和装置,通过自注意力机制捕获关键语义特征表示且通过互注意力机制捕获语义对齐特征表示,随后进行特征聚合,以达到判断句子对所蕴含的语义意图是否一致的目的。
6.本发明的技术任务是按以下方式实现的,面向教育咨询服务的智能语义匹配方法和装置,属于人工智能、自然语言处理技术领域。本发明要解决的技术问题为判断句子对的语义是否一致,采用的技术方案为:通过构建并训练由多粒度嵌入模块、双注意力语义匹配模块、特征聚合模块及标签预测模块构成的语义匹配模型,通过对句子的字词粒度进行自注意力操作以获取关键语义特征表示,并进行句子间的互注意力操作,以获取句子对相互感知的语义对齐特征表示并编码,随后度量句子对相似性,并与感知上下文的语义对齐特征表示聚合,以判断句子对的语义是否一致;具体如下:
7.多粒度嵌入模块对输入的句子以字粒度和词粒度分别进行嵌入操作,得到句子的字词嵌入表示;
8.双注意力语义匹配模块对句子的字词嵌入表示依次进行自注意力与互注意力操作,得到句子的语义特征表示;
9.特征聚合模块对句子的语义特征表示与相关度量进行聚合并进行一维最大池化操作,得到句子对的语义匹配向量;
10.标签预测模块将句子对的语义匹配张量映射为指定区间上的一个浮点型数值,将其作为匹配值与预设的阈值进行比较,根据比较结果,判定句子对的语义意图是否一致。
11.作为优选,所述多粒度嵌入模块用于构建字词映射转换表、构建输入模块、构建字词向量映射层;
12.其中,构建字词映射转换表:映射规则为以数字1为起始,随后按照每个字或词被录入字词表的顺序依次递增排序,从而形成本发明所需的字词映射转换表;其中,字词表根据句子对语义匹配断字处理知识库和分词处理知识库来构建,该知识库通过对句子对语义匹配知识库的原始数据文本进行断字预处理和分词预处理操作而得;其后,再使用word2vec训练字词向量模型,得到各字词的字词向量矩阵;
13.构建输入模块:输入层包括四个输入,对于训练数据集中的每一个句子对或待预测的句子对,对其进行断字和分词预处理,分别获取sentence1_char、sentence2_char、sentence1_word和sentence2_word,其中后缀char、word分别表示对相应句子进行断字或分词处理而得,将其形式化为:(sentence1_char sentence2_char,sentence1_word,sentence2_word);对于输入句子中的每个字和词都按照字词映射转换表转化为相应的数字标识;
14.构建字词向量映射层:加载构建字词映射转换表步骤中训练所得的字词向量矩阵来初始化当前层的权重参数;针对输入句子sentence1_char、sentence2_char、sentence1_word和sentence2_word得到其相应句子向量sentence1_char_embed、sentence2_char_embed、sentence1_word_embed和sentence2_word_embed;句子对语义匹配知识库中每一个句子都可以通过字词向量映射的方式,将句子信息转化为向量形式。
15.更优地,所述双注意力语义匹配模块的构建过程具体如下:
16.字词粒度深层编码表示的提取:首先使用lstm编码器对句子的字词嵌入表示进行
编码操作以获取浅层编码表示,继而使用bilstm编码器对字词粒度浅层编码表示与字词嵌入表示的融合表示进行编码以获取深层编码表示;对于句子1,公式如下:
[0017][0018][0019]
其中,(;)表示concatenate连接操作,l为句子的长度,p
ic
和分别表示句子1在第i个位置处的字嵌入表示和字粒度深层编码表示,和分别表示句子1在第m个位置处的词嵌入表示和词粒度深层编码表示;对于句子2,公式如下:
[0020][0021][0022]
其中,公式(3)和(4)的符号含义与公式(1)和(2)大致相同,区别在于,q表示句子2,j表示句子2在字粒度下的第j个位置,n表示句子2在词粒度下的第n个位置,其余表示可以类比表示;
[0023]
关键语义特征表示的提取:对经过循环神经网络编码后得到的句子对的字词粒度深层编码表示进行自注意力操作,即对句子1的字粒度和词粒度分别进行自注意力操作,得到句子1在字粒度级别下的关键语义特征表示与词粒度级别下的关键语义特征表示,可以以此类推句子2;对于句子1的字粒度和词粒度下的自注意力机制以及关键语义特征表示的提取,公式如下:
[0024][0025][0026][0027][0028]
其中,tanh是一种激活函数,c
p1
和c
p2
表示句子1在字粒度级别下可训练的权重参数,w
p1
和w
p2
表示句子1在词粒度级别下可训练的权重参数,和分别表示句子1在字粒度和词粒度级别下的深层编码表示的集合,分别由公式(1)中的和公式(2)中的组成,p
c
'和p
w
'分别表示句子1在字粒度和词粒度级别下的注意力矩阵,m
pc
和m
pw
分别表示句子1在字粒度和词粒度级别下所包含的关键语义特征表示的集合,该关键语义特征的个数是一个超参数,同理可提取出句子2在字词粒度下所包含的关键语义特征表示,公式如下:
[0029][0030][0031][0032]
[0033]
其中,c
q1
和c
q2
表示句子2在字粒度级别下可训练的权重参数,w
q1
和w
q2
表示句子2在词粒度级别下可训练的权重参数,和分别表示句子2在字粒度和词粒度级别下的深层编码表示的集合,分别由公式(3)中的和公式(4)中的组成,q
c'
和q
w'
分别表示句子2在字粒度和词粒度级别上的注意力矩阵,m
qc
和m
qw
分别表示句子2在字粒度和词粒度级别下所包含的关键语义特征表示的集合,该关键语义特征的个数是一个超参数;
[0034]
语义对齐特征表示的提取:对得到的两个句子的字粒度关键语义特征表示和词粒度关键语义特征表示进行同一粒度的互注意力操作,即在字粒度下进行句子1和句子2的互注意力操作,得到字粒度级别下的句子1与句子2的语义对齐特征表示,在词粒度下进行句子1和句子2的互注意力操作,得到词粒度级别的句子1与句子2的语义对齐特征表示;对于字粒度级别下的句子对的互注意力机制,公式如下:
[0035][0036][0037][0038]
其中,exp是指数函数,h是关键语义特征表示的个数,和分别为字粒度级别下句子1第i个关键语义特征表示和句子2第j个关键语义特征表示,属于公式(6)、(10)集合中的元素,s1
ij
为在字粒度级别下句子1的第i个关键语义特征表示与句子2第j个关键语义特征表示的相似度权重,和w
c2
为可训练的权重参数,为句子1在字粒度级别下第i个位置处的字粒度语义对齐特征表示,是根据相似度权重对句子2中每个关键语义特征表示加权求和得到的,同理表示句子2在字粒度级别下第j个位置处的字粒度语义对齐特征表示;
[0039]
对于词粒度级别的互注意力机制,公式如下:
[0040][0041][0042][0043]
其中各符号含义可以类比公式(13)

(15),此处只是将用于代表字的上标或下标c改为用于代表词的上标或下标w;和分别表示在词粒度级别下句子1第m个关键语义特征表示和语义对齐特征表示,和分别表示在词粒度级别下句子2第n个关键语义特征表示和语义对齐特征表示;
[0044]
感知上下文的语义对齐特征表示的提取:为了更好地感知上下文语义信息,对于上述提取的语义对齐特征表示使用bilstm编码器进行编码以得到感知上下文的语义对齐
特征表示,公式如下:
[0045][0046][0047][0048][0049]
其中,和表示句子1在字粒度下提取的语义对齐特征表示和词粒度下提取的语义对齐特征表示的集合,分别由公式(14)中的和公式(17)中的组成,和表示句子2在字粒度下提取的语义对齐特征表示和词粒度下提取的语义对齐特征表示的集合,分别由公式(15)中的和公式(18)中的组成,和分别表示句子1字粒度和词粒度的感知上下文的语义对齐特征表示,和分别表示句子2字粒度和词粒度的感知上下文的语义对齐特征表示;
[0050]
随后将同一个句子的字词粒度的感知上下文的语义对齐特征表示进行连接得到句子的语义特征表示,公式如下:
[0051][0052][0053]
其中,(;)表示concatenate连接操作,和分别表示句子1字粒度和词粒度的感知上下文的语义对齐特征表示,分别由公式(19)和(20)计算所得,和分别表示句子2字粒度和词粒度的感知上下文的语义对齐特征表示,分别由公式(21)和(22)计算所得,表示将句子1的字粒度和词粒度的感知上下文的语义对齐特征表示进行连接后得到的语义特征表示,表示将句子2的字粒度和词粒度的感知上下文的语义对齐特征表示进行连接后得到的语义特征表示。
[0054]
更优地,所述特征聚合模块的构建过程具体如下:
[0055]
特征比对模块进一步处理双注意力语义匹配模块生成的语义特征表示,首先使用绝对值函数强调两个句子之间的绝对差异,同时使用哈达玛积来计算两个句子之间的相似程度,随后将句子对的绝对差异表示、相似程度表示和句子对的语义特征表示进行连接并将连接结果进行一维最大池化以得到句子对语义匹配张量;公式如下:
[0056][0057][0058]
[0059]
sim
pool
=globalmaxpooling(sim)
ꢀꢀꢀ
(28)
[0060]
其中,(;)表示concatenate连接操作,和分别表示句子1和句子2的语义特征表示,abs为绝对值函数运算的结果,mul为哈达玛积运算的结果,随后将这两个结果与句子对的语义特征表示进行连接得到sim,最后对该结果sim进行一维最大池化操作得到句子对语义匹配张量sim
pool

[0061]
更优地,所述标签预测模块构建过程如下:
[0062]
将句子对语义匹配张量作为输入,标签预测模块包含三层全连接网络;前两层是维度为600、激活函数为relu函数的全连接网络,最后一层是维度为1、激活函数为sigmoid函数的全连接网络;得到一个处于[0,1]之间的匹配度数值,记为y
pred
,最终通过与设定的阈值0.5进行比较,从而判断句子对的语义意图是否一致;即若y
pred
≥0.5时,预测该句子对的语义意图是一致的,否则,不一致;当句子对语义匹配模型尚未充分训练时,需要在根据语义匹配知识库而构建的训练数据集上进行训练,以优化模型参数;当模型训练完毕时,标签预测模块可预测目标句子对的语义意图是否一致。
[0063]
更优地,所述句子对语义匹配知识库构建具体如下:
[0064]
收集数据:收集教育咨询服务的常见问题句子,作为句子对语义匹配知识库的原始数据;
[0065]
预处理原始数据:预处理用于构建句子对语义匹配知识库的原始数据,对其中的每个句子均进行断字操作、分词操作,得到句子对语义匹配断字处理知识库、分词处理知识库;
[0066]
汇总子知识库:汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,构建句子对语义匹配知识库。
[0067]
所述句子对语义匹配模型通过使用训练数据集进行训练而得到,训练数据集的构建过程如下:
[0068]
构建训练正例:将句子对语义匹配知识库中两个句子语义一致的句子对构建为正例,形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,1);其中,sentence1_char、sentence2_char分别指代句子对语义匹配断字处理知识库中的句子1、句子2,sentence1_word、sentence2_word分别指代句子对语义匹配分词处理知识库中的句子1、句子2,1表示这两个句子的语义相匹配,是正例;
[0069]
构建训练负例:选中一个句子s1,再从句子对语义匹配知识库中随机选择一个与句子s1不匹配的句子s2,将s1与s2进行组合,构建负例,形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,0);其中,sentence1_char、sentence1_word分别指代句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库中的句子1;sentence2_char、sentence2_word分别指代句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库中的句子2;0表示句子s1和句子s2的语义不匹配,是负例;
[0070]
构建训练数据集:将经过构建训练正例和构建训练负例操作后所获得的全部的正例样本句子对和负例样本句子对进行组合,并打乱其顺序,构建最终的训练数据集;无论正例数据还是负例数据均包含了五个维度,即sentence1_char,sentence2_char,sentence1_
word,sentence2_word,0或1;
[0071]
所述句子对语义匹配模型构建完成后通过训练数据集进行句子对语义匹配模型的训练与优化,具体如下:
[0072]
构建损失函数:由标签预测模块构建过程可知,y
pred
是经过句子对语义匹配模型处理后得到的匹配度计算数值,y
true
是两个句子语义是否匹配的真实标签,其取值仅限于0或1,采用交叉熵作为损失函数,公式如下:
[0073][0074]
优化训练模型:使用adam优化函数;在训练数据集上,对句子对语义匹配模型进行优化训练。
[0075]
一种面向教育咨询服务的智能语义匹配装置,该装置包括,
[0076]
面向教育咨询服务的智能语义匹配装置主要包含4个单元,即句子对语义匹配知识库构建单元、训练数据集生成单元、句子对语义匹配模型构建单元、句子对语义匹配模型训练单元。每个单元的具体功能如下所述:
[0077]
句子对语义匹配知识库构建单元,用于获取大量的句子对数据,随后对数据进行预处理,从而得到符合训练要求的句子对语义匹配知识库。训练数据集生成单元,对于句子对语义匹配知识库中的句子对,若其语义一致,则该句子对用于构建训练正例,反之,则用于构建训练负例;将大量的正例数据和负例数据进行混合,得到训练数据集。句子对语义匹配模型构建单元,用于构建字词映射转换表、输入模块、字词向量映射层、双注意力语义匹配模块、特征聚合模块和标签预测模块。句子对语义匹配模型训练单元,用于构建模型训练过程中所需要的损失函数与优化函数,并完成模型的训练。
[0078]
一种存储介质,其中存储有多条指令,所述指令有处理器加载,执行上述的面向教育咨询服务的智能语义匹配方法的步骤。
[0079]
一种电子设备,所述电子设备包括:
[0080]
上述的存储介质;以及
[0081]
处理器,用于执行所述存储介质中的指令。
[0082]
本发明的面向教育咨询服务的智能语义匹配方法具有以下优点:
[0083]
(一)本发明通过多粒度嵌入处理,提取句子中所包含的字粒度和词粒度的嵌入表示,从而可以得到更加全面细致的句子语义特征表示;
[0084]
(二)本发明通过双注意力语义匹配模块,对两个句子的字词粒度嵌入表示进行自注意力操作,可以从中提取出句子中所包含的关键语义特征表示,提高句子语义特征表示的准确性;
[0085]
(三)本发明通过双注意力语义匹配模块,对两个句子的关键语义特征表示进行语义对齐,得到字词粒度语义对齐特征表示,使两个句子的同一粒度之间可以相互感知,随后进行编码操作以感知上下文语义信息,得到感知上下文的语义对齐特征表示,达到改善句子对语义匹配效果的目的;
[0086]
(四)本发明通过特征聚合模块,比较句子对的相似性并与感知上下文的语义对齐特征表示进行连接,随后进行一维最大池化操作,得到句子对的匹配向量;
[0087]
(五)本发明通过综合运用多粒度嵌入处理、双注意力语义匹配、特征聚合,能够有
效改善语义匹配的效果。
附图说明
[0088]
下面结合附图对本发明进一步说明。
[0089]
图1为面向教育咨询服务的智能语义匹配方法的流程图;
[0090]
图2为构建句子对语义匹配知识库的流程图;
[0091]
图3为构建训练数据集的流程图;
[0092]
图4为构建句子对语义匹配模型的流程图;
[0093]
图5为训练句子对语义匹配模型的流程图;
[0094]
图6为面向教育咨询服务的智能语义匹配装置的结构示意图;
[0095]
图7为构建双注意力语义匹配模块的结构示意图;
[0096]
图8为面向教育咨询服务的智能语义匹配模型的框架示意图。
具体实施方式
[0097]
参照说明书附图和具体实施例对本发明的面向教育咨询服务的智能语义匹配方法作以下详细地说明。
[0098]
实施例1:
[0099]
本发明的总体模型框架结构如图8所示。由图8可知,本发明的主要框架结构包含多粒度嵌入模块、双注意力语义匹配模块、特征聚合模块和标签预测模块。其中,多粒度嵌入模块对输入的句子以字粒度和词粒度进行嵌入操作,并将字词嵌入表示传递给模型的双注意力语义匹配模块。双注意力语义匹配模块首先进行两个句子字词粒度的自注意力操作以提取关键语义特征表示,随后进行两个句子之间同一粒度的互注意力操作以获取相互感知的语义对齐特征表示,随后通过循环神经网络进行编码以感知句子的上下文信息;具体来说,如图7所示,首先使用lstm编码器对句子的字词嵌入表示进行编码操作以获取浅层编码表示,继而使用bilstm编码器对字词粒度浅层编码表示与字词嵌入表示的融合表示进行编码以获取深层编码表示,随后使用自注意力机制对字词粒度深层编码表示进行处理,以期提取句子中所包含的关键语义特征表示,随后对同一粒度的关键语义特征表示进行互注意力操作,以期得到两个句子相互感知的语义对齐特征表示,随后使用bilstm编码器对所获得的语义对齐特征表示进行编码,以期得到感知上下文的语义对齐特征表示,随后将同一个句子的字词粒度的感知上下文的语义对齐特征表示进行连接得到句子的语义特征表示,同时将其传递给特征聚合模块。特征聚合模块通过绝对值函数和哈达玛积对两个句子的语义特征表示进行相似性度量且与句子对的语义特征表示进行连接,随后进行一维最大池化操作,得到句子对语义匹配张量,同时将其传递给标签预测模块。标签预测模块使用多层的全连接层对语义匹配张量进行编码操作,以取得两个句子的匹配度。具体如下:
[0100]
(1)多粒度嵌入模块对输入的句子以字粒度和词粒度分别进行嵌入操作,得到句子的字词嵌入表示;
[0101]
(2)双注意力语义匹配模块对句子的字词嵌入表示依次进行自注意力与互注意力操作,得到句子的语义特征表示;
[0102]
(3)特征聚合模块对句子的语义特征表示与相关度量进行聚合并进行一维最大池
化操作,得到句子对的语义匹配向量;
[0103]
(4)标签预测模块将句子对的语义匹配张量映射为指定区间上的一个浮点型数值,将其作为匹配值与预设的阈值进行比较,根据比较结果,判定句子对的语义意图是否一致。
[0104]
实施例2:
[0105]
如附图1所示,本发明的面向教育咨询服务的智能语义匹配方法,具体步骤如下:
[0106]
s1、构建句子对语义匹配知识库,如附图2所示,具体步骤如下:
[0107]
s101、收集数据:收集教育咨询的常见问题句子,作为句子对语义匹配知识库的原始数据。
[0108]
举例说明:收集教育咨询服务中出现的问题,将其作为原始数据。句子对示例,表示如下:
[0109]
句子1如何提高英语成绩?句子2怎么让英语成绩变好?
[0110]
s102、预处理原始数据:预处理用于构建句子对语义匹配知识库的原始数据,对原始数据的每个句子都进行断字和分词操作,得到句子对语义匹配断字处理知识库、分词处理知识库。
[0111]
以s101中展示的句子1为例,对其进行断字处理操作后得到“如何提高英语成绩?”;使用jieba分词工具对其进行分词操作处理后得到“如何提高英语成绩?”。
[0112]
s103、汇总子知识库:汇总句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库,构建句子对语义匹配知识库。
[0113]
将s102中获得的句子对语义匹配断字处理知识库和句子对语义匹配分词处理知识库整合到同一文件夹下,从而得到句子对语义匹配知识库。其流程如图2所示。
[0114]
s2、构建句子对语义匹配模型的训练数据集:对于句子对语义匹配知识库中的句子对,若其语义一致,则该句子对用于构建训练正例,反之,则用于构建训练负例。将大量的正例数据和负例数据进行混合,得到训练数据集;如附图3所示,具体步骤如下:
[0115]
s201、构建训练正例:将句子对语义匹配知识库中将两个句子语义一致的句子对构建为正例,形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,1);
[0116]
举例:对步骤s101中展示的句子1和句子2,经过步骤s102断字和分词操作处理后,构建的正例数据形式为:
[0117]
(“如何提高英语成绩?”,“怎么让英语成绩变好?”,“如何提高英语成绩?”,“怎么让英语成绩变好?”,1)。
[0118]
s202、构建训练负例:对于步骤s201所获得的每个正例句子对,选中其包含的某一个句子,随机选择与其不匹配的某个句子进行组合,将这两个语义不一致的句子作为句子对,构建为负例数据,形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word,0);
[0119]
举例:由于负例的构建方法与正例的非常类似,故在此不再赘述。
[0120]
s203、构建训练数据集:将经过步骤s201和步骤s202操作后所获得的全部的正例句子对数据和负例句子对数据合并在一起,并将顺序打乱,构建最终的训练数据集。无论正
例数据还是负例数据,它们都包含了五个维度,即sentence1_char,sentence2_char,sentence1_word,sentence2_word,0或1。
[0121]
s3、构建句子对语义匹配模型:主要操作为构建字词映射转换表、构建输入模块、构建字词向量映射层、构建双注意力语义匹配模块、构建特征聚合模块、构建标签预测模块。其中,构建字词映射转换表、构建输入模块、构建字词向量映射层对应图8中的多粒度嵌入模块,其余部分均与图8中的各个模块一一对应。具体步骤如下:
[0122]
s301、构建字词映射转换表:字词表是通过步骤s102处理后得到的句子对语义匹配断字处理知识库和分词处理知识库来构建的。字词表构建完成后,表中每个字或词均被映射为唯一的数字标识,其映射规则为:以数字1为起始,随后按照每个字或词被录入字词表的顺序依次递增排序,从而形成本发明所需的字词映射转换表。使用word2vec训练字词向量模型,得到各字词的字词向量矩阵。
[0123]
举例:以步骤s102处理后的内容,“如何提高英语成绩?”,“如何提高英语成绩?”构建字词表及字词映射转换表如下:
[0124]
字词如何提高英语成绩?如何提高映射1234567891011字词英语成绩
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
映射1213
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
[0125]
举例说明:在keras中,训练字词向量模型的代码实现如下:
[0126]
w2v_model=gensim.models.word2vec(w2v_corpus,size=emb_dim,window=5,min_count=1,sg=1,workers=4,seed=1234,iter=25)
[0127]
embedding_matrix=numpy.zeros([len(tokenizer.word_index) 1,emb_dim])
[0128]
tokenizer=tokenizer(num_words=len(word_set))
[0129]
for word,idx in tokenizer.word_index.items():
[0130]
embedding_matrix[idx,:]=w2v_model.wv[word]
[0131]
其中,w2v_corpus为句子对语义匹配知识库中的所有句子;emb_dim为嵌入向量维度,本模型设置emb_dim为300维,word_set为字词表;embedding_matrix为所得的字词向量矩阵。
[0132]
s302、构建输入层:输入层包括四个输入,从输入层的训练数据集样例中分别获取sentence1_char、sentence2_char、sentence1_word和sentence2_word,将其形式化为:(sentence1_char,sentence2_char,sentence1_word,sentence2_word);对于输入句子中的每个字和词,本发明都按照在步骤s301中构建完成的字词映射转换表将其转化为相应的数字标识。
[0133]
举例说明:使用步骤s201中展示的句子对作为样例,以此组成一条输入数据。其结果如下所示:
[0134]
(“如何提高英语成绩?”,“怎么让英语成绩变好?”,“如何提高英语成绩?”,“怎么让英语成绩变好?”)
[0135]
每条输入数据包含4个子句。根据步骤s301中的字词映射转换表,将其转换为数值表示。(假定出现在句子2中但没有出现在句子1中的映射关系为:“怎”:14,“么”:15,“让”:16,“变”:17,“好”:18,“怎么”:19)。输入数据的4个子句,合并表示结果如下:
[0136]
(“1,2,3,4,5,6,7,8,9”,“14,15,16,5,6,7,8,17,18,9”,“10,11,12,13,9”,“19,16,12,13,17,18,9”)。
[0137]
s303、构建字词向量映射层:通过加载构建步骤s301中训练所得的字词向量矩阵来初始化当前层的权重参数;针对输入句子sentence1_char、sentence2_char、sentence1_word和sentence2_word得到其相应句子向量sentence1_char_embed、sentence2_char_embed、sentence1_word_embed、sentence2_word_embed。句子对语义匹配知识库中每一个句子都可以通过字词向量映射的方式,将句子信息转化为向量形式。
[0138]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0139]
embedding_layer=embedding(embedding_matrix.shape[0],emb_dim,weights=[embedding_matrix],trainable=false)
[0140]
其中,embedding_matrix是步骤s301中训练所得的字词向量矩阵,embedding_matrix.shape[0]是字词向量矩阵中字词表的大小,emb_dim是嵌入向量维度。
[0141]
相应的句子sentence1_char、sentence2_char、sentence1_word和sentence2_word,经过keras的embedding层处理后得到相应的句子向量sentence1_char_embed、sentence2_char_embed、sentence1_word_embed、sentence2_word_embed。
[0142]
s304、构建双注意力语义匹配模块:该结构如图7所示,具体步骤如下:
[0143]
双注意力语义匹配模块的结构图如图7所示,该模块接收字词向量映射层输出的字词嵌入表示作为输入;首先使用lstm编码器对句子的字词嵌入表示进行编码操作以获取浅层编码表示,继而使用bilstm编码器对字词粒度浅层编码表示与字词嵌入表示的融合表示进行编码以获取深层编码表示;随后使用自注意力机制对字词粒度深层编码表示进行处理,以期提取句子中所包含的关键语义特征表示;随后对同一粒度的关键语义特征表示进行互注意力操作,以期得到两个句子相互感知的语义对齐特征表示;随后使用bilstm编码器对所获得的语义对齐特征表示进行编码,以期得到感知上下文的语义对齐特征表示,随后将同一个句子的字词粒度的感知上下文的语义对齐特征表示进行连接得到句子的语义特征表示。
[0144]
字词粒度深层编码表示的提取:首先使用lstm编码器对句子的字词嵌入表示进行编码操作以获取浅层编码表示,继而使用bilstm编码器对字词粒度浅层编码表示与字词嵌入表示的融合表示进行编码以获取深层编码表示。对于句子1,具体实施见下述公式:
[0145][0146][0147]
其中,(;)表示concatenate连接操作,l为句子的长度;p
ic
和分别表示句子1在第i个位置处的字嵌入表示和字粒度深层编码表示;和分别表示句子1在第m个位置处的词嵌入表示和词粒度深层编码表示。对于句子2,具体实施如下:
[0148][0149][0150]
其中,公式(3)和(4)的符号含义与公式(1)和(2)大致相同,区别在于,q表示句子
2,j表示句子2在字粒度下的第j个位置,n表示句子2在词粒度下的第n个位置。其余表示可以类比表示,因篇幅有限不再一一赘述。
[0151]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0152]
首先定义一个编码器:
[0153]
def bilstm1(input_1,input_2,input_3,input_4):
[0154]
net1=lstm(encoder_size,return_sequences=true,dropout=0.2)
[0155]
net2=bidirectional(lstm(encoder_size,return_sequences=true,dropout=0.2),merge_mode='concat')
[0156]
p1=net1(input_1)
[0157]
p2=net1(input_2)
[0158]
p3=net1(input_3)
[0159]
p4=net1(input_4)
[0160]
p11=net2(concatenate([input_1,p1]))
[0161]
p22=net2(concatenate([input_2,p2]))
[0162]
p33=net2(concatenate([input_3,p3]))
[0163]
p44=net2(concatenate([input_4,p4]))
[0164]
return p11,p22,p33,p44
[0165]
随后将字词嵌入表示送入编码器得到字词粒度深层编码表示:
[0166]
embed_pw=embedding_layer_self(input_pw)
[0167]
embed_qw=embedding_layer_self(input_qw)
[0168]
embed_pc=embedding_layer_self(input_pc)
[0169]
embed_qc=embedding_layer_self(input_qc)
[0170]
encoder_pw,encoder_qw,encoder_pc,encoder_qc=bilstm1(embed_pw,
[0171]
embed_qw,embed_pc,embed_qc)
[0172]
其中,input_pc和input_pw分别为句子1在字粒度和词粒度下的输入,input_qc和input_qw分别为句子2在字粒度和词粒度下的输入,encoder_pc和encoder_pw分别为句子1字粒度和词粒度深层编码表示,encoder_qc和encoder_qw分别为句子2字粒度和词粒度深层编码表示。
[0173]
关键语义特征表示的提取:对经过循环神经网络编码后得到的句子对的字词粒度深层编码表示进行自注意力操作,即对句子1的字粒度和词粒度分别进行自注意力操作,得到句子1在字粒度级别下的关键语义特征表示与词粒度级别下的关键语义特征表示,可以以此类推句子2。对于句子1的字粒度和词粒度下的自注意力机制以及关键语义特征表示的提取,具体实施见下述公式:
[0174][0175][0176][0177]
[0178]
其中,tanh是一种激活函数,c
p1
和c
p2
表示句子1在字粒度级别下可训练的权重参数,w
p1
和w
p2
表示句子1在词粒度级别下可训练的权重参数,和分别表示句子1在字粒度和词粒度级别下的深层编码表示的集合,分别由公式(1)中的和公式(2)中的组成,p
c'
和p
w'
分别表示句子1在字粒度和词粒度级别下的注意力矩阵,m
pc
和m
pw
分别表示句子1在字粒度和词粒度级别下所包含的关键语义特征表示的集合,该关键语义特征的个数是一个超参数,同理可提取出句子2在字词粒度下所包含的关键语义特征表示,具体实施见下述公式:
[0179][0180][0181][0182][0183]
其中,c
q1
和c
q2
表示句子2在字粒度级别下可训练的权重参数,w
q1
和w
q2
表示句子2在词粒度级别下可训练的权重参数,和分别表示句子2在字粒度和词粒度级别下的深层编码表示的集合,分别由公式(3)中的和公式(4)中的组成,q
c'
和q
w'
分别表示句子2在字粒度和词粒度级别上的注意力矩阵,m
qc
和m
qw
分别表示句子2在字粒度和词粒度级别下所包含的关键语义特征表示的集合,该关键语义特征的个数是一个超参数。
[0184]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0185]
首先定义一个注意力函数:
[0186]
[0187]
随后将句子对的字粒度深层编码表示和词粒度深层编码表示送入上述定义好的注意力函数以得到字粒度关键语义特征表示和词粒度关键语义特征表示:
[0188]
attention_pw=attention(3)(encoder_pw)
[0189]
attention_qw=attention(3)(encoder_qw)
[0190]
attention_pc=attention(3)(encoder_pc)
[0191]
attention_qc=attention(3)(encoder_qc)
[0192]
其中,encoder_pc和encoder_pw为句子1的字词粒度深层编码表示,encoder_qc和encoder_qw为句子2的字词粒度深层编码表示,attention_pc和attention_pw为句子1在进行自注意力机制后得到的字词粒度关键语义特征表示,attention_qc和attention_qw为句子2在进行自注意力机制后得到的字词粒度关键语义特征表示,数字3表示关键语义特征表示的个数,是一个超参数。
[0193]
语义对齐特征表示的提取:对得到的两个句子的字粒度关键语义特征表示和词粒度关键语义特征表示进行同一粒度的互注意力操作,即在字粒度下进行句子1和句子2的互注意力操作,得到字粒度级别下的句子1与句子2的语义对齐特征表示,在词粒度下进行句子1和句子2的互注意力操作,得到词粒度级别的句子1与句子2的语义对齐特征表示。对于字粒度级别下的句子对的互注意力机制,具体实施见下述公式:
[0194][0195][0196][0197]
其中,exp是指数函数,h是关键语义特征表示的个数,和分别为字粒度级别下句子1第i个关键语义特征表示和句子2第j个关键语义特征表示,属于公式(6)、(10)集合中的元素,s1
ij
为在字粒度级别下句子1的第i个关键语义特征表示与句子2第j个关键语义特征表示的相似度权重,和w
c2
为可训练的权重参数,为句子1在字粒度级别下第i个位置处的字粒度语义对齐特征表示,是根据相似度权重对句子2中每个关键语义特征表示加权求和得到的,同理表示句子2在字粒度级别下第j个位置处的字粒度语义对齐特征表示。
[0198]
对于词粒度级别的互注意力机制,具体实施见下述公式:
[0199][0200][0201][0202]
其中各符号含义可以类比公式(13)

(15),此处只是将用于代表字的上标或下标c
改为用于代表词的上标或下标w;和分别表示在词粒度级别下句子1第m个关键语义特征表示和语义对齐特征表示,和分别表示在词粒度级别下句子2第n个关键语义特征表示和语义对齐特征表示。
[0203]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0204]
首先定义一个互注意力函数:
[0205][0206][0207]
随后将字词粒度关键语义特征表示送入上述定义好的互注意力函数以得到字词粒度语义对齐特征表示。
[0208]
pqw,qpw=concatattention()([attention_pw,attention_qw])
[0209]
pqc,qpc=concatattention()([attention_pc,attention_qc])
[0210]
其中,attention_pc和attention_qc为字粒度级别下句子1和句子2的关键语义特征表示,attention_pw和attention_qw为词粒度级别下句子1和句子2的关键语义特征表示;pqc和qpc为字粒度级别下句子1和句子2的语义对齐特征表示,pqw和qpw为词粒度级别下句子1和句子2的语义对齐特征表示。
[0211]
感知上下文的语义对齐特征表示的提取:为了更好地感知上下文语义信息,对于上述提取的语义对齐特征表示使用bilstm编码器进行编码以得到感知上下文的语义对齐特征表示,具体实施见下述公式:
[0212][0213][0214][0215][0216]
其中,和表示句子1在字粒度下提取的语义对齐特征表示和词粒度下提取的语义对齐特征表示的集合,分别由公式(14)中的和公式(17)中的组成,和表示句子2在字粒度下提取的语义对齐特征表示和词粒度下提取的语义对齐特征表示的集合,分别由公式(15)中的和公式(18)中的组成,和分别表示句子1字粒度和词粒度的感知上下文的语义对齐特征表示,和分别表示句子2字粒度和词粒度的感知上下文的语义对齐特征表示。
[0217]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0218]
首先定义一个编码器:
[0219]
def bilstm2(input_1,input_2,input_3,input_4):
[0220]
net=bidirectional(lstm(encoder_size,return_sequences=true,dropout=0.2),merge_mode='concat')
[0221]
p1=net(input_1)
[0222]
p2=net(input_2)
[0223]
p3=net(input_3)
[0224]
p4=net(input_4)
[0225]
return p1,p2,p3,p4
[0226]
随后将提取到的两个句子的字词粒度级别的语义对齐特征表示送入上述定义好的编码器以得到感知上下文的语义对齐特征表示。
[0227]
pqw1,qpw1,pqc1,qpc1=bilstm2(pqw,qpw,pqc,qpc)
[0228]
其中,pqc和pqw分别表示句子1在字粒度和词粒度上提取到的语义对齐特征表示,qpc和qpw分别表示句子2在字粒度和词粒度上提取到的语义对齐特征表示;pqc1和pqw1分别表示句子1在字粒度和词粒度级别下感知上下文的语义对齐特征表示,qpc1和qpw1分别表示句子2在字粒度和词粒度级别下感知上下文的语义对齐特征表示。
[0229]
随后将同一个句子的字词粒度的感知上下文的语义对齐特征表示进行连接得到句子的语义特征表示,具体实施见下述公式:
[0230][0231][0232]
其中,(;)表示concatenate连接操作,和分别表示句子1字粒度和词粒度
的感知上下文的语义对齐特征表示,分别由公式(19)和(20)计算所得,和分别表示句子2字粒度和词粒度的感知上下文的语义对齐特征表示,分别由公式(21)和(22)计算所得。表示将句子1的字粒度和词粒度的感知上下文的语义对齐特征表示进行连接后得到的语义特征表示,表示将句子2的字粒度和词粒度的感知上下文的语义对齐特征表示进行连接后得到的语义特征表示。
[0233]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0234]
p=concatenate([pqw1,pqc1])
[0235]
q=concatenate([qpw1,qpc1])
[0236]
其中,pqc1和pqw1分别表示句子1字粒度和词粒度的感知上下文的语义对齐特征表示,返回的p表示句子1的语义特征表示;qpc1和qpw1分别表示句子2字粒度和词粒度的感知上下文的语义对齐特征表示,返回的q表示句子2的语义特征表示。
[0237]
s305、构建特征聚合模块:经过步骤s304生成的两个句子的语义特征表示,且对语义特征表示进行比较且与句子对的语义特征表示进行连接,随后进行一维最大池化操作,得到句子对语义匹配张量。
[0238]
首先使用绝对值函数强调两个句子之间的绝对差异,同时使用哈达玛积来计算两个句子之间的相似程度,随后将句子对的绝对差异表示、相似程度表示和句子对的语义特征表示进行连接并将连接结果进行一维最大池化以得到句子对语义匹配张量。具体实施见下述公式:
[0239][0240][0241][0242]
sim
pool
=globalmaxpooling(sim)
ꢀꢀꢀꢀ
(28)
[0243]
其中,(;)表示concatenate连接操作,和分别表示句子1和句子2的语义特征表示,abs为绝对值函数运算的结果,mul为哈达玛积运算的结果,随后将这两个结果与句子对的语义特征表示进行连接得到sim,最后对该结果sim进行一维最大池化操作得到句子对语义匹配张量sim
pool

[0244]
举例说明:在keras中,对于上面描述的代码实现如下所示:
[0245]
abs_diff1=lambda(lambda x:k.abs(x[0]

x[1]))([p,q])
[0246]
multi_diff1=multiply([p,q])
[0247]
pq=concatenate([abs_diff1,multi_diff1,p,q])
[0248]
ff=globalmaxpooling1d()(pq)
[0249]
其中,p和q分别是句子1和句子2的语义特征表示,ff为最终的句子对语义匹配张量。
[0250]
s306、构建标签预测模块:将步骤s305得到的最终的句子对语义匹配张量,经过三层全连接神经网络处理,以得到一个在[0,1]之间的匹配度,记为y
pred
,并与预先设定的阈
domain

specific chinese corpus for sentence semantic equivalence identification,emnlp2018】,最后一行是本发明模型的实验结果,由此可知本发明比现有模型有了较大提升。
[0270]
实施例3:
[0271]
如附图6所示,基于实施例2的面向教育咨询服务的智能语义匹配装置,该装置包括,
[0272]
句子对语义匹配知识库构建单元、训练数据集生成单元、句子对语义匹配模型构建单元、句子对语义匹配模型训练单元,分别实现面向教育咨询服务的智能语义匹配方法中步骤s1、s2、s3、s4的功能,每个单元的具体功能如下所述:
[0273]
句子对语义匹配知识库构建单元,用于获取大量的句子对数据,随后对数据进行预处理,从而得到符合训练要求的句子对语义匹配知识库。
[0274]
训练数据集生成单元,对于句子对语义匹配知识库中的句子对,若其语义一致,则该句子对用于构建训练正例,反之,则用于构建训练负例;将大量的正例数据和负例数据进行混合,得到训练数据集。
[0275]
句子对语义匹配模型构建单元,用于构建字词映射转换表、输入模块、字词向量映射层、双注意力语义匹配模块、特征聚合模块和标签预测模块。
[0276]
句子对语义匹配模型训练单元,用于构建模型训练过程中所需要的损失函数与优化函数,并完成模型的训练。
[0277]
实施例4:
[0278]
基于实施例2的存储介质,其中存储有多条指令,指令有处理器加载,执行实施例2的面向教育咨询服务的智能语义匹配方法的步骤。
[0279]
实施例5:
[0280]
基于实施例4的电子设备,电子设备包括:实施例4的存储介质;以及
[0281]
处理器,用于执行实施例4的存储介质中的指令。
[0282]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

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

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

相关文献