一种语义匹配的方法、模型的学习方法及服务器与流程

文档序号:16146945发布日期:2018-12-05 16:36阅读:231来源:国知局

本申请涉及计算机应用领域,尤其涉及一种语义匹配的方法、模型的学习方法及服务器。

背景技术

随着移动终端的迅猛发展,移动互联网逐渐成为互联网中一个重大的组成部分。用户对信息的获取方式也在不断的变化,例如问答系统,用户可以通过问答系统获取需要的信息。问答系统也是自然语言处理领域的重要部分。

当前问答系统可以主要包括问句理解部分和答案生成部分,其中,问句理解部分主要是负责分析和理解用户提出的问题,产生一些候选查询项从而协助后续的各个模块。理解用户意图是关键,也是问答系统区别于传统信息检索引擎的核心,它需要将用户表述的自然语言形式的信息转化为机器可识别的形式,传入到系统后续的模块中进行处理。

答案生成模块需要从相关文本中生成候选答案集合,然后从中提取出正确答案。答案提取是将问题与现有的候选答案进行语义上的进一步验证,从而保证返回给用户最相关的结果。

当前,在自然语言处理领域引入深度学习模型,循环神经网络(recurrentneuralnetwork,rnn)、卷积神经网络(convolutionneuralnetwork,cnn)、递归神经网络(recursiveneuralnetwork,rnn)等被应用到自然语言处理中的各个任务中。当前技术中,学习模型接收输入的问句的序列,处理这一时刻的输入数据时只收到当前输入词和此时刻前输入词的影响,而日常生活中人们所说的语句中存在前后关联,造成与输入的序列匹配不准确,从而输出的答句与问句的匹配度降低。



技术实现要素:

本申请实施例提供了一种语义匹配的方法、模型的学习方法及服务器,用于提高语义匹配的准确率。

第一方面,本申请实施例提供了一种语义匹配的方法,包括:

接收待匹配的第一语句;

将所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句进行分词后的第一词序列;

将所述第一词序列转换成第一词向量序列;

将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。

第二方面,本申请实施例提供了一种语义匹配模型的学习方法,包括:

获取语句训练样本集,所述语句训练样本集包括多个样本语句对;

将语句训练样本集输入到分词模型,通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列;

将每个词序列转换成词向量序列;

将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络进行学习训练,得到语义匹配模型。

第三方面,本申请实施例中提供了一种语义匹配服务器,包括:

接收模块,用于接收待匹配的第一语句;

分词模块,用于将所述接收模块接收的所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列;

转换模块,用于将所述分词模块分词后的第一词序列转换成第一词向量序列;

匹配模块,用于将所述转换模块转换的第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。

第四方面,本申请实施例中提供了一种语义匹配服务器,包括:

获取语句训练样本集,所述语句训练样本集包括多个样本语句对;

将语句训练样本集输入到分词模型,通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列;

将每个词序列转换成词向量序列;

将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络进行学习训练,得到语义匹配模型。

第五方面,本申请实施例提供了一种语义匹配服务器,包括:

存储器,用于存储计算机可执行程序代码;

网络接口,以及

处理器,与所述存储器和所述网络接口耦合;

其中所述程序代码包括指令,当所述处理器执行所述指令时,所述指令使所述语义匹配服务器执行上述第一方面或第二方面所述的方法。

第六方面,本申请实施例提供了一种计算机存储介质,用于储存语义匹配服务器所用的计算机软件指令,其包含用于执行上述第一方面或第二方面所述的方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中,语义匹配服务器接收待匹配的第一语句;将所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句进行分词后的第一词序列;将所述第一词序列转换成第一词向量序列;将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。本申请实施例中孪生双向lstm网络可以获取到第一语句的词向量的正向序列和反向序列的信息,也就说可以获取到前文的信息,也可以获取到后文的信息,通过双向lstm可以提高语义匹配的准确率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本申请实施例中孪生双向lstm网络的框架示意图;

图2为本申请实施例中一种语义匹配的系统的架构示意图;

图3为本申请实施例中语义匹配模型构建的步骤流程示意图;

图4为本申请实施例中语义匹配模型的框架示意图;

图5为本申请实施例中双向lstm模型的结构示意图;

图6为本申请实施例中一种语义匹配的方法的一个实施例的步骤流程示意图;

