欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2020109401968
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2023-12-11
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种Web开放环境下基于Mashup服务邻域的Web API推荐方法,其特征在于,所述方法包括以下步骤:

第一步、构建需求Mashup语义特征向量,匹配Mashup服务类簇;

第二步、收集邻域内Mashup服务调用过的Web API数据,构建Web API邻域;

第三步、根据邻域中构建好的Web API功能分类,对数据集中剩余的Web API进行功能类别划分;

第四步、计算流行度和共现度,并进行排名,得到最终推荐列表;

所述第一步的过程如下:

步骤(1.1)初始化数组ArrayVec,长度为N,N为数据集中存在的Mashup服务数量,进行步骤(1.2);

步骤(1.2)遍历数据集中存在的Mashup服务,得到第i个Mashup对应的语义特征向量MVeci,进行步骤(1.3);

步骤(1.3)将MVeci存入ArrayVec[i],进行步骤(1.4);

步骤(1.4)判断数据集是否遍历完成,若否,则返回步骤(1.2),否则,进行步骤(1.5);

步骤(1.5)初始化的二维数组ArraySim,其维度值对应ArrayVec的长度,即N*N,用于存放Mashup之间的相似度,进行步骤(1.6);

步骤(1.6)遍历数组ArrayVec,取ArrayVec[i],进行步骤(1.7);

步骤(1.7)遍历数组ArrayVec,取ArrayVec[j],其中i与j不相等,进行步骤(1.8);

步骤(1.8)利用余弦公式,计算i、j的相似度MSimij,其中,进行步骤(1.9);

步骤(1.9)将MSimij存入ArraySim[i][j]中,进行步骤(1.10);

步骤(1.10)判断数组ArrayVec是否遍历完成,若否,则返回步骤(1.7),否则,进行步骤(1.11);

步骤(1.11)判断数组ArrayVec是否遍历完成,若否,则返回步骤(1.6),否则,进行步骤(1.12);

步骤(1.12)在ArrayVec中随机选择K个Mashup服务作为初始簇中心,组成一个新的数组ClusterCenter,其中,K为经验值,进行步骤(1.13);

步骤(1.13)遍历ArrayVec中剩余的Mashup服务,记下标为i,进行步骤(1.14);

步骤(1.14)初始化index为0,index表示与当前Mashup服务距离最近的簇中心的下标,进行步骤(1.15);

步骤(1.15)遍历ClusterCenter,记当前访问的下标为j,进行步骤(1.16);

步骤(1.16)判断ArraySim[i][j]与ArraySim[i][index]的大小,若ArraySim[i][j]小于ArraySim[i][index],则将j赋值index,进行步骤(1.17);

步骤(1.17)判断数组ClusterCenter是否遍历完成,若否,则返回步骤(1.15),否则,进行步骤(1.18);

步骤(1.18)将ArrayVec[i]划分到index簇中,进行步骤(1.19);

步骤(1.19)判断数组ArrayVec是否遍历完成,若否,则返回步骤(1.13),否则,进行步骤(1.20);

步骤(1.20)重新计算K个簇的中心,计算方式为每个簇中所有Mashup特征向量的平均值,进行步骤(1.21);

步骤(1.21)判断当前簇的中心和上次的簇中心是否发生变化,若否,则返回步骤(1.13),否则,进行步骤(1.22);

步骤(1.22)最终得到的簇中心及其簇用Map存储,记为CenterMap,进行步骤(1.23);

步骤(1.23)获取需求Mashup服务Mi,进行步骤(1.2.1‑1.2.6),得到需求Mashup对应的语义特征向量MVeci,进行步骤(1.24);

步骤(1.24)获取CenterMap的键集合KeySet,初始化neighbor为0,表示与Mi最相似簇的下标,即最近邻域下标,进行步骤(1.25);

步骤(1.25)遍历KeySet,即簇的中心,记当前选择的键为key进行步骤(1.26);

步骤(1.26)计算簇中心key与需求Mi的相似度Simkey,其中,Simkey的计算公式为进行步骤(1.27);

步骤(1.27)判断Simkey与Simneighbor的大小,若Simkey大于Simneighbor,则将key赋值neighbor,进行步骤(1.28);

步骤(1.28)判断集合KeySet是否遍历完成,若否,则返回步骤(1.25),否则,结束;

所述第二步的过程如下:

步骤(2.1)初始化列表ListVec用于存放Web API的语义特征向量,进行步骤(2.2);

步骤(2.2)遍历Mashup邻域,即CenterMap[neighbor],neighbor为与需求Mashup服务Mi最相似簇的下标,进行步骤(2.3);

步骤(2.3)遍历当前Mashup调用过的Web API集合,进行步骤(2.4);

步骤(2.4)获取当前Web API的数据信息,采用步骤(1.2.1)至步骤(1.2.6)的方式获得语义特征向量,存入ListVec,进行步骤(2.5);

