语义确定方法与流程

文档序号:25041685发布日期:2021-05-14 10:57阅读:200来源:国知局
语义确定方法与流程

1.本发明属于母婴智能人工分析领域,尤其涉及一种语义确定方法。


背景技术:

2.近年来,随着人工智能领域尤其是深度学习的快速发展,自然语言处理在人类的学习工作与生活中发挥着越来越重要的作用。智能问答的出现使得一大批应用或服务涌现出来,如百度的小度,阿里的天猫精灵,小米的小爱同学,苹果的siri,微软的小冰等设备系统。
3.在现有技术中,问答型机器人的技术路线为将句子映射为句向量,在通过计算句向量的余弦相似度得到分值最高的句子,在将其对应的答案给用户。但是由于中文句子的语法结构的复杂多变,语义语境的多异性等因素,导致模型在线上的效果评估很差,给用户带来了不好的体验;尤其是在母婴领域使用的问答型机器人,如果不能充分理解中文语法结构的复杂性以及多异性,其不能准确输出计算结果,将会导致模型在线上的效果评估很差,将会对用户体验造成很大的困扰。


技术实现要素:

4.为了解决上述现有技术中但是由于中文句子的语法结构的复杂多变,语义语境的多异性等因素,导致模型在线上的效果评估很差,给用户带来了不好的体验的技术问题,本申请提供了一种语义确定方法。
5.第一方面,本发明提供了一种语义确定方法,所述方法包括:获取待确定语义的语句c;将所述语句输入预设的孪生网络模型中,得到语句c的特征向量,其中所述孪生网络模型用于将语句向量化;从向量库中确定与语句c的特征向量相似度最高的相似向量;将与所述相似向量对应的标准语句确定为与所述语句对应的语义。
6.进一步地,所述孪生网络模型包括网络结构第一分支、网络结构第二分支、主分类任务、第一分支辅助任务和第二分支辅助任务,所述孪生网络模型的训练过程包括:从预设的训练语料中获取句子a与句子b;将所述句子a与句子b输入至所述孪生网络模型中,以使所述网络结构第一分支确定所述句子a的特征向量,所述网络结构第二分支确定所述句子b的特征向量,并使得所述孪生网络模型将所述句子a的特征向量与句子b的特征向量进行特征融合得到融合向量后,基于所述句子a的特征向量与句子b的特征向量以及所述融合向量,确定用于将待处理句子向量化的孪生网络模型的主分类任务。
7.进一步地,所述网络结构第一分支和网络结构第二分支、主分类任务、第一分支辅助任务和第二分支辅助任务的损失函数为自定义损失,其中损失函数的公式为:
其中,为孪生网络模型输出,i=1为第一分支辅助任务输出,i=2为主分类任务输出,i=3为第二分支辅助任务输出, ,为孪生网络模型超参数, 为孪生网络模型权重矩阵, 。
8.进一步地,所述从向量库中确定与语句c的特征向量相似度最高的相似向量,包括:通过余弦相似度公式,计算出每个句子向量与所述语句向量的相似度,其中句子向量存储在所述向量库中;若句子向量与所述语句c的特征向量的相似度大于预设阈值,则确定出所述句子向量与所述语句c的特征向量之间的向量差值处于预设差值范围内;从多个处于预设差值范围内的句子向量中确定与语句向量相似度最高的相似向量。
9.进一步地,语义确定方法还包括:若句子向量与所述语句c的特征向量的相似度小于预设阈值,则确定出所述句子向量与所述语句c的特征向量之间的向量差值未处于预设差值范围内。
10.进一步地,所述孪生网络模型的训练过程还包括:将获取的多个语句以及每个所述语句对应的标签输入孪生网络模型进行训练,以训练出每个所述语句所属的隐含标签以及句向量,其中,所述隐含标签用于机器对该语句进行分类的标签,句向量可包括多个维度。
11.进一步地,在计算所述网络结构第一分支对应的网络结构第二分支中每个句子向量与所述语句向量之间的向量差值是否处于预设差值范围内之前,还包括:从预先训练好的网络结构第一分支中提取出所述语句对应的隐含标签;从所述网络结构第一分支对应的网络结构第二分支中,筛选出属于所述隐含标签范围内的语句。
12.进一步地,所述网络结构第二分支与所述网络结构第一分支的权重相同。
13.本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例通过获取待确定语义的语句;从预先训练好的网络结构第一分支中提取出语句对应的句向量,计算网络结构第一分支对应的网络结构第二分支中每个句子向量与语句的句向量之间的向量差值是否处于预设差值范围内,将符合预设条件的多个相似度进行排序,将相似度最高的机器语句作为语句对应的语义,避免了使用单一模式造成语句的拟合,以至输出结果的精确度低的问题。
附图说明
14.此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是本申请实施例的一种语义确定方法的主要操作步骤流程图;图2是本申请实施例的语义确定方法一具体模型实施流程示意图;
图3是本申请实施例的语义确定方法涉及的孪生网络模型的一具体实现流程示意图;图4是本申请实施例的语义确定方法中从向量库中确定与语句c的特征向量相似度最高的相似向量的具体操作步骤流程图;图5是本申请实施例的语义确定方法涉及的孪生网络模型的一整体实现流程示意图;图6是本申请实施例的tensorflow_ranking模型实现流程图;图7是本申请实施例的一种电子设备结构示意图。
具体实施方式
15.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
16.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
17.在现有技术中,问答型机器人的技术路线为将句子映射为句子向量,通过计算句子向量的余弦相似度得到分值最高的句子,再将其对应的答案给用户。但是由于中文句子的语法结构的复杂多变,语义语境的多异性等因素,导致模型在线上的效果评估很差,给用户带来了不好的体验。
18.监于此,专家学者们提出了大量的解决方法,主要分为:现有技术1:结合bert中文预训练语言模型,将句子转换为空间向量的方法;现有技术2:结合albert中文预训练语言模型,将句子转化为空间向量的方法。
19.虽然,在学者们的不断研究过程中,对当前方法进行了一定程度的改进,但是依然存在一定的问题。其中,现有技术1,基于微调bert中文预训练语言模型这一方法基本代表了现如今提取句子向量最强大的方法,这种方法能够将一句话抽象为一定维度的句子向量,并且这一向量融合了句子的丰富语义特征,在模型的评估效果上的确比word2vec的效果好了很多,但是还是达不到上线的要求,并且由于bert参数量大,导致了在线上部署时搜索时间长的,基于这两点原因,bert还达不到工业生产的要求;而现有技术2基于albert中文预训练语言模型,在参数量上比bert减少了很多,但是效果上却没有多少变化,用albert只能够减少训练模型的显存等,但是在效果评估上和搜索的响应时长,并没有比bert有所改进。
20.而现如今的技术路线中,最强大的模型就是以albert为基础进行微调其预训练中文模型,但是在线上的效果评估上和搜索的响应时长方面表现很差,给用户带来了不好的用户体验。
21.本发明实施例的创新点是在albert的基础上,提出了多任务的孪生网络模型, 包括网络结构第一分支、网络结构第二分支、主分类任务、第一分支辅助任务和第二分支辅助任务等。其中网络结构第一分支和网络结构第二分支采用tiny albert共享权重的孪生方
法,并且添加了不同的层来进行方法研究和模型效果验证,在特定(例如:育学园app)的知识体系下,本发明实施例的技术方法比现在已经存在的如单albert方法的模型效果提高了很多并且在开放的数据评估中,测试的准确率提高了近20%,效果明显。
22.如图1所示,本发明实施例提供了一种语义确定方法,所述方法包括:步骤s101,获取待确定语义的语句c;在本发明实施例中,语句c是指输入的语句,例如实际应用场景为识别用户的语音,将用户语音翻译(语音转文字)得到语句c,以用于后续的识别过程。
23.步骤s102,将所述语句输入预设的孪生网络模型中,得到语句c的特征向量,其中所述孪生网络模型用于将语句向量化;步骤s103,从向量库中确定与语句c的特征向量相似度最高的相似向量;步骤s104,将与所述相似向量对应的标准语句确定为与所述语句对应的语义。
24.在本发明实施例中,本发明实施例的孪生网络模型包括网络结构第一分支、网络结构第二分支、主分类任务、第一分支辅助任务和第二分支辅助任务等。为了避免语句在同一模型中的过度拟合(这是本发明实施例所要克服的技术缺陷之一),因为本发明实施例采用孪生网络结构分支的方式,训练语句(即其中,网络结构第一分支与网络结构第二分支是在同一个孪生网络模型中形成的网络分支)。
25.在实际应用中,本发明实施例以tiny albert为基础,提出了多任务的孪生网络模型来训练句子向量;如图2所示,以tiny albert 中文预训练模型为基础,搭建了孪生网络模型(即孪生的albert模型),这种训练能更好的捕捉句子之间的关系,生成更优质的句向量。孪生网络能够衡量两个输入的相似程度,将两个输入分别送入两个神经网络中,得到其在新空间的表示,最终根据loss function来计算它们之间的相似程度,孪生网络的一个特点就是共享底层权值w,子网共享权重意味着训练需要更少的参数,同时也意味着需要更少的数据并且不容易过拟合。
26.然后,接入池化层,采用globalaveragepooling1d(),对孪生网络输出的子向量进行进一步特征提取、压缩,得到特征维度为312维的特征向量u、v。下面开始以u、v为基础,采用多任务的形式,进一步训练模型。其中,在主分类任务中,因为u、v分别代表句子1和句子2的特征向量,此时两个句子是相互独立的,要想将模型训练的更充分,需要将句子1和句子2进行特征融合,本发明实施例采用的方式是u与v的绝对值来进行特征向量的融合处理(例如:将两个句子进行加减乘除运算);同时在辅任务(即第一分支辅助任务和第二分支辅助任务)中,对于辅任务,u和v分别为每一个辅任务的输入(即具体为句向量u输入到第一分支辅助任务,句向量v输入到第二分支辅助任务);下面分别介绍主分类任务和辅任务;在主分类任务中,句子1和句子2经过特征融合之后的特征向量变为即这三个融合后的特征向量作为全连接层的输入,特征向量的维度为936维,其中每一个特征向量为312维,以此类推,三个特征向量即936维;后面为了更充分的特征向量的信息进行提取,接入了units为512维的全连接层,激活函数使用selu激活函数,其中selu激活函数的计算公式为:
经过selu激活函数后使得样本分布自动归一化到均值为0,方差为1(自归一化,保证训练过程中梯度不会爆炸或者消失),从selu激活函数可以看出,在正半轴时,当方差过小的时候可以让它增大,防止了梯度消失,在负半轴时,当方差过大的时候可以让它减小,防止了梯度爆炸,这样selu激活函数就有一个不动点λ,而后验知识表明λ=1.0507700987时满足上述条件,网络深了以后每一层的输出都是均值为0,方差为1。
27.另外,在实际应用中为了防止训练模型过拟合,接入alphadropout层,实例性的,当比率为0.3时,每次训练时随机丢弃30%的神经元alphadropout 中0.3是调参的结构,alphadropout 没有固定的位置,具体设置可以根据实际情况而定,alphadropout是一种保持输入均值和方差不变的dropout层,该层的作用是通过缩放和平移使得在dropout时也保持数据的子规范性,其中,dropout是一种在深度学习环境中应用的正规化手段。它是这样运作的:在一次循环中我们先随机选择神经层中的一些单元并将其临时隐藏,然后再进行该次循环中神经网络的训练和优化过程。在下一次循环中,我们又将隐藏另外一些神经元,如此直至训练结束。在训练时,每个神经单元以概率p被保留;在测试阶段,每个神经单元都是存在的,权重参数w要乘以p,成为pw;接下来接入units为256维的全连接层,使用selu激活函数,再接入alphadropout层,比率为0.3。接下来接入units为128维的全连接层,激活函数为selu。再接入alphadropout层,比率为0.3。接下来接入units为64维的全连接层,激活函数为selu。再接入alphadropout层,比率为0.3。接下来接入units为32维的全连接层,激活函数为selu。随后再接入alphadropout层,比率为0.3。接下来接入units为16维的全连接层,激活函数为selu。再接入alphadropout层,比率为0.3。经过上面的这些层,保证每一层能够平稳地、充分地对上一层的向量进行特征提取,最后接入units为2维的全连接层,作为最终的输出,激活函数为softmax,softmax激活函数的特点是输出的值之和为1,公式为:最终的输出,激活函数为softmax,softmax激活函数的特点是输出的值之和为1,公式为:同理,在辅任务中,输出的u、v维度是312维,即每个句子向量的维度时312维,采用全局池化后,接入全连接层,激活函数为softmax,得到最后的分类输出,为2662。
28.在实际应用中,主分类任务负责两个句子相似与否的分类任务,如果只有主分类任务,那么训练的轮数很快就能在测试集上达到很高的评估指标,例如某输入句子f1接近于1,但是实际上模型并没有训练好,即使在增加训练轮数也不能够使模型训练好,因为模型的评估指标接近为1了,从模型角度出发,模型自认为已经训练完成了;但是在实际的线上测试上,会因为模型的每一个句向量并没有训练充分,导致句向量表示的语义在训练不充分的条件下也能够区分出两个句子是相似还是不相似,最终泛化能力非常差,所以本发明实施例采用的技术方案在网络结构分支上添加上了辅任务,这样就能够有效的避免每一个句子的句向量训练不充分的现象,辅任务在主分类任务的运行过程中,还需要识别出每一个辅任务的分类,这样三个任务通过自定义的loss的设计,通过梯度的方向传播,就能够有效的学习到每一个句子的丰富语义,使每一个句子的句向量表示更合理,泛化能力更强,从而使模型的效果更优,因此说本发明实施例采用的上述技术方案泛化能力更强。
29.在孪生网络模型中,还有最重要的一步,即损失函数的设计,在三个任务(即主分类任务(简称主任务)、第一分支辅助任务和第二分支辅助任务)的最后一层(详见图2),接入了本发明实施例自定义的损失函数层。
30.之前(即现有技术中),做分类问题时,效果比较理想的是用交叉熵作为损失函数loss。然而这种现有技术做法也有不少缺点,其中之一就是分类过于绝对,哪怕输入噪音,分类的结果也几乎是非1即0,这通常会导致拟合的风险,还会使得我们在实际应用中没法很好的确定置信区间、设置阈值。因此有很多时候我们也会想办法使得分类不能过于拟合,而修改loss也是手段之一。如果不修改loss,我们就是使用交叉熵去拟合一个one hot的分布。交叉熵的公式为:比如输出为[,,],目标为[1,0,0],那么,只要已经是[,,]的最大值,那么我们总可以“变本加厉”的通过增大训练参数,使得,,增加足够大的比例(等价地,即增大向量的模长),从而足够接近1(等价地,loss足够接近0)。这就是通常softmax函数拟合严重的缘由;所以分析上述技术内容可知,只要盲目增大模长,就可以降低loss。因此为了使得分类不至于太自信,一个方案就是不要单纯地去拟合one hot分布,分一定比例去拟合一下均匀分布,所以经过本发明实施例的发明人的大量实验表明,可以将loss改为如下内容(即设计网络结构第一分支和网络结构第二分支、主分类任务(简称主任务)、第一分支辅助任务和第二分支辅助任务的损失函数为自定义损失,上述损失函数的公式为):;其中,为孪生网络模型输出,i=1为第一分支辅助任务输出,i=2为主分类任务输出,i=3为第二分支辅助任务输出,,为孪生网络模型超参数, 为孪生网络模型权重矩阵, ,这样,盲目地增大比例使得接近于1,就不再是最优解了,从而可以缓解softmax过于自信的情况,在测试整体效果中,模型的准确率也较理想;因此说,结合本发明实施例的具体技术方案,本发明采用的模型(即网络结构第一分支和网络结构第二分支)其优化了损失函数为自定义损失,通过该损失函数的设计可以确保网络结构第一分支、网络结构第二分支(统称孪生网络)的准确性。
[0031]
需要说明的是,主分类任务(简称主任务)、第一分支辅助任务和第二分支辅助任务的损失函数这三个的损失函数都是一样的,三个损失是用来进行区分的,统计一个总体的损即可。
[0032]
孪生网络的loss(如图2中的loss即为损失函数)设计好了,但三个任务,不同任务的权重对结果会产生较大影响,不好的权重设置可能会使得结果很差。因此在实际应用中
采用同方差不确定性作为多任务的不确定性,因此通过softmax函数来压缩模型输出,并从产生的概率向量中抽取样本,计算公式为:;构造多任务的最大似然函数为:其中系数是通过模型自动学习得到的,决定了离散程度的平坦程度。和分布的不确定性有关,其对数似然函数可以写成:==由上面推导可知:,,。
[0033]
对数似然函数整理后为: 其中,为孪生网络模型输出,i=1为第一分支辅助任务输出,i=2为主分类任务输出,i=3为第二分支辅助任务输出, , 为孪生网络模型超参数, 为孪生网络模型权重矩阵,,上面即为孪生网络的整体计算过程,在训练集和测试集上,模型的评估指标准确率和句子f1分别为0.99、0.99和1、0.99。
[0034]
通过本发明实施例提供的孪生网络模型对句子向量进行训练,下面通过globalaveragepooling1d()层提取句子向量,将提取的句子向量插入milvus库(向量库,向量库是一款开源的、针对海量特征向量的相似性搜索引擎。基于异构众核计算框架设计,成本更低,性能更好。在有限的计算资源下,十亿向量搜索仅毫秒响应)中:操作步骤如下:步骤100:首先对知识点中的标准问和相似问进行输出处理,去重之后存入数据库中。
[0035]
步骤200:然后调用孪生网络模型,用globalaveragepooling1d()层对知识库中的句子向量进行预测,此时每一个句子向量的维度为312维。
[0036]
最后将提取出的每一个句子向量插入milvus库中。milvus库是一个向量搜索引擎,亿万级的数据搜索在几毫秒内即可完成。插入milvus库的语句为:milvus.insert(collection_name=collection_name,records=records, ids=ids),其中,collection_name为插入milvus库的名字,records为向量,ids为向量对应的编号。这一步骤为后续搜索milvus库,进行句子向量的相似度计算,返回知识库中和用户问题最相似的句子向量做准备。
[0037]
至此,完成孪生网络模型模型的建立,针对于所述预设条件包括向量差值处于预设差值范围内的特定实际情况;如图4所示,基于步骤s102,所述从向量库中确定与语句c的特征向量相似度最高的相似向量,包括:步骤s201,通过余弦相似度公式,计算出每个句子向量与所述语句向量的相似度,其中句子向量存储在所述向量库中;步骤s202,若句子向量与所述语句c的特征向量的相似度大于预设阈值,则确定出所述句子向量与所述语句c的特征向量之间的向量差值处于预设差值范围内;步骤s203,若句子向量与所述语句向量的相似度小于预设阈值,则确定出所述句子向量与所述语句向量之间的向量差值未处于预设差值范围内。
[0038]
步骤s204,从多个处于预设差值范围内的句子向量中确定与语句向量相似度最高的相似向量。
[0039]
计算所述第一孪生网络结构对应的第二孪生网络结构中每个句子向量与所述语句向量之间的向量差值是否处于预设差值范围内在实际识别用户的问题并答复过程中,通过孪生网络模型的实现流程,如图5所示:针对用户的问题,经过训练好的孪生网络,用globalaveragepooling1d()层对句子进行向量提取(句子1globalaveragepooling1d层的句向量,简称u);再用u与milvus库中的每一个向量计算余弦相似度,计算公式为:这样依次和milvus库中的向量进行计算,返回分值最高的top10。经过验证证明,本发明实施例采用的问答型机器人中的知识去重后共10万+条,用milvus库进行向量搜索,所需时间为毫秒级的,只需要一条语句,milvus.search(collection_name=collection_name, query_records=query_records, top_k=10, params=search_param),其中,search_param为milvus库的配置参数,query_records为向量库中的每一个向量,top_k是返回前10分得分最高的句子,collection_name为milvus库的名字(提取句向量后,在与milvus库中的知识逐一进行相似度计算,本发明实施例采用的计算相似方法为余弦相似度,返回和用户问题相似的top10)。具体参见图3,句子1globalaveragepooling1d层的句向量,简称u);再用u与milvus库中的每一个向量计算余弦相似度,计算公式如上述公式。如图3所示,cosine