图7为本申请实施例中本终端显示第一语句与第二语句的场景示意图;

图8为本申请实施例中本终端显示第一语句与第二语句的场景示意图;

图9为本申请实施例中一种匹配服务器的一个实施例的结构示意图;

图10为本申请实施例中一种匹配服务器的另一个实施例的结构示意图;

图11为本申请实施例中一种匹配服务器的另一个实施例的结构示意图;

图12为本申请实施例中一种匹配服务器的另一个实施例的结构示意图;

图13为本申请实施例中一种匹配服务器的另一个实施例的结构示意图。

具体实施方式

本申请实施例提供了一种语义匹配的方法、模型的学习方法及服务器,用于提高语义匹配的准确率。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了方便理解本申请,下面对本申请实施例中涉及的词语进行说明。

孪生双向长短期记忆(longshort-termmemory,lstm)网络:请结合图1进行理解,图1为孪生双向lstm网络的框架示意图。孪生双向lstm网络包含至少两个相同双向lstm子网络的神经网络架构,两个子网络具有相同的配置,该相同的配置是指即具有相同的参数和权重。参数更新在两个双向lstm子网络上共同进行。孪生双向网络有两个输入,分别为第一输入和第二输入,两个双向lstm子网络(例如,第一双向lstm子网络,第二双向lstm子网络),第一输入和第二输入分别向第一子网络和第二子网络输入,这两个子网络分别将输入映射到新的空间,形成输入在新的空间中的表示,计算两个输入的匹配度。

语义匹配系统是继信息检索技术之后的新一代信息获取系统。语义匹配可以更准确的理解用户以自然语言形式描述的提问,本申请实施例中的语义匹配是指问题(query)和答案(doc)之间的关联度匹配。本申请实施例提供了一种语义匹配的方法,该方法应用于一种语义匹配的系统,请参阅图2所示,图2为本申请实施例中一种语义匹配的系统的架构示意图,该系统包括终端201、中心服务器202和语义匹配服务器203。该终端201可以为手机、掌上电脑、电脑等,具体的并不限定。

本申请实施例中,终端201装载有各业务的客户端,终端201向中心服务器202发送发起请求,该请求包括待匹配的第一语句,例如,该第一语句为问题语句,中心服务器202根据业务进行分布式调度,中心服务器202向该业务对应的语义匹配服务器203发送请求,语义匹配服务器203接收到该问题语句后,调用基于java的深度学习语义匹配后台框架,语义匹配服务器203接收将所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列;将所述第一词序列转换成第一词向量序列;将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。本申请实施例中,通过孪生双向lstm网络对输入的词向量序列进行处理,分别从正向序列和反向序列进行处理,当预测两个语句之间的匹配度时,由当前时刻的输入,当前时刻的相邻时刻(包括向前时刻和向后时刻)的输入共同决定,通过该孪生双向lstm网络输出第一语句与第二语句对之间的余弦距离,再根据所述余弦距离确定所述第一语句与所述第二语句的匹配度,以提高确定匹配度的准确度,从而找到与第一语句(如问句语句)相匹配的至少一个对应的第二语句(如答案语句),语义匹配服务器203将该至少一个语句反馈至中心服务器202,中心服务器202将该至少一个语句反馈至终端201,终端201显示答案语句。

下面对本申请实施例进行详细描述,请参阅图3和图4进行理解,图3为本申请实施例中语义匹配模型构建的步骤流程示意图,图4为本申请实施例中语义匹配模型的框架示意图。本申请实施例中主要包括两个部分,第一部分:语义匹配模型的训练步骤。第二部分:语义匹配的步骤。

一、关于语义匹配模型的构建。

步骤301、获取语句训练样本集,所述语句训练样本集包括多个样本语句对。

多个样本语句对中的每个样本语句对包括第一语句和第二语句。

通过网络爬虫自动化爬取论坛、贴吧、网站上的数据,这些数据为原始的语料集,大量的语句数据对(即q-a对),例如,q-a对的数量可以为40万。例如,使用单关键词作为搜索的种子,或者,也可以使用多关键字组合作为搜索的种子。或者,也可以使用整句作为搜索的种子,爬取到的语料应该覆盖到尽量广泛的领域。对获取到的语句样本训练集进行预处理,该预处理包括不限于中英半角的转换,停用词的过滤,句子语法依存树的分析,脏词的过滤,得到了高质量的30万q-a对。

