999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于眾包知識(shí)的API推薦方法研究

2021-08-03 05:24:58張廷秀
電腦知識(shí)與技術(shù) 2021年17期
關(guān)鍵詞:信息檢索

張廷秀

摘要:軟件開發(fā)者在開發(fā)過程中使用應(yīng)用程序接口(Application Programming Interface ,API)來(lái)提高軟件開發(fā)效率,但查找并選取合適的API接口是一項(xiàng)耗時(shí)且具有挑戰(zhàn)的任務(wù)。已有的研究通常采用API文檔作為語(yǔ)料庫(kù),通過關(guān)鍵詞匹配的方式來(lái)推薦適合的API,然而由于開發(fā)者使用的關(guān)鍵詞與需要查找API的差異,因此直接檢索的效果并不是很好。眾包問答網(wǎng)站如Stack Overflow每天產(chǎn)生數(shù)以千計(jì)的問答數(shù)據(jù),這些數(shù)據(jù)包含了API名稱及API的描述,可以利用這些眾包問答數(shù)據(jù)提升用戶檢索數(shù)據(jù)結(jié)果。基于這一思路,提出了一種基于信息檢索技術(shù)和眾包問答數(shù)據(jù)的API推薦方法。該方法利用眾包問答數(shù)據(jù)對(duì)用戶輸入的查詢語(yǔ)句進(jìn)行建模并計(jì)算與已有問題的相似度進(jìn)而根據(jù)已有問題的答案為用戶推薦相關(guān)API。為了驗(yàn)證該方法的有效性,從Stack Overflow中提取Java相關(guān)的問答數(shù)據(jù),提取其中的API描述信息及API信息進(jìn)行模擬實(shí)驗(yàn),結(jié)果表明,該文方法能有效提高API查詢的準(zhǔn)確性。

關(guān)鍵詞:眾包知識(shí);API 推薦;信息檢索;問答網(wǎng)站

中圖分類號(hào):TP301? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2021)17-0076-03

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

Research on API? Recommendation Method Based on Crowdsourcing Knowledge

ZHANG Ting-xiu

(Jiangsu Vocational Institute of Architectural Technology , Xuzhou 221116 , China)

Abstract: Software developers apply application programming interface (API) to improve the efficiency of software development, but it is a time-consuming and challenging task to find the appropriate API. Existing studies usually use API documents as corpus to recommend suitable APIs by keyword matching. However, due to the differences between the keywords used by developers and the APIs they need to find, the effect of direct retrieval is not very good. Crowdsourcing Q & A websites such as stack overflow generate thousands of Q & a data every day. These data include API name and API description, which can be used to improve users' retrieval results. Based on this idea, an API recommendation method based on crowdsourcing Q & a data is proposed. This method uses crowdsourcing Q & a data to model user input query statements and calculate the similarity with existing questions, and then recommends relevant APIs for users according to the answers of existing questions. In order to verify the effectiveness of this method, Java related Q & a data is extracted from stack overflow, and the API description information and API information are extracted for simulation experiments. The results show that this method can effectively improve the accuracy of API query.

Key words:crowdsourced knowledge; API recommendation; information retrieval; Q&A

1 引言

隨著信息技術(shù)的發(fā)展,軟件的規(guī)模越來(lái)越大,軟件開發(fā)者需要使用各種各樣的開發(fā)框架和接口來(lái)完成開發(fā)任務(wù)。然而,當(dāng)開發(fā)者需要開發(fā)不熟悉的功能時(shí),他們需要確定哪個(gè)API或者庫(kù)能幫助他們完成開發(fā)任務(wù)。通常,開發(fā)者通過互聯(lián)網(wǎng)搜索引擎或者軟件文檔查詢、搜索相關(guān)API及代碼片段來(lái)輔助完成開發(fā)任務(wù)。但從海量的數(shù)據(jù)或文檔中選擇合適的API并學(xué)習(xí)API使用模式是一件耗時(shí)且具有挑戰(zhàn)性的任務(wù)。開發(fā)者需要通過自然語(yǔ)言在互聯(lián)網(wǎng)或者問答網(wǎng)站上檢索,由于同一個(gè)功能或者API具有多種不同的描述方式,在檢索時(shí)開發(fā)者可能需要多次變換檢索關(guān)鍵字才能找到滿意的結(jié)果,研究表明,開發(fā)者平均花費(fèi)19%的開發(fā)時(shí)間通過互聯(lián)網(wǎng)搜索相關(guān)API或代碼片段完成開發(fā)任務(wù)。