sim(u,v)即为计算余弦相似度,其中cosine译为余弦相似度计算。
[0040]
另外,在实际应用中网络结构第一分支的训练过程,主要包括将获取的多个语句以及每个语句对应的标签输入网络结构第一分支进行训练,以训练出每个语句所属的隐含标签以及句向量,其中,隐含标签用于机器对该语句进行分类的标签,句向量可包括多个维度。在步骤s102,计算网络结构第一分支对应的网络结构第二分支中每个句子向量与语句
的句向量之间的向量差值是否处于预设差值范围内之前,还包括:从预先训练好的网络结构第一分支中提取出语句对应的隐含标签;从网络结构第一分支对应的网络结构第二分支中,筛选出属于隐含标签范围内的机器语句的步骤。
[0041]
通常句子1标签(s1_label),句子2标签(s2_label)的关系不好表达,通过句子1(s1),句子1标签(s1_label),训练句子所属的隐含标签s1_label_h1,通过句子2(s2),句子2标签(s2_label)训练句子所属的隐含标签s1_label_h2。这样做的目的是通过隐含标签具有可比性,建立相应的辅助任务参与到模型的收敛中,进而提高模型的准确性(很显然,本发明实施例采用的上述隐含标签以及利用隐含标签进行进一步的技术操作设计相对于现有技术具有很大的技术差异);经过验证证明本发明实施例采用的技术方案就提取出语句对应的隐含标签以及从网络结构第一分支对应的网络结构第二分支中,筛选出属于隐含标签范围内的机器语句所实施的技术操作,相对于常规现有技术而言属于新的设计。
[0042]
具体地,通过之前的测试,对于用户问题,通过milvus库返回的top1作为用户的返回结果,准确率比top10低了10几个百分点,所以本发明实施例从milvus库中搜索出top10,再对top10进行精排;如图6所示,用到精排的处理方法,即采用tensorflow_ranking(暂时定为精排模型,所述精排模型为tensorflow_ranking模型);tensorflow_ranking是google最新开发出来的架构,在精排模型中效果很好。本发明实施例结合tensorflow_ranking,构建了数据集,在数据增强方面做了很多努力。数据集构造方法为,针对问答型机器人知识点(标准问),去重之后,将每一个知识点分别通过孪生网络模型,提取出top100,在top100中,如果存在和知识相似的句子,其标签值标注为2,在从知识库的相似问中,将标签为2的去掉,将其余的相似问(假设有a b c d e f 几个相似问,假设a b为标注为2的相似问,将标注为2的相似问去掉,即将a b去掉,其余的相似问为 c d e f),标签标注为1,再从top100,选择后8个,标签标注为0。然后经过tensorflow_ranking模型对数据进行训练,在对返回的top10进行重排,返回top1,在和问答库进行匹配,将top1对应的答案返回给用户。
[0043]
而上述示例中去重的必要性,一般体现在对训练文本进行数据增加之后,在本发明实施例中提供了一种数据增强的方法,所述方法如下:本发明实施例的问答型机器人(即育学园app )下共有知识点标准问1.9万条,标准问对应的相似问为8万+条,标准问和相似问总计超过10万+条,例如:标准问:我家宝宝真好看,相似问为:宝宝真好看||我家宝宝真漂亮||我家宝宝真可爱,这是数据库中的数据,这样的数据量对于孪生的albert多任务模型是远远不足的,然而本发明实施例在不改变样本分布的前提下,采用笛卡尔积的形式,由10万+条的数据,生成了200万条的数据,生成后的样本格式为句子1,句子2,句子1和句子2的标签(或称组合标签),句子1的标签,句子2的标签,其中句子1和句子2的标签为0和1,分别代表两个句子相似与否,即组合标签为1表示相似,组合标签为0代表两句子不相似;句子1的标签和句子2的标签为知识下面的三级标签,示例性的,“育儿/生长发育/生长/早产儿生长
ꢀ”
这为标签,其中“育儿”为一级标签,“生长”为三级标签,标签共有2662个,这些数据就构成了训练模型的数据集,同时,为了剔除冗余数据,有必要对数据集中的相似数据进行去重。另外,三级标签中,第三级前面的两级相同即可,在另一种可能中,为了确保匹配的精确度也可以在三级标签完全相同的情况下确定两句子相似。
[0044]
具体地,对应实际应用中,问题为:“宝宝午睡时长”通过milvus返回来的top100为
[“宝宝午睡多少合适呢”,
ꢀ“
我家宝宝午睡需要睡多少呢
”ꢀ
,
ꢀ……ꢀ
,
ꢀ“
宝宝喜欢吃糖”,
ꢀ“
宝宝总爱哭”],相似问为[
ꢀ“
宝宝午睡多少合适呢”,
ꢀ“
我家宝宝午睡需要睡多少呢”,
ꢀ“
宝宝午睡多少对身体最合理呢”], 这样label=2的为[“宝宝午睡多少合适呢”,
ꢀ“
我家宝宝午睡需要睡多少呢”], label=1的为[“宝宝午睡多少对身体最合理呢”], label=0的为[“宝宝喜欢吃糖”,
ꢀ“
宝宝总爱哭”],补充一下,通过milvus搜索后,n值越大,代表和问题相关度越低。
[0045]
在实际应用中,后续如果训练集中扩充的数据词条更广,可能涉及有三级以上的标签设计,具体设置可以根据实际情况而定,本发明实施例对此不作具体限定。
[0046]
综上,发明人在研究过程中发现传统的方法采用albert模型,将句子输入模型中再进行特征提取,这样每一个句子计算出来的embedding,同时包含了句子对的信息,不能将两个句子很好的区分开来;而本发明采用孪生网络,是将句子对,分别输入每一个网络中,保证了每一个句子的独立性,这样从模型中提出来的embedding也是相互独立的,之后又采用了模型融合的方法将彼此的信息融合到一起,这样做的好处就是即保证了每一个句子的独立性,又包含了句子对的融合信息,模型的计算输出效果也会更好。
[0047]
而本发明采用了多任务(主分类任务+辅任务)的方式进行建模,这对模型而言相当于增加了学习的难度,需要更长的时间、更复杂的网络才能学习好每一个句子的embedding信息,模型训练好后,学出来的每一个句子信息泛化能力更强,也能增强模型的鲁棒性。例如,如果只有一个相似任务,对于s1和s2两个句子,学出来的embedding只是相似和不相似,对于模型而言,只要保证学习出来两个句子是不是相似即可,而s1和s2分别属于哪一个标签,模型是不关心的,在每一个句子训练不充分的情况下,就能够实现句子对是不是相似的目标,而实际上每一个的embedding并没有很好的训练完成,这也导致模型的泛化能力不是很好。但是本发明实施例的多任务方法,在学习分析了两个句子是不是相似的同时,还学习到了每一个句子属于标签类别,这样每一个句子的embedding包含了句子信息就更丰富,模型的泛化能力也会更强。
[0048]
本发明实施例的技术方案较为核心技术之一就是:确保每一个句子计算出来的embedding,是相互独立的,同时确保其包含了更为丰富的句子信息,显然,本发明实施例采用的上述语义确定方法实现了上述技术目的。
[0049]
在本发明的又一实施例中,还提供一种语义确定装置,包括:获取模块,用于获取待确定语义的语句c;提取模块,用于将所述语句输入预设的孪生网络模型中,得到语句c的特征向量,其中所述孪生网络模型用于将语句向量化;计算模块,用于从向量库中确定与语句c的特征向量相似度最高的相似向量;排序模块,用于将与所述相似向量对应的标准语句确定为与所述语句对应的语义。
[0050]
在本发明的又一实施例中,还提供一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现方法实施例所述的语义确定方法。
[0051]
本发明实施例提供的电子设备,处理器通过获取待确定语义的语句;从预先处理好的语料中训练多任务的孪生网络模型,通过训练好的模型获得对应语料的所有句向量。从训练好的模型中提取出所述语句对应的句向量,计算所有句向量与所述语句向量之间的向量差值是否处于预设差值范围内,将符合预设条件的多个句向量的相似度进行排序,将相似度最高的句向量作为所述语句对应匹配的语义,进而匹配到具体的语句,采用这种方法避免了使用单一任务造成的欠拟合,以至输出结果的精确度低的问题。
[0052]
上述电子设备提到的通信总线1140可以是串行外设接口总线(serial peripheral interface,简称spi)或者集成电路总线(inter

integratedcircuit,简称icc)等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0053]
通信接口1120用于上述电子设备与其他设备之间的通信。存储器1130可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non

volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0054]
上述的处理器1110可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field

programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0055]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1