[發明專利]Web開放環境下基于Mashup服務鄰域的Web API推薦方法有效
| 申請號: | 202010940196.8 | 申請日: | 2020-09-09 |
| 公開(公告)號: | CN112148999B | 公開(公告)日: | 2022-04-08 |
| 發明(設計)人: | 陸佳煒;馬超治;吳涵;朱昊天;鄭嘉弘;肖剛 | 申請(專利權)人: | 浙江工業大學 |
| 主分類號: | G06F16/9536 | 分類號: | G06F16/9536;G06F16/9535;G06F40/30;G06K9/62;H04L67/51 |
| 代理公司: | 杭州斯可睿專利事務所有限公司 33241 | 代理人: | 王利強 |
| 地址: | 310014 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | web 開放 環境 基于 mashup 服務 鄰域 api 推薦 方法 | ||
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。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江工業大學,未經浙江工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010940196.8/1.html,轉載請聲明來源鉆瓜專利網。