然而,當(dāng)開發(fā)者不熟悉某個(gè)API時(shí)很難使用準(zhǔn)確的關(guān)鍵字描述API,因此開發(fā)者直接從API文檔中查找需要使用的API具有一定難度,同時(shí)在找到合適的API時(shí),如何使用這些API即掌握API的調(diào)用序列是開發(fā)者在使用API過程中面臨的第二個(gè)問題。如果開發(fā)者選擇通過互聯(lián)網(wǎng)搜索相關(guān)API,也要面臨選擇合適關(guān)鍵詞作為檢索詞及API調(diào)用序列學(xué)習(xí)的問題。同時(shí)當(dāng)開發(fā)者面臨開發(fā)任務(wù)或者難以解決的編程任務(wù)時(shí)也會(huì)到眾包問答網(wǎng)站,如Stack Overflow上提問,眾多具有豐富經(jīng)驗(yàn)的開發(fā)者可以根據(jù)提問者的描述給出自己的答案,提問者可以根據(jù)回答者的回答進(jìn)行編程測(cè)試,并根據(jù)測(cè)試結(jié)果選擇合適的解決方案。如圖1所示,從著名眾包編程問答網(wǎng)站Stack Overflow上截取的編程問答實(shí)際案例。Stack Overflow包含數(shù)以千萬(wàn)計(jì)的問答數(shù)據(jù),并且新的問題也在不斷地被提出,每個(gè)問題包含了不同級(jí)別開發(fā)者對(duì)于問題的不同描述,問題的回答者也會(huì)根據(jù)問題內(nèi)容給出具體API和代碼片段。因此研究如何利用眾包編程問答網(wǎng)站產(chǎn)生的問答數(shù)據(jù)幫助開發(fā)者快速找到合適的API及API調(diào)用序列是具有重大意義和亟待解決的問題。

2 問題描述及相關(guān)工作

2.1問題描述

API推薦是根據(jù)用戶輸入的Q,返回相關(guān)的代碼片段、單個(gè)API方法或者API調(diào)用序列及API Library。根據(jù)輸入Q的類型不同,可以分為以自由文本作為出入、API名稱作為輸入及其他類型的輸入。本文研究的內(nèi)容為根據(jù)用戶的自由文本輸入推薦API名稱及API調(diào)用序列。

2.2相關(guān)工作

2.2.1基于自由文本輸入API推薦研究現(xiàn)狀

傳統(tǒng)基于自由文本輸入API推薦主要是基于信息檢索技術(shù),計(jì)算用戶輸入和API代碼注釋的文本相似度進(jìn)行API推薦。張?jiān)品热颂岢隽嘶谟脩糨斎牒虶itHub開源項(xiàng)目API注釋的文本相似度的API推薦方法。張睿峰等人提出了基于注意力機(jī)制的API使用模式推薦方法,解決了自由文本輸入時(shí)關(guān)鍵詞出現(xiàn)順序不同導(dǎo)致語(yǔ)義不同的情形。Jiang 等人結(jié)合信息檢索和監(jiān)督學(xué)習(xí)方法為開發(fā)者推薦代碼片段。Qiao等人提出了BIKER方法解決API推薦問題,該方法使用詞嵌入技術(shù)計(jì)算文本相似度得分,解決了傳統(tǒng)基于文本相似度算法中的詞空缺問題。

2.2.2基于API名稱輸入等其他類型輸入API推薦研究現(xiàn)狀

