夏艷敏,唐 兵,唐明董,2,曹步清,喬 帥
1(湖南科技大學(xué) 計算機科學(xué)與工程學(xué)院,湖南 湘潭 411201) 2(廣東外語外貿(mào)大學(xué) 信息科學(xué)與技術(shù)學(xué)院,廣州 510006)E-mail:btang@hnust.edu.cn
在API經(jīng)濟模式[1]的推動下,越來越多的企業(yè)紛紛以Web API的形式在互聯(lián)網(wǎng)上發(fā)布數(shù)據(jù)或服務(wù)以實現(xiàn)商業(yè)增值.通過有效組合不同功能的Web API,可以開發(fā)出功能強大、有創(chuàng)意的Web應(yīng)用,這成為了一種非常流行的軟件開發(fā)方式[2].然而,盡管現(xiàn)實中通過組合Web API開發(fā)軟件的方式越來越普遍,但是對于API組合中所蘊含的規(guī)律和模式仍然缺乏認(rèn)識.如何根據(jù)API組合模式和API之間的關(guān)聯(lián)關(guān)系幫助開發(fā)者快速地從眾多的Web API中挑選合適的API去構(gòu)建新的應(yīng)用成為了一種重要的研究問題.目前,盡管有些工作已經(jīng)調(diào)研了Web API之間的關(guān)系,但對于Web API 組合模式的研究還很少見.
近年來,標(biāo)簽在對網(wǎng)絡(luò)資源進行管理和檢索方面取得了巨大的發(fā)展,互聯(lián)網(wǎng)上的各種內(nèi)容都被標(biāo)注了標(biāo)簽[3,4].這些標(biāo)簽體現(xiàn)了對標(biāo)注資源的功能概括和描述,能夠方便用戶更好地理解、分類和檢索相關(guān)資源.由于Web API的標(biāo)簽代表著它自身的功能、用途等屬性,因此,可以將Web API的標(biāo)簽類比成關(guān)聯(lián)規(guī)則挖掘技術(shù)[5]的“購物籃分析”中的商品并結(jié)合Mashup中的Web API組合關(guān)系來發(fā)現(xiàn)API之間的關(guān)聯(lián)關(guān)系即API的標(biāo)簽關(guān)聯(lián)規(guī)則.這些標(biāo)簽關(guān)聯(lián)規(guī)則可以體現(xiàn)出哪些功能屬性的Web API經(jīng)常被組合在一起構(gòu)成Web應(yīng)用,能夠在一定程度上反映出Web API的組合模式.
挖掘標(biāo)簽關(guān)聯(lián)規(guī)則能夠更好地發(fā)現(xiàn)標(biāo)簽之間的潛在關(guān)系[6-8].Fernandez等人[9]基于標(biāo)簽云之間的相似性來建立Web服務(wù)之間的關(guān)聯(lián)規(guī)則.Wang等人[10]結(jié)合Web API和標(biāo)簽發(fā)現(xiàn)了Mashup用戶的行為模式.Goarany等人[11]得到了Web API的二項集標(biāo)簽關(guān)聯(lián)規(guī)則,并用這些規(guī)則來預(yù)測有趣的Mashup模式.聶規(guī)劃等人[12]運用Apriori算法挖掘出了基于用戶行為的Web服務(wù)組合關(guān)聯(lián)規(guī)則.Ni等人[13]使用RuleTree算法得到Web API之間的正負標(biāo)簽關(guān)聯(lián)規(guī)則為Mashup推薦Web API.Tang等人[14]基于Web服務(wù)的關(guān)聯(lián)關(guān)系和它們的標(biāo)簽共現(xiàn)關(guān)系構(gòu)建了一個三層的Web服務(wù)網(wǎng)絡(luò)視圖模型.但是上述工作都沒有考慮標(biāo)簽用詞的不規(guī)范,形式不統(tǒng)一和同義詞問題帶來的影響,部分工作只考慮了標(biāo)簽的二項集,并且缺少對挖掘結(jié)果的真實評估.
本文提出了一種基于關(guān)聯(lián)規(guī)則挖掘的WACP方法來發(fā)現(xiàn)Web API的組合模式.該方法利用了Web API上代表功能屬性的標(biāo)簽以及歷史的Web API組合關(guān)系,先將Web API的標(biāo)簽結(jié)合Stanford CoreNLP(1)Stanford CoreNLP, https://stanfordnlp.github.io/CoreNLP/進行詞形還原,再結(jié)合WordNet(2)WordNet, https://wordnet.princeton.edu/對標(biāo)簽進行了同義詞統(tǒng)一等處理,然后使用基于FP-growth[15]的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法對Web API之間的標(biāo)簽進行挖掘得到了具有強關(guān)聯(lián)性的Web API標(biāo)簽關(guān)聯(lián)規(guī)則.這些具有強關(guān)聯(lián)性的Web API標(biāo)簽關(guān)聯(lián)規(guī)則在一定程度上反映了Web API的組合模式.這些API組合模式可以幫助開發(fā)者快速、準(zhǔn)確地從眾多的Web API中選擇合適的Web API組合構(gòu)成新的Web應(yīng)用以滿足多樣化的功能需求.WACP方法不僅可以挖掘頻繁二項集,并且能夠得到所有項集的Web API組合模式.通過使用ProgrammableWeb(3)ProgrammableWeb, https://www.programmableweb.com/的真實數(shù)據(jù)集進行實驗比較與分析,結(jié)果表明WACP方法相比于其它方法在查準(zhǔn)率、查全率和F值等指標(biāo)上都有所提高.
本文的組織結(jié)構(gòu)如下:第1節(jié)介紹Web API組合模式的背景和相關(guān)工作;第2節(jié)詳細講述Web API組合模式挖掘過程及相關(guān)算法;第3節(jié)為實驗結(jié)果與分析;第4節(jié)對全文內(nèi)容進行總結(jié),并展望了下一步的工作.
本文提出了一種WACP方法來挖掘Web API組合模式,WACP的功能結(jié)構(gòu)如圖1所示,它主要包括4個功能模塊:
1)數(shù)據(jù)提取:從ProgrammableWeb上爬取數(shù)據(jù)集,從數(shù)據(jù)集中提取實驗所需要的Web API名稱、標(biāo)簽和Mashup名稱、Web API組合記錄等信息.
2)Web API標(biāo)簽處理:將Web API標(biāo)簽進行去除無意義詞、詞形還原、同義詞統(tǒng)一等處理,提高標(biāo)簽的無異義性和準(zhǔn)確性.結(jié)合API標(biāo)簽以及Mashup中的API組合記錄生成Web API組合標(biāo)簽集.
3)Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘:根據(jù)Web API組合的標(biāo)簽集,結(jié)合基于FP-growth的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法來挖掘具有強關(guān)聯(lián)性的Web API標(biāo)簽關(guān)聯(lián)規(guī)則.
圖1 WACP的功能結(jié)構(gòu)Fig.1 Framework of WACP
4)獲取Web API組合模式:將具有強關(guān)聯(lián)性的Web API標(biāo)簽關(guān)聯(lián)規(guī)則中的無意義規(guī)則進行過濾得到Web API組合模式,這些模式能夠準(zhǔn)確反映出Web API之間的功能關(guān)聯(lián)關(guān)系.
該過程主要是從ProgrammableWeb中提取實驗所需要的Web API的標(biāo)簽、歷史Web API組合記錄等信息.Web API、Mashup和tag的關(guān)聯(lián)關(guān)系如圖2所示.
為了獲得高質(zhì)量的數(shù)據(jù),減少實驗誤差,提高Web API組合模式的準(zhǔn)確性,本文將Web API的標(biāo)簽進行了以下處理:
1)去除無意義詞.在數(shù)據(jù)處理過程中發(fā)現(xiàn)Web API的標(biāo)簽中存在一些無實際意義的單詞,例如不規(guī)則長字符串(如 referencemusicmusicbrainz).因此,本文定義了一個動態(tài)無意義詞表,用于去掉數(shù)據(jù)集中無實際意義的詞.
圖2 Mashup,Web API,Tag元素關(guān)聯(lián)圖Fig.2 Relationships among web APIs,mashups and tags
2)詞形還原.Web API的標(biāo)簽單詞存在許多不同的形態(tài),如ing、ed等.這些單詞的不同形態(tài)會造成挖掘出現(xiàn)僅詞性不同的、具有完全相同意義的標(biāo)簽關(guān)聯(lián)規(guī)則,如“blog→media”和“blogging→media”.為了使挖掘所得的標(biāo)簽關(guān)聯(lián)規(guī)則結(jié)果更為準(zhǔn)確,需要將標(biāo)簽單詞還原成一般形式并去重.本文結(jié)合Stanford CoreNLP工具實現(xiàn)對標(biāo)簽的詞形還原.
3)同義詞統(tǒng)一.在數(shù)據(jù)分析過程中發(fā)現(xiàn)Web API標(biāo)簽中存在許多意思相同或相近的標(biāo)簽,如bike和bicycle、phone和telephone等.由于不同開發(fā)者有不同的描述習(xí)慣,對同一事物的描述也有可能采用不同的單詞,從而會導(dǎo)致開發(fā)者在定義Web API時可能使用不同標(biāo)簽來表達同一含義.而這種同義詞情況會產(chǎn)生許多功能類似的標(biāo)簽關(guān)聯(lián)規(guī)則,如“telephone→webhook”和“phone→webhook”、“place→bicycle”和“place→bike”.Web API標(biāo)簽中的同義詞會影響Web API組合模式的準(zhǔn)確度和可靠性.本文結(jié)合WordNet對數(shù)據(jù)集中的標(biāo)簽進行了同義詞統(tǒng)一處理,更能提升Web API組合模式的可靠性.
將處理后的Web API標(biāo)簽以及歷史API組合信息相結(jié)合,得到所有Web API組合的標(biāo)簽集,以進行接下來的Web API標(biāo)簽關(guān)聯(lián)規(guī)則的挖掘.
關(guān)聯(lián)規(guī)則挖掘技術(shù)[5]通常用于描述兩個或多個事物之間存在的某種潛在的關(guān)聯(lián)關(guān)系,下面是它的相關(guān)定義:
定義1.設(shè)L={l1,l2,…,lm}是項的集合,I是數(shù)據(jù)庫事務(wù)的集合,每個事務(wù)T是一個非空項集,T?L.設(shè)X是一個項集,事務(wù)T包含X,X?L,Y?L,X≠?,Y≠?,X∩Y=?.關(guān)聯(lián)規(guī)則是在I中成立的形如X→Y的蘊涵式.
定義2.令num(I)表示數(shù)據(jù)庫事務(wù)I的總數(shù),num(X∪Y)表示I中包含X∪Y事務(wù)的個數(shù),關(guān)聯(lián)規(guī)則X→Y的支持度的計算公式為:
(1)
定義3.關(guān)聯(lián)規(guī)則X→Y的置信度指事務(wù)集中包含X事務(wù)中包含Y事務(wù)所占的百分比,計算公式為:
(2)
判斷一個關(guān)聯(lián)規(guī)則是否有用和準(zhǔn)確,即看它的支持度、置信度是否滿足最小支持度、最小置信度閾值,如果大于閾值則為有用的、正確的規(guī)則,否則為無用的規(guī)則.
本文提出一種“基于FP-growth的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法”用于挖掘形如“[tagi1,tagi2,…,tagin]→tagx”且具有強關(guān)聯(lián)性的Web API標(biāo)簽關(guān)聯(lián)規(guī)則,其中{tagi1,tagi2,…,tagin,tagx}?Tapi,Tapi為Web API組合的標(biāo)簽集合.該算法一共分為3個步驟:1、構(gòu)建FP-tree;2、挖掘FP-tree得到標(biāo)簽頻繁項集;3、挖掘Web API標(biāo)簽強關(guān)聯(lián)規(guī)則.
1)構(gòu)建FP-tree.根據(jù)Web API組合標(biāo)簽事務(wù)集,構(gòu)建Web API組合標(biāo)簽的FP-tree.該過程算法如下:
步驟1.構(gòu)建FP-tree
Imput:Web API 組合標(biāo)簽事務(wù)集W.
Output:FP-tree.
1)掃描W一次,收集標(biāo)簽頻繁項的集合B,將B按照支持度計數(shù)降序排序得到頻繁項列表Lfreq.
2)創(chuàng)建FP-tree的根節(jié)點“Null”,將W中的每個事務(wù)Trans執(zhí)行以下2個步驟:
a)得到Trans中的所有標(biāo)簽頻繁項,并按照Lfreq進行排序.
b)設(shè)排序后Trans的頻繁項列表為[t|T],其中,t是頻繁項中的第一個標(biāo)簽,T是頻繁項中剩余的標(biāo)簽.如果存在結(jié)點F有子結(jié)點M,使得結(jié)點M的標(biāo)簽等于t標(biāo)簽,那么結(jié)點M的數(shù)目加1;否則創(chuàng)建一個新結(jié)點N并計數(shù)為1,鏈接到它的父結(jié)點F.
3)遞歸操作第2步,直到將W中的所有事務(wù)都添加到FP-tree中.
2)挖掘FP-tree得到標(biāo)簽頻繁項集.根據(jù)構(gòu)建的FP-tree,調(diào)用FP-growth函數(shù)得到Web API標(biāo)簽頻繁項集.該過程算法如下:
步驟2.挖掘FP-tree得到標(biāo)簽頻繁項集
Imput:FP-tree,最小支持度計數(shù)min_sup.
Output:Web API標(biāo)簽頻繁項集.
1)挖掘FP-tree通過調(diào)用FP-growth(FP-tree,Null)實現(xiàn).
1.ProcedureFP-growth(Tree,α):
2.ifTree包含路徑Pthen
3.for路徑P中結(jié)點的每個組合(記作β)do
4. 產(chǎn)生項集β∪α,支持度計數(shù)等于β中結(jié)點的min_sup
5.endfor
6.else
7.forFP-tree的頭表中的每個標(biāo)簽aido
8. 產(chǎn)生項集β=ai∪α,支持度計數(shù)等于ai的支持度計數(shù)
9. 構(gòu)造β的條件FP-treeTreeβ
10. ifTreeβ≠?then
11. 調(diào)用FP-growth(Treeβ,β)
12.endif
13.endfor
14.endif
2)根據(jù)FP-tree得到所有的Web API標(biāo)簽頻繁項集以及這些項集對應(yīng)的支持度計數(shù).
3)挖掘Web API標(biāo)簽強關(guān)聯(lián)規(guī)則.由Web API標(biāo)簽頻繁項集生成Web API標(biāo)簽強關(guān)聯(lián)規(guī)則.該過程算法如下:
步驟3.挖掘Web API標(biāo)簽強關(guān)聯(lián)規(guī)則
Imput:Web API標(biāo)簽頻繁項集,最小置信度min_sup.
Output:Web API標(biāo)簽關(guān)聯(lián)規(guī)則.
1)定義標(biāo)簽關(guān)聯(lián)規(guī)則組成元素,關(guān)聯(lián)規(guī)則前項用“condition”表示,后項用“result”表示,關(guān)聯(lián)規(guī)則的形式為“condition→result”.
2)對于每個滿足min_sup的標(biāo)簽頻繁項集Item生成對應(yīng)的標(biāo)簽關(guān)聯(lián)規(guī)則,過程如下:
1.FunctionList
2.tagrules←?,i←0
3.ifItem≠?then
4.whilei 5.result←Item.get(i) 6.condition←condition∪Item.subList(0,i) 7.condition←condition∪Item.subList(i+1,Item.size) 8. 產(chǎn)生規(guī)則 “condition→result”并將該規(guī)則放入tagrules中 9.i++ 10.endwhile 11.endif 12.返回的tagrules即為由標(biāo)簽頻繁項集Item生成的標(biāo)簽關(guān)聯(lián)規(guī)則. 3)得到所有形如“condition→result”的Web API標(biāo)簽關(guān)聯(lián)規(guī)則. 通過設(shè)置min_conf閾值,得到滿足min_conf即具有強關(guān)聯(lián)性的所有Web API標(biāo)簽關(guān)聯(lián)規(guī)則. 在得到的形如[tagi1,tagi2,…,tagin]→tagx的所有Web API標(biāo)簽強關(guān)聯(lián)規(guī)則中,如果tagi1,tagi2,…,tagin和tagx是屬于同一個Web API中的標(biāo)簽,則需要過濾掉這類規(guī)則.因為這樣的規(guī)則并不能反映Web API之間的功能關(guān)聯(lián)關(guān)系,這些來自于同一個Web API的標(biāo)簽僅僅只是一種相同或相似概念來描述相同的API資源.獲取Web API組合模式的過程如下所示: 1.得到所有Web API的自身標(biāo)簽集,并新建Web API標(biāo)簽關(guān)聯(lián)規(guī)則過濾列表filterRule. 2.將Web API的自身標(biāo)簽集結(jié)合FP-growth算法生成需要過濾掉的Web API標(biāo)簽關(guān)聯(lián)規(guī)則并放入filterRule中,這些規(guī)則的前項和后項都來自于相同的Web API. 3.將2.3中得到的所有Web API標(biāo)簽關(guān)聯(lián)規(guī)則與filterRule中的規(guī)則進行匹配,如果規(guī)則存在于filterRule中,那么刪除該規(guī)則,如果不存在則保留該規(guī)則. 4.最終保留的Web API標(biāo)簽關(guān)聯(lián)規(guī)則即為得到的Web API組合模式. 經(jīng)過上述步驟得到的Web API組合模式正確反映了Web API之間的功能關(guān)聯(lián)關(guān)系,能夠體現(xiàn)什么功能屬性的Web API常被組合在一起開發(fā)新應(yīng)用. 本實驗使用的數(shù)據(jù)集是從ProgrammableWeb上爬取的9135條Web API記錄以及6875條Mashup記錄.其中,Web API記錄包括API名稱、標(biāo)簽、類別、網(wǎng)址、描述文檔等信息.Mashup記錄包括Mashup名稱、標(biāo)簽、使用的Web API組合等信息. 3.2.1 Web API標(biāo)簽處理 將Web API的標(biāo)簽進行詞形還原、同義詞統(tǒng)一等處理,表1展示了部分處理后的Web API標(biāo)簽數(shù)據(jù). 表1 Web API標(biāo)簽處理結(jié)果舉例Table 1 Examples of Web API tag processing 3.2.2 Web API標(biāo)簽頻繁項集 將處理后的Web API標(biāo)簽集作為基于FP-growth的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法的輸入,得到了Web API標(biāo)簽的頻繁項集.表2展示了部分Web API標(biāo)簽頻繁項集以及它們的頻數(shù). 表2 Web API標(biāo)簽頻繁項集結(jié)果舉例Table 2 Examples of tag frequent itemsets 3.2.3 Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘 通過訓(xùn)練Web API之間的標(biāo)簽頻繁項集得到了Web API之間的標(biāo)簽關(guān)聯(lián)規(guī)則,通過設(shè)置最小支持度、最小置信度閾值來獲得具有強關(guān)聯(lián)性的規(guī)則.其中,最小支持度閾值設(shè)置為0.007(50/6875),即在6875條Mashup記錄中,規(guī)則出現(xiàn)的個數(shù)不少于50;最小置信度閾值設(shè)置為0.6.表3為2項集Web API標(biāo)簽關(guān)聯(lián)規(guī)則前10個最優(yōu)規(guī)則. 3.2.4 獲取Web API組合模式 去除Web API標(biāo)簽強關(guān)聯(lián)規(guī)則中不能反映出API之間的組合關(guān)系的規(guī)則得到Web API組合模式,這些Web API組合模式能夠準(zhǔn)確反映出API之間的功能組合關(guān)系.表4展示了2、3、4項集的前5個最優(yōu)的Web API組合模式. 這15條記錄是從Web API組合模式中選擇的二項集、三項集、四項集支持度、置信度最高的前5條組合模式以及它們的支持度、置信度.這些Web API組合模式是由代表功能屬性的API的標(biāo)簽訓(xùn)練得到的標(biāo)簽關(guān)聯(lián)規(guī)則,并且通過了規(guī)則的篩選過濾,它們能夠準(zhǔn)確反映出API之間在功能上的關(guān)聯(lián)關(guān)系以及API之間的組合模式.當(dāng)然,Web API最優(yōu)組合模式也可以根據(jù)其他指標(biāo)來選擇,如設(shè)置不同的模式長度、支持度閾值、置信度閾值等. 表3 2項集Web API標(biāo)簽關(guān)聯(lián)規(guī)則前10個最優(yōu)規(guī)則Table 3 Top 10 Web API tag association rules for 2-itemsets 表4 多項集Web API組合模式中前5個最優(yōu)模式Table 4 Top 5 Web API tag association rules for multi-itemsets 以表4的第6條組合模式為例,“[display,video]→map”表示“display”、“video”標(biāo)簽通常與“map”標(biāo)簽存在于不同API中,并且這些不同的API能夠通過組合形成Web應(yīng)用.從“bigsity”Mashup的API組合關(guān)系中發(fā)現(xiàn),該mashup中的“yahoo local search”API包含“display”標(biāo)簽,“youtube”API包含“video”標(biāo)簽,“google maps”API包含“map”標(biāo)簽,這三個標(biāo)簽同時存在于Web API組合中并且“display,video”和“map”來自于不同的API,說明“[display,video]→map”反映出了API在功能上的關(guān)聯(lián)關(guān)系且為正確的Web API的組合模式. 結(jié)合Web API的組合模式,開發(fā)者可以更加準(zhǔn)確、快捷地構(gòu)建最合理的Web 服務(wù).例如,當(dāng)開發(fā)者已擁有包含“geolocation”標(biāo)簽屬性的Web API并需要結(jié)合新的API組成Mashup時,這時可以根據(jù)“[geolocation]→display”組合模式推薦包含“display”標(biāo)簽的Web API組成新的Mashup. 1)WACP:該方法首先去除Web API標(biāo)簽中的無意義詞,再對標(biāo)簽進行詞形還原和同義詞統(tǒng)一等處理得到Web API組合標(biāo)簽事務(wù)集,通過使用基于FP-growth的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法得到所有項集的Web API標(biāo)簽強關(guān)聯(lián)規(guī)則,過濾掉不能準(zhǔn)確反映Web API之間功能關(guān)聯(lián)關(guān)系的規(guī)則得到Web API組合模式. 2)Goarany等方法[11]:該方法直接使用Web API的標(biāo)簽以及API之間的歷史組合關(guān)系得到形如“(tagm,tagn)”的二項集Web API標(biāo)簽對,將每個標(biāo)簽對中的兩個標(biāo)簽共同歷史調(diào)用次數(shù)進行統(tǒng)計得到支持度和置信度,過濾掉兩個標(biāo)簽同時存在于相同Web API的標(biāo)簽對,每個標(biāo)簽對可以生成兩條形如“tagm→tagn”和“tagn→tagm”的規(guī)則,對所有標(biāo)簽對進行該操作得到所有Web API二項集標(biāo)簽關(guān)聯(lián)規(guī)則. 由于Web API組合模式個數(shù)較多,本文選取Web API的所有二項集組合模式進行實驗評價.實驗采用了數(shù)據(jù)挖掘中常用的評估指標(biāo):查準(zhǔn)率(Precision)、查全率(Recall)和二者綜合評價的F值(F-measure). Mashup的標(biāo)簽描述了Web API組合和Mashup兩者的功能情況,它能從一定程度上反映出Web API之間的關(guān)系[11].在本實驗中,假定根據(jù)Mashup自身標(biāo)簽挖掘出的標(biāo)簽關(guān)聯(lián)規(guī)則為正確規(guī)則,若Web API組合模式存在于Mashup標(biāo)簽關(guān)聯(lián)規(guī)則中,那么認(rèn)為這條Web API組合模式為正確模式,反之則為不正確模式.以下為查準(zhǔn)率、查全率、F值的公式: 查準(zhǔn)率公式: (3) 查全率公式: (4) F值公式: (5) 其中,findtrue為檢索到的Web API組合模式中的正確模式數(shù)目,findfalse為檢索到的Web API組合模式中的不正確模式數(shù)目,unfindtrue為未檢索到但卻是正確的Web API組合模式數(shù)目. 圖3為本文所提出的WACP方法與Goarany等提出的方法在支持度閾值下的Web API組合模式的查準(zhǔn)率、查全率、F值性能對比圖.圖4為本文所提出的WACP方法與Goarany等提出的方法在置信度閾值下的Web API組合模式的查準(zhǔn)率、查全率、F值性能對比圖. 從圖中可以看出,對于本實驗使用的3種評估標(biāo)準(zhǔn),不管是從支持度閾值還是置信度閾值的角度去評估,WACP方法都要優(yōu)于Goarany等提出的方法.當(dāng)支持度閾值從0.0002到0.0012時,WACP方法的F值分別高于對比方法 1.6%、1.7%、1.5%、1.3%、1.4%、1%,當(dāng)置信度閾值從0.005到0.03時,WACP方法的F值分別高于對比方法 1.6%、1.6%、1.7%、1.6%、1.5%、1.6%. 由于Web API的標(biāo)簽存在無意義詞、詞性不統(tǒng)一和同義詞等現(xiàn)象,Web API標(biāo)簽質(zhì)量并不是特別高,在這些情況下容易產(chǎn)生不正確的Web API組合模式和能夠表達相同API功能關(guān)聯(lián)關(guān)系的許多重復(fù)模式,使得Web API組合模式的準(zhǔn)確性并不高.另外,Web API標(biāo)簽關(guān)聯(lián)規(guī)則中存在許多不能反映出API之間功能關(guān)聯(lián)關(guān)系的規(guī)則,這也會影響到Web API組合模式的準(zhǔn)確性. 本文提出的WACP方法考慮到了對Web API標(biāo)簽進行詞形還原、同義詞統(tǒng)一等處理,提高了標(biāo)簽的質(zhì)量.另外,將Web API標(biāo)簽關(guān)聯(lián)規(guī)則中的不合理規(guī)則的進行了過濾,使得每個Web API組合模式都能夠準(zhǔn)確地反映API之間的功能關(guān)聯(lián)關(guān)系.相比于Goarany等提出的方法只得到了API之間的二項集關(guān)聯(lián)規(guī)則,本文使用的基于FP-growth的Web API標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法挖掘得到了所有項集的Web API組合模式,另外,該算法在性能上也優(yōu)于Goarany等提出的方法和Apriori等.因此,使用WACP方法得到的Web API組合模式更加準(zhǔn)確,Precision、recall和F-measure值也有明顯提高. 圖3 不同支持度閾值下的實驗結(jié)果Fig.3 Experiment results in different support threshold 圖4 不同置信度閾值下的實驗結(jié)果Fig.4 Experiment results in different confidence threshold 本文為發(fā)現(xiàn)Web API生態(tài)系統(tǒng)中的API組合模式,提出了一種基于關(guān)聯(lián)規(guī)則挖掘的方法—WACP.該方法通過結(jié)合Web API的標(biāo)簽以及歷史的API組合關(guān)系,先將API標(biāo)簽進行了詞形還原、同義詞統(tǒng)一等處理,再使用基于FP-growth的標(biāo)簽關(guān)聯(lián)規(guī)則挖掘算法得到了Web API之間的標(biāo)簽強關(guān)聯(lián)規(guī)則,最后對規(guī)則進行過濾得到了Web API組合模式.Web API組合模式的發(fā)現(xiàn)可以為開發(fā)者從眾多的Web API中挑選合適的Web API組合提供支持.實驗結(jié)果表明了WACP方法的有效性. 許多Web API上標(biāo)注的標(biāo)簽數(shù)很少甚至沒有,這種數(shù)據(jù)稀疏性可能會影響Web API組合模式發(fā)現(xiàn)的效果.未來工作將考慮Web API的標(biāo)簽擴展,如從Web API的描述文檔中提取關(guān)鍵字推薦新的標(biāo)簽,以進一步提高標(biāo)簽關(guān)聯(lián)挖掘和Web API組合模式發(fā)現(xiàn)的性能.2.4 獲取Web API組合模式
3 實驗結(jié)果及分析
3.1 數(shù)據(jù)集
3.2 實驗結(jié)果
3.3 方法比較
3.4 評價指標(biāo)
3.5 評價結(jié)果
4 總結(jié)與討論