• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      張廷秀

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

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

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

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

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

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

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

      2.1問(wèn)題描述

      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開(kāi)源項(xiàng)目API注釋的文本相似度的API推薦方法。張睿峰等人提出了基于注意力機(jī)制的API使用模式推薦方法,解決了自由文本輸入時(shí)關(guān)鍵詞出現(xiàn)順序不同導(dǎo)致語(yǔ)義不同的情形。Jiang 等人結(jié)合信息檢索和監(jiān)督學(xué)習(xí)方法為開(kāi)發(fā)者推薦代碼片段。Qiao等人提出了BIKER方法解決API推薦問(wèn)題,該方法使用詞嵌入技術(shù)計(jì)算文本相似度得分,解決了傳統(tǒng)基于文本相似度算法中的詞空缺問(wèn)題。

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

      基于API名稱的推薦研究主要集中在類庫(kù)方面。Zheng W提出了一種基于搜索引擎的API Library推薦方法可以根據(jù)API名稱推薦功能相同的API Library。Thung F提出了一種基于協(xié)同過(guò)濾的方式為開(kāi)源軟件特性功能更新請(qǐng)求推薦API。Yu H提出了一種基于圖算法API推薦算法,可以根據(jù)API調(diào)用上下文信息進(jìn)行API名稱推薦。Gao W提出了一種基于協(xié)同過(guò)濾算法和個(gè)性化權(quán)重排序算法的Web API推薦算法。D'Souza A R通過(guò)提取GitHub上面開(kāi)源項(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ì)有效問(wèn)答數(shù)據(jù)。由于我們只關(guān)注Java相關(guān)的問(wèn)答數(shù)據(jù)所以我們?cè)谔崛r(shí)只提出了Tag為java的問(wèn)答數(shù)據(jù)。被采納的回答數(shù)據(jù)中包含了用戶對(duì)答案的描述及代碼片段,經(jīng)過(guò)觀察發(fā)現(xiàn),回答中的代碼片段總是包裹在標(biāo)簽中,因此我們可以通過(guò)正則表達(dá)式提取原始HTML數(shù)據(jù)中的代碼片段和回答描述信息。通過(guò)以上步驟我們可以將原始數(shù)據(jù)中的代碼片段和表述信息分離以便下一步處理計(jì)算使用。

      3.2句子向量化表示

      為了能夠計(jì)算用戶輸入查詢和系統(tǒng)中已存在問(wèn)題的相似度,需要對(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)練過(guò)程中每個(gè)句子都有一個(gè)唯一的id。該id和傳統(tǒng)word2vec算法中的word一樣,也是先映射成一個(gè)向量,即段落向量。雖然段落向量與詞向量的維數(shù)一樣,但來(lái)自兩個(gè)不同的向量空間。后續(xù)計(jì)算過(guò)程中,段落向量和詞向量累加或者連接起來(lái),作為softmax層的輸入。同一個(gè)句子或者文檔的訓(xùn)練過(guò)程中段落編號(hào)保持不變,共享段落向量,相當(dāng)于每次在預(yù)測(cè)單詞的概率時(shí),都利用了整個(gè)句子的語(yǔ)義。算法原理圖如圖3所示。

      3.3 API類和方法提取

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

      3.4 API推薦

      API推薦主要包含兩個(gè)部分,第一部分是對(duì)用戶輸入的查詢內(nèi)容進(jìn)行自然語(yǔ)言處理,轉(zhuǎn)換成句向量。第二部分將生成的句向量依次與已有的三元組中的問(wè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à)算法的有效性,本文通過(guò)準(zhǔn)確率和累計(jì)增益評(píng)價(jià)對(duì)TOP-N推薦結(jié)果進(jìn)行評(píng)價(jià)。準(zhǔn)確率(Precision)是通過(guò)計(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èn)答網(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è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ì)?,趙國(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] 高順?lè)澹瑥堅(jiān)佘S.面向句法塊向量的句子相似度計(jì)算方法[J].軟件導(dǎo)刊,2020,19(10):106-110.

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

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

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

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

      [10] 韓院彬,趙輝,檀蓉,等.改進(jìn)型協(xié)同過(guò)濾的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ū)館開(kāi)設(shè)信息檢索課的必要性探討
      基于MOOC理念的“翻轉(zhuǎn)課堂”教學(xué)改革探索——以海南大學(xué)《文獻(xiàn)信息檢索與利用》課程為例
      網(wǎng)絡(luò)環(huán)境下數(shù)字圖書(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)境下高職院校開(kāi)設(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
      台北市| 福建省| 凤翔县| 高台县| 资溪县| 汉沽区| 家居| 搜索| 金昌市| 勃利县| 河池市| 泽州县| 沈丘县| 鹰潭市| 丹寨县| 安泽县| 休宁县| 建始县| 渑池县| 东台市| 都昌县| 黄梅县| 肥西县| 望江县| 蒙城县| 茌平县| 永清县| 朝阳县| 海安县| 合肥市| 太仓市| 盖州市| 林甸县| 莫力| 体育| 大厂| 宜兴市| 客服| 库伦旗| 靖边县| 于都县|