基于API名稱的推薦研究主要集中在類庫(kù)方面。Zheng W提出了一種基于搜索引擎的API Library推薦方法可以根據(jù)API名稱推薦功能相同的API Library。Thung F提出了一種基于協(xié)同過濾的方式為開源軟件特性功能更新請(qǐng)求推薦API。Yu H提出了一種基于圖算法API推薦算法,可以根據(jù)API調(diào)用上下文信息進(jìn)行API名稱推薦。Gao W提出了一種基于協(xié)同過濾算法和個(gè)性化權(quán)重排序算法的Web API推薦算法。D'Souza A R通過提取GitHub上面開源項(xiàng)目并使用KNN算法對(duì)相似的使用語(yǔ)法進(jìn)行提取然后根據(jù)BMN算法對(duì)結(jié)果進(jìn)行排序形成最終的API推薦列表。

3 整體框架

圖2給出了算法的整體框架。根據(jù)前文所述API代碼推薦使用場(chǎng)景描述,當(dāng)用戶輸入查詢語(yǔ)句時(shí),算法會(huì)根據(jù)用戶輸入推薦處與用戶輸入內(nèi)容前10個(gè)最相關(guān)的API代碼調(diào)用序列。整個(gè)算法總共分為三個(gè)部分:句子向量化表示、API調(diào)用序列提取、句子相似度計(jì)算。

3.1數(shù)據(jù)提取

本文從Stack Overflow官方的數(shù)據(jù)鏡像中下載了Posts.xml,并從中提取了208432對(duì)有效問答數(shù)據(jù)。由于我們只關(guān)注Java相關(guān)的問答數(shù)據(jù)所以我們?cè)谔崛r(shí)只提出了Tag為java的問答數(shù)據(jù)。被采納的回答數(shù)據(jù)中包含了用戶對(duì)答案的描述及代碼片段,經(jīng)過觀察發(fā)現(xiàn),回答中的代碼片段總是包裹在標(biāo)簽中,因此我們可以通過正則表達(dá)式提取原始HTML數(shù)據(jù)中的代碼片段和回答描述信息。通過以上步驟我們可以將原始數(shù)據(jù)中的代碼片段和表述信息分離以便下一步處理計(jì)算使用。

3.2句子向量化表示

為了能夠計(jì)算用戶輸入查詢和系統(tǒng)中已存在問題的相似度,需要對(duì)用戶的輸入查詢語(yǔ)句進(jìn)行向量化表示。如圖2所示,對(duì)于語(yǔ)料庫(kù)中的數(shù)據(jù),我們會(huì)對(duì)其進(jìn)行自然語(yǔ)言處理并建立doc2vec模型,該方法基于word2vec的思想,在訓(xùn)練時(shí)為每個(gè)句子加入唯一標(biāo)識(shí)段落id,保證訓(xùn)練過程中每個(gè)句子都有一個(gè)唯一的id。該id和傳統(tǒng)word2vec算法中的word一樣,也是先映射成一個(gè)向量,即段落向量。雖然段落向量與詞向量的維數(shù)一樣,但來(lái)自兩個(gè)不同的向量空間。后續(xù)計(jì)算過程中,段落向量和詞向量累加或者連接起來(lái),作為softmax層的輸入。同一個(gè)句子或者文檔的訓(xùn)練過程中段落編號(hào)保持不變,共享段落向量,相當(dāng)于每次在預(yù)測(cè)單詞的概率時(shí),都利用了整個(gè)句子的語(yǔ)義。算法原理圖如圖3所示。

3.3 API類和方法提取