步骤(2.5)判断当前Web API是否遍历完成,若否,则返回步骤(2.3),否则,进行步骤(2.6);

步骤(2.6)判断邻域CenterMap[neighbor]是否遍历完成,若否,则返回步骤(2.2),否则,进行步骤(2.7);

步骤(2.7)初始化的二维数组ArraySimAPI,其维度值对应ListVec的长度,即N*N,用于存放Web API之间的相似度,进行步骤(2.8);

步骤(2.8)遍历列表ListVec,取ListVec[i],进行步骤(2.9);

步骤(2.9)遍历列表ListVec,取ListVec[j],其中i与j不相等,进行步骤(2.10);

步骤(2.10)利用余弦公式,计算i、j的相似度Simij,其中,进行步骤(2.11);

步骤(2.11)将Simij存入ArraySimAPI[i][j]中,进行步骤(2.12);

步骤(2.12)判断列表ListVec是否遍历完成,若否,则返回步骤(2.9),否则,进行步骤(2.13)

步骤(2.13)判断列表ListVec是否遍历完成,若否,则返回步骤(2.8),否则,进行步骤(2.14)

步骤(2.14)在ListVec中随机选择K个Web API服务作为初始簇中心,组成一个新的数组APIClusterCenter,其中,K与第一步中Mashup簇数相同,进行步骤(2.15);

步骤(2.15)遍历ListVec中剩余的Web API服务,记下标为i,进行步骤(2.16);

步骤(2.16)初始化index为0,index表示与当前Web API服务距离最近的簇中心的下标,进行步骤(2.17);

步骤(2.17)遍历APIClusterCenter,记当前访问的下标为j进行步骤(2.18);

步骤(2.18)判断ArraySimAPI[i][j]与ArraySimAPI[i][index]的大小,若ArraySimAPI[i][j]小于ArraySimAPI[i][index],则将j赋值index,进行步骤(2.19);

步骤(2.19)判断数组APIClusterCenter是否遍历完成,若否,则返回步骤(2.17),否则,进行步骤(2.20)

步骤(2.20)将ListVec[i]划分到index簇中,进行步骤(2.21)步骤(2.21)判断列表ListVec是否遍历完成,若否,则返回步骤(2.15),否则,进行步骤(2.22)

步骤(2.22)重新计算K个簇的中心,计算方式为每个簇中所有Web API特征向量的平均值,进行步骤(2.23)

步骤(2.23)判断当前簇的中心和上次的簇中心是否发生变化,若否,则返回步骤(2.15),否则,进行步骤(2.24)步骤(2.24)最终得到的簇中心及其簇用Map存储,记为ApiClusterMap,结束;

所述第三步的过程如下:

步骤(3.1)初始化集合ApiSet,用于存放数据集中未被筛选的Web API,进行步骤(3.2);

步骤(3.2)遍历数据集中的所有Web API,进行步骤(3.3);

步骤(3.3)判断当前API是否在ApiClusterMap中存在,若是,则将当前Web API添加到ApiSet中,若否,进行步骤(3.4);

步骤(3.4)判断数据集是否已经遍历完成,若否,则返回步骤(3.2),否则,进行步骤(3.5);

步骤(3.5)遍历ApiSet,进行步骤(3.6);

步骤(3.6)对当前Web API,顺序进行步骤(1.2.1)至步骤(1.2.6),获得Web API的语义特征向量DVecAPI,并存入ApiListVec中,进行步骤(3.7);

步骤(3.7)判断ApiSet是否已经遍历完成,若否,则返回步骤(3.5),否则,进行步骤(3.8);

步骤(3.8)遍历ApiListVec中的Web API服务,记下标为i,进行步骤(3.9);

步骤(3.9)初始化index为0,index表示与当前Web API服务距离最近的簇中心的下标,进行步骤(3.10);

步骤(3.10)遍历APIClusterCenter,记当前访问的下标为j,进行步骤(3.11);

步骤(3.11)计算cosSimij的值,表示当前Web API服务与当前簇中心的相似度,判断cosSimij与cosSimiindex的大小,若cosSimij小于cosSimiindex,则将j赋值index,其中,cosSimij的计算公式为 进行步骤(3.12);

步骤(3.12)判断数组APIClusterCenter是否遍历完成,若否,则返回步骤(3.10),否则,进行步骤(3.13);

步骤(3.13)将ApiListVec[i]划分到index簇中,进行步骤(3.14);

步骤(3.14)判断列表ApiListVec是否遍历完成,若否,则返回步骤(3.8),否则,进行步骤(3.15);

步骤(3.15)重新计算K个簇的中心,计算方式为每个簇中所有Web API特征向量的平均值,进行步骤(3.16);

步骤(3.16)判断当前簇的中心和上次的簇中心是否发生变化,若否,则返回步骤(3.8),否则,进行步骤(3.17);

步骤(3.17)最终得到的簇中心及其簇用Map存储,记为ApiCenterMap,结束;