步骤302、将语句训练样本集输入到分词模型,通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列。

语义匹配模型包括分词模型,对语句训练样本集中的每个语句进行分词,提取文本实体位置、词性标注、词依赖关系等实体特征。

本申请实施例中,采用分词模型为隐马尔可夫模型(hidingmarkovmodel,hmm)和条件随机场模型(conditionalrandomfields,crf)的结合模型,所述将所述每个样本语句对作为分词模型的输入,通过所述分词模型输出对所述样本语句对进行分词后的词序列。

在底层采用hmm对训练样本进行粗分:

1、对训练样本进行学习,估计出hmm模型的各个参数。

2、对于每个语句序列,找到产生该语句序列的最大可能标记。

3、沿着该最大路径对语句序列进行标记。

然后,将hmm输出的结果输入到crf模型。使用crf模型进行标注。以提高分词的准确率。

将样本语句输入到hmm模型,通过所述hmm模型输出所述样本语句分词后的词序列,将所述样本语句分词后的词序列输入到crf模型,通过所述crf模型输出校准后的样本语句分词后的词序列。

或者,在另一种实现方式中,采用hmm对训练样本进行粗分,对结果进行纠错和处理,将纠错后和处理后的结果传入crf进行标注,还可以增加一些有效的特征。本申请实施例中,采用hmm和crf对语句样本进行分词,提高分词的精度。

步骤303、将每个词序列转换成词向量序列。

对文本信息进行分词,提取文本实体位置、词性标注、词依赖关系等实体特征,然后将这些实体特征和文本信息转换为词向量,提取出文本局部特征。

具体的,构建文本的词向量是将文本信息转换为向量形式,将每个样本句子转换为一个多维矩阵。以样本句子中的一个句子s为例,该句子中包含单词集w(w1,w2,…,wm),该单词集为词序列,提取到的句子s的文本特征集k(k1,k2,…,kn),m为句子s中单词的个数,n为每个句子提取到的文本特征个数,第t个单词提取到的第i个文本特征表示为(1≤i≤n),本文采用的文本特征包括位置标志、词性标注、名实体标志、依赖关系和上下位关系等。对词序列进行词向量化处理:rw=wword×vw,其中:rw是单词集中任一个词的词向量表示;wword∈rl×|m|表示文本词向量矩阵,其中m表示句子中单词的个数,l表示词向量的维数。本申请实施例中采用word2vec机制训练文本词向量矩阵,例如,词向量维数可以为300;vw可以是词w的one-hot表示。同理,对各个文本特征进行词向量化处理:其中:是文本第i个特征的词向量表示;是文本的第i个特征的特征分布向量,每个词对应的向量化表示为各个向量的连接,第t个词对应的向量化表示为最后得到的文本局部特征为e={x1,x2,...xm}。

本申请实施例中,可以采用word2vec机制训练词向量,得到词向量的查询表,所述查询表包括样本语句对应的语言(如中文)中每一个词映射成的固定长度的表示向量,用查询表来表示。使用word2vec机制训练词向量,所以word2vec用于处理序列的数据,在序列局部数据间存在着很强的关联。典型的就是文本的序列,尤其是邻近的词之间关联很强,因此采用word2vec机制训练词向量可以提高词序列中词与词之间的关联性的准确度,学习到的词向量代表了词的语义,可以用来进一步做两个句子之间匹配度计算。

具体的,创建滑动窗口,所述滑动窗口从所述词序列的首位词滑动到末位词,将所述滑动窗口范围内的每个词送入到所述查询表;然后从所述查询表中提取的词向量按照顺序连接成所述词向量序列。

步骤304、将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络。

lstm模型用来处理语句匹配的问题,能够充分利用整个文本序列的信息,包括各个词之间的相互关系信息,并将该种信息用于对每个词的处理当中去。一个lstm模型可以包含很多lstm单元,每个lstm单元包含一个输入门、一个输出门、一个遗忘门和一个记忆单元。设c表示lstm模型的记忆单元,x为lstm模型的输入门,f为lstm模型的遗忘门,h为lstm模型的输出门。构建正向的lstm模型,以文本局部特征{x1,x2,x3…,xm}作为输入,以第t个词为例,激活记忆单元,获取第t个词的lstm单元各个状态的特征值。同理,构建反向的lstm模型后,获取的第t个词的反向lstm单元各个状态的特征值。双向lstm每个词的输出特征都包含了整个句子的信息。

