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

基于眾包知識的API推薦方法研究

2021-08-03 05:24:58張廷秀
電腦知識與技術 2021年17期
關鍵詞:信息檢索

張廷秀

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

關鍵詞:眾包知識;API 推薦;信息檢索;問答網站

中圖分類號:TP301? ? ? 文獻標識碼:A

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

開放科學(資源服務)標識碼(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 引言

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

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

2 問題描述及相關工作

2.1問題描述

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

2.2相關工作

2.2.1基于自由文本輸入API推薦研究現狀

傳統基于自由文本輸入API推薦主要是基于信息檢索技術,計算用戶輸入和API代碼注釋的文本相似度進行API推薦。張云帆等人提出了基于用戶輸入和GitHub開源項目API注釋的文本相似度的API推薦方法。張睿峰等人提出了基于注意力機制的API使用模式推薦方法,解決了自由文本輸入時關鍵詞出現順序不同導致語義不同的情形。Jiang 等人結合信息檢索和監督學習方法為開發者推薦代碼片段。Qiao等人提出了BIKER方法解決API推薦問題,該方法使用詞嵌入技術計算文本相似度得分,解決了傳統基于文本相似度算法中的詞空缺問題。

2.2.2基于API名稱輸入等其他類型輸入API推薦研究現狀

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

3 整體框架

圖2給出了算法的整體框架。根據前文所述API代碼推薦使用場景描述,當用戶輸入查詢語句時,算法會根據用戶輸入推薦處與用戶輸入內容前10個最相關的API代碼調用序列。整個算法總共分為三個部分:句子向量化表示、API調用序列提取、句子相似度計算。

3.1數據提取

本文從Stack Overflow官方的數據鏡像中下載了Posts.xml,并從中提取了208432對有效問答數據。由于我們只關注Java相關的問答數據所以我們在提取時只提出了Tag為java的問答數據。被采納的回答數據中包含了用戶對答案的描述及代碼片段,經過觀察發現,回答中的代碼片段總是包裹在標簽中,因此我們可以通過正則表達式提取原始HTML數據中的代碼片段和回答描述信息。通過以上步驟我們可以將原始數據中的代碼片段和表述信息分離以便下一步處理計算使用。

3.2句子向量化表示

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

3.3 API類和方法提取

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

3.4 API推薦

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

4實驗分析

4.1實驗步驟

根據實驗步驟3.1-3.4算法步驟和從Stack Overflow中提取的數據訓練算法模型。設計多個API查詢場景的自然語言查詢語句,如“how to parse html in java”,在推薦的結果中查詢是否有合適的API出現,如果有則視為有效推薦,否則視為無效推薦。

4.2評價指標

為了評價算法的有效性,本文通過準確率和累計增益評價對TOP-N推薦結果進行評價。準確率(Precision)是通過計算推薦結果列表中包含用戶所需要API個數進行評測,用來評價結果的質量。則推薦結果的準確率定義為:

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

為了衡量推薦結果的排序對算法有效性的影響,我們采用折損累積增益(Discounted Cumulative Gain,DCG)作為評價指標,其基本思想是用戶需要的API越靠前越能提高用戶的體驗。用戶往往只會查看排名靠前的TOP-N個結果。DCG的定義為:

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

4.3實驗結果

本文使用傳統的TF-IDF文本相似度算法做對比實驗,對比結果如圖4,圖5所示。

由圖4可知,隨著推薦結果K的增長,兩種推薦算法的準確率都呈現了下降趨勢。當K值為5時兩種算法的準確率都達到了最高水平。對比來看,本文算法同等條件下準確率較高且隨著K值的增長準確率減少速度相對較慢。由此可知,本文算法推薦效果更好,穩定性更強。

從圖5的DCG指標來看,同等推薦數據設置情況下,隨著推薦數量K的增加,TF-IDF算法和本文算法DCG值均會提高,但是相對而言,本文算法提高速度更快。由此可知,本文算法不僅在準確率上優于TF-IDF算法,而且能夠適應用戶的喜好,更好地滿足項目的推薦效果。

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

5 結論

本文基于眾包編程問答網站Stack Overflow數據作為語料庫構建了基于句子相似度的API推薦算法,這彌補了傳統基于API文檔等語料庫數據更新不及時的缺點。實驗證明眾包編程問答網站的數據可以用來做API推薦語料庫,且基于本文算法推薦API比傳統TF-IDF算法具有更優的推薦效果。

參考文獻

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

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

[3] 楊延嬌,趙國濤,王丕棟.基于語義與情感的句子相似度計算方法[J/OL].[2021-01-20].https://kns.cnki.net/kcms/detail/11.2127.TP.20201120.1549.017.html.

[4] 李浩,鐘聲,康雁,等.融合領域知識的API推薦模型[J].計算機科學,2020,47(S2):544-548.

[5] 高順峰,張再躍.面向句法塊向量的句子相似度計算方法[J].軟件導刊,2020,19(10):106-110.

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

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

[8] 朱書苗.基于Mashup服務語義表達聚類的API推薦方法研究[D].杭州:浙江工業大學,2020.

[9] 張云帆,周宇,黃志球.基于語義相似度的API使用模式推薦[J].計算機科學,2020,47(3):34-40.

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

[11] 夏艷敏,唐兵,唐明董,等.利用關聯規則挖掘的Web API組合模式發現[J].小型微型計算機系統,2019,40(10):2195-2201.

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

【通聯編輯:唐一東】

猜你喜歡
信息檢索
基于同態加密支持模糊查詢的高效隱私信息檢索協議
基于信息檢索課的大學生信息檢索行為調查研究
高職院校圖書館開設信息檢索課的必要性探討
基于MOOC理念的“翻轉課堂”教學改革探索——以海南大學《文獻信息檢索與利用》課程為例
網絡環境下數字圖書館信息檢索發展
山西青年(2018年5期)2018-01-25 16:53:40
醫學期刊編輯中文獻信息檢索的應用
新聞傳播(2016年18期)2016-07-19 10:12:06
在網絡環境下高職院校開設信息檢索課的必要性研究
新聞傳播(2016年11期)2016-07-10 12:04:01
基于神經網絡的個性化信息檢索模型研究
地理信息檢索中空間相似性度量的一種模糊方法
教學型大學《信息檢索》公選課的設計與實施
河南科技(2014年11期)2014-02-27 14:10:19
主站蜘蛛池模板: 小说区 亚洲 自拍 另类| 成人欧美在线观看| 国产精品任我爽爆在线播放6080| 国产久操视频| 国产精品一区在线麻豆| 亚洲欧美在线综合图区| 91精品免费高清在线| 熟女日韩精品2区| 久久精品亚洲中文字幕乱码| 色爽网免费视频| 91国内外精品自在线播放| 亚洲视频免| 播五月综合| 亚洲欧美不卡| 国产美女免费网站| 亚洲天堂视频网| 久草视频精品| 亚洲视频四区| 人人91人人澡人人妻人人爽| 午夜视频在线观看免费网站| 欧美三级不卡在线观看视频| 久久久无码人妻精品无码| 日日拍夜夜嗷嗷叫国产| 性喷潮久久久久久久久| 永久免费无码日韩视频| 欧美国产视频| 亚洲日本中文字幕乱码中文 | 狠狠v日韩v欧美v| 国产亚洲精| 欧美天天干| 亚洲日韩欧美在线观看| 高h视频在线| 91国内视频在线观看| 欧美色99| 亚洲欧美在线精品一区二区| 国产微拍精品| 亚洲精品中文字幕无乱码| 久久综合色视频| 亚洲午夜久久久精品电影院| 国产免费久久精品99re丫丫一| 波多野结衣一二三| 欧洲精品视频在线观看| 欧美影院久久| 亚洲精品人成网线在线| 中文字幕 欧美日韩| 久久一本精品久久久ー99| 99久久精品无码专区免费| 欧美黄网在线| 日本草草视频在线观看| 亚洲无码精彩视频在线观看 | 熟妇人妻无乱码中文字幕真矢织江| 久久国产乱子伦视频无卡顿| 中文字幕永久视频| 国产精品人莉莉成在线播放| 国产三区二区| 色综合久久88| 国产成人艳妇AA视频在线| 青青青国产视频| 久久青草视频| 日韩国产精品无码一区二区三区 | 91香蕉国产亚洲一二三区 | 毛片国产精品完整版| 久久国产香蕉| 五月天在线网站| 亚洲国产精品无码久久一线| 亚洲一级毛片免费观看| 国产高清在线精品一区二区三区 | 制服丝袜 91视频| 久热这里只有精品6| 国模粉嫩小泬视频在线观看| 久久这里只有精品免费| 天天综合网色| 亚洲精品成人7777在线观看| 91精品国产91久久久久久三级| 中文无码精品a∨在线观看| 欧美在线导航| 国产国语一级毛片在线视频| 麻豆精品在线播放| 国产美女无遮挡免费视频| 国产精鲁鲁网在线视频| 成人国内精品久久久久影院| 亚洲欧洲日本在线|