根據(jù)已有研究結(jié)果,從代碼片段中提取API調(diào)用序列主要有兩種方式。一種是將代碼轉(zhuǎn)換成為AST表達(dá)式樹的方式抽取代碼調(diào)用序列;另外一種是通過正則表達(dá)式組合及孤島解析技術(shù)提取API調(diào)用模式或者方法。前一種適合完整可運(yùn)行的代碼片段,而第二種技術(shù)適用場(chǎng)景比較廣泛且本文所研究數(shù)據(jù)基于眾包問答網(wǎng)站數(shù)據(jù),用戶的回答所包含的代碼不一定是完整可運(yùn)行的,所以本文采用第二種提取方式。首先從原始數(shù)據(jù)中提取出標(biāo)簽中所包含的代碼片段,之后采用論文中的方法提取API類和方法,為了保證提取出API類和方法的正確性,在提取出API方法和類時(shí)會(huì)和官方文檔中的類名和方法名對(duì)比,只有對(duì)比通過的數(shù)據(jù)才會(huì)作為有效數(shù)據(jù)存儲(chǔ)。經(jīng)過本步驟的提取最終形成<問題表述向量,API調(diào)用序列,API方法名>三元組。

3.4 API推薦

API推薦主要包含兩個(gè)部分,第一部分是對(duì)用戶輸入的查詢內(nèi)容進(jìn)行自然語(yǔ)言處理,轉(zhuǎn)換成句向量。第二部分將生成的句向量依次與已有的三元組中的問題描述句向量計(jì)算相似度,將相似度最高的前N個(gè)三元組中的API調(diào)用序列、API方法名作為推薦結(jié)果輸出。

4實(shí)驗(yàn)分析

4.1實(shí)驗(yàn)步驟

根據(jù)實(shí)驗(yàn)步驟3.1-3.4算法步驟和從Stack Overflow中提取的數(shù)據(jù)訓(xùn)練算法模型。設(shè)計(jì)多個(gè)API查詢場(chǎng)景的自然語(yǔ)言查詢語(yǔ)句,如“how to parse html in java”,在推薦的結(jié)果中查詢是否有合適的API出現(xiàn),如果有則視為有效推薦,否則視為無(wú)效推薦。

4.2評(píng)價(jià)指標(biāo)

為了評(píng)價(jià)算法的有效性,本文通過準(zhǔn)確率和累計(jì)增益評(píng)價(jià)對(duì)TOP-N推薦結(jié)果進(jìn)行評(píng)價(jià)。準(zhǔn)確率(Precision)是通過計(jì)算推薦結(jié)果列表中包含用戶所需要API個(gè)數(shù)進(jìn)行評(píng)測(cè),用來(lái)評(píng)價(jià)結(jié)果的質(zhì)量。則推薦結(jié)果的準(zhǔn)確率定義為:

其中, R(u)表示在根據(jù)訓(xùn)練數(shù)據(jù)給用戶做出的推薦列表, T(u)表示用戶根據(jù)測(cè)試數(shù)據(jù)給用戶做出的推薦列表,則為推薦列表中最終有效的推薦結(jié)果。

為了衡量推薦結(jié)果的排序?qū)λ惴ㄓ行缘挠绊懀覀儾捎谜蹞p累積增益(Discounted Cumulative Gain,DCG)作為評(píng)價(jià)指標(biāo),其基本思想是用戶需要的API越靠前越能提高用戶的體驗(yàn)。用戶往往只會(huì)查看排名靠前的TOP-N個(gè)結(jié)果。DCG的定義為:

其中,i代表推薦結(jié)果排序的位置,如果該推薦結(jié)果與查詢相關(guān)則reli 為1,否則為0, DCGp為推薦列表前 Top?K 項(xiàng)得分的累加值,其值越大表示用戶興趣度越高。

4.3實(shí)驗(yàn)結(jié)果

本文使用傳統(tǒng)的TF-IDF文本相似度算法做對(duì)比實(shí)驗(yàn),對(duì)比結(jié)果如圖4,圖5所示。

由圖4可知,隨著推薦結(jié)果K的增長(zhǎng),兩種推薦算法的準(zhǔn)確率都呈現(xiàn)了下降趨勢(shì)。當(dāng)K值為5時(shí)兩種算法的準(zhǔn)確率都達(dá)到了最高水平。對(duì)比來(lái)看,本文算法同等條件下準(zhǔn)確率較高且隨著K值的增長(zhǎng)準(zhǔn)確率減少速度相對(duì)較慢。由此可知,本文算法推薦效果更好,穩(wěn)定性更強(qiáng)。

