一种基于神经网络的需求文档和服务文档匹配方法与流程

文档序号:16331198发布日期:2018-12-19 06:12阅读:181来源:国知局
一种基于神经网络的需求文档和服务文档匹配方法与流程

本发明涉及计算机自然语言处理领域,主要针对于需求文档和服务文档的匹配,具体涉及一种基于神经网络的需求文档和服务文档匹配方法。

背景技术

随着互联网迅速发展和普及,现代企业生产方式变成以技术为基础的互相协作。为了寻找相互协作的企业,需求方编写符合企业需求的需求文档,而技术方编写企业技术能力对应的服务文档,通过连接互联网,加快发现协作企业,减少企业时间和人力成本。

企业需求文档包含企业需要解决的问题以及解决该问题时需要达到的指标,企业服务文档则包含概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划。如何通过需求文档和服务文档快速为企业寻找合作伙伴成为当下一个热点和难点。

目前常用的文档匹配方法通过将文本转化为文档向量空间模型(vectorspacemodel,vsm),在逆文档频率(termfrequency–inversedocumentfrequencymodel,tf-idf)模型的基础上通过距离函数计算两个文档的相似度,距离越小就越相似。由于需求文档可能会包含需要合作企业同时满足的几项需求,而服务文档可能会列举企业目前能够最大程度提供的技术服务,服务文档需要满足需求文档中绝大多数或者全部的情况下才是正确的匹配,目前的匹配方法在这方面还存在不足。



技术实现要素:

为了克服目前的匹配方法在需求文档和服务文档匹配上的不足,提高需求文档和服务文档匹配的准确率,本发明提出了一种基于神经网络的需求文档和服务文档匹配方法,利用需求文档和服务文档的内容的特殊性,提取文档内容,在更细粒度进行匹配,最后综合得出匹配结果。

为达到上述目的,本发明采用下述技术方案:

步骤1:输入一篇需求文档和一篇服务文档作为待匹配文档,需求文档包含企业需要解决的问题以及解决该问题时需要达到的指标,服务文档则包含概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划;

步骤2:根据文档内容判断输入文档是需求文档或服务文档;

步骤2.1:包括企业需要解决的问题以及解决该问题时需要达到的指标部分则是需求文档,提取企业需要解决的问题以及解决该问题时需要达到的指标部分;

步骤2.2:包括概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划部分则是服务文档,提取概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划部分;

步骤2.3:最终的需求文档和服务文档的相似度要对所有需求文档提取部分与所有服务文档提取部分计算相似度,以下取需求文档的需要解决的问题和服务文档的概述解决该难题技术的方法为例;

步骤3:对需求文档的需要解决的问题部分和服务文档的概述解决该难题技术的方法部分中的句子进行段落嵌入(paragraphembedding,pe)处理,获得句子向量;

步骤4:通过长短期记忆网络(longshort-termmemory,lstm)判断文档分割点;

步骤4.1:将获得的句子向量输入训练好的长短期记忆网络(longshort-termmemory,lstm)中,由长短期记忆网络输出结果判断前一句子是否是一个分割点;

步骤4.2:根据分割点将一个部分分割成意思不同的几段文本,对需求文档的问题部分就是一个个需求,服务文档的解决部分就是一个个方法。

步骤5:根据处理结果类型构造相似度模型输入;

步骤5.1:如果是需求文档,则将一个需求的所有句子通过pe模型处理后得到句子向量构成一个矩阵,同时取一个方法的所有句子向量构成另一个矩阵;

步骤5.2:如果是服务文档,则将一个方法的所有句子通过pe模型处理后得到句子向量构成一个矩阵,同时取一个需求的所有句子向量构成另一个矩阵;

步骤6:将两个矩阵作为输入通过训练好的卷积神经网络(convolutionalneuralnetworks,cnns)计算相似度,每个需求交叉的和每个方法计算相似度,对每个需求取相似度最大的值作为这一需求的最终值;

步骤7:对相似度值加权平均获得最终相似度;

步骤7.1:获取每个需求最终值后求加权平均值作为需求文档的需要解决的问题最终相似度值;

