一种基于深度分层编码的智能语义匹配方法和装置
技术领域
本发明涉及人工智能、自然语言处理技术领域,具体地说是一种基于深度分层编码的智能语义匹配方法和装置。
背景技术
近年来,句子的语义匹配方法在自然语言处理领域越来越受重视。究其原因,众多自然语言处理任务以句子的语义匹配为基础,在一定程度上可以视为句子语义匹配任务的拓展。例如,“自动问答”任务可以通过计算“问题”与“候选答案”的匹配度进行处理;“信息检索”任务可以视为是在计算“查询句子”与“匹配文档”的匹配度。正因如此,句子的语义匹配在自然语言处理领域中起着至关重要的作用。衡量句子之间内在的语义匹配程度是一项非常有挑战性的工作,到目前为止,现有技术仍没有实质性地解决这一问题。
通过分析和研究,不难发现现有技术中大多都是以卷积神经网络模型或循环神经网络模型为基础的,而这两种模型自身特点和局限性导致其无法彻底解决这一问题。其中,卷积神经网络虽然擅长用不同的核函数捕捉和表示局部特征,但它忽略了文本中的序列信息,不适用于处理序列信息任务;循环神经网络虽然可以处理序列信息,但是它们大多只生成最终的向量表示而不考虑句子的层次关系,这可能会丢失一些重要的中间编码信息。而对于句子的语义匹配任务,句子中的词语顺序和句子的层次信息都是至关重要的,因此,单纯使用基于卷积神经网络模型或循环神经网络模型的方法几乎无法获得令人满意的结果。
故如何捕获更多的语义上下文信息和句子间的交互信息,并实现一种更加有效的语义匹配方式,以提高对句子进行智能语义匹配的准确率,是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种基于深度分层编码的智能语义匹配方法和装置,来达到捕获更多的语义上下文信息和句子间的交互信息,并通过实现一种新的分层特征交互匹配机制,最终达到对句子进行智能语义匹配的目的。
本发明的技术任务是按以下方式实现的,一种基于深度分层编码的智能语义匹配方法,该方法是通过构建并训练由嵌入层、深度分层编码表示层、分层特征交互匹配层和预测层组成的句子匹配模型,以此实现对句子的深度分层编码表示,获取更多的语义上下文信息和句子间的交互信息,同时通过实现一种新的分层特征交互匹配机制,以达到对句子进行智能语义匹配的目标;具体如下:
嵌入层对输入的句子进行嵌入操作,并将结果传递给深度分层编码表示层;
深度分层编码表示层对由嵌入操作获取的结果进行编码操作得到句子的中间编码表示特征与句子的最终编码表示特征两种不同的特征编码表示;
分层特征交互匹配层对句子的中间编码表示特征与句子的最终编码表示特征分别进行匹配处理,得到匹配表征向量;
在预测层使用一个全连接层对匹配表征向量进行一次映射,然后使用sigmoid层将得到的结果映射为指定区间中的一个值作为匹配度数值,根据匹配度数值与设定阀值的相对大小判定输入的句子对的语义是否匹配。
作为优选,所述嵌入层用于构建字符映射转换表、构建输入层及构建字向量映射层;
其中,构建字符映射转换表:映射规则为:以数字1为起始,随后按照每个字符被录入字符表的顺序依次递增排序,从而形成所需的字符映射转换表;其中,字符表通过句子匹配知识库构建;其后,本发明再使用Word2Vec训练字向量模型,得到各字符的字向量矩阵embedding_matrix;
构建输入层:输入层包括两个输入,对输入句子sentence1、sentence2,将其形式化为:(sentence1,sentence2);对于输入句子中的每个字按照字符映射表转化为相应的数字表示;
构建字向量映射层:加载构建字符映射转换表步骤中训练所得的字向量矩阵权重来初始化当前层的权重参数;针对输入句子sentence1和sentence2,得到其相应句子向量sentence1_emd、sentence2_emd;句子匹配知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式。
更优地,所述深度分层编码表示层的构建过程具体如下:
句子的中间编码表示特征:使用一个双向长短期记忆网络BiLSTM,对经过字向量映射层处理后的句子进行两次编码处理,再对两次编码获得的语义特征进行联接操作而得到,公式如下:
其中,i表示相应字向量在句子中的相对位置;p
i为句子中每个字的相应向量表示;
为经过BiLSTM第一次编码后的句子向量;
表示经过BiLSTM第二次编码后的句子向量;
为
向量联接的结果,即该句子的中间编码表示特征;
句子的最终编码表示特征:使用一个卷积神经网络CNN对于输出的中间编码表示特征继续进行编码处理,其输出则作为句子的最终编码表示特征,公式如下:
更优地,所述分层特征交互匹配层用于构建分层特征交互匹配机制;其中,构建分层特征交互匹配机制是经过深度分层编码表示层处理后分别得到sentence1、sentence2的中间编码表示特征的向量表示
和最终编码表示特征的向量表示
根据得到的这两类向量从不同的角度进行匹配,从而生成匹配表征向量;具体如下:
其中,
表示中间编码表示特征向量
逐元素之间求差取得的绝对值;
表示最终编码表示特征向量
逐元素之间求差取得的绝对值;
表示
与
逐元素求积取得的值;
其中,
分别为对应句子向量的平均向量表示;
表示中间编码表示特征向量
分别与其平均值作差后再进行逐元素之间求差取得的绝对值;
表示最终编码表示特征向量
分别与其平均值作差后再进行逐元素之间求差取得的绝对值;
表示
与
逐元素求积取得的值;
将计算得出的
和
两个结果进行连接,作为句子对匹配程度的全面表征,公式如下:
更优地,所述预测层构建过程如下:
将构建分层特征交互匹配机制过程中得到的匹配表征向量
输入预测层,以判断句子对的语义是否匹配;在预测层中,匹配表征向量
经过全连接层处理,再由Sigmoid函数层进行处理;为了防止发生过拟合的情况,在全连接层设置dropout为0.5,sigmoid函数对经过dropout处理后的全连接层的输出进行匹配度计算,得到处于[0,1]之间的匹配度表示y
pred,最终通过与设立的阈值(0.5)进行比较来判别句子对的语义是否匹配,即y
pred>0.5时,判定为语义匹配,y
pred<0.5时,判定为语义不匹配。
更优地,所述句子匹配知识库构建具体如下:
使用爬虫获取原始数据:在网上公共问答平台爬取问题集,得到原始相似句子知识库;或者使用网上公开的句子匹配数据集,作为原始相似句子知识库;
预处理原始数据:预处理原始相似句子知识库中的相似句子对,对每个句子进行断字操作或分词操作,得到句子匹配知识库;
所述句子匹配模型通过使用训练数据集进行训练而得到,训练数据集的构建过程如下:
构建训练正例:将句子与句子所对应的标准句子进行组合,构建正例,形式化为:(sentence1,sentence2,1);其中,sentence1表示句子1;sentence2表示句子2;1表示句子1和句子2的语义相匹配,是正例;
构建训练负例:选中一个句子s1,再从句子匹配知识库中随机选择一个与句子s1不匹配的句子s2,将s1与s2进行组合,构建负例,形式化为:(sentence1,sentence2,0);其中,sentence1表示句子s1;sentence2表示句子s2;0表示句子s1和句子s2的语义不匹配,是负例;
构建训练数据集:将经过构建训练正例和构建训练负例操作后所获得的全部的正例样本句子对和负例样本句子对进行组合,并打乱其顺序,构建最终的训练数据集;无论正例数据还是负例数据均包含三个维度,即sentence1、sentence2、0或1;
所述句子匹配模型构建完成后通过训练数据集进行句子匹配模型的训练优化,具体如下:
构建损失函数:由预测层构建过程可知,ypred是经过分层特征交互匹配机制处理后得到的匹配度计算结果,ytrue是两个句子语义是否匹配的真实标签,其取值仅限于0或1,本模型采用均方误差作为损失函数,公式如下:
优化训练模型:使用RMSprop作为本模型的优化算法,除了其学习率设置为0.001外,RMSprop的剩余超参数均选择Keras中的默认值设置;在训练数据集上,对句子匹配模型进行优化训练。
一种基于深度分层编码的智能语义匹配装置,该装置包括,
句子匹配知识库构建单元,用于使用爬虫程序,在网上公共问答平台爬取问题集,得到原始相似句子知识库,再对原始相似句子知识库进行断字或分词的预处理,从而构建用于模型训练的句子匹配知识库;
训练数据集生成单元,用于根据句子匹配知识库中的句子来构建训练正例数据和训练负例数据,并且基于正例数据与负例数据来构建最终的训练数据集;
句子匹配模型构建单元,用于通过嵌入层构建字符映射转换表、输入层、及字向量映射层、构建深度分层编码表示层、通过分层特征交互匹配层构建句子分层特征交互匹配机制和构建预测层;句子匹配模型构建单元包括,
字符映射转换表构建子单元,用于对句子匹配知识库中的每个句子按字符进行切分,并将每个字符依次存入一个列表中,从而得到一个字符表,随后以数字1为起始,按照每个字符被录入字符表的顺序依次递增排序,从而形成所需要的字符映射转换表;其中,通过构建字符映射转换表,训练数据集中的每个字符均被映射为唯一的数字标识;其后,本发明再使用Word2Vec训练字向量模型,得到各字符的字向量矩阵embedding_matrix;
输入层构建子单元,用于对输入句子sentence1与sentence2,将其形式化为:(sentence1、sentence2);
字向量映射层构建子单元,用于加载字符映射转换表构建子单元训练所得的字向量矩阵权重来初始化当前层的权重参数;针对输入句子sentence1和sentence2,得到其相应句子向量sentence1_emd、sentence2_emd。句子匹配知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式;
深度分层编码表示层子单元,用于对输入的数据进行编码和语义提取;其中双向长短期记忆网络对句子进行两次编码操作,再对两次编码获得的语义特征进行联接操作,从而得到句子的中间编码表示特征向量;卷积神经网络对于中间编码表示特征向量继续进行一次编码操作,其输出作为句子的最终编码表示特征向量;
分层特征交互匹配机制构建子单元,用于将句子对中的每个句子在不同层上获得的编码表示特征分别进行交互匹配,生成最终的匹配表征向量;
预测层子单元,用于对匹配表征向量进行处理,从而得出一个匹配度数值,将其与设立的阈值进行比较,判断句子对的语义是否匹配;
句子匹配模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练。
作为优选,所述句子匹配知识库构建单元包括,
数据爬取子单元,用于在网上公共问答平台爬取问题集,构建原始相似句子知识库;
爬取数据处理子单元,用于将原始相似句子知识库中的句子进行断字处理或分词处理,从而构建用于模型训练的句子匹配知识库;
所述训练数据集生成单元包括,
训练正例数据构建子单元,用于将句子匹配知识库中语义匹配的句子进行组合,并对其添加匹配标签1,构建为训练正例数据;
训练负例数据构建子单元,用于从句子匹配知识库中选取一个句子s1,再从句子匹配知识库中随机选择一个与句子s1语义不匹配的句子s2,将s1与s2进行组合,并对其添加匹配标签0,构建为训练负例数据;
训练数据集构建子单元,用于将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,从而构建最终的训练数据集;
所述句子匹配模型训练单元包括,
损失函数构建子单元,用于计算句子1和句子2间的语义是否匹配的误差;
优化句子匹配知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式子单元,用于训练并调整模型训练中的参数,从而减小句子匹配模型训练过程中预测的句子1与句子2间语义匹配程度与真实匹配标签之间的误差;
一种存储介质,其中存储有多条指令,所述指令有处理器加载,执行上述的基于深度分层编码的智能语义匹配方法的步骤。
一种电子设备,所述电子设备包括:
上述的存储介质;以及
处理器,用于执行所述存储介质中的指令。
本发明的基于深度分层编码的智能语义匹配方法和装置具有以下优点:
(一)本发明实现了对句子进行深度分层编码表示,可以捕获更多的语义上下文信息和句子间的交互信息;同时实现了一种新的分层特征交互匹配机制,可以进一步增强句子间的互动机制,有效提高模型预测句子间内在语义匹配度的准确性;
(二)本发明能够捕捉和利用句子中不同层次的语义特征和句子间的交互信息,对句子的匹配进行更加合理地判断;
(三)本发明能够利用深度分层编码表示层生成句子的中间编码表示特征和最终编码表示特征,有助于捕捉句子中的深层语义特征,从而有效提高句子语义表征的全面性和准确性;
(四)本发明提出的分层特征交互匹配机制可以对不同层次上的句子语义特征分别进行匹配度计算,从而提高句子语义匹配的准确性;
(五)本发明能够从多角度对句子所包含的语义信息进行提取,从而得到深度分层编码表示层生成的中间编码表示特征和最终编码表示特征,然后结合分层特征交互匹配机制对其进行处理,即针对句子对的中间编码表示特征计算一个角度的表征向量,再针对句子对的最终编码表示特征计算一个角度的表征向量,随后将得到的两个向量进行逐元素相乘,最后得到句子对的完整匹配表征向量,这样可以有效提高句子语义匹配的准确性,同时也可有效提高模型预测句子语义匹配度的准确率;
(六)本发明能够将句子表示为一种紧密的潜在表征,该表征蕴含了丰富的语义信息。
附图说明
下面结合附图对本发明进一步说明。
图1为基于深度分层编码的智能语义匹配方法的流程框图;
图2为构建句子匹配知识库的流程框图;
图3为构建训练数据集的流程框图;
图4为构建句子匹配模型的流程框图;
图5为训练句子匹配模型的流程框图;
图6为基于深度分层编码表示层的智能语义匹配装置的结构框图;
图7为不同的字向量维度对模型效果的影响对比示意图;
图8为构建深度分层编码表示层流程框图;
图9为基于深度分层编码的智能语义匹配模型的框架示意图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种基于深度分层编码的智能语义匹配方法和装置作以下详细地说明。
实施例1:
如附图9所示,本发明的基于深度分层编码的智能语义匹配方法,该方法是通过构建并训练由嵌入层、深度分层编码表示层、分层特征交互匹配层和预测层组成的句子匹配模型实现对句子的深度分层编码表示,获取更多的语义上下文信息和句子间的交互信息,同时通过实现一种新的分层特征交互匹配机制,以达到对句子进行智能语义匹配的目标;具体如下:
(1)、嵌入层对输入的句子进行嵌入操作,并将结果传递给深度分层编码表示层;
(2)、深度分层编码表示层对由嵌入操作获取的结果进行编码操作,得到句子的中间编码表示特征与句子的最终编码表示特征两种不同的特征编码表示;
(3)、分层特征交互匹配层对句子的中间编码表示特征与句子的最终编码表示特征分别进行匹配处理,得到匹配表征向量;
(4)、在预测层使用一个全连接层对匹配表征向量进行一次映射,然后使用sigmoid层将得到的结果映射为指定区间中的一个值作为匹配度数值,根据匹配度数值与设定阀值的相对大小判定输入的句子对间的语义是否匹配。
实施例2:
如附图1所示,本发明的基于深度分层编码的智能语义匹配方法,具体步骤如下:
S1、构建句子匹配知识库,如附图2所示,具体步骤如下:
S101、使用爬虫获取原始数据:编写爬虫程序,在网上公共问答平台爬取问题集,得到原始相似句子知识库;或者使用网上公开的句子匹配数据集,作为原始相似句子知识库。
互联网上的公共问答分享平台中有着大量的问答数据及相似问题的推荐,这些都是面向大众开放的。因此我们可以根据问答平台的特点,设计相应的爬虫程序,以此来获取语义相似的问题集合,从而构建原始相似句子知识库。
举例:银行问答平台中的相似句子对示例,如下表:
句子1 |
还款期限可以延后一天吗? |
句子2 |
是否可以申请延期一天还款? |
或者,使用网上公开的句子匹配数据集,作为原始知识库。比如BQ数据集【J.Chen,Q.Chen,X.Liu,H.Yang,D.Lu,B.Tang,The bq corpus:A large-scale domain-specificchinese corpus for sentence semantic equivalence identification,EMNLP2018.】,该数据集包含网上银行服务日志中的120000个问题对,是一种专门用于句子语义匹配任务的中文数据集。BQ数据集是目前银行领域最大的、经人工注释过的中文数据集,对中文问题语义匹配研究很有用,而且该数据集是公开可用的。
S102、预处理原始数据:预处理原始相似句子知识库中的相似句子对,对每个句子进行断字操作或分词操作,得到句子匹配知识库。
对步骤S101中获得的相似句子对进行预处理,得到句子匹配知识库。以断字操作为例进行说明,即以中文里的每个字作为基本单位,对每条数据进行断字操作:每个汉字之间用空格进行切分,并且保留每条数据中包括数字、标点以及特殊字符在内的所有内容。在此步骤中,为了避免语义信息的丢失,保留了句子中的所有停用词。
举例:以步骤S101中展示的句子1“还款期限可以延后一天吗?”为例,对其进行断字处理后得到“还款期限可以延后一天吗?”。
若想以分词的方式对句子进行处理,可借助jieba分词工具来处理句子,分词时选择默认模式(精准模式)即可。
举例:仍以步骤S101中展示的句子1“还款期限可以延后一天吗?”为例,使用jieba分词工具对其进行分词处理后得到:
“还款期限可以延后一天吗?”。
由于经过断字处理和分词处理后得到的结果在后续各个步骤中的操作是完全一致的,故在后文中不再分别进行说明。
S2、构建句子匹配模型的训练数据集:对于每一个句子,在句子匹配知识库中都会有一个与之对应的标准句子,此句子可与其组合用来构建训练正例;其他不匹配的句子可自由组合用来构建训练负例;用户可根据句子匹配知识库大小来设定负例的数量,从而构建训练数据集;如附图3所示,具体步骤如下:
S201、构建训练正例:将句子与其所对应的标准句子进行组合,构建正例,可形式化为:(sentence1,sentence2,1);其中,sentence1表示句子1,sentence2表示句子2,1表示句子1和句子2的语义相匹配,是正例。
举例:对步骤S101中展示的句子1和句子2,经过步骤S102断字处理后,构建的正例为:
(“还款期限可以延后一天吗?”,“是否可以申请延期一天还款?”,1)。
S202、构建训练负例:选中一个句子s1,再从句子匹配知识库中随机选择一个与句子s1不匹配的句子s2,将s1与s2进行组合,构建负例,形式化为:(sentence1,sentence2,0);其中,sentence1表示句子s1;sentence2表示句子s2;0表示句子s1和句子s2的语义不匹配,是负例;
举例:根据步骤S201中的所展示的示例数据,仍然使用原问句作为s1,再从句子匹配知识库中随机选择一个与句子s1语义不匹配的句子s2,将s1与s2进行组合,构建的负例为:
(“还款期限可以延后一天吗?”,“为什么银行客户端登陆出现网络错误?”,0)。
S203、构建训练数据集:将经过步骤S201和步骤S202操作后所获得的全部的正例样本句子对和负例样本句子对进行组合,并打乱其顺序,以此构建最终的训练数据集。无论正例数据还是负例数据,它们都包含了三个维度,即sentence1、sentence2、0或1。
S3、构建句子匹配模型:主要操作为构建字符映射转换表、构建输入层、构建字向量映射层、构建句子的深度分层编码表示层、构建分层特征交互匹配机制、构建预测层。其中,构建字符映射转换表、构建输入层、构建字向量映射层的三个子步骤对应附图9中的嵌入层,构建句子的深度分层编码表示层的子步骤对应附图9中的深度分层编码表示层,构建分层特征交互匹配机制的子步骤对应附图9中的分层特征交互匹配层,构建预测层子步骤对应附图9中的预测层;如附图4所示,具体步骤如下:
S301、构建字符映射转换表:字符表是通过步骤S102处理后得到的句子匹配知识库来构建的。字符表构建完成后,表中每个字符均被映射为唯一的数字标识,其映射规则为:以数字1为起始,随后按照每个字符被录入字符表的顺序依次递增排序,从而形成所需要的字符映射转换表。
举例:以步骤S102断字后的内容,“还款期限可以延后一天吗?”,构建字符表及字符映射转换表如下:
字符 |
还 |
款 |
期 |
限 |
可 |
以 |
延 |
后 |
一 |
映射 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
字符 |
天 |
吗 |
? |
|
|
|
|
|
|
映射 |
10 |
11 |
12 |
|
|
|
|
|
|
其后,本发明再使用Word2Vec训练字向量模型,得到各字符的字向量矩阵embedding_matrix。
举例说明:在Keras中,对于上面描述的代码实现如下所示:
其中,w2v_corpus为训练语料,即句子匹配知识库中的所有数据;embedding_dim为字向量维度,采用不同的embedding_dim所达到的效果是有一定差距的,如附图7所示,在其他参数固定时,分别采用不同的embedding_dim所带来的不同效果;当embedding_dim取400时,Recall、F1-score、Accuracy均达到了相对最好的结果,而Precision在此时也保持在一个相对较高的水平,故本模型最终设置embedding_dim为400,word_set为词表。
S302、构建输入层:输入层中包括两个输入,对输入句子sentence1、sentence2,将其形式化为:(sentence1,sentence2)。
对于输入句子中的每个字而言,都按照在步骤S301中构建完成的字符映射转换表将其转化为相应的数字标识。
举例说明:使用步骤S201中展示的句子对作为样例,以此组成一条输入数据,其结果如下:
(“还款期限可以延后一天吗?”,“是否可以申请延期一天还款?”)
根据词表中的映射将上述的输入数据转换为数值表示(假定出现在句子2中但没有出现在句子1中的字的映射分别为“是”:13,“否”:14,“申”:15,“请”:16,“延”:17),结果如下:
(“1,2,3,4,5,6,7,8,9,10,11,12”,“13,14,5,6,15,16,17,3,9,10,1,2”)。
S303、构建字向量映射层:通过加载步骤S301中训练所得的字向量矩阵权重来初始化当前层的权重参数;针对输入句子sentence1和sentence2,得到其相应句子向量sentence1_emd、sentence2_emd。句子匹配知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式。
举例说明:在Keras中,对于上面描述的代码实现如下所示:
embedding_layer=Embedding(embedding_matrix.shape[0],emb_dim,weights=[embedding_matrix],input_length=input_dim,trainable=False)。
其中,embedding_matrix是步骤S301中训练所得的字向量矩阵权重,embedding_matrix.shape[0]是字向量矩阵的词汇表(词典)的大小,embedding_dim是输出的字向量的维度,input_length是输入序列的长度。
相应的句子sentence1和sentence2,经过Embedding层编码后得到相应的句子向量sentence1_emd、sentence2_emd。
这一层网络是句子对语义匹配模型的通用网络层,它实现了知识库中每一个字符对应的向量表示。本层对于句子sentence1与sentence2的处理是完全一样的,所以不再分别展开说明。
S304、构建句子的深度分层编码表示层:提出了一种新的句子编码表示方法,主要体现在句子的深度分层编码表示层中;如附图8所示,该层对一个句子进行处理后,可得到两种不同的语义特征表示,即句子匹配模型中间层输出的中间编码表示特征与输出层输出的最终编码表示特征。相比于现有的一些只能获得最终输出层上特征的方法,此模型可以有效防止句子在经过编码表示层处理时丢失重要的信息,从而捕获更多的语义特征,最终提高句子语义匹配的准确率。该句子表示模型针对经过步骤S303处理后的句子进行编码和语义提取,从而获得句子的中间编码表示特征和最终编码表示特征。此外,根据实践经验,本层的编码维度设置为300时,可获得最优结果;具体步骤如下:
S30401、句子的中间编码表示特征:使用一个双向长短期记忆网络BiLSTM,对经过字向量映射层处理后的句子进行两次编码处理后,再对两次编码获得的语义特征进行联接操作而得到的,公式如下:
其中,i表示相应字向量在句子中的相对位置;p
i为句子中每个字符的相应向量表示;
为经过BiLSTM第一次编码后的句子向量;
表示经过BiLSTM第二次编码后的句子向量;
为
向量联接的结果,即该句子的中间编码表示特征;
S30402、句子的最终编码表示特征:使用一个卷积神经网络CNN对于输出的中间编码表示特征继续进行编码处理,其输出则作为句子的最终编码表示特征,公式如下:
其中,
为经过CNN编码后的sentence1句子最终编码表示特征。
S305、构建分层特征交互匹配机制:经过步骤S304处理后分别得到sentence1、sentence2的中间编码表示特征的向量表示
和最终编码表示特征的向量表示
根据得到的这两类向量从不同的角度进行匹配,从而生成匹配表征向量;具体如下:
其中,
表示中间编码表示特征向量
逐元素之间求差取得的绝对值;
表示最终编码表示特征向量
逐元素之间求差取得的绝对值;
表示
与
逐元素求积取得的值;
为了能够捕获句子间的多角度交互信息,除了需要计算上述值,还需要使用另一方式进行同样的操作,计算
公式如下:
其中,
分别为对应句子向量的平均向量表示;
表示中间编码表示特征向量
分别与其平均值作差后再进行逐元素之间求差取得的绝对值;
表示最终编码表示特征向量
分别与其平均值作差后再进行逐元素之间求差取得的绝对值;
表示
与
逐元素求积取得的值;
将计算得出的
和
两个结果进行连接,作为句子对匹配程度的全面表征,公式如下:
其中,
表示最终生成的匹配表征向量;本发明采用分层特征交互匹配机制能够全面捕获句子对之间的多角度交互匹配特征。
S306、构建预测层:步骤S305所得到的匹配表征向量
输入预测层,以判断句子对的语义是否匹配;在预测层中,匹配表征向量
经过全连接层处理,再由Sigmoid函数层进行处理;为了防止发生过拟合的情况,在全连接层设置dropout为0.5,sigmoid层对经过dropout处理后的全连接层的输出进行匹配度计算,得到处于[0,1]之间的匹配度表示y
pred,最终通过与设立的阈值(0.5)进行比较来判别句子对的语义是否匹配,即y
pred>0.5时,判定为语义匹配,y
pred<0.5时,判定为语义不匹配。
S4、训练句子匹配模型:在步骤S2所得的训练数据集上对步骤S3构建的句子匹配模型进行训练,如附图5所示,具体如下:
S401、构建损失函数:由预测层构建过程可知,ypred是经过分层特征交互匹配机制处理后得到的匹配度计算结果,ytrue是两个句子语义是否匹配的真实标签,其取值仅限于0或1,本模型采用均方误差作为损失函数,公式如下:
S402、优化训练模型:使用RMSprop作为优化算法,除了其学习率设置为0.001外,RMSprop的剩余超参数均选择Keras中的默认值设置;在训练数据集上,对句子匹配模型进行优化训练;
举例说明:上面描述的优化函数及其设置在Keras中使用代码表示为:
optim=keras.optimizers.RMSprop(lr=0.001)。
本发明在BQ数据集上取得了优于当前先进模型的结果,实验结果的对比具体见表1:
在步骤S102中提到本发明对句子的处理可以有两种方式,即断字操作或分词操作。故表中HEMchar模型对应的是对句子进行断字操作处理后得到的模型;HEMword模型对应的是对句子进行分词操作处理后得到的模型。
本发明模型和现有模型进行了比较,实验结果显示本发明方法有了很大的提升。其中,前三行是现有技术的模型的实验结果【前三行数据来自:J.Chen,Q.Chen,X.Liu,H.Yang,D.Lu,B.Tang,The bq corpus:A large-scale domain-specific chinese corpusfor sentence semantic equivalence identification,EMNLP2018.】,最后两行是本发明的实验结果,由此可知本发明比现有模型有了较大提升。
实施例3:
如附图6所示,基于实施例2的基于深度分层编码的智能语义匹配装置,该装置包括,
句子匹配知识库构建单元,用于使用爬虫程序,在网上公共问答平台爬取问题集,得到原始相似句子知识库,再对原始相似句子知识库进行断字或分词的预处理,从而构建用于模型训练的句子匹配知识库;句子匹配知识库构建单元包括,
数据爬取子单元,用于在网上公共问答平台爬取问题集,构建原始相似句子知识库;
爬取数据处理子单元,用于将原始相似句子知识库中的句子进行断字处理或分词处理,从而构建用于模型训练的句子匹配知识库;
训练数据集生成单元,用于根据句子匹配知识库中的句子来构建训练正例数据和训练负例数据,并且基于正例数据与负例数据来构建最终的训练数据集;训练数据集生成单元包括,
训练正例数据构建子单元,用于将句子匹配知识库中语义匹配的句子进行组合,并对其添加匹配标签1,构建为训练正例数据;
训练负例数据构建子单元,用于从句子匹配知识库中选取一个句子s1,再从句子匹配知识库中随机选择一个与句子s1语义不匹配的句子s2,将s1与s2进行组合,并对其添加匹配标签0,构建为训练负例数据;
训练数据集构建子单元,用于将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,从而构建最终的训练数据集;
句子匹配模型构建单元,用于通过嵌入层构建字符映射转换表、输入层、及字向量映射层、构建深度分层编码表示层、通过分层特征交互匹配层构建句子分层特征交互匹配机制和构建预测层;句子匹配模型构建单元包括,
字符映射转换表构建子单元,用于对句子匹配知识库中的每个句子按字符进行切分,并将每个字符依次存入一个列表中,从而得到一个字符表,随后以数字1为起始,按照每个字符被录入字符表的顺序依次递增排序,从而形成所需要的字符映射转换表;其中,通过构建字符映射转换表,训练数据集中的每个字符均被映射为唯一的数字标识;其后,本发明再使用Word2Vec训练字向量模型,得到各字符的字向量矩阵embedding_matrix;
输入层构建子单元,用于对输入句子sentence1与sentence2,将其形式化为:(sentence1、sentence2);
字向量映射层构建子单元,用于加载字符映射转换表构建子单元训练所得的字向量矩阵权重来初始化当前层的权重参数;针对输入句子sentence1和sentence2,得到其相应句子向量sentence1_emd、sentence2_emd。句子匹配知识库中每一个句子都可以通过字向量映射的方式,将句子信息转化为向量形式;
深度分层编码表示层子单元,用于对输入的数据进行编码和语义提取;其中双向长短期记忆网络对句子进行两次编码操作,再对两次编码获得的语义特征进行联接操作,从而得到句子的中间编码表示特征向量;卷积神经网络对于中间编码表示特征向量继续进行一次编码操作,其输出作为句子的最终编码表示特征向量;
分层特征交互匹配机制构建子单元,用于将句子对中的每个句子在不同层上获得的编码表示特征分别进行交互匹配,生成最终的匹配表征向量;
预测层子单元,用于对匹配表征向量进行处理,从而得出一个匹配度数值,将其与设立的阈值进行比较,以此判断句子对的语义是否匹配;
句子匹配模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练;句子匹配模型训练单元包括,
损失函数构建子单元,用于计算句子1和句子2间语义是否匹配的误差;
优化训练模型子单元,用于训练并调整模型训练中的参数,从而减小句子匹配模型训练过程中预测的句子1与句子2间语义匹配程度与真实匹配标签之间的误差;
实施例4:
基于实施例2的存储介质,其中存储有多条指令,指令有处理器加载,执行实施例2的基于深度分层编码的智能语义匹配方法的步骤。
实施例5:
基于实施例4的电子设备,电子设备包括:实施例4的存储介质;以及
处理器,用于执行实施例4的存储介质中的指令。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。