一种双重交互关系和注意力机制的交互式服务推荐方法与流程

    专利2022-07-08  79


    本发明属于服务计算和推荐系统领域,尤其涉及一种双重交互关系和注意力机制的交互式服务推荐方法。



    背景技术:

    随着面向服务的计算范式的成熟,面向服务的软件开发日益流行;到目前为止,互联网上已发布了大量的web服务;通过集成一个或多个web服务,软件开发者可以更高效地构建能够提供特定功能的web应用程序(mashup);近年来,这种开发方式已显现出能够降低系统开发成本和提高软件质量的强大能力;为了应对web服务数量快速增长带来的诸多挑战,服务推荐技术应运而生,在web应用程序的开发过程中为开发者主动推荐合适的组件服务,从而缓解信息过载的问题;

    在过去的十年间,有不少服务推荐方法被提出;根据推荐过程中使用的信息类型,可以将它们大致分为三类:基于内容的服务推荐、基于协同过滤的服务推荐、混合型服务推荐;然而,绝大多数现有的服务推荐方法所适用的web应用程序开发场景是比较受限的;总的来说,它们一次性地为一个新的web应用程序推荐所有的候选服务,这本质上是一种单轮(或“请求-响应”式)推荐,具有明显的局限性:首先,在大多数情况下,服务推荐系统(servicerecommendationsystem,srs)很难在开发流程开始时就能准确地捕获开发者的意图;其次,当srs收到开发者即时的选择反馈时,已有方法也无法根据上述反馈信息来调整其推荐结果;

    相比于单轮推荐的方式,交互式推荐能更贴近实际的开发场景,推荐更贴合开发者要求的组件服务;图1展示了用于帮助开发者构建新的web应用程序的交互式服务推荐方案;在第一阶段,srs根据初始需求返回候选服务列表,开发者从中选择一个或多个组件服务;如果该推荐结果不能完全满足开发者的要求,那么推荐过程进入第二阶段;srs继续根据开发者的要求和开发者已选的服务生成新的服务列表;此步骤重复多轮,直到web应用程序开发完成为止;值得注意的是,第二阶段是交互式推荐区别于单轮推荐的主要地方;在这个阶段,srs能够利用开发者的即时反馈信息,在与之交互的过程中,逐步完善web应用程序的开发;

    但是,大多数现有的服务推荐方法都不适用于交互式的推荐场景;在交互式推荐的第二阶段,基于模型的协同过滤方法,例如矩阵分解和神经协同过滤方法,在开发者在线选择了一部分组件服务之后,很难做到实时更新模型并获取待构建web应用程序的最新表示;此外,基于内容的方法仅考虑待构建web应用程序和候选服务之间的关系,而忽略了开发者已选定的服务在推荐过程中的关键作用;总之,在交互式的推荐场景下,现有的服务推荐方法很难有效利用开发者的即时反馈,也无法动态地生成或调整后续的推荐列表;

    为解决上述问题,本发明提出了一种基于双重交互关系和注意力机制的交互式服务推荐方法,其核心是服务调用预测模型;本发明提出的服务调用预测模型使用词嵌入(embedding)技术、图嵌入技术、深度神经网络,从待开发web应用程序和服务的内容信息和调用(invocation)信息中,提取关于它们的内容交互和调用交互两种形式(双重交互)的特征表示,即内容特征和调用特征;本发明提出的服务调用预测模型进一步针对待开发web应用程序、已选服务和候选服务的内容特征和调用特征,学习它们之间的双重复杂交互,最后预测开发者选择当前候选服务作为待开发web应用程序的下一个组件服务的可能性;其中,该模型引入注意力机制来衡量每个已选服务和候选服务之间的相关程度,并使用多层感知机(multi-layerperceptron,mlp)学习待开发web应用程序、已选服务和候选服务之间的复杂交互关系;对于一个web应用程序的开发需求,本发明先使用上述模型预测每个候选服务的评分,再把评分最高的n个候选服务推荐给开发者,在其选择若干组件服务后,即获得开发者的即时反馈后,推荐流程进入下一轮;上述步骤不断重复,直至开发者的要求被完全实现;



    技术实现要素:

    本发明针对现有服务推荐技术难以在交互式web应用程序开发场景中工作的问题,提出了一种双重交互关系和注意力机制的交互式服务推荐方法,包括以下步骤:

    s1:构建web应用程序的集合,通过web应用程序内容信息、web应用程序标记信息构建web应用程序的相关信息,构建服务的集合,通过服务内容信息、服务标记信息、服务提供商信息构建服务的相关信息,进一步构建web应用程序与服务之间的调用关系集合;

    作为优选,s1所述web应用程序的集合为:

    webs={web1、web2、...、webn}

    其中,webi表示第i个web应用程序,i∈[1,n],n表示web应用程序的数量;

    s1所述web应用程序的相关信息表示为:

    其中,表示第i个web应用程序的相关信息,代表第i个web应用程序的web应用程序内容信息,表示为:

    其中,wordi,k表示第i个web应用程序的web应用程序内容信息中的第k个词项,k∈[1,li],li表示第i个web应用程序的web应用程序内容信息中词项的数量;

    中,代表第i个web应用程序的web应用程序标记信息,表示为:

    其中,tagi,m表示第i个web应用程序的web应用程序标记信息中的第m个标记,m∈[1,ti],ti表示第i个web应用程序的web应用程序标记信息中标记的数量;

    s1所述构建服务的集合为:

    webservices={service1、service2、...、servicem}

    其中,servicj表示第j个服务,j∈[1,m],m表示服务的数量;

    s1所述服务的相关信息表示为:

    其中,表示第j个服务的相关信息,代表第j个服务的服务内容信息,表示为:

    其中,wordj,k表示第j个服务的服务内容信息中的第k个词项,k∈[1,lj],lj表示第j个服务的内容信息中词项的数量;

    中,代表第j个服务的服务标记信息,表示为:

    其中,tagj,m表示第j个服务的服务标记信息中的第m个标记,m∈[1,tj],tj表示第j个服务的服务标记信息中标记的数量;

    中,代表第j个服务的提供商信息;

    第i个web应用程序对应的组件服务集合为si,具体定义为:

    si={servicei,1,servicei,2,、、、,servicei,mi}

    其中,servicei,j表示第i个web应用程序中第j个组件服务,mi为第i个web应用程序中组件服务的数量,j∈[1,mi];

    s1所述web应用程序与服务之间的调用关系集合:

    vocations={(webi,servicei,j)|webi∈webs,servicei,j∈si}

    即每个web应用程序webi和它的任意一个组件服务servicei,j之间都存在调用关系;

    基于上述web应用程序与服务之间的调用关系集合,构建关于web应用程序与服务的二部图,其中,把web应用程序和服务作为两种类型的节点,在每个web应用程序节点和该web应用程序的组件服务节点之间建立一条边;

    所述关于web应用程序与服务的二部图表示为:

    g=(v,e),v={webs∪webservices},

    e={ei,j|ei,j=(webi,servicei,j),webi∈webs,servicei,j∈si}

    其中,节点集合v包括所有的web应用程序和服务,边集合e中,边ei,j的一个端点是webi,另一个节点是webi的组件服务集合中的某个服务,servicei,j;

    s2:根据web应用程序、web应用程序的组件服务构建训练样本集合;基于图嵌入技术处理s1所述的web应用程序与服务之间的二部图,获得web应用程序的调用特征以及web应用程序的组件服务的调用特征;

    s2所述根据web应用程序、web应用程序的组件服务构建训练样本集合,该训练样本集合由正样本的集合、负样本的集合构成;

    所述的正样本的集合、负样本的集合中每个样本均由web应用程序、web应用程序的已选服务集合、候选服务组成;

    所述正样本的集合为:

    其中,表示正样本集合中的第a个样本,ia∈[1,na],na表示正样本的数量;

    以正样本为例,其构成是:

    其中,代表正样本对应的web应用程序;

    代表正样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表正样本中的候选服务,该候选服务须是的一个组件服务,同时不能出现在已选服务集合中,形式化地,需要满足:

    代表正样本对应的其实标签,其取值为1;

    所述负样本的集合为:

    其中,表示负样本集合中的第b个样本,ib∈[1,nb],nb表示负样本的数量;

    以负样本为例,其构成是:

    其中,代表负样本对应的web应用程序;

    代表负样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表负样本中的候选服务,该候选服务是服务集合webservices中的一个服务,不是的一个组件服务,且不能出现在已选服务集合中,形式化地,需要满足:

    代表负样本对应的真实标签,其取值为0;

    s2所述基于图嵌入技术处理s1所述的二部图,获得web应用程序的调用特征以及web应用程序的组件服务的调用特征,获得的web应用程序的调用特征的集合为:

    其中,表示第i个web应用程序的调用特征,该特征的长度为h,i∈[1,n],n表示web应用程序的数量;

    获得的服务的调用特征的集合为:

    其中,表示第j个服务的调用特征,该特征的长度为h,j∈[1,m],m表示服务的数量;

    s3:结合s1所述的关于web应用程序与服务的二部图g,引入s1所述的web应用程序的相关信息和服务的相关信息,搭建异构信息网络;

    s3.1:使用关于web应用程序与服务的二部图g初始化一个异构信息网络,此时异构信息网络中包含两种节点,即web应用程序类型的节点和服务类型的节点,然后连接web类型的节点和服务类型的节点;

    s3.2:在s3.1得到的异构信息网络中引入内容信息,具体地:

    使用隐含狄利克雷分布处理一条web应用程序或服务的内容信息,得到它们的topk个隐主题;

    把得到的每个隐主题作为一个topic类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们隐主题的topic类型的节点;

    s3.3:在s3.2得到的异构信息网络中引入标记信息,具体地:

    把每个web应用程序或服务的标记作为tag类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们标记的tag类型的节点;

    s3.4:在s3.3得到的异构信息网络中引入提供商信息,具体地:

    把每个服务的提供商作为provider类型的节点加入到上述异构信息网络中;

    连接每个服务类型的节点和代表它们提供商的provider类型的节点;

    s4:构建基于双重交互关系和注意力机制的服务调用预测模型;

    基于双重交互关系和注意力机制的服务调用预测模型模型包括:内容特征提取模块、内容交互模块、调用特征提取模块、调用交互模块、整合层、输出层;

    所述的内容特征提取模块、内容交互模块、整合层依次串联连接;

    所述的调用特征提取模块、调用交互模块、整合层依次串联连接;

    所述整合层与所述输出层连接;

    所述内容特征提取模块的主体是一个串行的内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述内容交互模块包括依次串联的内容注意力模块、内容多层感知机;

    所述调用特征提取模块一方面从s2所述的服务的调用特征的集合中检索得到已选服务和候选服务的调用特征,另一方面基于s2所述的web应用程序的调用特征的集合,通过加权求和操作来计算待开发web应用程序的调用特征;

    所述调用交互模块包括依次串联的调用注意力模块、调用多层感知机;

    以使用s4所述的服务调用预测模型处理一个样本samplet=(webt,cst,servicet,labelt)为例,即使用该模型预测待开发web应用程序webt在已选服务集合为cst的情况下调用候选服务servicet的概率为例,其中samplet的下标t对应s2所述的ia和ib,即样本samplet可代表s2所述的正样本负样本s4具体包括:

    s4.1:内容特征提取模块首先搭建一个内容特征提取器,然后使用该内容特征提取器分别处理待开发web应用程序webt、已选服务集合cst和候选服务servicet的内容信息,最终获取它们的内容特征;

    s4.2:内容交互模块包括内容注意力模块和内容多层感知机,该模块接收从s4.1得到的webt、cst和servicet的内容特征,学习它们之间的内容交互向量,即关于内容信息的交互向量;

    s4.3:在调用特征提取模块中,从s2所述的fservices中检索得到已选服务集合cst和候选服务servicet的调用特征;从s2所述的fwebs中检索得到s1所述的web应用程序集合中每个web应用程序的调用特征;计算webt与每个web应用程序的相似度,使用加权求和的方式计算webt的调用特征;

    s4.4:调用交互模块包括调用注意力模块和调用多层感知机,该模块基于从s4.3得到的webt、cst和servicet的调用特征,学习它们之间的调用交互向量,即关于调用信息的交互向量;

    s4.5:在整合层中,首先级联从s4.2和s4.4得到的内容交互向量和调用交互向量,然后使用一个多层感知机进行集成,得到一个综合的交互向量;

    s4.6:输出层接受s4.5得到的综合交互向量,然后使用softmax函数预测开发者选择servicet作为webt的下一个组件服务的可能性;

    s4.1具体包括:

    s4.1.1:搭建一个内容特征提取器;

    所述内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述的text_inception网络,包含串行的卷积层、池化层、全连接层;

    s4.1.2:使用s4.1.1搭建的内容特征提取器处理webt的内容信息获取待开发web应用程序的内容特征;

    s4.1.3:使用s4.1.1搭建的内容特征提取器处理cst中每个已选服务services的内容信息获取每个已选服务的内容特征;

    s4.1.4:使用s4.1.1搭建的内容特征提取器处理servicet的内容信息获取候选服务的内容特征;

    对于一条web应用程序或服务的文本形式的内容信息,即textweb或textservice,s4.1.1中的内容特征提取器用串联的预处理模块,词嵌入层和text_inception网络来处理它,最终获得它的内容特征向量,s4.1.1的内容特征提取器具体包括:

    s4.1.1.1:利用预处理模块处理s1所述的textweb或textservice,具体地,首先截断或填充这条内容信息到固定长度,然后基于内容信息中每个词项在字典中的索引,将这条内容信息编码为一个整数向量;

    s4.1.1.2:将s4.1.1得到的整数向量输入到词嵌入层中,把每个词项映射为密集向量或嵌入表示,然后堆叠所有词项的嵌入向量,得到一个固定大小的嵌入矩阵e;

    s4.1.1.3:在谷歌inception网络的基础上,本发明设计了一个基于text_inception网络从e中提取一个内容特征向量;

    s4.1.1.3所述的text_inception网络整体上包含串行的卷积层、池化层、全连接层,s4.1.1.3具体包括:

    s4.1.1.3.1:为了提取内容信息中蕴含的局部特征,使用k路并行堆叠的卷积层处理s4.1.1.2得到的嵌入矩阵e,得到的每个特征图都是一个向量表示;

    在一种事实方式中,k=4:

    第一路的卷积层使用64个大小为1×50的卷积核;

    第二路的卷积层使用96个大小为3×50的卷积核;

    第三路的卷积层首先使用64个大小为3×50的卷积核,然后使用96个3×1的卷积核;

    第四路首先使用大小为3×1的最大池化操作,然后使用64个1×50的卷积核;

    s4.1.1.3.2:串联上述k路并行的卷积层得到的全部特征图;

    s4.1.1.3.3:使用全局平均池化层处理上述步骤得到的每个特征图,将每个特征图转化为一个标量特征;

    s4.1.1.3.4:将s4.1.1.3.3得到的向量特征输入到一个多层感知机中进行非线性转换,得到textweb或textservice的内容特征向量;

    s4.2中的内容交互模块主要包括内容注意力模块和内容多层感知机,该模块基于从s4.1得到的webt、servicet和cst中每个已选服务services的内容特征,学习它们之间的内容交互向量,s4.2具体包括:

    s4.2.1:将从s4.1.3得到的cst中每个已选服务services的内容特征和s4.1.4得到的servicet的内容特征,输入到内容注意力模块,学习cst中每个已选服务services与servicet之间在内容信息方面的相关性权重;

    s4.2.2:基于s4.1.4得到的servicet的内容特征,以及s4.2.1计算得到的cst中每个已选服务services与servicet之间在内容信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合内容特征表示;

    s4.2.3:将s4.1.2得到的webt的内容特征、s4.1.4得到的servicet的内容特征和s4.2.2得到的已选服务集合cst的综合内容特征表示进行级联;

    s4.2.4:将上述级联结果输入到内容多层感知机里,学习webt、servicet和cst之间的内容交互,得到一个内容交互向量;

    s4.2.1中的内容注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在内容信息方面的相关程度,主要由全连接层构成,s4.2.1具体包括:

    s4.2.1.1:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素乘处理,以衡量它们之间的相似性;

    s4.2.1.2:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素差处理,以衡量它们之间的差异度;

    s4.2.1.3:把s4.2.1.1和s4.2.1.2的结果,以及从s4.1.3和s4.1.4得到的services和servicet的内容特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在内容信息方面的关系,得到一个内容关系向量;

    s4.2.1.4:把上述内容关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在内容信息方面的相关性权重;

    s4.3的调用特征提取模块借助s2得到的fwebs和fservices,以及s3搭建的异构信息网,来获取webt、servicet和cst中每个已选服务services的调用特征,s4.3具体包括:

    s4.3.1:对于cst中每个已选服务services,基于s2得到的fservices检索得到它们的调用特征;

    s4.3.2:对于servicet,基于s2得到的fservices检索得到它的调用特征;

    s4.3.3:基于s3中搭建的hin计算待开发web应用程序webt和s1所述的web应用程序集合中每个已有web应用程序webi的相似度;

    s4.3.4:基于s4.3.3计算的相似度,从s1所述的web应用程序集合中搜寻与待开发web应用程序webt最相似的topk个近邻web应用程序;

    s4.3.5:对于s4.3.4得到的每个近邻web应用程序webn,基于s2得到的fwebs检索得到它们的调用特征;

    s4.3.6:基于s4.3.3中计算的待开发web应用程序webt与近邻web应用程序webn之间的相似度,以及s4.3.5中获取的近邻web应用程序webn的调用特征,执行加权求和操作,计算待开发web应用程序webt的调用特征;

    s4.3.3中基于hin计算待开发web应用程序webt和一个已有web应用程序webi的相似度,具体步骤包括:

    s4.3.3.1:把webt及其相关属性引入到s3中定义的hin中,具体地:

    在hin中加入代表webt的web类型的节点;

    使用lda模型处理webt的内容信息,得到它的隐主题,连接webt和hin中代表webt的隐主题的topic节点;

    连接webt和代表webt的标记的tag节点;

    连接webt和代表已选服务集合cst中的服务的节点;

    s4.3.3.2:在s4.3.3.1构建的异构信息网上,找到六种元路径来连接webt节点和webi节点,这六种元路径分别是:

    元路径1:webt-topic-webi,这条路径意味着webt和webi拥有相同的隐主题topic;

    元路径2:webt-tag-webi,这条路径意味着webt和webi拥有相同的标记;

    元路径3:webt-service-webi,这条路径意味着webt和webi共用某个相同的服务service;

    元路径4:webt-servicet-topic-servicei-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的隐主题topic;

    元路径5:webt-servicei-tag-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的标记tag;

    元路径6:webt-servicei-provider-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的提供商provider;

    s4.3.3.3:s4.3.3.2中定义的webt和webi之间的每种元路径,都代表它们之间的一种关联或相似度;以webt和webi之间的元路径1为例,使用以下方式计算webt和webi之间的基于这条元路径的相似度,sim1(webt,webi):

    其中,topics(webt)和topics(webi)分别表示webt和webi的基于lda模型得到的隐主题的集合;

    使用相似的方法,计算webt和webi之间的基于六种元路径的相似度;

    s4.3.3.4:为s4.3.3.3得到的6种相似度赋予不同的重要性权重,再对这六种相似度进行加权求和,计算得到webt和webi之间的综合相似度;计算公式如下:

    其中,simp(webt,webi)是webt和webi之间的基于第p种路径计算得到的相似度,wp是基于第p条路径得到的相似度的重要性权重;

    s4.4中的调用交互模块主要包括调用注意力模块和调用多层感知机,该模块基于从s4.3得到的webt、servicet和cst中每个已选服务services的调用特征,学习它们之间的调用交互向量,s4.4具体包括:

    s4.4.1:将从s4.3.1得到的cst中每个已选服务services的调用特征和s4.3.2得到的servicet的调用特征,输入到调用注意力模块,学习cst中每个已选服务services与servicet之间在调用信息方面的相关性权重;

    s4.4.2:针对s4.3.2得到的servicet的调用特征,以及s4.4.1计算得到的cst中每个已选服务services与servicet之间在调用信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合调用特征表示;

    s4.4.3:将s4.3.6得到的webt的调用特征、s4.3.2得到的servicet的调用特征和s4.4.2得到的已选服务集合cst的综合调用特征表示进行级联;

    s4.4.4:将上述级联结果输入到调用多层感知机里,学习webt、servicet和cst之间的调用交互,得到一个调用交互向量;

    s4.4.1中的调用注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在调用信息方面的相关程度,主要由全连接层构成,s4.4.1具体包括:

    s4.4.1.1:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素乘处理,以衡量它们之间的相似性;

    s4.4.1.2:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素差处理,以衡量它们之间的差异度;

    s4.4.1.3:把s4.4.1.1和s4.4.1.2的结果,以及从s4.3.1和s4.3.2得到的services和servicet的调用特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在调用信息方面的关系,得到一个调用关系向量;

    s4.4.1.4:把上述调用关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在调用信息方面的相关性权重;

    s5:设置损失函数,基于s1构建的训练样本集训练s4所述的服务调用预测模型;

    s5具体包括:

    s5.1:设置损失函数为交叉熵损失函数:

    其中是本服务调用预测模型对样本samplet的预测输出,是该样本的真实标签,如s1所述,当该样本是正样本时,其真实标签的值为1,当该样本是负样本时,其真实标签的值为0;

    s5.2:使用s5.1所述交叉熵损失函数,仅仅基于内容信息训练一个服务调用预测模型,保存模型中内容特征提取模块和内容交互模块的参数值;

    s5.3:使用s5.1所述交叉熵损失函数,仅仅基于调用信息训练一个服务调用预测模型,保存模型中调用特征提取模块和调用交互模块的参数值;

    s5.4:使用s5.1保存的内容特征提取模块和内容交互模块的参数值,以及s5.2保存的调用特征提取模块和调用交互模块的参数值,初始化一个服务调用预测模型的对应参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和调用信息训练这个服务调用预测模型,保存该模型中整合层和输出层的参数值;

    s5.4:使用s5.1、s5.2和s5.3保存的各个模块的参数值初始化一个服务调用预测模型的参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和历史调用信息,微调(fine-tune)这个模型,得到一个训练好的服务调用预测模型,保存其中全部参数的取值;

    s6:利用s5训练好的服务调用预测模型为待开发的web应用程序推荐组件服务;首先使用上述模型预测每个候选服务的评分,然后把评分最高的n个候选服务推荐给开发者,在其选择若干组件服务后,即获得开发者的即时反馈后,推荐流程进入下一轮;不断重复上述步骤,直至开发者的要求被完全实现;

    s6具体包括:

    s6.1:加载s5中训练好的服务调用预测模型的参数;

    s6.2:对于一个待开发的web应用程序,使用上述预测模型预测该web应用程序调用每个候选服务的概率或针对每个候选服务的评分;

    s6.3:对于一个待开发的web应用程序,把s6.2得到的预测评分最高的n个候选服务推荐给开发者;

    s6.4:开发者从s6.3生成的推荐列表中选择若干组件服务,完成当前轮次的开发流程;

    s6.5:重复s6.2至s6.4,直至开发者的要求被完全实现;

    本发明的有益效果是:

    设计了一种服务调用预测模型,综合考虑web应用程序和服务之间的内容交互和调用交互,利用web应用程序之间的相似度来获取待开发web应用程序的调用特征,并使用注意力机制来学习每个已选服务跟候选服务之间的相关性权重,从而对开发者调用候选服务作为下一个组件服务的概率做出综合准确的预测;

    提出并实现了一种交互式服务推荐方法,每一轮推荐是基于上述服务调用预测模型输出的评分最高的n个候选服务,获得开发者选择的即时反馈后,不断重复该步骤,直至开发者的要求被完全实现;本发明基于深度学习的特征提取技术、注意力机制和mlp来提升模型整体的预测效果,解决了现有方法在交互式服务推荐场景中效果不佳的技术问题。

    附图说明

    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;

    图1为本发明针对的交互式服务推荐场景的示意图;

    图2为本发明提供的一种基于双重交互关系和注意力机制的服务推荐方法的实现流程示意图;

    图3为基于双重交互关系和注意力机制的服务调用预测模型示意图;

    图4为文本内容信息的特征提取器text_inception的示意图;

    图5为本发明实施例的服务调用预测模型中交互层的示意图;

    具体实施方式

    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围;

    本实施例提供了一种基于双重交互关系和注意力机制的交互式服务推荐方法,其实现流程请参见图2,该方法包括:

    提出了一种基于双重交互关系和注意力机制的交互式服务推荐方法;

    s1:构建web应用程序的集合,通过web应用程序内容信息、web应用程序标记信息构建web应用程序的相关信息,构建服务的集合,通过服务内容信息、服务标记信息、服务提供商信息构建服务的相关信息,进一步构建web应用程序与服务之间的调用关系集合;

    作为优选,s1所述web应用程序的集合为:

    webs={web1、web2、...、webn}

    其中,webi表示第i个web应用程序,i∈[1,n],n表示web应用程序的数量;

    s1所述web应用程序的相关信息表示为:

    其中,表示第i个web应用程序的相关信息,代表第i个web应用程序的web应用程序内容信息,表示为:

    其中,wordi,k表示第i个web应用程序的web应用程序内容信息中的第k个词项,k∈[1,li],li表示第i个web应用程序的web应用程序内容信息中词项的数量;

    中,代表第i个web应用程序的web应用程序标记信息,表示为:

    其中,tagi,m表示第i个web应用程序的web应用程序标记信息中的第m个标记,m∈[1,ti],ti表示第i个web应用程序的web应用程序标记信息中标记的数量;

    s1所述构建服务的集合为:

    webservices={service1、service2、...、servicem}

    其中,servicj表示第j个服务,j∈[1,m],m表示服务的数量;

    s1所述服务的相关信息表示为:

    其中,表示第j个服务的相关信息,代表第j个服务的服务内容信息,表示为:

    其中,wordj,k表示第j个服务的服务内容信息中的第k个词项,k∈[1,lj],lj表示第j个服务的内容信息中词项的数量;

    中,代表第j个服务的服务标记信息,表示为:

    其中,tagj,m表示第j个服务的服务标记信息中的第m个标记,m∈[1,tj],tj表示第j个服务的服务标记信息中标记的数量;

    中,代表第j个服务的提供商信息;

    第i个web应用程序对应的组件服务集合为si,具体定义为:

    si={servicei,1,servicei,2,、、、,servicei,mi}

    其中,servicei,j表示第i个web应用程序中第j个组件服务,mi为第i个web应用程序中组件服务的数量,j∈[1,mi];

    s1所述web应用程序与服务之间的调用关系集合:

    vocations={(webi,servicei,j)|webi∈webs,servicei,j∈si}

    即每个web应用程序webi和它的任意一个组件服务servicei,j之间都存在调用关系;

    基于上述web应用程序与服务之间的调用关系集合,构建关于web应用程序与服务的二部图,其中,把web应用程序和服务作为两种类型的节点,在每个web应用程序节点和该web应用程序的组件服务节点之间建立一条边;

    所述关于web应用程序与服务的二部图表示为:

    g=(v,e),v={webs∪webservices},

    e={ei,j|ei,j=(webi,servicei,j),webi∈webs,servicei,j∈si}

    其中,节点集合v包括所有的web应用程序和服务,边集合e中,边ei,j的一个端点是webi,另一个节点是webi的组件服务集合中的某个服务,servicei,j;

    在s1的具体实施过程中,本发明实施例使用的数据集是基于互联网上的真实数据构建的;原始数据集是从全球最大的在线web服务库(https://www.programmableweb.com)上爬取的;删除了没有内容信息的web应用程序和服务,同时过滤了只包含一个组件服务的所有web应用程序后,得到了一个包含1,979个web应用程序,728个web服务和5,802个web应用程序-服务调用关系的实验数据集;

    s2:根据web应用程序、web应用程序的组件服务构建训练样本集合;基于图嵌入技术处理s1所述的web应用程序与服务之间的二部图,获得web应用程序的调用特征以及web应用程序的组件服务的调用特征;

    s2所述根据web应用程序、web应用程序的组件服务构建训练样本集合,该训练样本集合由正样本的集合、负样本的集合构成;

    所述的正样本的集合、负样本的集合中每个样本均由web应用程序、web应用程序的已选服务集合、候选服务组成;

    所述正样本的集合为:

    其中,表示正样本集合中的第a个样本,ia∈[1,na],na表示正样本的数量;

    以正样本为例,其构成是:

    其中,代表正样本对应的web应用程序;

    代表正样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表正样本中的候选服务,该候选服务须是的一个组件服务,同时不能出现在已选服务集合中,形式化地,需要满足:

    代表正样本对应的真实标签,其取值为1;

    所述负样本的集合为:

    其中,表示负样本集合中的第b个样本,ib∈[1,nb],nb表示负样本的数量;

    以负样本为例,其构成是:

    其中,代表负样本对应的web应用程序;

    代表负样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表负样本中的候选服务,该候选服务是服务集合webservices中的一个服务,不是的一个组件服务,且不能出现在已选服务集合中,形式化地,需要满足:

    代表负样本对应的真实标签,其取值为0;

    s2所述基于图嵌入技术处理s1所述的二部图,获得web应用程序的调用特征以及web应用程序的组件服务的调用特征,获得的web应用程序的调用特征的集合为:

    其中,表示第i个web应用程序的调用特征,该特征的长度为h,i∈[1,n],n表示web应用程序的数量;

    获得的服务的调用特征的集合为:

    其中,表示第j个服务的调用特征,该特征的长度为h,j∈[1,m],m表示服务的数量;

    具体来说,s2是对调用信息的特征提取;利用调用信息的协同过滤算法已被业界广泛认可;为了利用这种信息,本发明使用图嵌入技术获取web应用程序和服务各自的调用特征表示;在获得web应用程序和服务各自的调用特征之后,我们将其存储,供后续检索使用;

    在s2的具体实施方式中,我们使用node2vec来处理web应用程序和服务的历史调用关系(表示为图的方式),如有更强表示能力的图嵌入新技术(如图神经网络),亦可使用;在使用node2vec过程中,节点的特征长度设置为25,游走节点序列的长度设置为10,返回概率p和in-out概率q分别设置为0.25和4,从而捕获web应用程序和服务之间的更复杂的非线性关系;

    s3:结合s1所述的关于web应用程序与服务的二部图g,引入s1所述的web应用程序的相关信息和服务的相关信息,搭建异构信息网络;

    s3.1:使用关于web应用程序与服务的二部图g初始化一个异构信息网络,此时异构信息网络中包含两种节点,即web应用程序类型的节点和服务类型的节点,然后连接web类型的节点和服务类型的节点;

    s3.2:在s3.1得到的异构信息网络中引入内容信息,具体地:

    使用隐含狄利克雷分布处理一条web应用程序或服务的内容信息,得到它们的topk个隐主题;

    把得到的每个隐主题作为一个topic类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们隐主题的topic类型的节点;

    s3.3:在s3.2得到的异构信息网络中引入标记信息,具体地:

    把每个web应用程序或服务的标记作为tag类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们标记的tag类型的节点;

    s3.4:在s3.3得到的异构信息网络中引入提供商信息,具体地:

    把每个服务的提供商作为provider类型的节点加入到上述异构信息网络中;

    连接每个服务类型的节点和代表它们提供商的provider类型的节点;

    具体来说,s3是使用hin对服务推荐系统中web应用程序与服务的相关信息和调用关系进行有效的组织;在hin的基础上,可以计算待开发web应用程序与已有web应用程序之间的综合相似度,进而为后续获取待开发web应用程序的调用特征做准备;

    在s3的具体实施方式中,具体来说,s3.1在hin中引入了web应用程序和服务之间的调用关系;s3.2在hin中引入了web应用程序的内容信息和服务的内容信息;它首先使用了隐含主题模型lda从内容信息中提取topk个隐主题,然后把这些可以作为内容信息的抽象表示的隐主题作为节点加入到hin中,其中,在使用lda时,其隐含主题数目设置为100;k的取值设置为3;s3.3在hin中引入了web应用程序和服务各自的标记信息;s3.4在hin中引入服务的提供商信息;

    s4:构建基于双重交互关系和注意力机制的服务调用预测模型;

    基于双重交互关系和注意力机制的服务调用预测模型模型包括:内容特征提取模块、内容交互模块、调用特征提取模块、调用交互模块、整合层、输出层;

    所述的内容特征提取模块、内容交互模块、整合层依次串联连接;

    所述的调用特征提取模块、调用交互模块、整合层依次串联连接;

    所述整合层与所述输出层连接;

    所述内容特征提取模块的主体是一个串行的内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述内容交互模块包括依次串联的内容注意力模块、内容多层感知机;

    所述调用特征提取模块一方面从s2所述的服务的调用特征的集合中检索得到已选服务和候选服务的调用特征,另一方面基于s2所述的web应用程序的调用特征的集合,通过加权求和操作来计算待开发web应用程序的调用特征;

    所述调用交互模块包括依次串联的调用注意力模块、调用多层感知机;

    具体来说,s4是构建服务调用预测模型的框架(如图3所示),主要包括内容特征提取模块、内容交互模块、调用特征提取模块、调用交互模块,整合层和输出层;本发明首先提取两种特征并学习双重交互:一方面,从web应用程序和服务的内容信息提取内容特征,然后基于注意力机制和mlp学习待开发的web应用程序、候选服务和已选服务之间在内容方面的交互向量;另一方面,从web应用程序和服务的调用信息提取调用特征,然后基于注意力机制和mlp学习待开发的web应用程序、候选服务和已选服务之间在调用方面的交互向量;之后,整合层使用mlp整合上述双重交互,最后把模型的输出维度设置为2,把维度1上的概率作为开发者选择当前候选服务作为待开发web应用程序的下一个组件服务的可能性;

    以使用s4所述的服务调用预测模型处理一个样本samplet=(webt,cst,servicet,labelt)为例,即使用该模型预测待开发web应用程序webt在已选服务集合为cst的情况下调用候选服务servicet的概率为例,其中samplet的下标t对应s2所述的ia和ib,即样本samplet可代表s2所述的正样本负样本s4具体包括:

    s4.1:内容特征提取模块首先搭建一个内容特征提取器,然后使用该内容特征提取器分别处理待开发web应用程序webt、已选服务集合cst和候选服务servicet的内容信息,最终获取它们的内容特征;

    s4.2:内容交互模块包括内容注意力模块和内容多层感知机,该模块接收从s4.1得到的webt、cst和servicet的内容特征,学习它们之间的内容交互向量,即关于内容信息的交互向量;

    s4.3:在调用特征提取模块中,从s3所述的fservices中检索得到已选服务集合cst和候选服务servicet的调用特征;从s3所述的fwebs中检索得到s1所述的web应用程序集合中每个web应用程序的调用特征;计算webt与每个web应用程序的相似度,使用加权求和的方式计算webt的调用特征;

    s4.4:调用交互模块包括调用注意力模块和调用多层感知机,该模块基于从s4.3得到的webt、cst和servicet的调用特征,学习它们之间的调用交互向量,即关于调用信息的交互向量;

    s4.5:在整合层中,首先级联从s4.2和s4.4得到的内容交互向量和调用交互向量,然后使用一个多层感知机进行集成,得到一个综合的交互向量;

    s4.6:输出层接受s4.5得到的综合交互向量,然后使用softmax函数预测开发者选择servicet作为webt的下一个组件服务的可能性;

    具体来说,s4.1是对内容信息的特征提取;由于内容信息一般是词序列形式,其中存在局部模式,而卷积神经网络(convolutionalneuralnetwork,cnn)在提取局部特征时所具有的优势,使得textcnn等基于cnn的分类模型被成功用于文本分类任务中;因此,本发明在谷歌inception网络(一种典型的cnn)的基础上,设计了text_inception网络用于提取内容信息的内容特征;s4.1具体包括:

    s4.1.1:搭建一个内容特征提取器;

    所述内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述的text_inception网络,包含串行的卷积层、池化层、全连接层;

    s4.1.2:使用s4.1.1搭建的内容特征提取器处理webt的内容信息获取待开发web应用程序的内容特征;

    s4.1.3:使用s4.1.1搭建的内容特征提取器处理cst中每个已选服务services的内容信息获取每个已选服务的内容特征;

    s4.1.4:使用s4.1.1搭建的内容特征提取器处理servicet的内容信息获取候选服务的内容特征;

    对于一条web应用程序或服务的文本形式的内容信息,即textweb或textservice,s4.1.1中的内容特征提取器用串联的预处理模块,词嵌入层和text_inception网络来处理它,最终获得它的内容特征向量,s4.1.1的内容特征提取器具体包括:

    s4.1.1.1:利用预处理模块处理s1所述的textweb或textservice,具体地,首先截断或填充这条内容信息到固定长度,然后基于内容信息中每个词项在字典中的索引,将这条内容信息编码为一个整数向量;

    s4.1.1.2:将s4.1.1得到的整数向量输入到词嵌入层中,把每个词项映射为密集向量或嵌入表示,然后堆叠所有词项的嵌入向量,得到一个固定大小的嵌入矩阵e;

    s4.1.1.3:在谷歌inception网络的基础上,本发明设计了一个基于text_inception网络从e中提取一个内容特征向量;

    在s4.1.1的具体实施过程中,s4.1.1.1中预处理内容信息的步骤包括截断和填充等;s4.1.1.2中词嵌入层的参数由glove模型训练得到的词向量进行初始化,且每个词嵌入的长度为50;每条词序列形式的内容信息的固定长度设置为150,矩阵e的大小是150×50;

    s4.1.1.3中的text_inception网络整体上包含串行的卷积层、池化层、全连接层;如图4所示,特征提取器text_inception包含卷积层、池化层、全连接层;其中,堆叠卷积层可以扩大感受野,从而捕捉到更大范围的局部特征;使用不同大小的卷积核,可以得到不同尺度的局部特征;使用并行的多路卷积操作,可以加快卷积的速度;此外,使用mlp可以提取到更多的非线性特征;s4.1.1.3具体包括:

    s4.1.1.3.1:为了提取内容信息中蕴含的局部特征,使用k路并行堆叠的卷积层处理s4.1.1.2得到的嵌入矩阵e,得到的每个特征图都是一个向量表示;

    在一种事实方式中,k=4:

    第一路的卷积层使用64个大小为1×50的卷积核;

    第二路的卷积层使用96个大小为3×50的卷积核;

    第三路的卷积层首先使用64个大小为3×50的卷积核,然后使用96个3×1的卷积核;

    第四路首先使用大小为3×1的最大池化操作,然后使用64个1×50的卷积核;

    s4.1.1.3.2:串联上述k路并行的卷积层得到的全部特征图;

    s4.1.1.3.3:使用全局平均池化层处理上述步骤得到的每个特征图,将每个特征图转化为一个标量特征;

    s4.1.1.3.4:将s4.1.1.3.3得到的向量特征输入到一个多层感知机中进行非线性转换,得到textweb或textservice的内容特征向量;

    具体来说,s4.2是内容交互层的结构说明,该层基于注意力机制和mlp学习待开发的web应用程序、候选服务和已选服务之间在内容方面的交互向量;内容交互层的具体结构如图5所示;考虑到每个已选服务对开发者选择候选服务的行为的影响程度不同,本发明引入注意力模块来学习每个已选服务和候选服务的相关性权重,重点关注与候选服务较为相关的已选服务,过滤掉不必要的噪声服务,从而获得已选服务集合的综合表示;同时,本发明引入mlp来学习待开发的web应用程序、已选服务和候选服务之间的复杂交互关系;s4.2具体包括:

    s4.2.1:将从s4.1.3得到的cst中每个已选服务services的内容特征和s4.1.4得到的servicet的内容特征,输入到内容注意力模块,学习cst中每个已选服务services与servicet之间在内容信息方面的相关性权重;

    s4.2.2:基于s4.1.4得到的servicet的内容特征,以及s4.2.1计算得到的cst中每个已选服务services与servicet之间在内容信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合内容特征表示;

    s4.2.3:将s4.1.2得到的webt的内容特征、s4.1.4得到的servicet的内容特征和s4.2.2得到的已选服务集合cst的综合内容特征表示进行级联;

    s4.2.4:将上述级联结果输入到内容多层感知机里,学习webt、servicet和cst之间的内容交互,得到一个内容交互向量;

    在s4.2.4的具体实施过程中,注意力模块中的mlp共有两层,每层的神经元个数分别是80和40;

    s4.2.1中的注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在内容信息方面的相关程度,主要由全连接层构成,s4.2.1具体包括:

    s4.2.1.1:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素乘处理,以衡量它们之间的相似性;

    s4.2.1.2:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素差处理,以衡量它们之间的差异度;

    s4.2.1.3:把s4.2.1.1和s4.2.1.2的结果,以及从s4.1.3和s4.1.4得到的services和servicet的内容特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在内容信息方面的关系,得到一个内容关系向量;

    s4.2.1.4:把上述内容关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在内容信息方面的相关性权重;

    在s4.2.1的具体实施过程中,已选服务和候选服务的特征向量按元素乘的结果和按元素差的结果,是关于该已选服务和候选服务之间关系的先验知识,可以用来衡量它们之间的相似度和差异度;因此,把上述两种结果与已选服务和候选服务的原始特征向量进行级联后,输入到mlp中,自动学习该已选服务和候选服务的相关程度或影响程度,再利用softmax函数计算归一化的权重;

    具体来说,s4.3是对调用信息的特征提取;利用历史调用信息的协同过滤算法已被业界广泛认可;为了利用这种信息,s2已使用图嵌入技术获取已有web应用程序和服务各自的调用特征表示;针对无法直接获得待开发web应用程序的调用特征表示的问题,即冷启动问题,本发明利用待开发web应用程序与已有web应用程序之间的相似度和已有web应用程序的调用向量表示来得到待开发web应用程序的调用特征;s4.3具体包括:

    s4.3.1:对于cst中每个已选服务services,基于s2得到的fservices检索得到它们的调用特征;

    s4.3.2:对于servicet,基于s2得到的fservices检索得到它的调用特征;

    s4.3.3:基于s3中搭建的hin计算待开发web应用程序webt和s1所述的web应用程序集合中每个已有web应用程序webi的相似度;

    s4.3.4:基于s4.3.3计算的相似度,从s1所述的web应用程序集合中搜寻与待开发web应用程序webt最相似的topk个近邻web应用程序;

    s4.3.5:对于s4.3.4得到的每个近邻web应用程序webn,基于s2得到的fwebs检索得到它们的调用特征;

    s4.3.6:基于s4.3.3中计算的待开发web应用程序webt与近邻web应用程序webn之间的相似度,以及s4.3.5中获取的近邻web应用程序webn的调用特征,执行加权求和操作,计算待开发web应用程序webt的调用特征;

    s4.3.3中基于hin计算待开发web应用程序webt和一个已有web应用程序webi的相似度,具体步骤包括:

    s4.3.3.1:把webt及其相关属性引入到s3中定义的hin中,具体地:

    在hin中加入代表webt的web类型的节点;

    使用lda模型处理webt的内容信息,得到它的隐主题,连接webt和hin中代表webt的隐主题的topic节点;

    连接webt和代表webt的标记的tag节点;

    连接webt和代表已选服务集合cst中的服务的节点;

    s4.3.3.2:在s4.3.3.1构建的异构信息网上,找到六种元路径来连接webt节点和webi节点,这六种元路径分别是:

    元路径1:webt-topic-webi,这条路径意味着webt和webi拥有相同的隐主题topic;

    元路径2:webt-tag-webi,这条路径意味着webt和webi拥有相同的标记;

    元路径3:webt-service-webi,这条路径意味着webt和webi共用某个相同的服务service;

    元路径4:webt-servicet-topic-servicei-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的隐主题topic;

    元路径5:webt-servicei-tag-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的标记tag;

    元路径6:webt-servicei-provider-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的提供商provider;

    s4.3.3.3:s4.3.3.2中定义的webt和webi之间的每种元路径,都代表它们之间的一种关联或相似度;以webt和webi之间的元路径1为例,使用以下方式计算webt和webi之间的基于这条元路径的相似度,sim1(webt,webi):

    其中,topics(webt)和topics(webi)分别表示webt和webi的基于lda模型得到的隐主题的集合;

    使用相似的方法,计算webt和webi之间的基于六种元路径的相似度;

    s4.3.3.4:为s4.3.3.3得到的6种相似度赋予不同的重要性权重,再对这六种相似度进行加权求和,计算得到webt和webi之间的综合相似度;计算公式如下:

    其中,simp(webt,webi)是webt和webi之间的基于第p种路径计算得到的相似度,wp是基于第p条路径得到的相似度的重要性权重;

    在s4.3的具体实施过程中,在计算待开发web应用程序与一个已有的web应用程序之间的相似度时,本发明在s3构造的异构信息网的基础上,采用基于元路径的方式计算该相似度;除了两个web应用程序的内容信息和标记信息,还考虑了web应用程序的组件服务的相关信息,如内容信息、标记信息和提供商信息;当开发者逐轮选择组件服务时,本发明会逐步改进两者的相似性度量,从而得到待开发web应用程序更好的表示;在计算web应用程序的综合相似度时,6种元路径计算的相似度的权重分别设置为0.14、0.14、0.27、0.15、0.15和0.15;

    具体来说,s4.4是调用交互层的结构说明,该层基于注意力机制和mlp学习待开发的web应用程序、候选服务和已选服务之间在调用关系方面的交互向量;调用交互层的具体结构如图5所示;考虑到每个已选服务对开发者选择候选服务的行为的影响程度不同,本发明引入注意力模块来学习每个已选服务和候选服务的相关性权重,重点关注与候选服务较为相关的已选服务,过滤掉不必要的噪声服务,从而获得已选服务集合的综合表示;同时,本发明引入mlp来学习待开发的web应用程序、已选服务和候选服务之间的复杂交互关系;s4.4具体包括:

    s4.4.1:将从s4.3.1得到的cst中每个已选服务services的调用特征和s4.3.2得到的servicet的调用特征,输入到调用注意力模块,学习cst中每个已选服务services与servicet之间在调用信息方面的相关性权重;

    s4.4.2:针对s4.3.2得到的servicet的调用特征,以及s4.4.1计算得到的cst中每个已选服务services与servicet之间在调用信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合调用特征表示;

    s4.4.3:将s4.3.6得到的webt的调用特征、s4.3.2得到的servicet的调用特征和s4.4.2得到的已选服务集合cst的综合调用特征表示进行级联;

    s4.4.4:将上述级联结果输入到调用多层感知机里,学习webt、servicet和cst之间的调用交互,得到一个调用交互向量;

    在s4.4.4的具体实施过程中,注意力模块中的mlp共有两层,每层的神经元个数分别是80和40;

    s4.4.1中的调用注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在调用信息方面的相关程度,主要由全连接层构成,s4.4.1具体包括:

    s4.4.1.1:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素乘处理,以衡量它们之间的相似性;

    s4.4.1.2:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素差处理,以衡量它们之间的差异度;

    s4.4.1.3:把s4.4.1.1和s4.4.1.2的结果,以及从s4.3.1和s4.3.2得到的services和servicet的调用特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在调用信息方面的关系,得到一个调用关系向量;

    s4.4.1.4:把上述调用关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在调用信息方面的相关性权重;

    在s4.4.1的具体实施过程中,已选服务和候选服务的特征向量按元素乘的结果和按元素差的结果,是关于该已选服务和候选服务之间关系的先验知识,可以用来衡量它们之间的相似度和差异度;因此,把上述两种结果与已选服务和候选服务的原始特征向量进行级联后,输入到mlp中,自动学习该已选服务和候选服务的相关程度或影响程度,再利用softmax函数计算归一化的权重;

    在上述实施过程中,本发明中使用的所有mlp,均选择prelu作为激活函数,因为它增加的计算成本和过拟合风险都很小,能改善模型的拟合效果;

    s5:设置损失函数,基于s1构建的训练样本集训练服务调用预测模型;

    s5具体包括:

    s5.1:设置损失函数为交叉熵损失函数:

    其中是本服务调用预测模型对样本samplet的预测输出,是该样本的真实标签,如s1所述,当该样本是正样本时,其真实标签的值为1,当该样本是负样本时,其真实标签的值为0;

    s5.2:使用s5.1所述交叉熵损失函数,仅仅基于内容信息训练一个服务调用预测模型,保存模型中内容特征提取模块和内容交互模块的参数值;

    s5.3:使用s5.1所述交叉熵损失函数,仅仅基于调用信息训练一个服务调用预测模型,保存模型中调用特征提取模块和调用交互模块的参数值;

    s5.4:使用s5.1保存的内容特征提取模块和内容交互模块的参数值,以及s5.2保存的调用特征提取模块和调用交互模块的参数值,初始化一个服务调用预测模型的对应参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和调用信息训练这个服务调用预测模型,保存该模型中整合层和输出层的参数值;

    s5.4:使用s5.1、s5.2和s5.3保存的各个模块的参数值初始化一个服务调用预测模型的参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和历史调用信息,微调(fine-tune)这个模型,得到一个训练好的服务调用预测模型,保存其中全部参数的取值;

    具体来说,s5是利用训练样本集、损失函数对s4中构建的服务调用预测模型进行训练;

    在s5的具体实施过程中,考虑到服务调用预测模型中有多个mlp,直接训练可能导致收敛较慢;因此,本发明在训练过程使用了预训练 微调的训练模式,加快模型收敛的速度;

    s6:利用s5训练好的服务调用预测模型为待开发的web应用程序推荐组件服务;首先使用上述模型预测每个候选服务的评分,然后把评分最高的n个候选服务推荐给开发者,在其选择若干组件服务后,即获得开发者的即时反馈后,推荐流程进入下一轮;不断重复上述步骤,直至开发者的要求被完全实现;

    s6具体包括:

    s6.1:加载s5中训练好的服务调用预测模型的参数;

    s6.2:对于一个待开发的web应用程序,使用上述预测模型预测该web应用程序调用每个候选服务的概率或针对每个候选服务的评分;

    s6.3:对于一个待开发的web应用程序,把s6.2得到的预测评分最高的n个候选服务推荐给开发者;

    s6.4:开发者从s6.3生成的推荐列表中选择若干组件服务,完成当前轮次的开发流程;

    s6.5:重复s6.2至s6.4,直至开发者的要求被完全实现;

    在s6的具体实施过程中,在为一个待开发web应用程序推荐下一轮的组件服务时,需要使用服务调用预测模型来预测每个候选服务的评分值;为了保证推荐的效率和即时性,在实际场景中需要限制候选服务的规模,例如,可以加入粗排序、预先剪枝等技术,减小候选服务的规模;

    为了验证本发明方法的有效性,将本发明提出的方法(记为hisr)和现有的几种主流服务推荐方法(包括基于内容的wvsm、基于协同过滤的bpr-mf、混合推荐算法sftn、isrec、pasrec、dinrec)进行了比较,两个阶段交互式的推荐结果如表1所示;其中,indicator@10表示在长度为10的推荐列表上的各种评价指标的取值;

    在本发明实施例中使用的对照基准方法,简介如下:

    wvsm:这种基于内容的方法发表在2014年的ieeeweb服务国际会议上,它首先使用加权向量空间模型(weightedvectorspacemodel)从待开发web应用程序和候选服务的内容信息中分别提取它们的内容特征,然后把二者内容特征的相似度作为该候选服务的评分,最后基于该评分对全部候选服务进行排序和推荐;

    bpr-mf:这种基于协同过滤的方法发表在2009年的人工智能不确定性(uncertaintyinartificialintelligence)会议上,该方法以贝叶斯理论为指导,设计了一种成对(pair-wise)的损失函数来训练基于矩阵分解的服务推荐模型;

    sftn:该方法发表在2017年的ieeeweb服务国际会议上,它首先基于层次化狄利克雷过程(hierarchicaldirichletprocess)提取待开发web应用程序和候选服务的内容特征,并据此计算它们的内容特征相似度;然后,使用矩阵分解模型处理web应用程序与候选服务之间的历史交互,并据此计算待开发web应用程序在下一轮开发过程中调用候选服务的概率;最后,将上述内容特征相似度和基于历史交互得到的概率相乘并作为候选服务的评分;

    pasrec:该方法发表在2016年的面向服务的计算国际会议上;在服务推荐的场景中,它首先构建一个hin网络组织各种实体,然后基于待开发web应用程序和已有的web应用程序之间的元路径来计算它们之间的总体相似性,并据此找到与待开发web应用程序最相似的n个web应用程序,最后采用基于用户的协同过滤方法为待开发web应用程序推荐组件服务;

    isrec:该方法发表在2019年的《expertsystemswithapplications》刊物上;该方法在pasrec方法的基础上做了一些改进,包括但不限于:在衡量web应用程序的内容相似度时引入了词嵌入,提高了计算的精确度;对已有的web应用程序进行离线聚类,并对待开发的web应用程序在线分类,缩小了近邻web应用程序的搜索范围,提高了搜索效率;

    (6)dinrec:该方法发表在2019年的web信息系统工程国际会议上;该方法将点击率预测任务中的深层兴趣网络(deepinterestnetwork)直接应用于服务推荐任务;它把待开发web应用程序,已选服务和候选服务的所有属性信息全部输入到一个深层兴趣网络中以学习它们之间的交互;为了公平对比,让该方法与本发明使用相同的特征提取器;

    在本发明实施例中使用的评价指标,简介如下:

    准确率、召回率和f1的定义分别是:

    其中,n是推荐服务列表的规模;m是测试集中待开发web应用程序的集合;对于一个待开发web应用程序m,rec(m)和act(m)分别代表srs为它提供的推荐服务列表和它的组件服务的集合;

    均值平均精度map的定义是:

    其中,i(i)表示推荐列表中第i个推荐位置的服务是否是待开发web应用程序的一个组件服务,ni表示推荐列表的前i个推荐位置的服务中属于待开发web应用程序的组件服务的个数,nm表示待开发web应用程序m的所有组件服务的个数;

    归一化折损累计增益ndcg的定义是:

    其中,qm是为待开发web应用程序生成的最优的服务推荐列表所能获取的折损累计增益;

    表1本发明方法和基准方法的推荐效果对比

    从表中可以看出,本发明方法在准确率(precision)、召回率(recall)、f1、归一化折损累计增益(normalizeddiscountedcumulativegain,ndcg)和均值平均精度(meanaverageprecision,map)上均高于基准方法应当理解的是,本说明书未详细阐述的部分均属于现有技术。

    应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。


    技术特征:

    1.一种双重交互关系和注意力机制的交互式服务推荐方法,其特征在于,包括:

    s1:构建web应用程序的集合,通过web应用程序内容信息、web应用程序标记信息构建web应用程序的相关信息,构建服务的集合,通过服务内容信息、服务标记信息、服务提供商信息构建服务的相关信息,进一步构建web应用程序与服务之间的调用关系集合;

    s2:根据web应用程序、web应用程序的组件服务构建训练样本集合;基于图嵌入技术处理s1所述的web应用程序与服务之间的二部图g,获得web应用程序的调用特征集合fwebs以及web应用程序的组件服务的调用特征集合fservices;

    s3:结合s1所述的关于web应用程序与服务的二部图g,引入s1所述的web应用程序的相关信息和服务的相关信息,搭建异构信息网络;

    s4:构建基于双重交互关系和注意力机制的服务调用预测模型;

    基于双重交互关系和注意力机制的服务调用预测模型模型包括:内容特征提取模块、内容交互模块、调用特征提取模块、调用交互模块、整合层、输出层;

    所述的内容特征提取模块、内容交互模块、整合层依次串联连接;

    所述的调用特征提取模块、调用交互模块、整合层依次串联连接;

    所述整合层与所述输出层连接;

    所述内容特征提取模块的主体是一个串行的内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述内容交互模块包括依次串联的内容注意力模块、内容多层感知机;

    所述调用特征提取模块一方面从s2所述的服务的调用特征的集合中检索得到已选服务和候选服务的调用特征,另一方面基于s2所述的web应用程序的调用特征的集合,通过加权求和操作来计算待开发web应用程序的调用特征;

    所述调用交互模块包括依次串联的调用注意力模块、调用多层感知机;

    s4.1:内容特征提取模块首先搭建一个内容特征提取器,然后使用该内容特征提取器分别处理待开发web应用程序webt、已选服务集合cst和候选服务servicet的内容信息,最终获取它们的内容特征;

    s4.2:内容交互模块包括内容注意力模块和内容多层感知机,该模块接收从s4.1得到的webt、cst和servicet的内容特征,学习它们之间的内容交互向量,即关于内容信息的交互向量;

    s4.3:在调用特征提取模块中,从s2所述的fservices中检索得到已选服务集合cst和候选服务servicet的调用特征;从s2所述的fwebs中检索得到s1所述的web应用程序集合中每个web应用程序的调用特征;计算webt与每个web应用程序的相似度,使用加权求和的方式计算webt的调用特征;

    s4.4:调用交互模块包括调用注意力模块和调用多层感知机,该模块基于从s4.3得到的webt、cst和servicet的调用特征,学习它们之间的调用交互向量,即关于调用信息的交互向量;

    s4.5:在整合层中,首先级联从s4.2和s4.4得到的内容交互向量和调用交互向量,然后使用一个多层感知机(multilayerperceptron,mlp)进行集成,得到一个综合的交互向量;

    s4.6:输出层接受s4.5得到的综合交互向量,然后使用softmax函数预测开发者选择servicet作为webt的下一个组件服务的可能性;

    s4.1具体包括:

    s4.1.1:搭建一个内容特征提取器;

    所述内容特征提取器,包括依次串联的预处理模块、词嵌入层、基于谷歌inception网络的text_inception网络;

    所述的text_inception网络,包含串行的卷积层、池化层、全连接层;

    s4.1.2:使用s4.1.1搭建的内容特征提取器处理webt的内容信息获取待开发web应用程序的内容特征;

    s4.1.3:使用s4.1.1搭建的内容特征提取器处理cst中每个已选服务services的内容信息获取每个已选服务的内容特征;

    s4.1.4:使用s4.1.1搭建的内容特征提取器处理servicet的内容信息获取候选服务的内容特征;

    对于一条web应用程序或服务的文本形式的内容信息,即textweb或textservice,s4.1.1中的内容特征提取器用串联的预处理模块,词嵌入层和text_inception网络来处理它,最终获得它的内容特征向量,s4.1.1的内容特征提取器具体包括:

    s4.1.1.1:利用预处理模块处理s1所述的textweb或textservice,具体地,首先截断或填充这条内容信息到固定长度,然后基于内容信息中每个词项在字典中的索引,将这条内容信息编码为一个整数向量;

    s4.1.1.2:将s4.1.1得到的整数向量输入到词嵌入层中,把每个词项映射为密集向量或嵌入表示,然后堆叠所有词项的嵌入向量,得到一个固定大小的嵌入矩阵e;

    s4.1.1.3:在谷歌inception网络的基础上,本发明设计了一个基于text_inception网络从e中提取一个内容特征向量;

    s4.1.1.3所述的text_inception网络整体上包含串行的卷积层、池化层、全连接层,s4.1.1.3具体包括:

    s4.1.1.3.1:为了提取内容信息中蕴含的局部特征,使用k路并行堆叠的卷积层处理s4.1.1.2得到的嵌入矩阵e,得到的每个特征图都是一个向量表示;

    在一种事实方式中,k=4:

    第一路的卷积层使用64个大小为1×50的卷积核;

    第二路的卷积层使用96个大小为3×50的卷积核;

    第三路的卷积层首先使用64个大小为3×50的卷积核,然后使用96个3×1的卷积核;

    第四路首先使用大小为3×1的最大池化操作,然后使用64个1×50的卷积核;

    s4.1.1.3.2:串联上述k路并行的卷积层得到的全部特征图;

    s4.1.1.3.3:使用全局平均池化层处理上述步骤得到的每个特征图,将每个特征图转化为一个标量特征;

    s4.1.1.3.4:将s4.1.1.3.3得到的向量特征输入到一个多层感知机中进行非线性转换,得到textweb或textservice的内容特征向量;

    s4.2中的内容交互模块主要包括内容注意力模块和内容多层感知机,该模块基于从s4.1得到的webt、servicet和cst中每个已选服务services的内容特征,学习它们之间的内容交互向量,s4.2具体包括:

    s4.2.1:将从s4.1.3得到的cst中每个已选服务services的内容特征和s4.1.4得到的servicet的内容特征,输入到内容注意力模块,学习cst中每个已选服务services与servicet之间在内容信息方面的相关性权重;

    s4.2.2:基于s4.1.4得到的servicet的内容特征,以及s4.2.1计算得到的cst中每个已选服务services与servicet之间在内容信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合内容特征表示;

    s4.2.3:将s4.1.2得到的webt的内容特征、s4.1.4得到的servicet的内容特征和s4.2.2得到的已选服务集合cst的综合内容特征表示进行级联;

    s4.2.4:将上述级联结果输入到内容多层感知机里,学习webt、servicet和cst之间的内容交互,得到一个内容交互向量;

    s4.2.1中的内容注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在内容信息方面的相关程度,主要由全连接层构成,s4.2.1具体包括:

    s4.2.1.1:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素乘处理,以衡量它们之间的相似性;

    s4.2.1.2:对于一个已选服务services和候选服务servicet,对从s4.1.3和s4.1.4得到的它们的内容特征做元素差处理,以衡量它们之间的差异度;

    s4.2.1.3:把s4.2.1.1和s4.2.1.2的结果,以及从s4.1.3和s4.1.4得到的services和servicet的内容特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在内容信息方面的关系,得到一个内容关系向量;

    s4.2.1.4:把上述内容关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在内容信息方面的相关性权重;

    s4.3的调用特征提取模块借助s2得到的fwebs和fservices,以及s3搭建的异构信息网,来获取webt、servicet和cst中每个已选服务services的调用特征,s4.3具体包括:

    s4.3.1:对于cst中每个已选服务services,基于s2得到的fservices检索得到它们的调用特征;

    s4.3.2:对于servicet,基于s2得到的fservices检索得到它的调用特征;

    s4.3.3:基于s3中搭建的hin计算待开发web应用程序webt和s1所述的web应用程序集合中每个已有web应用程序webi的相似度;

    s4.3.4:基于s4.3.3计算的相似度,从s1所述的web应用程序集合中搜寻与待开发web应用程序webt最相似的topk个近邻web应用程序;

    s4.3.5:对于s4.3.4得到的每个近邻web应用程序webn,基于s2得到的fwebs检索得到它们的调用特征;

    s4.3.6:基于s4.3.3中计算的待开发web应用程序webt与近邻web应用程序webn之间的相似度,以及s4.3.5中获取的近邻web应用程序webn的调用特征,执行加权求和操作,计算待开发web应用程序webt的调用特征;

    s4.3.3中基于hin计算待开发web应用程序webt和一个已有web应用程序webi的相似度,具体步骤包括:

    s4.3.3.1:把webt及其相关属性引入到s3中定义的hin中,具体地:

    在hin中加入代表webt的web类型的节点;

    使用lda模型处理webt的内容信息,得到它的隐主题,连接webt和hin中代表webt的隐主题的topic节点;

    连接webt和代表webt的标记的tag节点;

    连接webt和代表已选服务集合cst中的服务的节点;

    s4.3.3.2:在s4.3.3.1构建的异构信息网上,找到六种元路径来连接webt节点和webi节点,这六种元路径分别是:

    元路径1:webt-topic-webi,这条路径意味着webt和webi拥有相同的隐主题topic;

    元路径2:webt-tag-webi,这条路径意味着webt和webi拥有相同的标记;

    元路径3:webt-service-webi,这条路径意味着webt和webi共用某个相同的服务service;

    元路径4:webt-servicet-topic-servicei-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的隐主题topic;

    元路径5:webt-servicei-tag-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的标记tag;

    元路径6:webt-servicei-provider-servicej-webi,这条路径意味着webt调用的一个服务servicet和webi调用的一个服务servicei拥有相同的提供商provider;

    s4.3.3.3:s4.3.3.2中定义的webt和webi之间的每种元路径,都代表它们之间的一种关联或相似度;以webt和webi之间的元路径1为例,使用以下方式计算webt和webi之间的基于这条元路径的相似度,sim1(webt,webi):

    其中,topics(webt)和topics(webi)分别表示webt和webi的基于lda模型得到的隐主题的集合;

    使用相似的方法,计算webt和webi之间的基于六种元路径的相似度;

    s4.3.3.4:为s4.3.3.3得到的6种相似度赋予不同的重要性权重,再对这六种相似度进行加权求和,计算得到webt和webi之间的综合相似度;计算公式如下:

    其中,simp(webt,webi)是webt和webi之间的基于第p种路径计算得到的相似度,wp是基于第p条路径得到的相似度的重要性权重;

    s4.4中的调用交互模块主要包括调用注意力模块和调用多层感知机,该模块基于从s4.3得到的webt、servicet和cst中每个已选服务services的调用特征,学习它们之间的调用交互向量,s4.4具体包括:

    s4.4.1:将从s4.3.1得到的cst中每个已选服务services的调用特征和s4.3.2得到的servicet的调用特征,输入到调用注意力模块,学习cst中每个已选服务services与servicet之间在调用信息方面的相关性权重;

    s4.4.2:针对s4.3.2得到的servicet的调用特征,以及s4.4.1计算得到的cst中每个已选服务services与servicet之间在调用信息方面的相关性权重,执行加权求和操作,计算得到已选服务集合cst中的综合调用特征表示;

    s4.4.3:将s4.3.6得到的webt的调用特征、s4.3.2得到的servicet的调用特征和s4.4.2得到的已选服务集合cst的综合调用特征表示进行级联;

    s4.4.4:将上述级联结果输入到调用多层感知机里,学习webt、servicet和cst之间的调用交互,得到一个调用交互向量;

    s4.4.1中的调用注意力模块用来衡量cst中的一个已选服务services和候选服务servicet在调用信息方面的相关程度,主要由全连接层构成,s4.4.1具体包括:

    s4.4.1.1:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素乘处理,以衡量它们之间的相似性;

    s4.4.1.2:对于一个已选服务services和候选服务servicet,对从s4.3.1和s4.3.2得到的它们的调用特征做元素差处理,以衡量它们之间的差异度;

    s4.4.1.3:把s4.4.1.1和s4.4.1.2的结果,以及从s4.3.1和s4.3.2得到的services和servicet的调用特征进行级联,再把结果输入到一个mlp中,自动学习services和servicet之间在调用信息方面的关系,得到一个调用关系向量;

    s4.4.1.4:把上述调用关系向量输入到softmax函数中,得到一个可以衡量services和servicet之间在调用信息方面的相关性权重;

    s5:设置损失函数,基于s1构建的训练样本集训练s4所述的服务调用预测模型;

    s5具体包括:

    s5.1:设置损失函数为交叉熵损失函数:

    其中是本服务调用预测模型对样本samplet的预测输出,是该样本的真实标签,如s1所述,当该样本是正样本时,其真实标签的值为1,当该样本是负样本时,其真实标签的值为0;

    s5.2:使用s5.1所述交叉熵损失函数,仅仅基于内容信息训练一个服务调用预测模型,保存模型中内容特征提取模块和内容交互模块的参数值;

    s5.3:使用s5.1所述交叉熵损失函数,仅仅基于调用信息训练一个服务调用预测模型,保存模型中调用特征提取模块和调用交互模块的参数值;

    s5.4:使用s5.1保存的内容特征提取模块和内容交互模块的参数值,以及s5.2保存的调用特征提取模块和调用交互模块的参数值,初始化一个服务调用预测模型的对应参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和调用信息训练这个服务调用预测模型,保存该模型中整合层和输出层的参数值;

    s5.4:使用s5.1、s5.2和s5.3保存的各个模块的参数值初始化一个服务调用预测模型的参数,然后使用s5.1所述交叉熵损失函数,基于内容信息和历史调用信息,微调(fine-tune)这个模型,得到一个训练好的服务调用预测模型,保存其中全部参数的取值;

    s6:利用s5训练好的服务调用预测模型为待开发的web应用程序推荐组件服务;首先使用上述模型预测每个候选服务的评分,然后把评分最高的n个候选服务推荐给开发者,在其选择若干组件服务后,即获得开发者的即时反馈后,推荐流程进入下一轮;不断重复上述步骤,直至开发者的要求被完全实现;

    s6具体包括:

    s6.1:加载s5中训练好的服务调用预测模型的参数;

    s6.2:对于一个待开发的web应用程序,使用上述预测模型预测该web应用程序调用每个候选服务的概率或针对每个候选服务的评分;

    s6.3:对于一个待开发的web应用程序,把s6.2得到的预测评分最高的n个候选服务推荐给开发者;

    s6.4:开发者从s6.3生成的推荐列表中选择若干组件服务,完成当前轮次的开发流程;

    s6.5:重复s6.2至s6.4,直至开发者的要求被完全实现。

    2.根据权利要求1所述的双重交互关系和注意力机制的交互式服务推荐方法,其特征在于:

    s1所述web应用程序的集合为:

    webs={web1、web2、...、webn}

    其中,webi表示第i个web应用程序,i∈[1,n],n表示web应用程序的数量;

    s1所述web应用程序的相关信息表示为:

    其中,表示第i个web应用程序的相关信息,代表第i个web应用程序的web应用程序内容信息,表示为:

    其中,wordi,k表示第i个web应用程序的web应用程序内容信息中的第k个词项,k∈[1,li],li表示第i个web应用程序的web应用程序内容信息中词项的数量;

    中,代表第i个web应用程序的web应用程序标记信息,表示为:

    其中,tagi,m表示第i个web应用程序的web应用程序标记信息中的第m个标记,m∈[1,ti],ti表示第i个web应用程序的web应用程序标记信息中标记的数量;

    s1所述构建服务的集合为:

    webservices={service1、service2、...、servicem}

    其中,servicj表示第j个服务,j∈[1,m],m表示服务的数量;

    s1所述服务的相关信息表示为:

    其中,表示第j个服务的相关信息,代表第j个服务的服务内容信息,表示为:

    其中,wordj,k表示第j个服务的服务内容信息中的第k个词项,k∈[1,lj],lj表示第j个服务的内容信息中词项的数量;

    中,代表第j个服务的服务标记信息,表示为:

    其中,tagj,m表示第j个服务的服务标记信息中的第m个标记,m∈[1,tj],tj表示第j个服务的服务标记信息中标记的数量;

    中,代表第j个服务的提供商信息;

    第i个web应用程序对应的组件服务集合为si,具体定义为:

    si={servicei,1,servicei,2,、、、,servicei,mi}

    其中,servicei,j表示第i个web应用程序中第j个组件服务,mi为第i个web应用程序中组件服务的数量,j∈[1,mi];

    s1所述web应用程序与服务之间的调用关系集合:

    vocations={(webi,servicei,j)|webi∈webs,servicei,j∈si}

    即每个web应用程序webi和它的任意一个组件服务servicei,j之间都存在调用关系;

    基于上述web应用程序与服务之间的调用关系集合,构建关于web应用程序与服务的二部图,其中,把web应用程序和服务作为两种类型的节点,在每个web应用程序节点和该web应用程序的组件服务节点之间建立一条边;

    所述关于web应用程序与服务的二部图表示为:

    g=(v,e),v={webs∪webservices},

    e={ei,j|ei,j=(webi,servicei,j),webi∈webs,servicei,jesi}

    其中,节点集合v包括所有的web应用程序和服务,边集合e中,边ei,j的一个端点是webi,另一个节点是webi的组件服务集合中的某个服务,servicei,j。

    3.根据权利要求1所述的双重交互关系和注意力机制的交互式服务推荐方法,其特征在于:

    s2所述根据web应用程序、web应用程序的组件服务构建训练样本集合,该训练样本集合由正样本的集合、负样本的集合构成;

    所述的正样本的集合、负样本的集合中每个样本均由web应用程序、web应用程序的已选服务集合、候选服务组成;

    所述正样本的集合为:

    其中,表示正样本集合中的第a个样本,ia∈[1,na],na表示正样本的数量;

    以正样本为例,其构成是:

    其中,代表正样本对应的web应用程序;

    代表正样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表正样本中的候选服务,该候选服务须是的一个组件服务,同时不能出现在已选服务集合中,形式化地,需要满足:

    代表正样本对应的真实标签,其取值为1;

    所述负样本的集合为:

    其中,表示负样本集合中的第b个样本,ib∈[1,nb],nb表示负样本的数量;

    以负样本为例,其构成是:

    其中,代表负样本对应的web应用程序;

    代表负样本对应的已选服务集合,该已选服务集合须是的组件服务集合的一个真子集,且该已选服务集合不能非空,形式化地,需要满足:

    其中的组件服务集合;

    代表负样本中的候选服务,该候选服务是服务集合webservices中的一个服务,不是的一个组件服务,且不能出现在已选服务集合中,形式化地,需要满足:

    代表负样本对应的真实标签,其取值为0;

    s2所述基于图嵌入技术处理s1所述的二部图g,获得web应用程序的调用特征以及web应用程序的组件服务的调用特征,获得的web应用程序的调用特征的集合为:

    其中,表示第i个web应用程序的调用特征,该特征的长度为h,i∈[1,n],n表示web应用程序的数量;

    获得的服务的调用特征的集合为:

    其中,表示第j个服务的调用特征,该特征的长度为h,j∈[1,m],m表示服务的数量。

    4.根据权利要求1所述的双重交互关系和注意力机制的交互式服务推荐方法,其特征在于:

    s3.1:使用关于web应用程序与服务的二部图g初始化一个异构信息网络,此时异构信息网络中包含两种节点,即web应用程序类型的节点和服务类型的节点,然后连接web类型的节点和服务类型的节点;

    s3.2:在s3.1得到的异构信息网络中引入内容信息,具体地:

    使用隐含狄利克雷分布处理一条web应用程序或服务的内容信息,得到它们的topk个隐主题;

    把得到的每个隐主题作为一个topic类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们隐主题的topic类型的节点;

    s3.3:在s3.2得到的异构信息网络中引入标记信息,具体地:

    把每个web应用程序或服务的标记作为tag类型的节点加入到上述异构信息网络中;

    连接每个web应用程序或服务类型的节点和代表它们标记的tag类型的节点;

    s3.4:在s3.3得到的异构信息网络中引入提供商信息,具体地:

    把每个服务的提供商作为provider类型的节点加入到上述异构信息网络中;

    连接每个服务类型的节点和代表它们提供商的provider类型的节点。

    技术总结
    本发明提出了一种双重交互关系和注意力机制的交互式服务推荐方法,其核心是服务调用预测模型。该模型包括:分别使用基于谷歌Inception网络的文本特征提取器和图嵌入技术node2vec提取Web应用程序和服务的内容特征和调用特征;基于注意力机制和多层感知机,分别学习待开发Web应用程序、已选服务和候选服务之间的内容交互和调用交互;基于多层感知机对上述两种交互进行集成;使用softmax函数预测开发者选择当前候选服务作为组件服务的可能性。本发明提出的交互式服务推荐方法包括:使用上述模型预测每个候选服务的评分;把预测评分最高的N个候选服务推荐给开发者;在开发者选择若干组件服务后,推荐流程进入下一轮;重复上述步骤,直至开发者的要求被完全实现。

    技术研发人员:马于涛;耿啸;王健;王翀
    受保护的技术使用者:武汉大学
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23472.html

    最新回复(0)