所述第四步的过程如下:

步骤(4.1)初始化finalRank,作为最后的Web API推荐列表,进行步骤(4.2);

步骤(4.2)遍历ApiCenterMap,记当前访问的下标为c,进行步骤(4.3);

步骤(4.3)初始化集合Pop、集合CoAvg、集合Poporder和集合CoAvgOrder,其中Pop用于存放ApiCenterMapc的流行度数据,CoAvg表用于存放ApiCenterMapc的共现度数据,Poporder用于存放流行度排名,CoAvgOrder用于存放共现度排名,进行步骤(4.4);

步骤(4.4)遍历ApiCenterMapc,记当前访问的Web API为APIci,进行步骤(4.5);

步骤(4.5)计算APIci的流行度Popci,Popci的计算公式为并将结果添加到Pop集

合中,其中,FR(APIci)表示APIci被Mashup服务调用的频度,MinFR(ApiCenterMap(APIci))表示APIci所在的分类中Web API被Mashup服务调用的最小值,同理,MaxFR(ApiCenterMap(APIci))表示APIci所在的分类中Web API被Mashup服务调用的最大值,进行步骤(4.6);

步骤(4.6)计算APIci的共现度CoAvgci,CoAvgci的计算公式为并将结果添加到CoAvg集合中,其中Co(APIci,APIcj)表示APIci和APIcj被相同的Mashup调用的次数除以调用过APIci或APIcj的Mashup的个数,|OTH(APIci)|表示APIci所在的功能类别外其他满足Co(APIci,APIcj)不为0的集合的个数,进行步骤(4.7);

步骤(4.7)判断ApiCenterMapc是否遍历完成,若否,返回步骤(4.4),否则,进行步骤(4.8);

步骤(4.8)将当前类别中所有Web API的Pop集合和CoAvg集合按值数值大小从大到小进行排序,并将排序后的结果存入Poporder和CoAvgOrder中,进行步骤(4.9);

步骤(4.9)初始化tmpRank用于存放当前类别推荐的Web API,遍历ApiCenterMapc,记当前访问的Web API为APIci,进行步骤(4.10);

步骤(4.10)在Poporder和CoAvgOrder中查找APIci的排名,相加后存入tmpRank,进行步骤(4.11);

步骤(4.11)判断ApiCenterMapc是否遍历完成,若否,返回步骤(4.7),否则,进行步骤(4.12);

步骤(4.12)将按值从小到大排序,将前N个Web  API作为该类别的推荐添加到finalRank中,N为经验值,进行步骤(4.13);

步骤(4.13)判断ApiCenterMap是否遍历完成,若否,返回步骤(4.2),否则,进行步骤(4.14);

步骤(4.14)返回finalRank作为最后的Web API推荐,结束。

2.如权利要求1所述的Web开放环境下基于Mashup服务邻域的Web API推荐方法,其特征在于,所述步骤(1.2)中,得到第i个Mashup对应的语义特征向量MVeci的过程如下:步骤(1.2.1)获取当前Mashup Mi的描述内容和标签,进行步骤(1.2.2);

步骤(1.2.2)提取Mi的描述内容的名词并去重,记为功能名词集合FC,进行步骤(1.2.3);

步骤(1.2.3)遍历当前FC中的名词,计算第i个功能名词mi与其他名词之间的语义关联权重FCSimi,计算公式如下:

其中,WordNet(mi,mj)表示第i个功能名词与第j个功能名词之间的语义相似度,|FC|表示功能名词集合FC中所包含的名词个数,将语义权重较高的前N个单词存于当前服务功能语义权重字典SimBook中,进行步骤(1.2.4);

步骤(1.2.4)初始化Mi语义特征向量MVeci,进行步骤(1.2.5);

步骤(1.2.5)遍历当前字典SimBook中的单词x,并利用训练好的Word2Vec模型将其转化为词向量WVecx,提取单词x的语义权重NSWx,并计算出单词x的TF‑IDF权重TF‑IDFx,再计算出单词x的TFS权重TFSx,TFSx的值为TF‑IDFx除以一减NSWx的差,进行步骤(1.2.6);

其中,Word2Vec模型由Mikolov等人于2013年提出,该模型将文本中的内容词汇通过转换处理,化简为空间向量,词向量的数值受上下文的影响,蕴含了词与词之间相互的关联性;

其中,TF‑IDF算法常被用于评估某个单词对于文档集合中的某一份文档的重要程度,其中,词频TF表示某个单词在指定文档中出现的频度,而逆文档频率IDF则用于表示单词区分文档的能力,TF‑IDF的最终计算结果就是由TF值与IDF值相乘而得;

步骤(1.2.6)对Mi语义特征向量MVeci进行累加计算,每次增加的值为WVecx与TFSx的积,其中,若当前SimBook存在多个单词,并且语义权重NSWx为0,若是,则将TFSx置为0。