步骤7.2:上述步骤以需求文档的需要解决的问题和服务文档的概述解决该难题技术的方法为例,需求文档包含需要解决的问题以及解决该问题时需要达到的指标部分,根据上述方法再求得需求文档解决该问题时需要达到的指标部分相似度,求两部分加权平均值作为需求文档和服务文档最终相似度;

步骤8:最终相似度和预设阈值相比较,大于阈值则两篇文档匹配,小于阈值则两篇文档不匹配。

其中,步骤4所述的分割点是指文档的前一句和后一句所述意思不相同,则前一句是一个分割点。长短期记忆网络历史信息更新公式为:

ct=0(whenht-1→1)

其中ct时长短期记忆网络t时刻的历史信息,ht-1是上一个状态的输出。

更新历史信息时,如果前一时间得到的输出是分割点,则将ct更新为0,不是分割点则不处理。

本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著技术进步:通过文本分割方法对需求文档和服务文档进行分割,获得具体的需求和服务,最后基于具体的需求和服务计算匹配度,解决了需求文档和服务文档匹配时需要大部分或者全部满足的问题。将出现的指标信息单独构造一维加入原始输入矩阵,解决了需求文档和服务文档中指标信息对匹配结果的影响。在求得各分割文档相似度后又进行了交叉匹配,取最佳匹配结果,解决了因用户习惯不同对匹配结果的影响。

附图说明

图1为本发明流程图。

图2为本发明相似度计算模型卷积网络图。

图3为本发明相似度计算模型中卷积操作图。

图4为本发明相似度计算模型中相似度层图。

图5为本发明交叉匹配图。

具体实施方式

实施例1

下面结合本发明中的附图,对本发明的技术方案进行清晰、完整地描述。

本发明提出了一种需求文档和服务文档匹配发明,具体流程图如图1所示具体实施步骤如下:

步骤1:输入一篇需求文档和一篇服务文档作为待匹配文档,需求文档包含企业需要解决的问题以及解决该问题时需要达到的指标,服务文档则包含概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划;

步骤2:根据文档内容判断输入文档是需求文档或服务文档;

步骤2.1:包括企业需要解决的问题以及解决该问题时需要达到的指标部分则是需求文档,提取企业需要解决的问题以及解决该问题时需要达到的指标部分;

步骤2.2:包括概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划部分则是服务文档,提取概述解决该难题技术的方法、解决过类似项目的经验、承接本项目具备的技术储备、所获得的相关专利、拟采取的研究方法、主要实现的技术指标和项目进度计划部分;

步骤2.3:最终的需求文档和服务文档的相似度要对所有需求文档提取部分与所有服务文档提取部分计算相似度,以下取需求文档的需要解决的问题和服务文档的概述解决该难题技术的方法为例;

步骤3:对需求文档的需要解决的问题部分和服务文档的概述解决该难题技术的方法部分中的句子进行段落嵌入(paragraphembedding,pe)处理,获得句子向量;

在词嵌入(wordembedding,we)模型中,每个单词都能被映射到文档矩阵w中惟一一列,列的索引就是单词在词汇中的位置,然后将词向量级联起来就能预测句子中的下一个单词。给定一个单词序列w1,w2,w3,…,wt,词嵌入模型的目标就是最大化平均log概率,计算公式如式(ⅰ)所示:

其中概率p是正确预测下一词的概率。

预测任务通过多分类器来完成,例如softmax分类器,计算公式如式(ⅱ)所示:

对于每一个输入单词i,yi是非归一化对数概率,计算公式如式(ⅲ)所示:

y=b+uh(wt-k,…,wt+k;w)(ⅲ)

其中u和b是softmax分类器的参数,h由从w提取的单词矢量的连接或平均值构成。

pe模型的灵感来自于we,段落嵌入也能够用来预测句子中的下一单词。每一个段落单词被映射到矩阵d中惟一一列,而每个单词被映射到矩阵w中惟一一列。和we模型相比,pe模型唯一变化在公式(ⅲ),h由从w提取的单词矢量的连接或平均值构成变成由w和d构成。

步骤4:通过长短期记忆网络(longshort-termmemory,lstm)判断文档分割点;

