基于兼容性感知的服务推荐方法

未命名 10-21 阅读:60 评论:0


1.本发明属于web服务推荐领域,具体涉及基于兼容性感知的服务推荐方法。


背景技术:

2.随着web2.0的发展,用户越来越倾向于通过互联网上的各种服务来开发应用并创造价值,例如商品订购、在线聊天等,只需在网络上点击即可完成。web服务数量呈迅猛增长趋势,企业如baidu、google等也通过面向服务架构(soa)、面向服务计算(soc)等方法向用户发布web服务以获得额外的经济效益。同时,web2.0技术的发展为web服务的使用提供了技术支持,使得服务面向更广泛的用户群体,而非仅限于少数专业用户。为了提高应用程序的开发效率,开发人员通常倾向于通过组合一个或多个的服务来创建理想中的应用程序。基于此种情况,对于应用程序中包含的一个或者多个服务进行兼容性评估非常有必要。chen等人中提出了一种兼容性评估方法,通过判断一个服务的输入是否在语义上与另一服务的输出匹配。然而,并非所有的服务都是由具有丰富的语义描述的,这使得基于输入/输出语义匹配的兼容性度量方法在某些情况下不可行。并且,如果只考虑服务的输入/输出语义信息是不够的,因为两个不相关的服务可能具有完全相同的输入和输出。比如,需要考虑两个服务,一个为籍贯查询服务,其中输入为身份证号码,输出为出生地,即籍贯。另一个服务为酒店预定服务,其中输入为身份证号码,输出为预定房间类型和日期。从输入语义的角度看,这两个服务之间是兼容的,而且是可组合的,但是将这两个服务组合在一起并没有多大的意义。qi等人定义了“服务-服务”关联图。接着,结合斯坦纳树搜索方法,提出了一种兼容性感知的服务推荐方法,以返回一组具有高级兼容性的服务。然而,当前的研究工作仍然不能同时满足输入的开发关键字和预先选择的部分服务方面的个性化需求。


技术实现要素:

3.本发明针对现有技术的不足,提出了一种新的服务推荐技术框架,包含了三个部分。首先,利用transformer模型提取应用程序开发需求特征,接着利用深度神经网络对候选服务与开发意图的匹配度深入挖掘,得到应用程序对于各个服务的文本偏好。其次,通过应用程序-服务历史调用记录获取应用程序服务类别网络图,使用kgat模型深入挖掘应用程序-服务调用信息,提取得到应用程序特征和服务特征,从而得到应用程序对于各个服务的结构偏好。通过应用程序服务类别网络图,可以计算得出加权服务相关图,利用node2vec模型对加权服务相关图中的服务的特征进行初步提取,接着利用深度神经网络进一步挖掘服务与服务之间的兼容性。最后,将上述三者融合,得到最终的服务推荐列表。
4.为实现上述目的,本发明提供基于兼容性感知的服务推荐方法,包括如下步骤:
5.利用transformer模型提取应用程序开发需求特征,利用深度神经网络对候选服务与开发意图的匹配度深入挖掘,得到应用程序对于各个服务的文本偏好(对应步骤(2));
6.通过应用程序-服务历史调用记录获取应用程序服务类别网络图,使用kgat模型深入挖掘应用程序-服务调用信息,提取得到应用程序特征和服务特征,得到应用程序对于
各个服务的结构偏好(对应步骤(3));
7.通过应用程序服务类别网络图,计算得出加权服务相关图,利用node2vec模型对加权服务相关图中的服务的特征进行初步提取,利用深度神经网络进一步挖掘服务与服务之间的兼容性(对应步骤(4));
8.将基于开发需求的服务偏好、基于历史调用记录的服务偏好和基于兼容性的服务偏好融合,得到最终的服务推荐列表(对应步骤(5))。
9.在优选的实施方案中,推荐方法具体包括如下步骤:
10.步骤(1).预处理文本,所述的文本为应用程序开发需求文本;
11.步骤(2).文本描述特征提取,transformer编码器对需求文档中的所有单词提取特征表示,输出可表示为其中,l表示开发需求的长度,vecu表示在位置u的单词的嵌入表示,u=1,2...l;编码器由n个相同的层组成,每一个层包含了两个子层,分别为自注意机制和完全连接的前馈网络,假设输入为g,子层应用残差连接,然后进行层归一化来计算输出,表示为layernorm(g+sublayer(g)),其中sublayer表示自注意机制和完全连接的前馈网络;
12.步骤(3).使用图神经网络kgat来提取历史应用程序和服务表示,kgat主要包含了三个部分,分别为嵌入层,注意力传播层和特征表示生成,最终提取到应用程序特征表示和服务特征表示;
13.步骤(4).使用node2vec和深度神经网络来进行结构兼容性分析,node2vec在学习特征表示的过程中借用了自然语言处理的skip gram模型,使获得的序列中两个节点的共现概率最大;
14.步骤(5).通过文本信息和历史调用记录得到各类偏好以及服务兼容性,得到最终的服务推荐列表公式如下:
[0015][0016]
其中0≤α+β≤1,α代表基于应用程序历史调用记录得到的服务偏好的重要程度,β表示基于开发需求得到的服务偏好的重要程度。
[0017]
优选的,步骤(2)具体为:
[0018]
步骤(2.1).第l层的输入为前一层的输出第一层的输入为文档的嵌入表示在自注意机制中,查询q、关键字k和值v都是具有不同参数矩阵的的线性投影,自我注意力的输出是根据缩放的点积注意力来计算的,计算过程如下所示:
[0019][0020]
步骤(2.2).transformer编码器并行计算h头实现自我注意,其中每个头基于上述公式计算注意力,多头注意力的输出是h个头的串联,接着进行线性投影,过程如下:
[0021]
multihead(q,k,v)=f(h1,h2,
…hh
)wm[0022]
[0023]
其中,f表示拼接操作,wm,表示参数矩阵;
[0024]
步骤(2.3).在自注意机制子层后,完全连接子层获取自注意的输出,表示如下:
[0025]
ffn(x
l
)=relu(x
l
w1+b1)w2+b2[0026]
其中,w1,w2,b1和b2表示可训练参数,在经过n层编码后,transformer编码器获取文档表示
[0027]
步骤(2.4).然后将输入到dnn层,以进一步提取文本特征的非线性交互。这个过程可以表示为:
[0028][0029]
步骤(2.5).将学习到的向量输入到sigmoid函数中,输出为表示为服务s被应用程序a选择的概率的预测值,该过程定义如下:
[0030][0031]
其中,w
a,s
,b
a,s
表示服务被应用程序选择的概率的权重矩阵和服务被应用程序选择的概率的偏置;
[0032][0033]
其中y
a,s
[a,s]代表应用程序a是否真实的调用过服务s,如果应用程序a调用过服务s,则y
a,s
[a,s]=1,否则,y
a,s
[a,s]=0;以此确定w
a,s
和b
a,s
的值。
[0034]
步骤(3)具体为:
[0035]
步骤(3.1).kgat使用transr将知识图的实体和关系进行嵌入,给定程序服务标记网络图g,对于三元组(h,r,t)∈g,其计算过程如下所示:
[0036][0037]
其中wv∈rn×m是关系r的变换矩阵,对于三元组(h,r,t),h和t分别表示应用程序、服务,r表示它们在知识图中的关系;
[0038]
步骤(3.2).注意力传播层将信息从邻居节点传递到目标节点,以捕捉节点之间的交互模式,分为:信息传播,知识感知注意力和信息汇聚,知识传播对信息从一个实体到另一个实体的传播进行建模,所有实体都受到图网络结构中周围实体的影响,为了表示实体的一阶连接,kgat使用ego-network,知识感知注意力使用关系注意机制来实现每对实体之间的传播,信息汇聚将实体表示及其ego-network表示聚合为新的表示,在此阶段,使用三种类型的聚合,即gcn聚合器、graphsage聚合器和bi-interaction聚合器,然后,传播到多个层以探索更高阶的连接性信息;
[0039]
步骤(3.3).在执行m阶传播之后,对于应用程序a节点和服务s节点,总体特征表示如下:
[0040][0041][0042]
其中||表示拼接操作;
[0043]
步骤(3.4).最终,应用程序a对于服务s的偏好可表示为:
[0044][0045]
进一步的,步骤(4)具体为:
[0046]
使用node2vec和深度神经网络来进行结构兼容性分析,node2vec在学习特征表示的过程中借用了自然语言处理的skip gram模型,使获得的序列中两个节点的共现概率最大,图gs=(v,e),从节点中学习特征表示的映射函数f:v