具体的,所述孪生双向lstm网络包括第一子网络和第二子网络,所述第一子网络和所述第二子网络均包括正向lstm层和反向lstm层,样本语句对包括第一语句和第二语句,将每个样本语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络具体可以包括:将所述第一语句的正向词向量序列输入到第一子网络的正向lstm层,将所述第一语句的反向词向量序列输入到第一子网络的反向lstm层;将所述第二语句的正向词向量序列输入到第二子网络的正向lstm层,将所述第二语句的反向词向量序列输入到第二子网络的反向lstm层;对所述第一子网络的正向lstm层及反向lstm层、所述第二子网络的正向lstm层及反向lstm层的输出特征进行最大池化,得到第一语句的第一特征及第二语句的第二特征。

步骤305、计算每个样本语句对的余弦距离,每个样本语句对的余弦距离用于指示所述每个语句对的匹配度。

请结合图5进行理解,图5为本申请实施例中双向lstm模型的结构示意图。

可选的,在双向lstm网络中引入注意力机制,注意力概率可以突出特定的单词对于整个语句的重要程度,引入注意力机制考虑了更多的上下文语义关联。

所述孪生双向lstm网络包括输出层和匹配层,所述输出层包括注意力模型,所述通过所述孪生双向lstm网络输出每个语句对的余弦距离可以具体为:通过所述注意力机制在输出层确定输出的所述词向量序列中当前时刻的词向量的注意力概率;例如,词向量序列的中每个词向量的注意力概率为{an1,an2,an3…,anm}。

根据每个词向量的注意力概率在所述孪生双向lstm网络的匹配层输出每个语句对的余弦距离。然后,将每个语句对所对应的词向量序列的文本局部特征导入双向lstm网络中,采用注意力机制计算注意力概率,对lstm模型输入和输出的相关性进行重要度分析,根据注意力概率获取双向lstm输出特征,对引入注意力机制后lstm的输出特征进行最大池化处理,池化后的统计特征不仅具有更低的维度,同时对网络的训练防止过拟合。获取文本整体特征;通过全连接层融合文本局部特征和文本整体特征,再将融合后的特征导入分类器中进行分类,输出分类结果。

最后,根据余弦距离和设定的阈值,采用对比损失函数确定样本语句对的匹配程度。

在孪生网络(siamesenetwork)中,采用的对比损失函数(contrastiveloss),这种损失函数可以有效的处理孪生网络中的成对数据的关系。对比损失函数的表达式如下:

其中,d代表两个样本特征的余弦距离,y为两个样本是否匹配的标签,y=1代表两个样本相似或者匹配,y=0则代表不匹配,margin为设定的阈值。n表示样本的数量,n表示第n个样本。

对于两个表示的语句来说,可以使用余弦举例来度量两个句子间的距离,上述d可以为:

其中,w1,w2为一个语句对中的两个句子,w1为第一语句,w2为第二语句,pi和qi分别表示该语句对中的两个句子向量中的第i个分量。

对比损失函数在降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。对比损失函数可以很好的表达成对样本语句的匹配程度,也能够很好用于训练提取特征的模型。当y=1(即样本相似)时,损失函数只剩下∑yd2,即原本相似的样本,如果在特征空间的余弦距离较大,则说明当前的模型不好,因此加大损失。而当y=0时(即样本不相似)时,损失函数为∑(1-y)max(margin-d,0)2,∑(1-y)max(margin-d,0)2,即当样本不匹配时,其特征空间的余弦距离反而小的话,损失值会变大,符合需求。

在训练过程中,一般根据训练轮数设置动态变化的学习率。刚开始训练时:学习率以0.01~0.001为宜。一定轮数过后,逐渐减缓。接近训练结束,学习速率的衰减应该在100倍以上。

将所有获取的样本按照训练集,验证集和测试集8:1:1的比例,经过向量化,输入到孪生双向lstm中,采取了随机打乱索引和动态学习率衰减的方式,不断的进行迭代更新,经过多次试验,在学习率0.05,轮数(epoch)为100轮时,得到了较优的语义匹配模型。