從圖5的DCG指標(biāo)來(lái)看,同等推薦數(shù)據(jù)設(shè)置情況下,隨著推薦數(shù)量K的增加,TF-IDF算法和本文算法DCG值均會(huì)提高,但是相對(duì)而言,本文算法提高速度更快。由此可知,本文算法不僅在準(zhǔn)確率上優(yōu)于TF-IDF算法,而且能夠適應(yīng)用戶的喜好,更好地滿足項(xiàng)目的推薦效果。

綜上所述,以TF-IDF算法為基準(zhǔn)算法做對(duì)比,本文算法在準(zhǔn)確率和折損累積增益兩個(gè)指標(biāo)上均有所提升。表明本文推薦算法不僅能夠挖掘出用戶需要的 API接口,而且可以取得更高的準(zhǔn)確率和用戶滿意度,其推薦效果和質(zhì)量均優(yōu)于傳統(tǒng)的TF-IDF算法。

5 結(jié)論

本文基于眾包編程問答網(wǎng)站Stack Overflow數(shù)據(jù)作為語(yǔ)料庫(kù)構(gòu)建了基于句子相似度的API推薦算法,這彌補(bǔ)了傳統(tǒng)基于API文檔等語(yǔ)料庫(kù)數(shù)據(jù)更新不及時(shí)的缺點(diǎn)。實(shí)驗(yàn)證明眾包編程問答網(wǎng)站的數(shù)據(jù)可以用來(lái)做API推薦語(yǔ)料庫(kù),且基于本文算法推薦API比傳統(tǒng)TF-IDF算法具有更優(yōu)的推薦效果。

參考文獻(xiàn)

[1] 余力,劉魯,李雪峰,等.用戶多興趣下的個(gè)性化推薦算法研究[J].計(jì)算機(jī)集成制造系統(tǒng) ,2004,10(12):1610-1615.

[2] 李鑫.一種面向Mashup應(yīng)用的API推薦方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2021,31(2):38-43.

[3] 楊延?jì)桑w國(guó)濤,王丕棟.基于語(yǔ)義與情感的句子相似度計(jì)算方法[J/OL].[2021-01-20].https://kns.cnki.net/kcms/detail/11.2127.TP.20201120.1549.017.html.

[4] 李浩,鐘聲,康雁,等.融合領(lǐng)域知識(shí)的API推薦模型[J].計(jì)算機(jī)科學(xué),2020,47(S2):544-548.

[5] 高順峰,張?jiān)佘S.面向句法塊向量的句子相似度計(jì)算方法[J].軟件導(dǎo)刊,2020,19(10):106-110.

[6] 李鑫.多維數(shù)據(jù)融合的API服務(wù)可信推薦方法研究[D].開封:河南大學(xué),2020.

[7] 吳涵.基于Mashup服務(wù)功能語(yǔ)義聚類的Web API推薦方法研究[D].杭州:浙江工業(yè)大學(xué),2020.

[8] 朱書苗.基于Mashup服務(wù)語(yǔ)義表達(dá)聚類的API推薦方法研究[D].杭州:浙江工業(yè)大學(xué),2020.

[9] 張?jiān)品苡睿S志球.基于語(yǔ)義相似度的API使用模式推薦[J].計(jì)算機(jī)科學(xué),2020,47(3):34-40.

[10] 韓院彬,趙輝,檀蓉,等.改進(jìn)型協(xié)同過濾的API服務(wù)推薦方法研究[J].現(xiàn)代電子技術(shù),2019,42(21):86-89.

[11] 夏艷敏,唐兵,唐明董,等.利用關(guān)聯(lián)規(guī)則挖掘的Web API組合模式發(fā)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2019,40(10):2195-2201.

[12] 張睿峰,王鵬程,吳鳴,等.基于注意力機(jī)制的Java API序列推薦方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2019,28(9):209-214.

