发明内容
本申请提供了一种基于匹配序列的基于未登录词处理的深度文本匹配方法及装置,以解决未登录词对模型匹配效果的干扰问题。
根据本申请实施例的第一方面,提供了一种基于未登录词处理的深度文本匹配方法,应用于深度匹配模型,所述方法包括:
将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
将所述句子对中语句分词得到的词语进行分字,得到字矩阵;
根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
将所述词向量矩阵和所述字向量矩阵连接,得到所述句子对中语句的初始语句向量矩阵;
利用所述初始语句向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的语句向量;
根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
根据所述损失值,调整所述深度匹配模型的参数;
利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
可选地,根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵,包括:
根据预训练好的词表,区分所述词矩阵中的登录词和未登录词;
将所述登录词用词向量表示,得到所述登录词的词向量矩阵;
使用所述未登录词的近义词对应的词向量表示所述未登录词,得到所述未登录词的词向量矩阵;
根据所述登录词的词向量矩阵和所述未登录词的词向量矩阵,得到所述词矩阵对应的词向量矩阵。
可选地,根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵,包括:
根据预训练好的词表,区分所述词矩阵中的登录词和未登录词;
将所述登录词用词向量表示,得到所述登录词的词向量矩阵;
判断所述未登录词是否为新词表中的词语;
如果不是,则使用一个随机生成的词向量表示所述未登录词,得到未登录词的词向量矩阵,并将所述随机生成的词向量添加至所述新词表中;
根据所述登录词的词向量矩阵和所述未登录词的词向量矩阵,得到所述词矩阵对应的词向量矩阵。
可选地,所述句子对由假设语句、正推理语句以及至少一个负推理语句组成,其中,所述假设语句与所述正推理语句的语义相关、与所述负推理语句的语义不相关。
可选地,根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值,包括:
分别计算所述假设语句与正推理语句、以及各负推理语句所对应的语句向量之间的匹配程度值;
利用Pointwise损失函数和Listwise损失函数组成的联合损失函数,计算各所述语句向量匹配程度值与标准值之间的损失值。
可选地,所述联合损失函数loss的计算公式为:loss=Lp+Ll+L2Regularization,其中:
Lp为Pointwise损失函数,Lp=max(0,m-s(rh;rp+)+s(rh;rp-));Ll为Listwise损失函数,
rh为假设语句的语句向量表示,rp+和rp-是分别为正推理语句和负推理语句的语句向量表示,s(rh;rp+)为假设语句和正推理语所对应的语句向量的余弦相似度,s(rh;rp)为假设语句和推理语所对应的语句向量的余弦相似度,m为预设的判定正负推理语句的阈值,n为由正推理语句和负推理语句组成的样本个数。
根据本申请实施例的第二方面,提供了另一种基于未登录词处理的深度文本匹配方法,应用于深度匹配模型,该方法包括:
将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
利用所述词向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的初始语句向量矩阵;
将所述句子对中语句进行分字,得到字矩阵;
根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
将所述初始语句向量矩阵和所述字向量矩阵连接,得到所述句子对中语句对应的语句向量;
根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
根据所述损失值,调整所述深度匹配模型的参数;
利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
可选地,根据预训练好的词表,将所述词矩阵中的词用词向量表示,包括:
根据预训练好的词表,区分所述词矩阵中的登录词和未登录词;
根据预训练好的词表,将所述登录词用词向量表示;
使用所述未登录词的近义词对应的词向量表示所述未登录词。
根据本申请实施例的第三方面,提供了一种基于未登录词处理的深度文本匹配装置,应用于深度匹配模型,该装置包括:
分词模块:用于将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
词表示模块:用于根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
分字模块:用于将所述句子对中语句分词得到的词语进行分字,得到字矩阵;
字表示模块:用于根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
语句表示模块:用于将所述词向量矩阵和所述字向量矩阵连接,得到所述句子对中语句的初始语句向量矩阵;
相似性加权模块:用于利用所述初始语句向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的语句向量;
损失值计算模块:用于根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
模型参数调整模块:用于根据所述损失值,调整所述深度匹配模型的参数;
文本匹配模块:用于利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
根据本申请实施例的第四方面,提供了另一种基于未登录词处理的深度文本匹配装置,应用于深度匹配模型,该装置包括:
分词模块:用于将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
词表示模块:用于根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
相似性加权模块:用于利用所述词向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的初始语句向量矩阵;
分字模块:用于将所述句子对中语句进行分字,得到字矩阵;
字表示模块:用于根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
语句表示模块:用于将所述初始语句向量矩阵和所述字向量矩阵连接,得到所述句子对中语句对应的语句向量;
损失值计算模块:用于根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
模型参数调整模块:用于根据所述损失值,调整所述深度匹配模型的参数;
文本匹配模块:用于利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
由上述技术方案可见,本实施例提供的基于未登录词处理的深度文本匹配方法及装置,在训练深度匹配模型时,使用字向量辅助词向量的方式,具体的,对输入的语句分词并用词向量表示后,还将各语句分词得到的词语继续进行分字处理并用字向量表示,然后,将该字向量和词向量连接后的结果,作为输入语句的语句量表示;或者,对输入的语句用初始词向量表示,将初始词向量进行相应的相似性加权处理,生成加权后的词向量后,还将各语句进行分字处理并用字向量表示,然后,将该字向量和最终的词向量连接后的结果,作为输入语句的语句向量表示。由于未出现在训练集中的词语多为新词,而新字的情况则很少发生,进而通过字向量与词向量结合的方式,可以在一定程度上避免未登录词对模型匹配效果的干扰。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
针对现有的深度匹配模型一般会将未登录词处理成空值或随机值,影响模型的最终匹配效果的问题,本实施例提供了一种基于未登录词处理的深度文本匹配方法,应用在深度匹配模型中,其中,该方法可适用于各种深度匹配模型。
图1为本申请实施例提供的一种基于未登录词处理的深度文本匹配方法的基本流程示意图。如图1所示,该方法具体包括如下步骤:
S101:将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵。
图2为本申请实施例提供的一种深度匹配模型的基本结构示意图。如图2所示,该深度匹配模型主要由输入层、表示层、交互层、特征选择层、编码层、匹配层以及输出层组成,需要说明的是本实施例提供的方法并不限于该结构的深度匹配模型,还可以为其它结构,但是,通常均是以输入层、表示层、交互层、匹配层以及输出层为基础结构。
将句子对在输入层输入至模型后,利用表示层将句子对中的语句分别进行分词,对应每个语句便得到一个n维行向量{w1,w2,....,wn},亦可以称之为一个1*n的词矩阵,其中,w为一个词、n为语句长度。
进一步的,在模型训练时,现有的方式通常输入的句子对中只包含两个语句,记为句子A、句子B,存在匹配结果正确率低的问题。因此,本实施例除了输入句子A、句子B外,还输入若干与句子A、句子B语义不相关的句子,其中,句子A、句子B在本实施中认用作为正例、即假设语句与正推理语句,若干语义不相关的句子用作负例、即各负推理语句。另外,本实施例中负例的数量不受限制,负例可以为在其他匹配句子对中随机生成的样例。
例如,输入句子样例如下所示:
假设语句:今天阳光;
正推理语句:今天天气很好;
负推理语句1:今天下大雨;
负推理语句2:……
进一步的,由于深度匹配模型对于各句子的编码是单独进行的,为增加数据输入量,本实施例将句子A和B的角色调换顺序进行两次输入,具体如下:
首先,选取被作为假设语句和正推理语句,且语义相关的两个正例语句,如句子A和句子B;然后,选取被作为负推理语句,且与所述正例语句的语义不相关的多个负例语句,如句子C、句子D……;最后,分别从两个正例语句中选取一个正例语句作为假设语句、另一个正例语句作为正推理语句,并与各负例语句组成句子对。这样,输入的句子对中便包括<句子A、句子B、句子C、句子D……>、<句子B、句子A、句子C、句子D……>。然后,对各句子对中的语句进行分词处理。
S102:根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵。
首先,根据预训练好的Word Embedding将词转化为索引,其中,Word Embedding可以使用word2vec、glove等,即根据词表找对应输出n维向量,{idxw1,idxw2,....,idxwn}。然后,根据索引查找对应的词向量,输出n*word_size维词向量矩阵,其中,word_size为词向量维度。
进一步的,为了增加输入信息量,本实施例在词向量的基础上,还增添了一些信息向量,其中,包括词性、共现信息和位置编码向量。具体的,每种向量的表示方法为:
词性向量:每种词性使用一个固定长度的随机向量来表示
共现信息向量:共现信息是指假设和推断语句共同出现的词语,如上述假设和正推理语句中的“今天”一词。在本实施例中,共现信息有0,1,2三种表示,其中,0:代表<PAD>增加的句子维度,即句子在此位置本无值,为了可以放入深度匹配模型填补的空值;1:代表该词语在句子和词中共同出现;2:代表该词语在假设和推断语句中未共同出现。本实施例中,共现信息向量为一维长的向量。
位置编码向量:位置编码可使用公式计算,也可使用可学习的随机初始化的向量来表示。
具体的,按照公式计算的位置编码向量可以采用如下公式:
在公式(1)和(2)中,pos表示分词在输入句子中的位置,d1表示词向量的维度,C为周期系数,PE(pos2i)表示第pos个位置的分词的第2i个维度的位置编码,PE(pos 2i+1)表示第pos个位置的分词的第2i+1个维度的位置编码。
另外,使用可学习的随机初始化的向量来表示位置编码向量的方式时,可以将一个随机初始化的向量输入到模型里,模型会自己学习调整该向量到一个比较合理的值,并将调整后的向量作为位置编码向量。
得到上述词性、共现信息和位置编码向量后,便可以将其添加至词向量,其中,本实施例命名由Word Embedding得到的为初始词向量,将添加上述向量后得到向量为最终词向量。具体的,在添加方式上可以选择将上述向量与初始词向量相加,图3a计为本申请实施例提供的将增添的信息向量与词向量按位相加的示意图,或者,还可以将上述向量连接到初始词向量之后组成一个更长的向量,图3b为本申请实施例提供的将增添的信息向量连接至词向量的示意图。
S103:将所述句子对中语句分词得到的词语进行分字,得到字矩阵。
将步骤S110中得到的词语分字,得到字矩阵如下:
其中,c为一个字、m为一个字中有几个字。
为了使用深度学习模型,每个词对应的字需要填充到某个固定数量,根据目前词很少有长度超过6个字的,本实施例将该长度值设置为6,这样便可以基本保证约99%的词能不丢失字信息。
S104:根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵。
根据预训练好的字表查找对应的字向量,输出n*m*char_size维字向量矩阵,其中,char_size为字向量维度。
S105:将所述词向量矩阵和所述字向量矩阵连接,得到所述句子对中语句的初始语句向量矩阵。
因为字和词的维度不同,无法直接将两个矩阵连接,因此,本实施例中首先把字向量矩阵输入到卷积神经网络按字卷积,输出n*output_size维矩阵,使其宽度变成词矩阵的宽度。
具体的,本实施例将字向量矩阵在输入到卷积神经网络中,其中,使用的卷积核宽度分别为3、4、5,长度为字向量长度;卷积完生成的向量需要进行池化,其中,可以取矩阵最大值或均值。这样每一个卷积核得到一个1维向量,每种宽度的卷积核共使用64个,因此,每个词可以得到一个3*64维矩阵,代表这个词的字表示,其中,可以将这个矩阵连接成一个192维向量,也可以把这三个向量加和求平均得到64维向量。
然后,将卷积得到的字向量矩阵和词向量矩阵和连接,变为n*{word_size*output_size}维矩阵。
S106:利用所述初始语句向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的语句向量。
对应于图2中模型的交互层中,使用Attention机制,获取各句子对的相似度矩阵,本实施例使用两个句子的词向量表示矩阵进行矩阵乘法得到该矩阵。并根据该相似度矩阵重新生成句子对中的假设H和推断P的表示,该步骤也可以理解为在词向量表示之后,在当前的语境下重新编码,得到新的句子表示。如下公式(3)和(4)。
在公式(3)和(4)中,len(H)和len(P)分别指两个句子的长度,和/>为加权后的句子表示,/>和/>为原有的句子表示,e为权重、由相似度矩阵的对应值获取。
需要说明的是,多种句子交互Attention机制均可用于本实施例。本实例使用双向LSTM(Long-Short-Term Memory,长短期记忆)结构,其表示公式如下:
yt=g(VAt+V'A't) 公式(5)
At=f(Uxt+WAt-1) 公式(6)
A't=f(U'xt+W'At-1) 公式(7)
在公式(5)至(7)中,V、V'、U'、U、W、W'为权重矩阵,f、g为激活函数,x为输入,A为隐状态参数,y为输出,t为时刻。
利用上述双向LSTM结构,首先,将各句子对中的两句子进行词对齐,得到两个句子之间的相似度矩阵;然后,进行两句话的局部推理,用上述得到的相似度矩阵并结合句子对中的两句子,互相生成彼此相似性加权后的句子。
另外,如果可以做句子的语法分析,那么这里的双向LSTM也可以使用树形LSTM。另外还可以根据各词向量所在语句中的语境,重新对各词向量进行编码,得到各句子对中语句新的词向量表示。
具体的,该步骤可以采用多种特征抽取结构进行,如卷积神经网络(CNN,Convolutional Neural Network)、递归神经网络(RNN,Recurrent Neural Network)、Attention机制等。本实施例仍采用双向LSTM结构,图4为本申请实施例提供的使用双向LSTM进行特征抽取时,共享权值和不共享权值的区别示意图,如图4所示,在特征抽取时假设和推理语句可以共享权值,也可以不共享,在具体实施过程,可以根据训练速度要求以及训练数据量进行选择。
进一步的,如果输入的句子对中包含多个推理语句,将句子对中的语句分别用词向量表示之后,对应N个推理语句,假设语句可以得到N个词向量表示,为方便后续的操作,本实施例在特征选择层中,对假设语句可以得到N个词向量内容进行归一化处理。
本实施例采用最基本的求平均的方式:
在公式(8)中,N为所有假设句的数量,为表示层输出的假设语的词向量表示。
当然,在具体实施过程中,除了上述方式,还可以是使用可学习的权值对模型进行加权求和方式,或者,还可以利用卷积神经网络、递归神经网络等进行特征提取。图5为本申请实施例提供的利用卷积神经网络进行特征选择的示意图,如图5所示,将多个词向量横向拼接后使用卷积神经网络进行卷积表示、然后进行池化输出。
进一步的,使各所述句子对中的假设语句均用一个语句向量表示之后,所述方法还包括:
根据各所述词向量所在语句中的语境,重新对各所述词向量进行编码,得到各句子对中语句新的词向量表示。
具体的,本实施例还是采用双向LSTM结构进行特征提取和编码,图6为本申请实施例提供的双向LSTM进行特征抽取时,选用不同的输出方式示意图,如图6所示,本实施例可以采用向LSTM结构输出的隐状态结果作为新的词向量表示,或者,利用双向LSTM每一时刻的输出,分别按位求最大值、均值并连接作为新的词向量表示。
S107:根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值。
对应于图2中模型的匹配层和输出层中,分别计算上述得到的各所述句子对中假设语句H的语句向量和推理语句P的语句向量的匹配程度值,可以得到N个输出值,如图2中的Score1、Score2……ScoreN,其中,N为所有推理语句的数量、包括正例和负例。然后,可以根据N个输出值的排序结果计算损失函数,调整模型参数并继续训练,其中,为了减少计算量,可以只关注匹配程度最高的是否为假设语句和正推理语句。
为了更好的的评价上述相似度值,本实施例融合Pointwise和Listwise思想,具体的,利用Pointwise损失函数和Listwise损失函数组成的联合损失函数,计算各语句向量相似度值与标准值之间的差距值,并根据该差距值,调整深度匹配模型的参数。其中,Pointwise损失函数的计算公式如下:
Lp=max(0,m-s(rh;rp+)+s(rh;rp-)) 公式(9)
在公式(9)中,s(rh;rp+)为假设语句和正推理语所对应的语句向量的余弦相似度,s(rh;rp)为假设语句和推理语所对应的语句向量的余弦相似度,m为预设的判定正负推理语句的阈值,n为由正推理语句和负推理语句组成的样本个数。
根据上述公式可知,Pointwise损失函数在假设语句和正推理语句的匹配程度低时,对应的损失值大,并且假设语句和负推理语句匹配程度高时,对应的损失值也大。单用Pointwise损失函数会有较好的排序效果,但是相似度的值并不够准确。因此,本实施例还结合了Listwise损失函数,其计算公式如下:
为了防止对模型的过拟合,本实施例在损失函数中加入L2正则(L2Regularization),得到的最终的联合损失函数loss如下:
loss=Lp+Ll+L2Regularization 公式(11)
S108:根据所述损失值,调整所述深度匹配模型的参数。
具体的,在训练过程,可以最小化上述损失值为目标,对模型不断训练,得到最终的深度匹配模型
S109:利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
例如,可以利用不断参数调整所得到的深度匹配模型,将测试集中语句输入至该模型中进行文本匹配,并计算其匹配准确率。
本实施例提供的基于匹配序列的基于未登录词处理的深度文本匹配方法,在训练深度匹配模型时,使用字向量辅助词向量的方式,由于一般未出现在训练集中的词语多为新词,而新字的情况则很少发生,进而通过字向量与词向量结合的方式,可以在一定程度上避免未登录词对模型匹配效果的干扰。另外,模型输入的句子对不仅包含假设语句与正推理语句组成的句子对,还包含假设语句分别与各负推理语句组成的句子对,这样,将两个句子扩展为句子对序列、并且包含正例和负例两种类型的数据,扩展了模型的输入数量和类型,进而使得模型的拟合速度加快,有助于增强模型的泛化能力。最后,本实施例还融合Attention机制,生成各句子对中的语句彼此相似性加权后的语句向量,由于对个句子对中的语句之间的词语进行了关联,进而可以模型的性能水平得到提升。
进一步的,由于单个字通常不能表达其所构成词语的准确含义,在深度匹配模型中匹配效果不如词好,因此考虑词的处理也是十分重要的,基于此本实施例还在字的基础上对未登录词进行进一步的处理,其中,本实施例提供了使用近义词辅助词进行未登录词处理、构建新词表的两种方式。
对应的,步骤S102中根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵,还可以包括:
S1021:根据预训练好的词表,区分所述词矩阵中的登录词和未登录词。
S1022:将所述登录词用词向量表示,得到所述登录词的词向量矩阵。
S1023:使用所述未登录词的近义词对应的词向量表示所述未登录词,得到未登录词的词向量矩阵。
图7为本申请实施例提供的使用近义词替代未登录词的处理方法。由于现有方法如word2vec中,对已训练好的词向量中添加新词的方法只能为重新训练所有词向量,因此考虑使用近义词作为未登录词的一个表示,这是考虑到更新未登录词的近义词词表的代价远小于重新训练词向量。若未登录词有1个近义词时,直接选用该词的词向量即可。若有多个近义词,可根据上下文,在近义词中选择一个最相似的,即图7中的左图所示的方法;另外,可以根据上下文计算所有近义词相似度后,对近义词进行加权求和组成未登录词的表示,即图7中的右图所示的方法,具体的,可使用如下方法计算近义词和上下文的相似度Attention:
consine similarity=1-consine distance 公式(13)
其中,在公式(12)至(14)中,a为近义词,bi为上下文词,n代表上下文窗口大小。
S1024:根据所述登录词的词向量矩阵和所述未登录词的词向量矩阵,得到所述词矩阵对应的词向量矩阵。
另外,还可以采用构建新词表的两种方式,即步骤S102中根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵,具体可以包括:
S1025:根据预训练好的词表,区分所述词矩阵中的登录词和未登录词;
S1026:将所述登录词用词向量表示,得到登录词的词向量矩阵;
S1027:判断所述未登录词是否为新词表中的词语;
若是,则用新词表中的词向量来表示未登录词,否则,执行步骤S1028。
S1028:使用一个随机生成的词向量表示所述未登录词,得到未登录词的词向量矩阵,同时,将所述随机生成的词向量添加至所述新词表中。
即对于未登录词,我们将其记录下来并赋予一个随机生成的词向量。
S1029:根据所述登录词的词向量矩阵和所述未登录词的词向量矩阵,得到所述词矩阵对应的词向量矩阵。
利用上述方法训练得到深度匹配模型,在现有某金融语料测试集中能达到95%的正确率,在相同的训练集和测试集中,传统模型正确率仅为88%。因此,本实施例提供的方法在不破坏原有深度匹配模型结构的基础上,对模型训练过程进行了一系列改进,实验结果证明,本方法训练得到的模型效果要高于常规方法。
图8为本申请实施例提供的另一种基于未登录词处理的深度文本匹配方法的基本流程示意图。图9为本申请实施例提供的另一种深度匹配模型的基本结构示意图。如图9所示,对应于图8中的方法,本实例将添加的字向量在模型的匹配层,计算相似度前与生成的语句向量相加。具体的该方法包括如下步骤:
S201:将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵。
将句子对在输入层输入至模型后,利用表示层将句子对中的语句分别进行分词,得到一个n维行向量{w1,w2,....,wn},亦可以称之为一个1*n的词矩阵,其中,w为一个词、n为语句长度。
S202:根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵。
首先,根据预训练好的Word Embedding将词转化为索引,其中,Word Embedding可以使用word2vec、glove等,即根据词表找对应输出n维向量,{idxw1,idxw2,....,idxwn}。然后,根据索引查找对应的词向量,输出n*word_size维词向量矩阵,其中,word_size为词向量维度。
S203:利用所述词向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的初始语句向量矩阵。
对应于图9中模型的交互层中,使用Attention机制,先获取各句子对的相似度矩阵,并根据该相似度矩阵重新生成句子对中的假设H和推断P的表示,该步骤也可以理解为在词向量表示之后,在当前的语境下重新编码,得到新的词向量。需要说明的是,多种句子交互Attention机制均可用于本实施例。
S204:将所述句子对中语句进行分字,得到字矩阵。
将语句进行分字,输出m维行向量{c1,c2,......,cm},亦可以称之为1*m维字矩阵,其中,c为一个字、m为一个语句中有几个字。
S205:根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵。
首先,根据预训练好的字表将字转化为索引,即根据字表找对应输出m维向量,{idxc1,idxc2,....,idxcm}。然后,根据索引查找对应的字向量,输出m*char_size维字向量矩阵,其中,char_size为字向量维度。
S206:将所述初始语句向量对应的矩阵和所述字向量矩阵连接,得到所述句子对中语句的语句向量。
由于字向量和词向量长度不一样,因此需要经过处理后才能与句子的词表示合并到一起。此处的字向量矩阵可同实施例一中类似,将整个语句的字向量矩阵输入到卷积神经网络中,使用的卷积核长度为字向量长度,卷积核宽度为1到8。卷积后进行池化输出,每个卷积核得到一个1维向量,若对应一个宽度使用64个卷积核,那么每个词可以得到一个64维数组。可将其拼接或合并。本实施例与实施例一的区别是:实施例一中卷积的矩阵是词的字向量矩阵,该处是句子的字向量矩阵。然后,卷积得到的字向量矩阵与词向量矩阵连接,得到各句子对中的语句的新的语句向量表示。
S207:根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值。
同样的,可以利用上述实施例提供的损失函数进行损失值计算。
S208:根据所述损失值,调整所述深度匹配模型的参数。
具体的,在训练过程,可以最小化上述损失值为目标,对模型不断训练,得到最终的深度匹配模型
S209:利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
例如,可以利用不断参数调整所得到的深度匹配模型,将测试集中语句输入至该模型中进行文本匹配,并计算其匹配准确率。
同样的,本实施例也可以在字的基础上对未登录词进行进一步的处理,例如,使用近义词辅助词进行未登录词处理、构建新词表的两种方式。其中,使用近义词辅助词进行未登录词处理方式如下:首先,根据预训练好的词表,区分所述词矩阵中的登录词和未登录词;然后,根据预训练好的词表,将所述登录词用词向量表示;同时,使用所述未登录词的近义词对应的词向量表示所述未登录词。
基于上述方法,本实例还提供了基于未登录词处理的深度文本匹配装置。图10为本申请实施例提供的一种基于未登录词处理的深度文本匹配装置的基本结构示意图。如图10所示,该装置包括:
分词模块301:用于将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
词表示模块302:用于根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
分字模块303:用于将所述句子对中语句分词得到的词语进行分字,得到字矩阵;
字表示模块304:用于根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
语句表示模块305:用于将所述词向量矩阵和所述字向量矩阵连接,得到所述句子对中语句的初始语句向量矩阵;
相似性加权模块306:用于利用所述初始语句向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的语句向量;
损失值计算模块307:用于根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
模型参数调整模块308:用于根据所述损失值,调整所述深度匹配模型的参数;
文本匹配模块309:用于利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
图11为本申请实施例提供的另一种基于未登录词处理的深度文本匹配装置的基本结构示意图。如图11所示,该装置包括:
分词模块401:用于将输入的句子对中的语句进行分词,得到所述句子对中语句的词矩阵;
词表示模块402:用于根据预训练好的词表,将所述词矩阵中的词用词向量表示,得到词向量矩阵;
相似性加权模块403:用于利用所述词向量矩阵对应的相似度矩阵,生成所述句子对中的语句彼此相似性加权后的初始语句向量矩阵;
分字模块404:用于将所述句子对中语句进行分字,得到字矩阵;
字表示模块405:用于根据预训练好的字表,将所述字矩阵中的字用字向量表示,得到字向量矩阵;
语句表示模块406:用于将所述初始语句向量矩阵和所述字向量矩阵连接,得到所述句子对中语句对应的语句向量;
损失值计算模块407:用于根据所述语句向量之间的匹配程度值,计算预设损失函数的损失值;
模型参数调整模块408:用于根据所述损失值,调整所述深度匹配模型的参数;
文本匹配模块409:用于利用参数调整所最终得到的深度匹配模型,对输入的语句进行文本匹配。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。