本申请实施例中,通过获取语句训练样本集,所述语句训练样本集包括多个样本语句对,然后通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列;然后,将每个词序列转换成词向量序列;将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络,将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络进行学习训练,得到语义匹配模型,。当预测两个语句之间的匹配度时,由当前时刻的输入,当前时刻的相邻时刻(包括向前时刻和向后时刻)的输入共同决定,提高了语义匹配模型的准确度。

本申请实施例中,上述步骤301至步骤305为通过学习训练得到语义匹配模型的步骤,该语义匹配模型可以在线训练,也可以离线训练,具体的并不限定。本实施例中以步骤301至步骤305可以以语义匹配服务器为执行主体,也可以以其他设备为执行主体,然后将训练好的语义匹配的模型发送至语义匹配服务器,由语义匹配服务器执行以下语义匹配的步骤。

二、进行语义匹配。

请参阅图6所示,本申请实施例提供了一种语义匹配的方法的另一个实施例,本实施例中以语义匹配服务器为执行主体进行描述,当通过步骤301至步骤305训练好语义匹配模型之后,可以不执行上述步骤301至步骤305,而是直接执行步骤601,进行语义匹配的步骤。

步骤601、接收待匹配的第一语句。

语义匹配服务器接收来自终端发送的待匹配的第一语句,例如,在一个应用场景中,用户与智能机器人对话,该第一语句为“你家是哪里的”,手机接收到用户输入的问句“你家是哪里的”,手机将该语句发送至中心服务器,该中心服务器进行分布式调度,然后,将该问句发送到业务对应的语义匹配服务器,语义匹配服务器接收到该待匹配的第一语句。

步骤602、将所述第一语句对作为分词模型的输入,通过所述分词模型输出对所述第一语句进行分词后的第一词序列。

所述分词模型为隐马尔可夫模型hmm和条件随机场模型crf,所述将所述第一语句对作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列具体可以为:将所述第一语句输入到hmm模型,通过所述hmm模型输出所述第一语句分词后的词序列;将所述第一语句分词后的词序列输入到crf模型,通过所述crf模型输出校准后的第一词序列。

例如,通过分词模型对该第一语句进行分词,该第一语句为“你家是哪里的”,通过分词模型进行分词后,分词后的词序列为:“你家是哪里的”

步骤603、将所述第一词序列转换成第一词向量序列。

将滑动窗口从所述词序列的首位词滑动到末位词,将所述滑动窗口范围内的每个词送入到所述查询表;从所述查询表中提取的词向量按照顺序连接成所述词向量序列。

步骤604、将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。

将第一词向量序列按照从前往后的顺序在m时刻得到一个固定维度的词向量,输入到一个独立的lstm单元中,同理,将第一词向量序列按照从前往后的顺序按照从后往前的顺序在m时刻得到一个固定维度的词向量,将其按照反向序列输入到一个独立的lstm单元中,正向序列的输入和反向序列的输入作为双向lstm网络的输入。

本申请实施例中,孪生双向lstm网络可以获取到第一语句的词向量的正向序列和反向序列的信息,也就说可以获取到前文的信息,也可以获取到后文的信息,通过双向lstm可以提高语义匹配的准确率,双向lstm网络获取到第一语句的信息,通过双向网络确定与该第一语句相匹配的第二语句,该第二语句的数量不限定,在实际应用中,可以设置一个设定值,例如,该第二语句的数量为k个,通过双向lstm网络输出与第一语句相匹配的k个第二语句。具体的,第一语句的词向量序列输入到第一子网络,第二语句的词向量序列输入到第二子网络,通过双向lstm网络计算第一语句与第二语句的余弦距离,该余弦距离用于指示第一语句和第二语句的匹配度。