步骤4.1:将获得的句子向量输入训练好的长短期记忆网络(longshort-termmemory,lstm)中,由长短期记忆网络输出结果判断前一句子是否是一个分割点;

步骤4.2:根据分割点将一个部分分割成意思不同的几段文本,对需求文档的问题部分就是一个个需求,服务文档的解决部分就是一个个方法。

lstm网络包含三种门结构:遗忘门(forgetgate)、输入门(inputgate)和输出门(outputgate)。每个门作用不同,具体作用如下:

遗忘门:遗忘门用来对保存的历史信息进行处理。遗忘门运算使用当前输入信息和上一时间状态,然后通过一层sigmoid层,输出范围[0,1],当输出为0,舍弃历史信息,当输入为1时,保留历史信息。判断丢弃与否使用公式(ⅳ):

ft=σ(wf[ht-1,xt]+bf)(iv)

其中σ代表sigmoid函数,x是由pe模型处理后得到了向量,h代表输出结果,判断是否是分割点,w是长短期记忆网络连接参数,b是偏置值,f决定我们在t时刻要遗忘的信息。

输入门:输入门决定对历史信息怎样更新。输入门可以对输入信息运算后得知是否将当前输入更新到历史信息中。包含一个sigmoid层和一个tanh层,sigmoid层决定我们将更新什么,tanh层产生新的候选值。计算公式如式(v)和式(ⅵ)所示:

it=σ(wf[ht-1,xt]+bi)(v)

其中i决定更新的数值,h代表输出结果,判断是否是分割点,w是长短期记忆网络连接参数,b是偏置值,ct是长短期记忆网络t时刻的历史信息。

从遗忘门获取了历史信息,从输入门获取了更新候选键,使用如(ⅶ)公式更新历史信息:

其中c是长短期记忆网络的历史信息,f由公式(ⅳ)计算所得,决定了t时刻要遗忘的信息,i由公式(v)计算所得,决定了更新的数值。

输出门:输出门用来控制当前节点输出信息。首先会通过一个sigmoid层来决定输出那些信息,然后与tanh层输出相乘得到输出。计算公式如式(ⅷ)和式(ⅸ)所示:

ot=σ(wf[ht-1,xt]+bo)(viii)

ht=ot*tanh(ct)(ix)

其中σ代表sigmoid函数,x是由pe模型处理后得到了向量,h代表输出结果,判断是否是分割点,w是长短期记忆网络连接参数,b是偏置值。

获取lstm输出后,通过一层sigmoid层,使得输出处于[0,1]之间,当输出接近1时,代表前一节点是分割点,反之则是连续点。

使用公式(ⅹ)更新历史信息时,如果前一时间得到的输出是分割点,则将ct更新为0,不是分割点则不处理。

ct=0(whenht-1→1)(x)

公式(ⅳ)到(ⅹ)中σ代表sigmoid函数,x代表输入,h代表输出,判断是否是分割点w代表连接参数,b代表偏置值。

步骤5:根据处理结果类型构造相似度模型输入;

步骤5.1:如果是需求文档,则将一个需求的所有句子通过pe模型处理后得到句子向量构成一个矩阵,同时取一个方法的所有句子向量构成另一个矩阵;

步骤5.2:如果是服务文档,则将一个方法的所有句子通过pe模型处理后得到句子向量构成一个矩阵,同时取一个需求的所有句子向量构成另一个矩阵;

步骤6:将两个矩阵作为输入通过训练好的卷积神经网络(convolutionalneuralnetworks,cnns)计算相似度,每个需求交叉的和每个方法计算相似度,对每个需求取相似度最大的值作为这一需求的最终值;

本发明中cnns模型如图2所示。

cnns网络一般分为输入层,输出层,卷积层和全连接层。

输入层:输入层直接作用于输入矩阵,本发明中是经过pe模型处理后的分割文本句子矩阵。

输出层:经过cnns处理后的输出,本发明输出是两段文本的相似度。

卷积层:对输入进行特征提取。由卷积层和采样层组成。卷积层作用是提取输入数据的特征,不同卷积核提取到的特征不同。采样层作用是减少数据的同时还要保留下重要信息,以加快处理速度,同一层的采样神经元共享权值。采样层采用了sigmoid函数作为激活函数,使得采样层具有位移不变性。