rd,其目标函数如下:
[0047][0048]
其中vi表示图gs中的某一节点,ns(vi)表示节点vi的邻居;
[0049]
步骤(4.1).由于条件独立性,pro(ns(vi)|f(vi))可表示成:
[0050][0051]
由于特征空间中的对称性,以下等式成立:
[0052][0053]
基于上述两个公式,进一步优化目标可表示为:
[0054][0055]
其中是使用负采样近似每个节点的划分函数,最后,利用随机梯度下降方法对图中所有节点上的目标函数进行了有效的优化;
[0056]
步骤(4.2).通过node2vec可得到图中的节点特征表示,假设有节点ve和节点vj,得到节点特征表示为svi和svj,接着分析应用程序中已选服务的情况,利用已选服务的节点特征预测候选服务与已选服务之间的兼容性,分别将已选服务si输入到dnn模型中,提取节点特征的非线性交互,过程可表示为:
[0057][0058]
步骤(4.3).将学习到的向量输入到sigmoid函数中,输出为输入到sigmoid函数中,输出为表示为服务si和服务sj出现在同一个应用程序中的概率,该过程定义如下:
[0059][0060]
其中,表示服务si和服务sj出现在同一个应用程序中的概率的权重矩阵和偏置;
[0061]
步骤(4.4).将应用程序a中的已选服务对于各个候选服务的兼容性概率分别相加,得到该应用程序a中已选服务对于候选服务的最终兼容性值,表示为
[0062]
本发明的又一个目的是提供一种处理器,处理器用于运行计算机程序,计算机程序运行时执行前述的推荐方法。
[0063]
本发明还提供一种终端,包含存储器、处理器及存储在存储器并可在处理器上运
行的计算机程序,所述处理器执行所述程序时实现前述的推荐方法。
[0064]
本发明的另一个目的是提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行可实现前述的推荐方法。
[0065]
本发明所提出的基于兼容性感知的服务推荐方法主要分为以下几个模块进行:基于开发需求的服务推荐,基于历史调用记录的服务推荐和服务兼容性分析。
[0066]
基于开发需求的服务推荐主要对开发需求进行语义特征提取,从而得到服务推荐列表。给予历史调用记录的服务推荐根据历史服务调用的记录,得到应用程序-服务调用列表,它可以提供有关应用程序中服务的关系信息。基于服务兼容性的服务推荐对服务历史共现进行分析,得出服务与服务之间的可组合性。
[0067]
本发明提出的方法在进行服务推荐时综合考虑了文本信息,历史调用记录和服务兼容性。通过从programmableweb网站上抓取的真实数据下进行的广泛实验,证明了基于兼容性感知的服务推荐方法的准确性。
附图说明
[0068]
图1基于兼容性感知的服务推荐方法的框架图。
具体实施方式
[0069]
下面将对本发明所提供的基于兼容性感知的服务推荐方法的具体说明。为叙述方便,定义相关符号如下:
[0070][0071]
步骤(1).预处理文本,在创建应用程序时,开发人员需要输入应用程序需求或描述,记为a
des
,a
des
由一组短语、句子甚至段落组成,作为开发人员对类似应用程序的开发需求,描述通常包含噪声,因此不能直接用于模型学习,为了保留文本中的重要信息,需要进行文本过滤、缩写替换和词元化等预处理过程;
[0072]
步骤(2).文本描述特征提取,给定预处理后的开发需求,transformer编码器对文档中的所有单词提取特征表示,输出可表示为其中,l表示开发需求的长度(即单词的个数为l),vecu表示在位置u的单词的嵌入表示,u=1,2...l;编码器由n个相同的层组成,每一个层包含了两个子层,分别为自注意机制和完全连接的前馈网
络,假设输入(即预处理过后的文档)为g,子层应用残差连接,然后进行层归一化来计算输出,可以表示为layernorm(g+sublayer(g)),其中sublayer表示自注意机制和完全连接的前馈网络;layernorm表示正则化,是将数值缩放到一个均值为0、方差为1的域里。
[0073]
步骤(2.1).这里选取其中的第l层来进行简单介绍,其中l=1,2...n,第l层的输入为前一层的输出当l=1时,第一层的输入为文档的嵌入表示在自注意机制中,第l层的查询q、关键字k和值v都是具有不同参数矩阵的的线性投影,自我注意力的输出是根据缩放的点积注意力来计算的,计算过程如下所示:
[0074][0075]
其中de为缩放因子。q
t
k的值可能较大,softmax(x)在x较大处的梯度很小;若网络层次较深,在传播时容易造成梯度消失;因此,需缩放因子de。softmax为注意力函数;att(q,k,v)表示自我注意力的输出。
[0076]
步骤(2.2).此外,transformer编码器并行计算h头实现自我注意,其中每个头基于上述步骤(2.1)的公式计算注意力,多头注意力的输出是h个头的串联,接着进行线性投影,例如,h可以设定为8,过程如下:
[0077]
multihead(q,k,v)=f(h1,h
,
,
…hh
)wm[0078][0079]
其中,f表示拼接操作,wm,表示参数矩阵;hi表示第i个头的自我注意力的输出,i=1,2...h,i表示第i个头;multihead(q,k,v)表示多头注意力的输出;步骤(2.2)的输入为步骤(2.1)中所述的x以及每一层的输入);
[0080]
多头注意力机制指:有多组不同的wq,wk,wv权重矩阵,把同一个句子利用多组不同的q、k、v权重矩阵相乘,最后再把得到的h个结果拼接起来再乘以权重矩阵wm,得到最终的结果,可以捕捉到更多的特征信息。即同一组单词,因为是多头注意力,通过不同的q,k,v进行映射,会得到不同的结果,然后再对各个注意力得到的结果进行拼接。
[0081]
分别对应查询q,关键字k和值v的参数矩阵,是模型通过训练(采用自监督学习(self-supervised learning)的方式在大量生语料上进行训练)获得的,不同的头的参数矩阵不一样,wm是最后在进行拼接时需要乘以的参数矩阵,同样由模型训练得到。
[0082]
具体地,表示第i个头的对应查询q的权重矩阵;表示第i个头的对应关键字k的权重矩阵;表示第i个头的对应值v的权重矩阵。
[0083]
步骤(2.3).在自注意机制子层后,完全连接子层获取自注意的输出,表示如下:
[0084]
ffn(x
l
)=relu(x
l
w1+b1)w
,
+b2[0085]
其中,w1,w
,
,b1和b2表示可训练参数,在经过n层编码后,transformer编码器获取文档表示x
l
表示文档的嵌入表示x经过l层以后的输出。
[0086]
ffn代表前馈神经网络,可以起到空间变化的作用,具体来说,对多头注意力得到的特征对再进行非线性处理,可以挖掘特征的非线性关系,增强特征的表现能力。ffn包含
了两层全连接,relu代表激活函数。
[0087]
具体地,w1表示第一个全连接层的权重参数,b1表示第一个全连接层的偏置参数;w2表示第二个全连接层的权重参数,b2表示第二个全连接层的偏置参数,参数通过训练获得。
[0088]
步骤(2.4).然后将输入到dnn(深度神经网络)层,以进一步提取文本特征的非线性交互。这个过程可以表示为:
[0089][0090]
wm代表权重参数,bz代表偏置参数,通过模型训练获得。表示文本特征的非线性交互。z=1,2,3,表示dnn层数;dnn包括输入层、隐藏层、输出层,最终的为dnn第3层(输出层)的输出。
[0091]
步骤(2.5).将学习到的向量输入到sigmoid函数中,输出为表示为服务s被应用程序a选择的概率的预测值,该过程定义如下:
[0092][0093]
其中,w
a,s
,b
a,s
表示服务被应用程序选择的概率的权重矩阵和服务被应用程序选择的概率的偏置;
[0094][0095]
其中y
a,s
[a,s]代表应用程序a是否真实的调用过服务s,如果应用程序a调用过服务s,则y
a,s
[a,s]=1,否则,y
a,s
[a,s]=0;以此确定w
a,s
和b
a,s
的值。
[0096]
通过真实调用过的数据来训练模型,确定w
a,s
和b
a,s
的值,达到产生预测值的目的。在具体的应用场景中,其实是有部分服务已经被应用程序a选择的情况下,预测其它候选服务被选择的概率。
[0097]
举例,应用程序a调用了服务s1,s2,s3,这是真实调用过的数据,在预测应用程序b的时候,已知应用程序b已经调用了s4,s5,那么需预测应用程序b调用s1的概率,对没有被调用过的服务进行概率预测。在训练阶段,所有的服务都是已经被调用的,即应用程序已经选择了服务s,即所有的概率预测都是1。
[0098]
权重矩阵是全连接层中最重要的参数之一,它决定了神经元之间的连接强度。在全连接层中,每个神经元都与前一层的所有神经元相连,因此每个神经元都有一个权重向量,用来表示与前一层的所有神经元的连接强度。
[0099]
偏置参数是全连接层中另一个重要的参数,它决定了神经元的激活阈值。在全连接层中,每个神经元都有一个偏置参数,用来表示神经元的激活阈值。
[0100]
本文中,权重参数和偏置参数均通过训练得到。
[0101]
步骤(3).接着,使用图神经网络kgat来提取历史应用程序和服务表示,kgat主要包含了三个部分,分别为嵌入层,注意力传播层和特征表示生成,最终提取到应用程序特征表示和服务特征表示;
[0102]
步骤(3.1).kgat使用transr将知识图的实体和关系进行嵌入,给定程序服务标记网络图g(应用程序服务类别网络图),对于三元组(h,r,t)∈g,其计算过程如下所示:
[0103][0104]
g表示一个图,图里面有节点,三元组(h,r,t);en(h,r,t)代表评价函数,如果评分越低,那么说明这个三元组是越可信的(也就是h和t之间更可能确实存在关系r;其中wv∈rn×m是关系r的变换矩阵,对于三元组(h,r,t),h和t表示应用程序、服务,r表示它们(所有节点)在知识图中的关系;wv是关系r的变换矩阵,使得实体从m维度投影到n维度,r是所有关系r的集合。eh表示头节点,ev表示节点与节点之间的关系,e
t
表示尾节点。eh表示头节点,是头节点的嵌入表示。知识图中,所有的节点之间都可能存在联系,即如果是应用程序与类别产生了联系,那么应用程序就是一个头节点,类别就是一个尾部节点,eh在这里表示应用程序的嵌入,e
t
表示类别的嵌入,ev表示的是应用程序和类别之间的关系的嵌入。
[0105]
步骤(3.2).注意力传播层将信息从邻居节点传递到目标节点,以捕捉节点之间的交互模式,其主要分为三个部分:信息传播,知识感知注意力和信息汇聚,知识传播对信息从一个实体到另一个实体的传播进行建模,所有实体都受到图网络结构中周围实体的影响,为了表示实体的一阶连接,kgat使用ego-network,知识感知注意力使用关系注意机制来实现每对实体之间的传播,信息汇聚将实体表示及其ego-network表示聚合为新的表示,在此阶段,使用三种类型的聚合,即gcn聚合器、graphsage聚合器和bi-interaction聚合器,然后,传播到多个层以探索更高阶的连接性信息;其中一个节点代表一个实体,节点里面有三种类型:应用程序节点,服务节点,类别节点。类别节点指的是应用程序类别和服务类别。
[0106]
步骤(3.3).在执行m阶(前述信息传播的阶次为m)传播之后,对于应用程序a节点和服务s节点,总体特征表示如下:
[0107][0108][0109]
其中||表示拼接操作;
[0110]
将m阶学习到的应用程序和服务的特征进行拼接,得到最终的特征表示。其中表示执行m阶传播之后,应用程序a节点的总体特征;表示执行m阶传播之后,服务s节点的总体特征;
[0111]
表示执行0阶传播之后(即未进行信息传播),应用程序a节点的特征;表示执行m阶传播之后,应用程序a节点的特征;表示执行0阶传播之后(即未进行信息传播),服务s节点的特征;表示执行m阶传播之后,服务s节点的特征。
[0112]
步骤(3.4).最终,应用程序a对于服务s的偏好可表示为:
[0113][0114]
步骤(4).接着,使用node2vec和深度神经网络来进行结构兼容性分析,node2vec在学习特征表示的过程中借用了自然语言处理的skip gram模型,使获得的序列中两个节点的共现概率最大,具体来说,图gs=(v,e),从节点中学习特征表示的映射函数f:v

rd,其目标函数如下:
[0115][0116]
图gs为加权服务相关图。其中vi表示图gs中的某一节点,ns(vi)表示节点vi的邻居;v代表节点集合,e代表边集合。图中的节点包含服务,若两个服务共同被某个应用程序调用,则该两个服务之间存在边。d代表特征维度长度,f代表节点到其特征表示的映射函数。d是特征表示的维度,f是一个大小为|v|*d的矩阵,|v|是节点个数,也就是说每个节点的特征表示都是一个d维的向量。f(ve)是一个优化目标函数(使一个节点ve根据其特征表示f观察到网络邻域ns(ve)的对数概率最大化)。
[0117]
步骤(4.1).由于条件独立性,pro(ns(ve)|f(ve))又可表示成:
[0118][0119]
pro(ns(ve)|f(vi))表示根据一个节点的特征表示来观察其邻域的对数概率。经过f的映射后可以很好地保持各个节点间的邻居概念。vj指的是从节点vi出发的一个邻居节点。
[0120]
此外,由于特征空间中的对称性,以下等式成立:
[0121][0122]
基于上述两个公式,进一步优化目标可表示为:
[0123][0124]
其中是使用负采样近似每个节点的划分函数,最后,利用随机梯度下降方法对图中所有节点上的目标函数进行了有效的优化;vk指除了vi以外的图中的节点;
[0125]
步骤(4.2).通过node2vec可得到图中的节点特征表示,假设有节点ve和节点vj,ve和vj都是服务节点,得到节点特征表示为sve和svj,接着分析应用程序中已选服务的情况,利用已选服务的节点特征预测候选服务与已选服务之间的兼容性,分别将已选服务se(即前述的服务节点vi)输入到dnn模型中,提取节点特征的非线性交互,过程可表示为:
[0126][0127]
wi表示已选服务si的权重参数;bi表示已选服务si的偏置参数。
[0128]
步骤(4.3).最后,将学习到的向量输入到sigmoid函数中,输出为输入到sigmoid函数中,输出为表示为服务si和服务sj(即前述的服务节点vj)出现在同一个应用程序中的概率,该过程定义如下:
[0129][0130]
其中,分别表示服务si和服务sj的权重矩阵和偏置;参数根据模型训练得到;
[0131]
步骤(4.4).最后,将应用程序a中的已选服务对于各个候选服务的兼容性概率分别相加,得到该应用程序a中已选服务对于候选服务的最终兼容性值,表示为
[0132]
假设应用程序a的已选服务为si,那么可以得到已选服务si对候选服务sj,s
p
,sq的兼容性概率,将这三个兼容性概率相加,就可以得到应用程序a中已选服务对于候选服务的最终兼容性值。
[0133]
步骤(5).通过文本信息和历史调用记录得到各类偏好以及服务兼容性,将三者相融合,得到最终的服务推荐列表公式如下:
[0134][0135]
其中0≤α+β≤1,α代表基于应用程序历史调用记录得到的服务偏好的重要程度,β表示基于开发需求得到的服务偏好的重要程度。
[0136]
以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。

技术特征:
1.基于兼容性感知的服务推荐方法,其特征在于,包括如下步骤:利用transformer模型提取应用程序开发需求特征,利用深度神经网络对候选服务与开发意图的匹配度深入挖掘,得到应用程序对于各个服务的文本偏好;通过应用程序-服务历史调用记录获取应用程序服务类别网络图,使用kgat模型深入挖掘应用程序-服务调用信息,提取得到应用程序特征和服务特征,得到应用程序对于各个服务的结构偏好;通过应用程序服务类别网络图,计算得出加权服务相关图,利用node2vec模型对加权服务相关图中的服务的特征进行初步提取,利用深度神经网络进一步挖掘服务与服务之间的兼容性;将基于开发需求的服务偏好、基于历史调用记录的服务偏好和基于兼容性的服务偏好融合,得到最终的服务推荐列表。2.根据权利要求1所述的基于兼容性感知的服务推荐方法,其特征在于,具体包括如下步骤:步骤(1).预处理文本,所述的文本为应用程序开发需求文本;步骤(2).文本描述特征提取,transformer编码器对需求文档中的所有单词提取特征表示,输出可表示为其中,l表示开发需求的长度,vec
u
表示在位置u的单词的嵌入表示,u=1,2...l;编码器由n个相同的层组成,每一个层包含了两个子层,分别为自注意机制和完全连接的前馈网络,假设输入为g,子层应用残差连接,然后进行层归一化来计算输出,表示为layernorm(g+sublayer(g)),其中sublayer表示自注意机制和完全连接的前馈网络;步骤(3).使用图神经网络kgat来提取历史应用程序和服务表示,kgat包含三个部分,分别为嵌入层,注意力传播层和特征表示生成,最终提取到应用程序特征表示和服务特征表示;步骤(4).使用node2vec和深度神经网络来进行结构兼容性分析,node2vec在学习特征表示的过程中借用了自然语言处理的skip gram模型,使获得的序列中两个节点的共现概率最大;步骤(5).通过文本信息和历史调用记录得到各类偏好以及服务兼容性,得到最终的服务推荐列表公式如下:其中0≤α+β≤1,α代表基于应用程序历史调用记录得到的服务偏好的重要程度,β表示基于开发需求得到的服务偏好的重要程度。3.根据权利要求2所述的基于兼容性感知的服务推荐方法,其特征在于,步骤(2)具体为:步骤(2.1).第l层的输入为前一层的输出第一层的输入为文档的嵌入表示在自注意机制中,查询q、关键字k和值v都是具有不同参数矩阵的的线性投影,自我注意力的输出是根据缩放的点积注意力来计算的,计算过程如下所示:
步骤(2.2).transformer编码器并行计算h头实现自我注意,其中每个头基于上述公式计算注意力,多头注意力的输出是h个头的串联,接着进行线性投影,过程如下:multihead(q,k,v)=f(h1,h2,

h
h
)w
m
其中,f表示拼接操作,w
m
,w
eq
,w
ik
,表示参数矩阵;步骤(2.3).在自注意机制子层后,完全连接子层获取自注意的输出,表示如下:ffn(x
l
)=relu(x
l
w1+b1)w2+b2其中,w1,w2,b1和b2表示可训练参数,在经过n层编码后,transformer编码器获取文档表示步骤(2.4).然后将输入到dnn层,以进一步提取文本特征的非线性交互;这个过程可以表示为:步骤(2.5).将学习到的向量输入到sigmoid函数中,输出为表示为服务s被应用程序a选择的概率的预测值,该过程定义如下:其中,w
a,s
,b
a,s
表示服务被应用程序选择的概率的权重矩阵和服务被应用程序选择的概率的偏置;其中y
a,s
[a,s]代表应用程序a是否真实的调用过服务s,如果应用程序a调用过服务s,则y
a,s
[a,s]=1,否则,y
a,s
[a,s]=0;以此确定w
a,s
和b
a,s
的值。4.根据权利要求2所述的基于兼容性感知的服务推荐方法,其特征在于,步骤(3)具体为:步骤(3.1).kgat使用transr将知识图的实体和关系进行嵌入,给定程序服务标记网络图g,对于三元组(h,r,t)∈g,其计算过程如下所示:其中w
v
∈r
n
×
m
是关系r的变换矩阵,对于三元组(h,r,t),h和t分别表示应用程序、服务,r表示它们在知识图中的关系;步骤(3.2).注意力传播层将信息从邻居节点传递到目标节点,以捕捉节点之间的交互模式,分为:信息传播,知识感知注意力和信息汇聚,知识传播对信息从一个实体到另一个实体的传播进行建模,所有实体都受到图网络结构中周围实体的影响,为了表示实体的一阶连接,kgat使用ego-network,知识感知注意力使用关系注意机制来实现每对实体之间的传播,信息汇聚将实体表示及其ego-network表示聚合为新的表示,在此阶段,使用三种类型的聚合,即gcn聚合器、graphsage聚合器和bi-interaction聚合器,然后,传播到多个层以探索更高阶的连接性信息;
步骤(3.3).在执行m阶传播之后,对于应用程序a节点和服务s节点,总体特征表示如下:下:其中||表示拼接操作;步骤(3.4).最终,应用程序a对于服务s的偏好可表示为:5.根据权利要求2所述的基于兼容性感知的服务推荐方法,其特征在于,步骤(4)具体为:使用node2vec和深度神经网络来进行结构兼容性分析,node2vec在学习特征表示的过程中借用了自然语言处理的skip gram模型,使获得的序列中两个节点的共现概率最大,图g
s
=(v,e),从节点中学习特征表示的映射函数f:v

r
d
,其目标函数如下:其中v
e
表示图g
s
中的某一节点,n
s
(v
e
)表示节点v
e
的邻居;步骤(4.1).由于条件独立性,pro(n
s
(v
i
)|f(v
i
))可表示成:由于特征空间中的对称性,以下等式成立:基于上述两个公式,进一步优化目标可表示为:其中是使用负采样近似每个节点的划分函数,最后,利用随机梯度下降方法对图中所有节点上的目标函数进行了有效的优化;步骤(4.2).通过node2vec可得到图中的节点特征表示,假设有节点v
e
和节点v
j
,得到节点特征表示为sv
i
和sv
j
,接着分析应用程序中已选服务的情况,利用已选服务的节点特征预测候选服务与已选服务之间的兼容性,分别将已选服务s
i
输入到dnn模型中,提取节点特征的非线性交互,过程可表示为:步骤(4.3).将学习到的向量输入到sigmoid函数中,输出为输入到sigmoid函数中,输出为表示为服务s
i
和服务s
j
出现在同一个应用程序中的概率,该过程定义如下:
其中,分别表示服务s
i
和服务s
j
出现在同一个应用程序中的概率的权重矩阵和偏置;步骤(4.4).将应用程序a中的已选服务对于各个候选服务的兼容性概率分别相加,得到该应用程序a中已选服务对于候选服务的最终兼容性值,表示为6.一种处理器,处理器用于运行计算机程序,其特征在于,计算机程序运行时执行如权利要求1-5中任意一项所述的推荐方法。7.一种终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任意一项所述的推荐方法。8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行可实现如权利要求1-5任意一项所述的推荐方法。

技术总结
本发明涉及基于兼容性感知的服务推荐方法。利用Transformer模型提取应用程序开发需求特征,接着利用深度神经网络对候选服务与开发意图的匹配度深入挖掘,得到应用程序对于各个服务的文本偏好。通过应用程序-服务历史调用记录获取应用程序服务类别网络图,使用KGAT模型深入挖掘应用程序-服务调用信息,提取得到应用程序特征和服务特征,从而得到应用程序对于各个服务的结构偏好。通过应用程序服务类别网络图,可以计算得出加权服务相关图,利用Node2Vec模型对加权服务相关图中的服务的特征进行初步提取,接着利用深度神经网络进一步挖掘服务与服务之间的兼容性。将上述三者融合,得到最终的服务推荐列表。得到最终的服务推荐列表。得到最终的服务推荐列表。


技术研发人员:林帅伽 俞婷 程芳颖 徐洁 王雅琦 郑莹
受保护的技术使用者:嘉兴南湖学院
技术研发日:2023.07.20
技术公布日:2023/10/19
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