可选的,本申请实施例中引入注意力机制,通过注意力机制对所述第一词向量序列中当前时刻输出的目标词向量计算注意力概率,所述注意力概率用于指示所述目标词向量在第一语句中语义的重要程度。例如,第一语句为“你家是哪里的”,第一次词序列为“你家是哪里的”,例如,计算的每个词的注意力概率为:“你家”对应的概率为0.2,“是”对应的概率是0.1,“哪里”对应的概率是0.6,“的”对应的概率是0.1,从注意力概率来看,“哪里”的重要程度大于“你家”,“你家”的注意力概率大于“是”和“的”,可以理解的是,“哪里”在整个词序列中的重要程度最大,也就是“哪里”对输出具有重要的影响作用。本申请实施例中,通过注意力机制计算词序列中的每个词在整个句子中的重要程度,提高预测第二语句的准确率。需要说明的是,本申请实施例中,词序列中每个词的注意力概率为举例说明,并不造成对本申请的限定性说明。

然后,根据注意力权重大于阈值的词向量的语义确定所述第一语句与目标语句集合中每个目标语句之间的余弦距离,该目标语句集合为与第一语句具有相关性的集合,通过所述孪生双向lstm网络输出第一语句与每个目标语句的所述余弦距离,根据余弦距离与对比损失函数计算第一语句与每个目标语句的匹配度,确定匹配度大于阈值的目标语句为第二语句。

步骤605、将第二语句向终端发送,以使终端显示该第一语句和与该第一语句相匹配的第二语句。

请参阅图7和图8进行理解,图7和图8为本申请实施例中终端显示第一语句与第二语句的场景示意图。

语义匹配服务器将第二语句发送至中心服务器,该中心服务器将该第二语句发送至终端,终端显示该第一语句和第二语句,在一个应用场景中,用户与智能对话机器人进行对话,例如,第一语句为“你家是哪里的”,第二语句为“是深圳啊《大魏厂》,我最爱魏厂这个大家庭啦”。

在双向lstm网络中引入注意力机制,注意力概率可以突出特定的单词对于整个语句的重要程度,引入注意力机制考虑了更多的上下文语义关联。

本申请实施例中,语义匹配服务器接收待匹配的第一语句;然后将该第一语句对作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列;将所述第一词序列转换成第一词向量序列;将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。通过孪生双向lstm网络对输入的词向量序列进行处理,分别从正向序列和反向序列进行处理,当预测两个语句之间的匹配度时,由当前时刻的输入,当前时刻的相邻时刻(包括向前时刻和向后时刻)的输入共同决定,以提高确定匹配度的准确度,从而准确的找到与第一语句(如问句语句)相匹配的至少一个对应的第二语句(如答案语句)。

进一步的,本申请实施例中,通过注意力机制对所述第一词向量序列中当前时刻输出的目标词向量计算注意力概率,所述注意力概率用于指示所述目标词向量在第一语句中语义的重要程度;可以突出某个关键性输入对于输出的影响作用,进而可以提高匹配的准确率。

请参阅图9所示,本申请实施例中提供了一种语义匹配服务器,该语义匹配服务器用于执行上述图6对应的方法实施例中语义匹配服务器所执行的方法,本申请实施例中一种语义匹配服务器900的一个实施例包括:

接收模块901,用于接收待匹配的第一语句;

分词模块902,用于将所述接收模块901接收的所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列;

转换模块903,用于将所述分词模块902分词后的第一词序列转换成第一词向量序列;

匹配模块904,用于将所述转换模块903转换的第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。

在一种可能的实现方式中,所述分词模型为隐马尔可夫模型hmm和条件随机场模型crf,所述将所述第一语句作为分词模型的输入;转换模块903,还具体用于将所述第一语句输入到hmm模型,通过所述hmm模型输出所述第一语句分词后的词序列;

将所述第一语句分词后的词序列输入到crf模型,通过所述crf模型输出校准后的第一词序列。

在一种可能的实现方式中,

匹配模块904,还用于述孪生双向lstm网络确定第一语句与目标语句集中每个目标语句的余弦距离;

根据余弦距离和对比损失函数确定所述目标语句集中与第一语句相匹配的第二语句。

在一种可能的实现方式中,

匹配模块904,还用于通过注意力机制对所述第一词向量序列中当前时刻输出的目标词向量计算注意力概率,所述注意力概率用于指示所述目标词向量在第一语句中语义的重要程度;

根据注意力权重大于阈值的词向量的语义确定所述第一语句与第二语句之间的余弦距离。

请参阅图10所示,本申请实施例中提供了一种语义匹配服务器,该语义匹配服务器用于执行上述图3所对应的方法实施例中语义匹配服务器所执行的方法,本申请实施例中一种语义匹配服务器1000的另一个实施例包括:

获取模块1001,用于获取语句训练样本集,所述语句训练样本集包括多个样本语句对;

分词模块1002,用于将获取模块1001获取的语句训练样本集输入到分词模型,通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列;

转换模块1003,用于将分词模型分词后的每个词序列转换成词向量序列;

学习模块1004,用于将转换模块1003转换的每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络进行学习训练,得到语义匹配模型。

在一种可能的实现方式中,

学习模块1004,还用于将每个样本语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络;

计算每个样本语句对的余弦距离;

根据每个样本语句对的余弦距离及对比损失函数迭代训练所述孪生双向lstm网络,得到所述语义匹配模型。

请参阅图11所示,在图10对应的实施例基础上,本申请实施例中提供了一种语义匹配服务器1100的另一个实施例包括:该语义匹配服务器还包括词向量训练模块1005;

词向量训练模块1005,用于采用word2vec机制训练词向量,得到词向量的查询表,所述查询表包括所述语句对应的语言中每一个词映射成的固定长度的表示向量。

请参阅图12所示,在图11对应的实施例基础上,本申请实施例中提供了一种语义匹配服务器1200的另一个实施例包括:语义匹配服务器还包括创建模块1006。

创建模块1006,还用于创建滑动窗口;

转换模块1003,还用于所述创建模块1006创建的滑动窗口从所述词序列的首位词滑动到末位词,将所述滑动窗口范围内的每个词送入到所述查询表;

从所述查询表中提取的词向量按照顺序连接成所述词向量序列。

在一种可能的实现方式中,所述孪生双向lstm网络包括输出层和匹配层,所述输出层包括注意力模型。

学习模块1004,还用于通过所述注意力机制在输出层确定输出的所述词向量序列中当前时刻的词向量的注意力概率;

根据每个词向量的注意力概率在所述孪生双向lstm网络的匹配层输出每个样本语句对的余弦距离。

在一种可能的实现方式中,所述孪生双向lstm网络包括第一子网络和第二子网络,所述第一子网络和所述第二子网络均包括正向lstm层和反向lstm层,所述样本语句对包括第一样本语句和第二样本语句;

学习模块1004,还用于将所述第一语句的正向词向量序列输入到第一子网络的正向lstm层,将所述第一语句的反向词向量序列输入到第一子网络的反向lstm层;将所述第二语句的正向词向量序列输入到第二子网络的正向lstm层,将所述第二语句的反向词向量序列输入到第二子网络的反向lstm层;

对所述第一子网络的正向lstm层及反向lstm层、所述第二子网络的正向lstm层及反向lstm层的输出特征进行最大池化处理,得到第一语句的第一特征及第二语句的第二特征。

请参阅图13所示,本申请实施例还提供了一种语义匹配服务器的另一个实施例,基于图13的结构,可以执行上述图3和图6对应的方法实施例中语义匹配服务器所实际执行的步骤。

图13是本申请实施例提供的一种服务器结构示意图,该服务器1300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器1322和存储器1332,一个或一个以上存储应用程序1342或数据1344的存储介质1330(例如一个或一个以上海量存储设备)。其中,存储器1332和存储介质1330可以是短暂存储或持久存储。存储在存储介质1330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,处理器1322可以设置为与存储介质1330通信,在服务器1300上执行存储介质1330中的一系列指令操作。

服务器1300还可以包括一个或一个以上电源1326,一个或一个以上有线或无线网络接口1350,一个或一个以上输入输出接口1358,和/或,一个或一个以上操作系统1341。

上述实施例中由服务器所执行的步骤可以基于该图13所示的服务器结构。

处理器1322,用于执行如下步骤:

接收待匹配的第一语句;

将所述第一语句作为分词模型的输入,通过所述分词模型输出对所述第一语句进行分词后的第一词序列;

将所述第一词序列转换成第一词向量序列;

将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。

在一种可能的实现方式中,所述分词模型为隐马尔可夫模型hmm和条件随机场模型crf,所述将所述第一语句作为分词模型的输入;

处理器1322,还用于将所述第一语句输入到hmm模型,通过所述hmm模型输出所述第一语句分词后的词序列;