【通聯(lián)編輯:唐一東】

猜你喜歡
信息檢索
基于同態(tài)加密支持模糊查詢的高效隱私信息檢索協(xié)議
基于信息檢索課的大學(xué)生信息檢索行為調(diào)查研究
高職院校圖書館開設(shè)信息檢索課的必要性探討
基于MOOC理念的“翻轉(zhuǎn)課堂”教學(xué)改革探索——以海南大學(xué)《文獻(xiàn)信息檢索與利用》課程為例
網(wǎng)絡(luò)環(huán)境下數(shù)字圖書館信息檢索發(fā)展
山西青年(2018年5期)2018-01-25 16:53:40
醫(yī)學(xué)期刊編輯中文獻(xiàn)信息檢索的應(yīng)用
新聞傳播(2016年18期)2016-07-19 10:12:06
在網(wǎng)絡(luò)環(huán)境下高職院校開設(shè)信息檢索課的必要性研究
新聞傳播(2016年11期)2016-07-10 12:04:01
基于神經(jīng)網(wǎng)絡(luò)的個(gè)性化信息檢索模型研究
地理信息檢索中空間相似性度量的一種模糊方法
教學(xué)型大學(xué)《信息檢索》公選課的設(shè)計(jì)與實(shí)施
河南科技(2014年11期)2014-02-27 14:10:19
主站蜘蛛池模板: 精品少妇人妻一区二区| 在线国产资源| 欧美日韩一区二区在线免费观看| 日本在线视频免费| 看国产毛片| 亚洲欧美色中文字幕| 青青操国产视频| 国产xxxxx免费视频| 久久美女精品国产精品亚洲| 在线观看国产小视频| 亚洲午夜18| 五月天丁香婷婷综合久久| 日韩成人在线视频| 欧美激情视频在线观看一区| 毛片久久网站小视频| 久久9966精品国产免费| 美臀人妻中出中文字幕在线| 中文字幕欧美日韩高清| 亚洲视频影院| 欧美一级大片在线观看| 成年女人a毛片免费视频| 亚洲av综合网| 小说 亚洲 无码 精品| 手机永久AV在线播放| 青青极品在线| 亚洲一区二区精品无码久久久| 日本人妻一区二区三区不卡影院 | 欧美日韩国产精品va| 99手机在线视频| 亚洲国产AV无码综合原创| 国产青青操| 国产成a人片在线播放| 青青国产成人免费精品视频| 欧美综合在线观看| 精品国产美女福到在线直播| 国内精品自在自线视频香蕉| 免费在线a视频| 国产尤物jk自慰制服喷水| 高潮毛片无遮挡高清视频播放| 亚洲男女在线| 国产靠逼视频| 久久成人18免费| 国产成+人+综合+亚洲欧美| 亚洲 日韩 激情 无码 中出| 国产综合网站| 午夜丁香婷婷| 91麻豆精品国产高清在线| 五月天丁香婷婷综合久久| 免费在线播放毛片| 狠狠色噜噜狠狠狠狠色综合久 | 国产微拍一区| 久热精品免费| 这里只有精品在线播放| 国产成人综合久久| 免费中文字幕一级毛片| 91久久偷偷做嫩草影院免费看| 亚洲成人在线网| 免费AV在线播放观看18禁强制| 欧美综合成人| 亚洲日韩在线满18点击进入| 99re视频在线| 欧美日韩激情在线| 久久国产拍爱| 91无码视频在线观看| 国产精品吹潮在线观看中文| 91最新精品视频发布页| 91精品免费久久久| 中文无码精品A∨在线观看不卡| 国产99视频在线| 亚洲视频免费在线| 日韩在线2020专区| 婷婷色中文| 亚洲黄网在线| 97超级碰碰碰碰精品| 国产性生交xxxxx免费| 国产激爽大片在线播放| 丁香五月婷婷激情基地| 一级毛片视频免费| 国产人人射| 54pao国产成人免费视频| 久久不卡精品| 欧美日韩国产在线观看一区二区三区|