发明内容
本发明的技术任务是提供一种联合多角度特征的深度智能文本匹配方法和装置,来解决如何对句子进行层次特征抽取,同时联合关键特征嵌入,实现从多角度获取文本语义特征,缓解编码过程中的语义特征缺失现象的问题,从而达到提高智能文本匹配准确率的目标。
本发明的技术任务是按以下方式实现的,一种联合多角度特征的深度智能文本匹配方法,该方法具体如下:
构建文本匹配知识库:在网上公共问答平台爬取问题集或者使用网上公开的句子匹配数据集,作为原始相似句子知识库,并对原始相似句子知识库进行预处理得到文本匹配知识库;
构建文本匹配模型的训练数据集:对于每一个句子,在文本匹配知识库中至少有一个与该句子对应的标准句子,该句子与其对应的标准句子组合构建训练正例;将除与该句子对应的标准句子以外的句子与该句子自由组合构建训练负例;用户根据文本匹配知识库大小来设定负例的数量,从而构建训练数据集;
构建文本匹配模型,具体如下:构建字符映射转换表、构建输入层、构建字符向量映射层、构建层次特征抽取模块、构建关键特征嵌入模块;
构建联合多角度特征的深度智能文本匹配编码及计算模块;
训练文本匹配模型:在训练数据集上对文本匹配模型进行训练。
作为优选,所述构建字符映射转换表具体如下:
字符表通过预处理后得到的文本匹配知识库来构建;
字符表构建完成后,表中每个字符均被映射为唯一的数字标识,映射规则为:以数字1为起始,随后按照每个字符被录入字符表的顺序依次递增排序,从而形成所需的字符映射转换表;
其后,使用Word2Vec训练字符向量模型,得到各字符的字向量矩阵权重embedding_matrix;
所述构建输入层具体为:输入层中包括两个输入;从输入的训练数据集样例中分别获取q1、q2,将其形式化为:(q1,q2);对于输入句子中的每个字符,均按照字符映射转换表将字符转化为相应的数字标识;
所述构建字符向量映射层具体为:通过加载字向量矩阵权重初始化当前层的权重参数;针对输入文本q1和q2,得到其文本向量Q1 Emd、Q2 Emd;其中,文本匹配知识库中每一个句子均通过字符向量映射的方式,将文本信息转化为向量形式;
所述构建层次特征抽取模块具体为:以文本向量Q1 Emd、Q2 Emd作为输入;对两个文本向量分别采用三层ONLSTM(有序神经元LSTM)进行编码,抽取其中每一层的ONLSTM特征输出计算二者的余弦相似度,得到三个余弦相度;将三个余弦相度相乘得到两个文本的匹配度并输出,即为层次特征抽取模块的匹配度,具体公式如下:
其中,i表示相应字符向量在句子中的相对位置;p
i为文本q1中每个字符的相应向量表示;p1
i为文本q1经过一次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示;p2
i为文本q1经过两次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示;q
i为文本q2中每个字符的相应向量表示;q1
i为文本q2经过一次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示,q2
i为文本q2中经过两次ONLSTM特征提取后输出特征向量每个字符的相应向量表示;
表示针对文本q1使用ONLSTM提取的三层特征向量;
表示针对文本q2使用ONLSTM提取的三层特征向量;
表示文本q1以及文本q2三个层次特征向量的余弦相似度;M表示整合文本q1以及文本q2不同层次余弦相似度得到的层次特征抽取模块的匹配度,M通过
按位相乘而得到。
更优地,所述构建关键特征嵌入模块具体如下:
LSTM特征提取:以文本向量Q1 Emd、Q2 Emd作为输入,使用LSTM进行特征提取得到特征向量,具体公式如下:
其中,
表示q1采用LSTM编码后得到的特征向量;
表示q2采用LSTM编码后得到的特征向量;i表示相应字符向量在句子中的相对位置;p
i为文本q1中每个字符的相应向量表示;q
i为文本q2中每个字符的相应向量表示;
DGCNN特征提取:文本向量Q1 Emd、Q2 Emd经过LSTM编码后,使用两种不同卷积核的膨胀门卷积神经网络DGCNN进一步进行特征提取利用Mask过滤掉无用的填充符号,同时将整个文本中的关键特征均保留下来;通过求和操作整合两个膨胀们卷积的输出,具体公式如下:
其中,
和
表示两个不同卷积核的膨胀门卷积神经网络DGCNN提取文本q1得到的向量输出;
表示
和
整合后的向量输出;
和
表示两个不同卷积核的膨胀门卷积神经网络DGCNN提取文本q2得到的向量输出;
表示
和
整合后的向量输出;
BiLSTM特征提取:对文本向量Q1 Emd、Q2 Emd经过LSTM编码后,分别使用BiLSTM进行编码提取得到相应的特征向量
和
公式如下:
特征向量池化处理:整合BiLSTM以及DGCNN得到的特征向量
对
进行最大池化操作得到
公式如下:
获取最终特征向量:针对q1,根据
求和得到最终输出的特征向量
公式如下:
针对q2,根据
求和得到最终输出的特征向量
公式如下:
获取关键特征嵌入模块的匹配度:通过编码处理分别得到文本q1以及文本q2的特征向量
进而计算q1,q2的最终特征向量间余弦相似度作为文本匹配度N,即关键特征嵌入模块的匹配度,公式如下:
更优地,所述构建联合多角度特征的深度智能文本匹配编码及计算模块具体为:
整合层次特征抽取模块和关键特征嵌入模块构成一个新的编码模块——联合多角度特征的深度智能文本匹配编码模块,整合层次特征抽取模块和关键特征嵌入模块分别求得的层次特征抽取模块的匹配度M和关键特征嵌入模块的匹配度N,得到最终的匹配度计算结果ypred,公式如下:
ypred=M+N;
当ypred≥0.5时,表示文本q1以及文本q2相匹配;当ypred<0.5时,表示文本q1以及文本q2不匹配。
更优地,所述训练文本匹配模型具体如下:
构建损失函数:使用正切函数作为损失函数,公式如下:
其中,ypred表示经过联合多角度特征编码处理后得到的匹配度计算结果;ytrue表示两个文本是否匹配的真实标签,其取值仅限于0或1;
优化训练模型:使用Adam作为优化算法,超参数均选择Keras中的默认值设置;在训练数据集上,对文本匹配模型进行优化训练。
作为优选,所述构建文本匹配知识库具体如下:
使用爬虫获取原始数据:在网上公共问答平台爬取问题集,得到原始相似句子知识库;或者使用网上公开的句子匹配数据集,作为原始相似句子知识库;
预处理原始数据:预处理原始相似句子知识库中的相似文本,对每个句子进行断字处理,得到文本匹配知识库;
所述构建文本匹配模型的训练数据集具体如下:
构建训练正例:将句子与其所对应的标准句子进行组合,构建正例,形式化为:(q1,q2,1);其中,q1表示句子1,q2表示句子2,1表示句子1和句子2相匹配,是正例;
构建训练负例:选中一个句子q1,再从文本匹配知识库中随机选择一个与句子q1不匹配的句子q2,将q1与q2进行组合,构建负例,形式化为:(q1,q2,0);其中,q1表示句子1,q2表示句子2,0表示句子1和句子2不匹配,是负例;
构建训练数据集:将获得的全部的正例样本文本和负例样本文本进行组合,并打乱其顺序,构建最终的训练数据集;其中,训练正例数据和训练负例数据均包含三个维度,即q1、q2、0或1。
一种联合多角度特征的深度智能文本匹配装置,该装置包括,
文本匹配知识库构建单元,用于使用爬虫程序,在网上公共问答平台爬取问题集,得到原始相似句子知识库;或者,使用网上公开的文本匹配数据集,作为原始相似句子知识库;再对原始相似句子知识库进行预处理,构建用于模型训练的文本匹配知识库;
训练数据集生成单元,用于根据文本匹配知识库中的句子来构建训练正例数据和训练负例数据,并基于正例数据与负例数据来构建最终的训练数据集;
文本匹配模型构建单元,用于构建文本匹配模型;文本匹配模型构建单元包括,
字符映射转换表构建模块,用于对文本匹配知识库中的每个句子按字符进行切分,并将每个字符依次存入一个列表中,从而得到一个字符表,随后以数字1为起始,按照每个字符被录入字符表的顺序依次递增排序,形成字符映射转换表;其中,字符映射转换表中每个字符均被映射为唯一的数字标识;字符映射转换表构建模块使用Word2Vec训练字符向量模型,得到字符的字向量矩阵权重;
输入层构建模块,用于根据字符映射转换表,将输入句子中的每个字符转化为相应的数字标识,从而完成数据的输入,即分别获取q1与q2,将其形式化为:(q1、q2);
字符向量映射层构建模块,用于加载预训练好的字符向量权重,将输入句子中的字符转换为字向量形式,构成完整的句子向量表示,该处理根据字符的数字标识查找字向量矩阵而完成;
层次特征抽取模块,用于使用三层ONLSTM进行编码,抽取每一层的ONLSTM输出作为层级特征向量,同时计算q1,q2每层的余弦相似度;再整合三层相似度,得到层次特征抽取模块的匹配度;
关键特征嵌入模块,用于使用LSTM抽取特征向量,再使用BiLSTM以及两种不同卷积核的膨胀门卷积神经网络DGCNN获取文本语义特征(引入Mask来消除padding过程中引入0带来的影响,得到有意义的文本特征);最终合BiLSTM以及膨胀门卷积得到的特征向量,作为该单元最终特征向量表示;再计算q1,q2的最终特征向量间余弦相似度,得到关键特征嵌入模块的匹配度;
联合多角度特征的深度智能文本匹配编码及计算模块,用于融合层次特征抽取模块的匹配度和关键特征嵌入模块的匹配度,得到最终的匹配度计算结果,并判定两个输入句子是否匹配;
文本匹配模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练。
作为优选,所述文本匹配知识库构建单元包括,
爬取原始数据模块,用于在网上公共问答平台爬取问题集,构建原始相似句子知识库;或者,使用网上公开的文本匹配数据集,构建原始相似句子知识库;
原始数据处理模块,用于将原始相似句子知识库中的句子进行断字处理,构建用于模型训练的文本匹配知识库;
所述训练数据集生成单元包括,
训练正例数据构建模块,用于将文本匹配知识库中文本匹配的句子进行组合,并对其添加匹配标签1,构建为训练正例数据;
训练负例数据构建模块,用于从文本匹配知识库中选取一个句子q1,再从文本匹配知识库中随机选择一个与句子q1语义不匹配的句子q2,将q1与q2进行组合,并对其添加匹配标签0,构建为训练负例数据;
训练数据集构建模块,用于将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,构建最终的训练数据集;
所述文本匹配模型训练单元包括,
损失函数构建模块,用于计算句子1和句子2间文本匹配度的误差;
模型优化训练单元,用于训练并调整模型训练中的参数,从而减小模型训练过程中预测的句子1与句子2间匹配度与真实匹配度之间的误差。
一种存储介质,其中存储有多条指令,所述指令由处理器加载,执行上述的联合多角度特征的深度智能文本匹配方法的步骤。
一种电子设备,所述电子设备包括:
上述的存储介质;以及
处理器,用于执行所述存储介质中的指令。
本发明的联合多角度特征的深度智能文本匹配方法和装置具有以下优点:
(一)本发明对句子进行层次特征抽取,同时联合关键特征嵌入;可以从多角度获取文本语义特征,缓解编码过程中的语义特征缺失现象;
(二)本发明提出的层次特征抽取模块能够捕捉不同编码层的文本语义特征,联合多层文本特征匹配方法,能够更加有效地避免因文本编码过程中出现的语义缺失而导致的匹配不精确现象;
(三)本发明提出的关键特征抽取模块,引入mask来消除padding过程中填充0带来的负面影响,将整个文本中的关键特征均保留下来,得到更有意义的文本特征;能够利用深度编码模型有效地捕捉句子中的深层语义特征,从而提高文本表征的全面性和准确性;
(四)本发明整合层次特征抽取模块和关键特征抽取模块,联合这两个模块的优势,提高文本匹配的准确性。
(五)本发明提出了一种新型损失函数——正切损失函数,针对预测值接近真实值的情况给予较小的惩罚,同时针对二者差距较大的情况给予较大的惩罚,进一步提高文本匹配模型的效果,更好地优化模型;
(六)本发明实现了对不同编码层次语义特征的提取,并实现关键特征抽取,并针对损失函数进行改进,可以有效提高模型在文本匹配中的准确性。
具体实施方式
参照说明书附图和具体实施例对本发明的一种联合多角度特征的深度智能文本匹配方法和装置作以下详细地说明。
实施例1:
如附图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“还款期限可以延后一天吗?”为例,对其进行断字处理后得到“还款期限可以延后一天吗?”。
S2、构建文本匹配模型的训练数据集:对于每一个句子,在文本匹配知识库中至少有一个与该句子对应的标准句子,该句子与其对应的标准句子组合构建训练正例;将除与该句子对应的标准句子以外的句子与该句子自由组合构建训练负例;用户根据文本匹配知识库大小来设定负例的数量,从而构建训练数据集;如附图3所示,具体如下:
S201、构建训练正例:将句子与其所对应的标准句子进行组合,构建正例,形式化为:(q1,q2,1);其中,q1表示句子1,q2表示句子2,1表示句子1和句子2相匹配,是正例;
举例:对步骤S101中展示的句子1和句子2,经过步骤S102断字处理后,构建的正例为:
(“还款期限可以延后一天吗?”,“是否可以申请延期一天还款?”,1)。
S202、构建训练负例:选中一个句子q1,再从文本匹配知识库中随机选择一个与句子q1不匹配的句子q2,将q1与q2进行组合,构建负例,形式化为:(q1,q2,0);其中,q1表示句子1,q2表示句子2,0表示句子1和句子2不匹配,是负例;
举例:根据步骤S201中的所展示的示例数据,本发明仍然使用原问句作为s1,再从文本匹配知识库中随机选择一个与句子q1语义不匹配的句子q2,将q1与q2进行组合,构建的负例为:
(“还款期限可以延后一天吗?”,“为什么银行客户端登陆出现网络错误?”,0)。
S203、构建训练数据集:将经过步骤S201和步骤S202获得的全部的正例样本文本和负例样本文本进行组合,并打乱其顺序,构建最终的训练数据集;其中,训练正例数据和训练负例数据均包含三个维度,即q1、q2、0或1。
S3、构建文本匹配模型:如附图4所示,依次构建字符映射转换表、构建输入层、构建字符向量映射层、构建层次特征抽取模块、构建关键特征嵌入模块、构建联合多角度特征的深度智能文本匹配编码及计算模块;具体如下:
S301、构建字符映射转换表具体如下:
S30101、字符表通过预处理后得到的文本匹配知识库来构建;
S30102、字符表构建完成后,表中每个字符均被映射为唯一的数字标识,映射规则为:以数字1为起始,随后按照每个字符被录入字符表的顺序依次递增排序,从而形成所需的字符映射转换表;
举例:以步骤S102断字后的内容,“还款期限可以延后一天吗?”,构建字符表及字符映射转换表如下:
字符 |
还 |
款 |
期 |
限 |
可 |
以 |
延 |
后 |
一 |
映射 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
字符 |
天 |
吗 |
? |
|
|
|
|
|
|
映射 |
10 |
11 |
12 |
|
|
|
|
|
|
S30103、使用Word2Vec训练字符向量模型,得到各字符的字向量矩阵权重embedding_matrix;
举例说明:在Keras中,对于上面描述的代码实现如下所示:
w2v_model=genism.models.Word2Vec(w2v_corpus,size=embedding_dim,window=5,min_count=1,sg=1,workers=4,seed=1234,iter=25)
embedding_matrix=numpy.zeros([len(tokenizer.word_index)+1,embedding_dim])
tokenizer=keras.preprocessing.text.Tokenizer(num_words=len(word_set))
for word,idx in tokenizer.word_index.items():
embedding_matrix[idx,:]=w2v_model.wv[word];
其中,w2v_corpus为训练语料,即文本匹配知识库中的所有数据;embedding_dim为字向量维度,在本发明中embedding_dim设置为300,word_set为词表。
S302、构建输入层具体为:输入层中包括两个输入;从输入的训练数据集样例中分别获取q1、q2,将其形式化为:(q1,q2);对于输入句子中的每个字符,均按照字符映射转换表将字符转化为相应的数字标识;
举例说明:本发明使用步骤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中字向量矩阵权重初始化当前层的权重参数;针对输入文本q1和q2,得到其文本向量Q1 Emd、Q2 Emd;其中,文本匹配知识库中每一个句子均通过字符向量映射的方式,将文本信息转化为向量形式;本发明中设置embedding_dim为300。
举例说明:在Keras中,对于上面描述的代码实现如下所示:
embedding_layer=Embedding(embedding_matrix.shape[0],
embedding_dim,
weights=[embedding_matrix],
input_length=input_dim,
trainable=False)
其中,embedding_matrix是步骤S301中训练所得的字向量矩阵权重,embedding_matrix.shape[0]是字向量矩阵的词汇表(词典)的大小,embedding_dim是输出的字向量的维度,input_length是输入序列的长度。
相应的文本q1和q2,经过Embedding层编码后得到相应的文本向量Q1 Emd、Q2Emd。
S304、构建层次特征抽取模块具体为:如附图7所示,以文本向量Q1 Emd、Q2 Emd作为输入;对两个文本向量分别采用三层ONLSTM(有序神经元LSTM)进行编码,抽取其中每一层的ONLSTM特征输出计算二者的余弦相似度,得到三个余弦相度;将三个余弦相度相乘得到两个文本的匹配度并输出,即为层次特征抽取模块的匹配度,具体公式如下:
其中,i表示相应字符向量在句子中的相对位置;p
i为文本q1中每个字符的相应向量表示;p1
i为文本q1经过一次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示;p2
i为文本q1经过两次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示;q
i为文本q2中每个字符的相应向量表示;q1
i为文本q2经过一次ONLSTM特征提取后,输出特征向量中每个字符的相应向量表示,q2
i为文本q2中经过两次ONLSTM特征提取后输出特征向量每个字符的相应向量表示;
表示针对文本q1使用ONLSTM提取的三层特征向量;
表示针对文本q2使用ONLSTM提取的三层特征向量;
表示文本q1以及文本q2三个层次特征向量的余弦相似度;M表示整合文本q1以及文本q2不同层次余弦相似度得到的层次特征抽取模块的匹配度,M通过
按位相乘而得到。
经实验验证,本模块的编码维度设置为300时,可获得最优结果。
S305、构建关键特征嵌入模块,如图8所示,以文本向量Q1 Emd、Q2 Emd作为输入;首先使用LSTM抽取特征向量;使用BiLSTM以及两种不同卷积核的膨胀门卷积DGCNN获取文本语义特征;整合BiLSTM以及DGCNN得到的特征向量,作为该模块最终特征向量表示;最终计算q1,q2的最终特征向量间余弦相似度,作为该模块文本匹配度,即关键特征嵌入模块的匹配度;具体如下:
S30501、LSTM特征提取:以文本向量Q1 Emd、Q2 Emd作为输入,使用LSTM进行特征提取得到特征向量,具体公式如下:
其中,
表示q1采用LSTM编码后得到的特征向量;
表示q2采用LSTM编码后得到的特征向量;i表示相应字符向量在句子中的相对位置;p
i为文本q1中每个字符的相应向量表示;q
i为文本q2中每个字符的相应向量表示;
S30502、DGCNN特征提取:文本向量Q1 Emd、Q2 Emd经过LSTM编码后,使用两种不同卷积核的膨胀门卷积神经网络DGCNN进一步进行特征提取;本发明引入Mask来消除padding过程中填充0带来的负面影响,得到有意义的文本特征(因为神经网络的输入需要一个规整的张量,而文本通常都是不定长的;这就导致需要以裁剪或者填充的方式使得所有文本变成定长的;在填充过程中,本发明会使用0作为padding符号)。本发明利用Mask过滤掉无用的填充符号,同时将整个文本中的关键特征均保留下来,再通过求和操作整合两个膨胀们卷积的输出,具体公式如下:
其中,
和
表示两个不同卷积核的膨胀门卷积神经网络DGCNN提取文本q1得到的向量输出;
表示
和
整合后的向量输出;
和
表示两个不同卷积核的膨胀门卷积神经网络DGCNN提取文本q2得到的向量输出;
表示
和
整合后的向量输出;
S30503、BiLSTM特征提取:文本向量Q1 Emd、Q2 Emd经过LSTM编码后,分别使用BiLSTM进行编码提取得到相应的特征向量
和
公式如下:
S30504、特征向量池化处理:整合BiLSTM以及DGCNN得到的特征向量
对
进行最大池化操作得到
公式如下:
S30505、获取最终特征向量:针对q1,根据
求和得到最终输出的特征向量
公式如下:
针对q2,根据
求和得到最终输出的特征向量
公式如下:
S30506、获取关键特征嵌入模块的匹配度:通过编码处理分别得到文本q1以及文本q2的特征向量
进而计算q1,q2的最终特征向量间余弦相似度作为文本匹配度N,即关键特征嵌入模块的匹配度,公式如下:
S306、构建联合多角度特征的深度智能文本匹配编码及计算模块具体为:
如附图9所示,经过步骤S304以及步骤S305分别构造了层次特征提取模块以及关键特征嵌入模块,整合层次特征抽取模块和关键特征嵌入模块构成一个新的编码模块——联合多角度特征的深度智能文本匹配编码模块,整合层次特征抽取模块和关键特征嵌入模块分别求得的层次特征抽取模块的匹配度M和关键特征嵌入模块的匹配度N,得到最终的匹配度计算结果ypred,公式如下:
ypred=M+N;
当ypred≥0.5时,表示文本q1以及文本q2相匹配;当ypred<0.5时,表示文本q1以及文本q2不匹配。
S4、训练文本匹配模型:在步骤S2所得的训练数据集上对步骤S3构建的文本匹配模型进行训练,如附图5所示,具体如下:
S401、构建损失函数:使用正切函数作为损失函数,公式如下:
其中,ypred表示经过联合多角度特征编码处理后得到的匹配度计算结果;ytrue表示两个文本是否匹配的真实标签,其取值仅限于0或1;
附图10中(a)和(b)比较了正切损失函数和交叉熵损失函数;交叉熵损失函数具有以下特点:预测值和真实值之间的差越小,损失值越小,即当前模型的惩罚越小;预测值和真实值之间的差异越大,损失值越大,即当前模型的惩罚越大。惩罚是非线性增长,这与指数增长类似。
正切损失函数与交叉熵损失函数相比:当预测值和真实值之间的差异较小时,与交叉熵损失函数相比,正切损失函数可以得到较小的惩罚。这意味着正切损失函数对模型的预测越好,惩罚就越合理;另一方面,当预测值大大偏离真实值时,正切损失函数也给出了非线性增长的惩罚,但没有突然跳变现象。基于上述优点,本发明选择使用正切损失作为模型损失函数。
S402、优化训练模型:使用Adam作为优化算法,超参数均选择Keras中的默认值设置;在训练数据集上,对文本匹配模型进行优化训练。
举例说明:上面描述的优化算法及其设置在Keras中使用代码表示为:
optim=keras.optimizers.Aadm();
model=keras.models.Model([q1,q2],[ypred])
model.compile(loss=Lloss,optimizer=optim,metrics=['accuracy',precision,recall,f1_score])
其中,损失函数loss选择本发明自定义的正切损失Lloss;优化算法optimizer选择前文定义好的optim;q1以及q2作为模型输入,ypred为模型输出;评价指标metrics,本发明选取准确率accuracy,精确率precision,召回率recall,基于召回率和精确率计算的f1_score。
接下来,介绍相关评价指标:
accuracy=(TP+TN)/(TP+TN+FN+FP)
precision=TP/(TP+FP)
recall=TP/(TP+FN)
f1_score=2*precision*recall/(precision+recall)
本发明的模型在BQ数据集上取得了优于当前先进模型的结果,实验结果的对比具体如下表所示:
本发明和现有模型进行了比较,实验结果显示本发明方法有了很大的提升。其中,前三行是现有技术的模型的实验结果【前四行数据来自:J.Chen,Q.Chen,X.Liu,H.Yang,D.Lu,B.Tang,The bq corpus:A large-scale domain-specific chinese corpus forsentence semantic equivalence identification,EMNLP2018.第五行数据使用DFF模型,模型来自:Xu Zhang,Wenpeng Lu,Fangfang Li,Xueping Peng,Ruoyu Zhang.DeepFeature Fusion Model for Sentence Semantic Matching.CMC-Computers Materials&Continua,Vol.61,No.2,pp.601-616,2019.】,最后一行是本发明模型的实验结果,由此可知本发明比现有模型有了较大提升。
实施例2:
如附图6所示,本发明的联合多角度特征的深度智能文本匹配装置,该装置包括,
文本匹配知识库构建单元,用于使用爬虫程序,在网上公共问答平台爬取问题集,得到原始相似句子知识库;或者,使用网上公开的文本匹配数据集,作为原始相似句子知识库;再对原始相似句子知识库进行预处理,构建用于模型训练的文本匹配知识库;文本匹配知识库构建单元包括,
爬取原始数据模块,用于在网上公共问答平台爬取问题集,构建原始相似句子知识库;
原始数据处理模块,用于将原始相似句子知识库中的句子进行断字处理,构建用于模型训练的文本匹配知识库;
训练数据集生成单元,用于根据文本匹配知识库中的句子来构建训练正例数据和训练负例数据,并基于正例数据与负例数据来构建最终的训练数据集;训练数据集生成单元包括,
训练正例数据构建模块,用于将文本匹配知识库中文本匹配的句子进行组合,并对其添加匹配标签1,构建为训练正例数据;
训练负例数据构建模块,用于从文本匹配知识库中选取一个句子q1,再从文本匹配知识库中随机选择一个与句子q1语义不匹配的句子q2,将q1与q2进行组合,并对其添加匹配标签0,构建为训练负例数据;
训练数据集构建模块,用于将所有的训练正例数据与训练负例数据组合在一起,并打乱其顺序,构建最终的训练数据集;
文本匹配模型构建单元,用于构建文本匹配模型;文本匹配模型构建单元包括,
字符映射转换表构建模块,用于对文本匹配知识库中的每个句子按字符进行切分,并将每个字符依次存入一个列表中,从而得到一个字符表,随后以数字1为起始,按照每个字符被录入字符表的顺序依次递增排序,形成字符映射转换表;其中,字符映射转换表中每个字符均被映射为唯一的数字标识;字符映射转换表构建模块使用Word2Vec训练字符向量模型,得到字符的字向量矩阵权重;
输入层构建模块,用于根据字符映射转换表,将输入句子中的每个字符转化为相应的数字标识,从而完成数据的输入,即分别获取q1与q2,将其形式化为:(q1、q2);
字符向量映射层构建模块,用于加载预训练好的字符向量权重,将输入句子中的字符转换为字向量形式,构成完整的句子向量表示,该处理可根据字符的数字标识查找字向量矩阵而完成;
层次特征抽取模块,用于使用三层ONLSTM进行编码,抽取每一层的ONLSTM输出作为层级特征向量,同时计算q1,q2每层的余弦相似度;再整合三层相似度,得到层次特征抽取模块的匹配度;
关键特征嵌入模块,用于使用LSTM抽取特征向量,再使用BiLSTM以及两种不同卷积核的膨胀门卷积神经网络DGCNN获取文本语义特征(引入Mask来消除padding过程中引入0带来的影响,得到有意义的文本特征);最终合BiLSTM以及膨胀门卷积得到的特征向量,作为该单元最终特征向量表示;再计算q1,q2的最终特征向量间余弦相似度,得到关键特征嵌入模块的匹配度;
联合多角度特征的深度智能文本匹配编码及计算模块,用于融合层次特征抽取模块的匹配度和关键特征嵌入模块的匹配度,得到最终的匹配度计算结果,并判定两个输入句子是否匹配;
文本匹配模型训练单元,用于构建模型训练过程中所需要的损失函数与优化函数,并完成模型的训练;文本匹配模型训练单元包括,
损失函数构建模块,用于计算句子1和句子2间文本匹配度的误差;
模型优化训练单元,用于训练并调整模型训练中的参数,从而减小模型训练过程中预测的句子1与句子2间匹配度与真实匹配度之间的误差。
实施例3:
本发明的存储介质,其中存储有多条指令,指令由处理器加载,执行实施例1的联合多角度特征的深度智能文本匹配方法的步骤。
实施例4:
本发明的电子设备,电子设备包括:
实施例3的存储介质;以及
处理器,用于执行实施例3存储介质中的指令。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。