将所述第一语句分词后的词序列输入到crf模型,通过所述crf模型输出校准后的第一词序列。

在一种可能的实现方式中,处理器1322,还用于所述将所述第一词向量序列输入到孪生双向lstm网络,通过所述孪生双向lstm网络确定第一语句与目标语句集中每个目标语句的余弦距离;

根据余弦距离和对比损失函数确定所述目标语句集中与第一语句相匹配的第二语句。

在一种可能的实现方式中,处理器1322,还用于通过注意力机制对所述第一词向量序列中当前时刻输出的目标词向量计算注意力概率,所述注意力概率用于指示所述目标词向量在第一语句中语义的重要程度;

根据注意力权重大于阈值的词向量的语义确定所述第一语句与第二语句之间的余弦距离。

或者,处理器1322,用于执行如下步骤:

获取语句训练样本集,所述语句训练样本集包括多个样本语句对;

将语句训练样本集输入到分词模型,通过分词模型对语句训练样本集中的每个样本语句进行分词,得到每个样本语句的词序列;

将每个词序列转换成词向量序列;

将每个语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络进行学习训练,得到语义匹配模型。

处理器1322,还用于将每个样本语句对所对应的词向量序列按照正向序列和反向序列输入到孪生双向lstm网络;

计算每个样本语句对的余弦距离;

根据每个样本语句对的余弦距离及对比损失函数迭代训练所述孪生双向lstm网络,得到所述语义匹配模型。

处理器1322,还用于采用word2vec机制训练词向量,得到词向量的查询表,所述查询表包括所述语句对应的语言中每一个词映射成的固定长度的表示向量。

处理器1322,还用于创建滑动窗口;

所述滑动窗口从所述词序列的首位词滑动到末位词,将所述滑动窗口范围内的每个词送入到所述查询表;

从所述查询表中提取的词向量按照顺序连接成所述词向量序列。

所述孪生双向lstm网络包括输出层和匹配层,所述输出层包括注意力模型;

处理器1322,还用于通过所述注意力模型在输出层确定输出的所述词向量序列中当前时刻的词向量的注意力概率;

根据每个词向量的注意力概率在所述孪生双向lstm网络的匹配层输出每个样本语句对的余弦距离。

所述孪生双向lstm网络包括第一子网络和第二子网络,所述第一子网络和所述第二子网络均包括正向lstm层和反向lstm层,所述样本语句对包括第一样本语句和第二样本语句;

处理器1322,还用于将所述第一语句的正向词向量序列输入到第一子网络的正向lstm层,将所述第一语句的反向词向量序列输入到第一子网络的反向lstm层;

将所述第二语句的正向词向量序列输入到第二子网络的正向lstm层,将所述第二语句的反向词向量序列输入到第二子网络的反向lstm层;

所述方法还包括:

对所述第一子网络的正向lstm层及反向lstm层、所述第二子网络的正向lstm层及反向lstm层的输出特征进行最大池化处理,得到第一语句的第一特征及第二语句的第二特征。

本申请实施例中,语义匹配服务器接收待匹配的第一语句;然后将该第一语句对作为分词模型的输入,通过所述分词模型输出对所述第一语句对进行分词后的第一词序列;将所述第一词序列转换成第一词向量序列;将所述第一词向量序列按照正向序列和反向序列输入到孪生双向长短期记忆lstm网络,通过所述孪生双向lstm网络输出与所述第一语句相匹配的第二语句。通过孪生双向lstm网络对输入的词向量序列进行处理,分别从正向序列和反向序列进行处理,当预测两个语句之间的匹配度时,由当前时刻的输入,当前时刻的相邻时刻(包括向前时刻和向后时刻)的输入共同决定,以提高确定匹配度的准确度,从而准确的找到与第一语句(如问句语句)相匹配的至少一个对应的第二语句(如答案语句)。

进一步的,本申请实施例中,通过注意力机制对所述第一词向量序列中当前时刻输出的目标词向量计算注意力概率,所述注意力概率用于指示所述目标词向量在第一语句中语义的重要程度;可以突出某个关键性输入对于输出的影响作用,进而可以提高匹配的准确率。

本申请实施例中还提供了一种计算机存储介质,用于储存语义匹配服务器所用的计算机软件指令,其包含用于执行上述方法实施例中所述的方法步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1