一种基于服务聚合与功能信息的API推荐方法与流程

文档序号:12470109阅读:249来源:国知局
一种基于服务聚合与功能信息的API推荐方法与流程
本发明属于互联网服务
技术领域
,具体涉及一种基于服务聚合与功能信息的API(ApplicationProgrammingInterface,应用程序编程接口)推荐方法。
背景技术
:随著近年来SOA(Service-OrientedArchitecture)系统架构以及Web2.0的高速发展,网络中Web服务的数量呈现出爆炸性增长的态势,并且其表现形式也发生了巨大的改变。传统的Web服务通过由WSDL(WebServicesDescriptionLanguage)描述文档定义的SOAP(SimpleObjectAccessProtocol)通信协议在Web中提供某种应用服务,并通过UDDI(UniversalDescriptionDiscoveryandIntegration)进行注册与发布。然而,随着REST(RepresentationalStateTransfer)架构的兴起与发展,传统的SOAPWeb服务正在转向开发更便捷,效率更高的RESTfulWeb服务。互联网中越来越多的Web服务通过RESTfulAPI的形式供开发者开发与调用。通常一个API只提供单一功能,为了满足复杂的开发需求,糅合技术能够通过方便快捷的聚合多个API来组成功能复杂的Web服务Mashup。互联网中也存在着几大API聚合网站,例如ProgrammableWeb、Mashape、百度应用等。API聚合网站将互联网中不同开发者提供的API进行统一的规范化整合,以方便用户搜索与发现合适的API来满足需求。然而通常聚合网站中API的数量十分庞大。据统计,截至2015年底,在ProgrammableWeb网站中,API的数量达到了14653个,而Mashup的数量也达到了6259个。当用户需要某个特定功能的API时,传统的搜索方法需要用户准确的关键词描述以及大量的浏览搜索结果来寻找合适的API。为了让用户能快速而准确的在海量的API资源当中发现合适的API,需要一种针对不同用户自动推荐API的方法。此外,API推荐也能提高某些关注度较低的API的调用次数,提升整个API生态圈的健康发展。当前的API推荐方法主要集中在两个方面,一是针对API的功能描述信息进行推荐,二是考虑用户调用API的历史偏好信息。然而,之前的方法忽略了API的聚合信息,即Mashup。Mashup信息包含了两个方面:(1)Mashup服务包含的不同API之间的组合信息;(2)用户开发或调用Mashup的历史信息。由于Mashup丰富了用户与API的交互关系,在API推荐过程中考虑Mashup信息将能够提升推荐的效果。技术实现要素:基于上述,本发明提供了一种基于服务聚合与功能信息的API推荐方法,其利用了用户的历史调用记录、API的功能描述以及API的聚合Mashup三方面信息,来为不同的用户进行API的推荐。一种基于服务聚合与功能信息的API推荐方法,包括:首先,从API和Mashup的文本描述信息中抽取一定数目的主题形成主题集合,进而根据用户集合、API集合、Mashup集合以及主题集合构建关于用户、Mashup、API以及主题的网络关系模型;所述的网络关系模型中每个用户、Mashup、API以及主题均由节点来表征,节点之间若存在关联则通过边进行连接,且节点之间只存在以下五类连接关系:用户节点与Mashup节点的连接关系、用户节点与API节点的连接关系、Mashup节点与API节点的连接关系、Mashup节点与主题节点的连接关系、API节点与主题节点的连接关系;构建用户与Mashup之间的关系矩阵UM、用户与API之间的关系矩阵UA、Mashup与API之间的关系矩阵MA、Mashup与主题之间的关系矩阵MT、API与主题之间的关系矩阵AT;对于目标用户,建立以下目标函数并对其进行优化求解,得到网络关系模型中每个API节点的映射值,进而按映射值从大到小对API进行排序,并向目标用户推荐其未调用过的且排序最前的K个API,K为大于1的自然数;minFu,Fm,Fa,Ftα1Σi=1nuΣj=1nmUMij(f(ui)dui-f(mj)dmj)2+α2Σi=1nuΣk=1naUAik(f(ui)dui-f(ak)dak)2+α3Σj=1nmΣk=1naMAjk(f(mj)dmj-f(ak)dak)2+α4Σj=1nmΣp=1ntMTjp(f(mj)dmj-f(tp)dtp)2+α5Σk=1naΣp=1ntATkp(f(ak)dak-f(tp)dtp)2+β1Σi=1nu(f(ui)-ui0)2+β2Σj=1nm(f(mj)-mj0)+β3Σk=1na(f(ak)-ak0)2+β4Σp=1nt(f(tp)-tp0)2]]>其中:ui表示第i个用户节点,mj表示第j个Mashup节点,ak表示第k个API节点,tp表示第p个主题节点,f(ui)为用户节点ui的映射值(其反映了用户节点ui与其他节点的关系紧密程度),f(mj)为Mashup节点mj的映射值(其反映了目标用户与对mj的偏好程度),f(ak)为API节点ak的映射值(其反映了目标用户与对ak的偏好程度),f(tp)为主题节点tp的映射值(其反映了目标用户与对tp的关注程度),UMij为关系矩阵UM中第i行第j列的元素值,UAik为关系矩阵UA中第i行第k列的元素值,MAjk为关系矩阵MA中第j行第k列的元素值,MTjp为关系矩阵MT中第j行第p列的元素值,ATkp为关系矩阵AT中第k行第p列的元素值,nu为用户集合中用户的总数量,nm为Mashup集合中Mashup的总数量,na为API集合中API的总数量,nt为主题集合中主题的总数量,dui为用户节点ui所连边的条数,dmj为Mashup节点mj所连边的条数,dak为API节点ak所连边的条数,dtp为主题节点tp所连边的条数,α1~α5以及β1~β4分别为对应约束项的权值,和分别为用户节点ui、Mashup节点mj、API节点ak以及主题节点tp的先验值且所有主题节点的先验值均为0;若目标用户对应为用户节点ui,则其余用户节点的先验值均为0,且与用户节点ui相连的Mashup节点和API节点的先验值为1,其余Mashup节点和API节点的先验值为0,Fu为由所有用户节点映射值所组成的向量,Fm为由所有Mashup节点映射值所组成的向量,Fa为由所有API节点映射值所组成的向量,Ft为由所有主题节点映射值所组成的向量。所述关系矩阵UM中的任一元素值为0或1,若UMij=1则表示第i个用户调用过第j个Mashup,否则UMij=0。所述关系矩阵UA中的任一元素值为0或1,若UAik=1则表示第i个用户调用过第k个API,否则UAik=0。所述关系矩阵MA中的任一元素值为0或1,若MAjk=1则表示第j个Mashup调用过第k个API,否则MAjk=0。所述关系矩阵MT中的任一元素值为0~1之间的实数,MTjp表示第j个Mashup的文本描述信息中包含第p个主题的概率,其通过LDA(LatentDirichletAllocation)主题模型算法求得。所述关系矩阵AT中的任一元素值为0~1之间的实数,ATkp表示第k个API的文本描述信息中包含第p个主题的概率,其通过LDA主题模型算法求得。本发明采用交替最小二乘算法对所述的目标函数进行优化求解。为了验证本发明在API推荐中的技术效果,我们在互联网中最大的API聚合网站ProgrammableWeb.com中抓取了全部API和Mashup的所有功能信息,以及该网站的用户开发和使用API和Mashup的信息。现有的方法要么只考虑了API的功能信息而没有考虑API的聚合信息,要么只利用了API的聚合信息而未考虑API的功能信息,而本发明方法将这两者进行融合并通过图模型统一的建模所有的信息,因此本发明方法实施的API推荐的效果比现有方法有了显著的提升。附图说明图1为本发明API推荐方法的流程示意图。图2为本发明关于用户、Mashup、API以及主题的网络关系模型示例图。具体实施方式为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。如图1所示,本发明基于服务聚合与功能信息的API推荐方法,具体过程如下:首先,需要对用到的变量和公式给出相关定义。定义1.U:用户(即开发者)的集合。定义2.M:API聚合Mashup的集合。定义3.A:API的集合。定义4.UM矩阵:UM矩阵表示用户调用Mashup的历史记录。若用户ui调用了Mashupmj,则UMij=1,否则为0。定义5.UA矩阵:UA矩阵表示用户调用API的历史记录。若用户ui调用了APIaj,则UAij=1,否则为0。定义6.MA矩阵:MA矩阵表示Mashup调用API的关系。若Mashupmi调用了APIaj,则MAij=1,否则为0。其中定义4~5表达了用户的历史调用记录信息,定义6表达了API的聚合信息。为了表达API以及Mashup的功能描述信息,我们采用LDA(LatentDirichletAllocation)主题模型的方法,从API和Mashup的文本描述信息中抽取一定数目的主题,如社交、地图、旅游等一系列主题,并将每个API和Mashup的功能信息表达为在所有主题之上的概率分布。定义7.T:主题的集合定义8.MT矩阵:MT矩阵表示Mashup功能信息的主题模型表达。矩阵的每一行表示该Mashup的主题概率分布。定义9.AT矩阵:AT矩阵表示API功能信息的主题模型表达。矩阵的每一行表示该API的主题概率分布。定义10.模型G=(U,M,A,T,UM,UA,MA,MT,AT)。U,M,A,T分别表示用户节点、Mashup节点、API节点以及主题节点。UM表示用户节点与Mashup节点之间边的连接关系。UA表示用户节点与API节点之间的连接关系,MA表示Mashup节点与API节点之间的连接关系,MT表示Mashup节点与主题节点之间的连接关系,AT表示API节点与主题节点之间的连接关系。图2展示了模型G的一个具体实例。结合模型G,为某个用户推荐API的过程可以抽象为针对某一个用户节点,对所有的API节点赋值,并根据节点值进行排序,推荐最大的K个API作为推荐结果。针对某个查询用户u∈U,我们首先定义一个函数f,该函数将模型G中的每个节点映射为一个实数值。具体意义如下:每个API节点映射值的大小反映了该查询用户对API的偏好程度;每个Mashup节点映射值的大小反映了该用户对Mashup的偏好程度;每个主题节点映射值的大小反映了该用户对该主题的关注程度;每个用户节点的映射值反映了其它用户与查询用户的关系紧密程度。因此推荐算法的目标是求得每个API的节点映射值。利用模型G中的关系以及已知的信息,可以通过定义目标函数并取最小化来求解函数f。具体而言,损失函数的定义包括两个方面:一、关系约束。若两个节点之间有边相连接,则这两个节点之间的映射值不应该相差过大。以用户与API的关系UA为例,若一个用户之前调用了一个API,则该用户与API的映射值应比较接近,即每个API的映射值是根据与它有关联的用户的映射值所决定的。因此它能准确的表达节点之间关系的约束。具体的数学表达式为:QUA(f)=Σi=1|U|Σj=1|A|UAij(f(ui)dui-f(aj)daj)2]]>其中:dui和daj是用户ui和APIaj节点的度数。将节点的映射值进行了归一化,即除以每个节点的度数的开方是为了防止度数高的节点对推荐结果造成偏置影响。对于UM,MA,MT,AT的关系约束的数学表达式与UA类似。二、先验约束。每个节点的映射值与已知的先验信息应该尽量吻合。若某个用户之前调用了一些API,则这些API的映射值应当高于从未被用户调用过的API。该约束实现了API推荐的个性化,即针对每个用户的不同API和Mashup的调用信息,设置不同的先验信息来学习不同的映射函数f。以API节点为例,具体的数学表达式为QA(f)=Σi=1|A|(f(ai)-ai0)2]]>其中:为某个用户对APIai的调用记录信息。用户节点U、Mashup节点M以及主题节点T的先验约束与之类似。通过这两类约束的线性加权和,得到最终的损失函数公式:Q(f)=α1Σi=1|U|Σj=1|M|UMij(f(ui)dui-f(mj)dmj)2+α2Σi=1|U|Σj=1|A|UAij(f(ui)dui-f(aj)daj)2+α3Σi=1|M|Σj=1|A|MAij(f(mi)dmi-f(aj)daj)2+α4Σi=1|M|Σj=1|T|MTij(f(mi)dmi-f(tj)dtj)2+α5Σi=1|A|Σj=1|T|ATij(f(ai)dai-f(tj)dtj)2+β1Σi=1|U|(f(ui)-ui0)2+β2Σi=1|M|(f(mi)-mi0)2+β3Σi=1|A|(f(ai)-ai0)2+β4Σi=1|T|(f(ti)-ti0)2]]>其中:为每个节点的先验信息。对于某个查询用户,先验信息的设置如下:对于查询用户i,设置其余为0。若查询用户历史调用了APIi或Mashupi,则设置其余为0。设置全为0。α1~α5以及β1~β4表示不同约束项的权值。为了形式简洁,将Q(f)写成矩阵与向量的表达式,表示如下:Q(u,m,a,t)=α1(uTu+mTm-2uTUMm)+α2(uTu+aTa-2uTUAa)+α3(mTm+aTa-2mTMAa)+α4(mTm+tTt-2mTMTt)+α5(aTa+tTt-2aTATt)+β1(u-u0)T(u-u0)+β2(m-m0)T(m-m0)+β3(a-a0)T(a-a0)+β4(t-t0)T(t-t0)其中:向量u,m,a,t分别为用户节点,Mashup节点,API节点与主题节点的映射值;u0,m0,a0,t0分别为用户节点,Mashup节点,API节点与主题节点的先验向量信息。同时,式中的UM,UA,MA,MT,AT都经过了归一化,例如我们使用交替最小二乘方法(ALS)通过优化目标函数的最小值求得参数向量u,m,a,t。具体的,该方法每一步通过固定其它变量,对其中一个变量进行迭代求解,直到目标函数收敛到一个稳定值。迭代过程如下:首先,设置u,m,a,t的初始值,一般为0到1之间的随机值。然后,对每个变量进行迭代,迭代公式如下:u=α1α1+α2+β1UM·m+α2α1+α2+β1UA·a+β1α1+α2+β1u0]]>m=α1α1+α3+α4+β2UMT·u+α3α1+α3+α4+β2MA·a+α4α1+α3+α4+β2MT·t+β2α1+α3+α4+β21m0]]>a=α2α2+α3+α5+β3UAT·u+α3α2+α3+α5+β3MAT·m+α5α2+α3+α5+β3AT·t+β3α2+α3+α5+β3a0]]>t=α4α4+α5+β4MTT·m+α5α4+α5+β4ATT·a+β4α4+α5+β4t0]]>直到最后迭代收敛。得到最后的稳定解u,m,a,t,即代表了每个节点的映射值。其中向量a即保存了API的映射值。对向量a由大到小排序,去掉用户历史调用过的API记录后,取前K个API进行推荐即可。上述对实施例的描述是为便于本
技术领域
的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1