获取分割文本之后,对于文本进行分词处理,留下tf-idf高的词,由于需求和服务中经常含有指标信息,因此本文还会留下所有数字,使用pe模型对分割后文本每个句子进行处理,将所得句子向量组合成矩阵,数字重复后作为单独的一维。

需求文档和服务文档形成的矩阵先经过各自卷积层,卷积处理后再连接一层相似度层,最后通过一层全连接层输出相似度。

为了尽可能多的获取文本的特征,使用两种卷积操作,如图3所示:左边的窗口大小为2,整个单词向量。右边窗口大小也为2时每次只包括单词向量的一个维度。实际实验中,窗口大小采用了1,dim/2和∞三种

经过采样层时,对于两种卷积所获得的结果分别使用最大值池化、最小值池化和均值池化,不同池化方法能够收集到不同的信息,方便进行后面的处理。

相似度层使用的相似度发明是余弦相似度。由于使用了最大值、最小值和均值三种池化方法,因此,它们要相互求取相似度,由于采样之后结果是矩阵,因此对于每个矩阵,每一行都与另一矩阵每一行求相似度,每一列都与另一矩阵每一列求相似度,如图4所示。比如假设最大值池化后结果是一个n×m的矩阵。矩阵的第i行要和另一个矩阵的n行求取相似度,矩阵的第m列要和另一矩阵的第j列求取相似度,最终求得的结果作为相似度层,同时还要对整个矩阵和另一个矩阵求一次相似度,由于对行和列求相似度的结果比对整个矩阵求相似度结果多,因此复制对整个矩阵求得的相似度结果,使得三者权重相等,最终连接一个全连接层输出相似度结果。

全连接层:和传统神经网络中全连接层一样,本发明在输出之前使用一层全连接层。

步骤7:对相似度值加权平均获得最终相似度;

步骤7.1:获取每个需求最终值后求加权平均值作为需求文档的需要解决的问题最终相似度值;

步骤7.2:上述步骤以需求文档的需要解决的问题和服务文档的概述解决该难题技术的方法为例,需求文档包含需要解决的问题以及解决该问题时需要达到的指标部分,根据上述方法再求得需求文档解决该问题时需要达到的指标部分相似度,求两部分加权平均值作为需求文档和服务文档最终相似度;

最终相似度计算是在需求文档每一个部分的分割结果和服务文档每个部分的分割结果上进行的,如图5所示,由于需求文档仅有两个部分,即需要解决的问题以及解决该问题时需要达到的指标,因此每个部分进行文本分割后都会与服务文档每个部分分割后的结果交叉求相似度,取交叉结果的最大值作为该部分匹配值,比如需求文档的需要解决的问题部分分割出n个片段,服务文档概述解决该难题技术的方法部分分割出m个结果,交叉计算后有n×m个匹配结果,对需求文档每个部分取相似度最大的值作为这一部分的最终值,获取需求文档所有部分最终值后求加权平均值作为需求文档的需要解决的问题最终相似度值。同理,需求文档的需要解决的问题部分和服务文档所有部分求最佳交叉结果。

上述步骤以需求文档的需要解决的问题和服务文档的概述解决该难题技术的方法为例,需求文档包含需要解决的问题以及解决该问题时需要达到的指标部分,根据上述方法再求得需求文档解决该问题时需要达到的指标部分相似度,求两部分加权平均值作为需求文档和服务文档最终相似度。

步骤8:最终相似度和预设阈值相比较,大于阈值则两篇文档匹配,小于阈值则两篇文档不匹配。

其中,所述步骤4中的分割点是指文档的前一句和后一句所述意思不相同,则前一句是一个分割点。所述的长短期记忆网络的历史信息更新公式为:

ct=0(whenht-1→1)

其中ct是长短期记忆网络t时刻的历史信息,ht-1是上一个状态的输出,判断是否是分割点。

更新历史信息时,如果前一时间得到的输出是分割点,则将ct更新为0,不是分割点则不处理。

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