亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于用戶反饋的API推薦工具①

        2021-09-10 07:32:06楊忻瑩
        計算機系統(tǒng)應(yīng)用 2021年8期
        關(guān)鍵詞:列表語句文檔

        楊忻瑩,周 宇,2

        1(南京航空航天大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,南京 211106)

        2(南京航空航天大學(xué) 高安全系統(tǒng)的軟件開發(fā)與驗證技術(shù)工信部重點實驗室,南京 211106)

        在軟件開發(fā)過程中,應(yīng)用程序接口(API) 發(fā)揮了重要作用[1],開發(fā)人員可以使用API 更有效地執(zhí)行編程任務(wù).但是由于API的數(shù)量龐大,開發(fā)者不可能熟悉所有的API,也不可能始終為特定的開發(fā)任務(wù)選擇合適的API.當(dāng)遇到不熟悉的編程任務(wù)時,開發(fā)者往往會通過上網(wǎng)搜索相關(guān)功能的案例進行代碼復(fù)用,或者搜索相關(guān)的API 文檔,學(xué)習(xí)相關(guān)API的使用方法.能夠針對程序員的需求進行合理的API 接口推薦便成為了提高軟件開發(fā)效率的重要途徑之一.為了解決這個問題,國內(nèi)外大量科研人員已在API 接口推薦領(lǐng)域展開了一系列研究工作,并實現(xiàn)了許多API 推薦方法,以減輕開發(fā)人員理解和搜索API的負擔(dān).

        Thung 等通過將歷史特征請求與API 文檔信息相結(jié)合的方式,進行API 方法推薦[2].BIKER[3]獲取Stack Overflow 問答網(wǎng)站上的問答信息和JDK的API 文檔信息[4],根據(jù)帖子問題與用戶查詢的相似性推薦API.

        這些方法往往基于信息檢索技術(shù)以及自然語言處理相關(guān)技術(shù)提取關(guān)鍵字,來縮小目標API的搜索范圍、加快推薦效率.然而他們大多均未考慮用戶交互信息(例如用戶從推薦列表中選擇API),這些信息通常被認為能夠大大提高API 推薦性能.

        針對這一不足之處,有少數(shù)工作利用了用戶反饋信息.例如,NLP2API[5]利用來自Stack Overflow 網(wǎng)站的問答對來模擬偽用戶交互,從而重新制定查詢語句,實際上并沒有進行真正的用戶交互.Wang 等[6]將反饋納入到代碼搜索過程中,提出了一種主動代碼搜索方法,盡管他們的工作利用了反饋信息,但需要用戶明確的對推薦結(jié)果中的每一條信息進行相關(guān)性評分,開銷太大.這部分工作雖然將反饋信息從傳統(tǒng)的推薦系統(tǒng)領(lǐng)域引入到代碼推薦領(lǐng)域,但仍有改進的空間.

        因此,在現(xiàn)有的API 推薦工作上,本文提出一個新穎的API 推薦工具.

        首先,記錄用戶使用本工具時產(chǎn)生的真實交互信息(即用戶輸入的查詢語句和用戶從推薦列表中選擇的API),將其作為用戶反饋數(shù)據(jù),即反饋信息,并構(gòu)建反饋庫,將反饋數(shù)據(jù)以<用戶查詢,API>對的形式存入其中.故用戶在使用時不需要主動提供額外信息(如評分),可減輕用戶負擔(dān).

        其次,引入排序?qū)W習(xí)和主動學(xué)習(xí)技術(shù)以提升API推薦性能.通過將API 視為文檔,本工作將排序?qū)W習(xí)技術(shù)應(yīng)用至API 推薦領(lǐng)域中,利用用戶反饋等數(shù)據(jù)構(gòu)建特征向量,訓(xùn)練排序?qū)W習(xí)模型,將用戶反饋有效的融入到API 推薦中,以提高API 推薦結(jié)果的準確性;為了緩解“冷啟動”問題、加速反饋數(shù)據(jù)的學(xué)習(xí)過程,本工作采用了主動學(xué)習(xí),通過收集Stack Overflow的問答信息,構(gòu)造問答數(shù)據(jù)對,用于輔助訓(xùn)練主動學(xué)習(xí)模型,從而保證即使在反饋數(shù)據(jù)十分稀缺時,仍能實現(xiàn)良好的推薦效果.

        最后,為了實現(xiàn)更好的擴展性,可利用第三方API 推薦方法作為組件,根據(jù)用戶需求,靈活地嵌套到其他的API 推薦方法之上.

        本工具以插件的形式集成到了VS Code IDE中,向用戶提供API 推薦,這將會對API 推薦系統(tǒng)產(chǎn)生積極影響.值得強調(diào)的是,盡管本工作目前專注于Java,但是我們希望可以將其應(yīng)用于其他編程語言的API.本工作不僅提出了一種推薦方法,而且提高了API 推薦性能.本文著重介紹了本工作的工具實現(xiàn),讀者可參考原始論文[7]以獲得更多詳細信息.

        為了評估所提出方法的有效性,本文實驗選擇了最先進的API 推薦方法BIKER[3]作為對比,利用Hit@k/Top-k,MAP,MRR 作為評估指標.實驗結(jié)果表明,對比BIKER,本工具API 推薦的Hit@1 準確率相對提升了18.2%,高達51.8%.

        1 方法實現(xiàn)

        工作流程如下,首先從JDK 8 官方文檔中提取用于描述API 類和方法的總結(jié)句,作為API 文檔,再利用現(xiàn)有API 推薦方法,對用戶輸入的自然語言查詢語句進行推薦,得到初始API 推薦列表.通過語義相似度計算模型(1.1 節(jié))進行相似度計算,對API 推薦列表中的API 構(gòu)建特征向量(1.2 節(jié)),利用訓(xùn)練好的排序?qū)W習(xí)和主動學(xué)習(xí)模型(1.3 節(jié)),對初始API 推薦列表進行重新排序,并向用戶呈現(xiàn)重排序的API 推薦列表(1.4 節(jié)).此外,可將用戶從列表中選擇的最合適的API,與本條查詢語句一起形成反饋數(shù)據(jù),存入反饋庫中(1.5 節(jié)),再根據(jù)反饋數(shù)據(jù)對推薦結(jié)果進行優(yōu)先級調(diào)整,使得用戶選擇的推薦項位于推薦結(jié)果列表中更加靠前的位置,從而提高API 推薦準確率.本工作的具體實現(xiàn)細節(jié)可以在文獻[7]中找到,在此不做贅述.本工具的整體架構(gòu)如圖1所示.

        圖1 方法整體架構(gòu)

        1.1 語義相似度計算模型構(gòu)建

        本模塊構(gòu)建一個語義相似度計算模型,為特征提取模塊提供相似度計算方法.首先從Stack Overflow[8]問答網(wǎng)站上下載歷史問答信息[9],問答信息以.xml 格式文件保存.由于本工具是針對Java 相關(guān)的API 推薦,因此只提取帶有Java 標記的帖子信息.隨后利用NLTK[10]對帖子信息進行傳統(tǒng)的文本預(yù)處理操作,包括標記和詞干分析.接著使用Word2Vec[11]對詞嵌入模型進行訓(xùn)練,并計算預(yù)處理后語料庫中每個單詞的IDF (逆文檔頻率),從而構(gòu)建一個IDF 逆文檔頻率表作為詞嵌入模型的權(quán)重項.利用訓(xùn)練得到Word2Vec 模型和IDF 逆文檔頻率表文檔,構(gòu)建語義相似度計算模型[12].

        1.2 特征提取

        特征提取模塊主要任務(wù)是根據(jù)構(gòu)建的語義相似度計算模型,進行相似度計算,并構(gòu)建特征向量,構(gòu)造完成的特征向量可作為訓(xùn)練模型或預(yù)測模型的輸入數(shù)據(jù).

        在接收到查詢語句、初始API 推薦列表之后,結(jié)合反饋庫數(shù)據(jù),為初始API 推薦列表中每個API 提取一個特征向量,特征向量包括兩個部分,相關(guān)信息特征和反饋特征.相關(guān)信息特征可從API 文檔中獲取,由API 路徑功能和API 描述功能組成,分別表示推薦的API與用戶查詢和相關(guān)文檔描述的相關(guān)性;反饋特征可從反饋庫中提取,代表與反饋庫中API的相關(guān)性.

        1.3 排序?qū)W習(xí)和主動學(xué)習(xí)模型訓(xùn)練

        本模塊用于訓(xùn)練排序?qū)W習(xí)和主動學(xué)習(xí)模型,為API 重排序模塊提供模型支撐.通過1.2 節(jié)中特征提取過程,對反饋庫中的每條反饋數(shù)據(jù)提取特征向量,以構(gòu)建訓(xùn)練集.

        通過將特征向量輸入到排序?qū)W習(xí)模型,最終得到訓(xùn)練良好的排序?qū)W習(xí)模型.

        訓(xùn)練主動學(xué)習(xí)模型之前,先利用來自Stack Overflow的問答信息構(gòu)造<查詢,API>問答數(shù)據(jù)對,其中查詢與問題相對應(yīng),API與接受的答案中的API 相對應(yīng).這些問答數(shù)據(jù)對可對主動學(xué)習(xí)模型選取的樣本提供標注,將其放入訓(xùn)練集中再次訓(xùn)練模型.通過迭代此過程,可以獲得訓(xùn)練好的主動學(xué)習(xí)模型.

        1.4 API 重排序推薦

        本模塊的目的是根據(jù)訓(xùn)練好的模型,得到用戶輸入查詢對應(yīng)的重排序API 推薦列表,供用戶選擇.對于用戶輸入查詢語句,首先通過1.2 節(jié)得到其對應(yīng)的API 特征向量,將其分別輸入到訓(xùn)練好的排序?qū)W習(xí)和主動學(xué)習(xí)模塊中,得到各個模塊的預(yù)測值,計算出API 推薦列表中每個API的分數(shù).列表中的API 排名位置根據(jù)分數(shù)降序排列,得到重排序API 推薦列表,供用戶進行選擇,使得用戶選擇的API 在列表中位于更加靠前的位置.API 綜合得分的計算公式如下:

        其中,S coreQ(i)表示第i個API 在初始API 列表中的排序?qū)W習(xí)預(yù)測值,ALrelevQ(i) 表示列表中第i個API的排序?qū)W習(xí)預(yù)測值.S coremax和S coremin分別為排序分數(shù)的最大值和最小值,用于進行歸一化處理.相關(guān)性得分的權(quán)重是一個動態(tài)值,它依賴于第i個API 在列表中所處的位置,即posi.

        1.5 用戶反饋

        用戶反饋模塊負責(zé)更新反饋庫.用戶從重排序API 推薦列表中,根據(jù)自身需求,選擇API,將查詢語句和用戶所選API 作為反饋數(shù)據(jù),存入反饋庫,為后續(xù)推薦提供反饋信息.

        2 工具實現(xiàn)

        本工具以插件的形式集成到VS Code IDE中,采用客戶端/服務(wù)器架構(gòu).服務(wù)器端對VS Code 獲取的用戶輸入數(shù)據(jù)進行處理,返回數(shù)據(jù)處理結(jié)果,并通過客戶端將結(jié)果展示給用戶.

        為方便用戶在編程過程中快速查詢所遇到的問題,本工具直接內(nèi)嵌在VS Code IDE中,不涉及另外的系統(tǒng)界面.用戶可以在源碼編程面板任意位置點擊右鍵,或者使用快捷鍵喚醒.

        根據(jù)用戶交互信息,本工具為用戶提供了個性化的API 推薦列表,實現(xiàn)了API 個性化推薦功能.系統(tǒng)架構(gòu)主要分為兩個模塊:用戶輸入查詢模塊和API 推薦反饋模塊.

        2.1 用戶輸入查詢模塊

        用戶輸入查詢模塊的整體流程如圖2所示,該模塊的目的是提供一個接口,以獲取用戶輸入的自然語言查詢語句,傳遞給后臺服務(wù)器進行API 推薦的后續(xù)處理工作.

        圖2 用戶輸入查詢流程

        具體來說,當(dāng)用戶在編程環(huán)境中,想要獲取API 推薦,可以通過圖2中的操作(a)、(b)或(c)打開文本輸入框(d)以進行自然語言查詢輸入.客戶端從文本輸入框中獲得查詢語句,傳給服務(wù)器端進行處理,再將得到的推薦結(jié)果返回給用戶,即API 推薦列表頁面(圖3).

        圖3 API 推薦列表頁面

        2.2 API 推薦反饋模塊

        服務(wù)器獲取自然語言查詢語句后,會返回相關(guān)的API,客戶端為用戶展示如圖3所示的API 推薦列表頁面.用戶可在該頁面上進行API 選擇,客戶端將查詢語句連同用戶選擇的API 視為反饋數(shù)據(jù)傳遞給服務(wù)器.服務(wù)器將其放入反饋庫,用以優(yōu)化模型.

        2.2.1 API 推薦

        服務(wù)器將與查詢語句最相關(guān)的前30 個API 返回給客戶端,客戶端以每頁10 個API的方式分頁展示,用戶可以通過圖3中操作(g)切換頁面,以瀏覽更多的API.本工具不僅為列表中每個API 提供API 方法名(e),還提供對應(yīng)的描述語句(f),為用戶選擇反饋提供參考依據(jù).

        2.2.2 用戶反饋

        用戶可以選中一個API(h),此時會彈出一個對話框,向用戶確認是否將該API 作為反饋信息存入反饋庫中.

        若用戶選擇“是”,則該API與本次輸入的自然語言查詢語句一起構(gòu)成反饋數(shù)據(jù),存入反饋庫,為下一次用戶查詢提供更加個性化的推薦;若用戶選擇“否”,則會返回至API 推薦列表界面.

        3 應(yīng)用場景

        本章通過示例來說明本工具如何提升API 推薦性能.在通常情況下,API 方法名和文檔描述信息有助于用戶了解API的用途.對于諸如:How to convert int to string的查詢語句,用戶在瀏覽API 方法名時可以快速找到正確的答案:java.lang.Integer.toString.但是,在許多情況下,僅通過API 方法名來判斷該API是否有用是很困難的.例如,給定查詢:Make a negative number positive,其對應(yīng)的答案:java.lang.Math.abs 在語義上與查詢語句沒有重疊,但借助文檔描述信息(即:返回參數(shù)的絕對值),可以很容易判斷該API是正確答案.

        當(dāng)用戶了解API的用法之后,可以選擇他認為合適的答案,放入反饋庫中保存,這些反饋信息對于后續(xù)的推薦有顯著幫助.例如,對于查詢語句:killing a running thread in java,在反饋庫中沒有相關(guān)查詢語句的情況下,根據(jù)API 方法名和描述信息,用戶能很快確定排名第7的API:java.lang.Thread.interrupt是正確答案,并對其進行選擇,放入反饋庫中存儲.當(dāng)用戶之后再次查詢類似的語句,例如:how to stop a thread,通過檢索反饋庫數(shù)據(jù),本工具能將原本排在第8 位的:java.lang.Thread.interrupt 提升到第1 位.使得用戶瀏覽API 推薦結(jié)果時,能迅速找到正確答案,極大提升了API 推薦效率.

        4 實驗評估

        為了驗證方法的有效性,本文使用目前最先進的API 推薦方法之一的BIKER[3]作為對比實驗.BIKER和現(xiàn)有的大多數(shù)API 推薦方法一樣,僅利用了語義相似度技術(shù),根據(jù)文本相似度分數(shù)向用戶推薦API.而本文提出了一種基于用戶反饋的API 推薦工具,將用戶反饋融入到API 推薦過程中,并且采用了排序?qū)W習(xí)和主動學(xué)習(xí)技術(shù),通過語義相似度構(gòu)建特征向量,訓(xùn)練模型進行預(yù)測,根據(jù)模型預(yù)測綜合得分,為用戶提供個性化的API 推薦.

        為了確保與對比實驗進行公平的比較,本文實驗的數(shù)據(jù)集復(fù)用BIKER 發(fā)布的數(shù)據(jù)集,即來自Stack Overflow 上與Java API 相關(guān)的413 個問答對.為了評估實驗性能,實驗設(shè)置遵循標準的10 折交叉驗證,即將數(shù)據(jù)集隨機分割為9:1,每次使用1 折作為測試數(shù)據(jù),其余9 折用于模型訓(xùn)練.重復(fù)實驗5 次,將結(jié)果記錄下來,并計算平均值作為最終結(jié)果.為了避免偏差,反饋庫與測試集中不存在相同的查詢語句.讀者可以查看之前的工作[7],以獲取有關(guān)實驗結(jié)果的更多詳細信息.

        4.1 增加反饋數(shù)據(jù)量

        通過從訓(xùn)練集中隨機選擇問答對,來構(gòu)建反饋庫.反饋庫的大小從訓(xùn)練集的10%到100%不等,且增幅為10%.實驗結(jié)果如表1所示,結(jié)果表明,在可接受的開銷條件下,與BIKER 相比,隨著反饋數(shù)據(jù)的增加,本工具的推薦性能穩(wěn)步提升,Hit@1 準確率最高提升了18.2%,MAP和MRR 提升了12%左右,Hit@5 突破了80%.實驗結(jié)果驗證了反饋信息有助于提升API 推薦性能.

        表1 增加反饋數(shù)據(jù)量對工具的影響

        4.2 有效性分析

        為了評估實驗結(jié)果的意義,本節(jié)對得到的結(jié)果進行了統(tǒng)計分析.根據(jù)Mann-Whitney U 檢驗[13],可從統(tǒng)計意義上判定實驗是否有顯著的改善.此外,通過Vargha和Delaneys的測量(一種標準化的非參數(shù)效應(yīng)量測量) 來評估分析效應(yīng)量的改進程度.一般來說,對于A和B兩種算法,如果為0.5,則認為這兩種算法是等價的.如果大于0.5,則算法A 優(yōu)于算法B.通過以下統(tǒng)計量計算:

        其中,R1是第一個數(shù)據(jù)組的秩和,m和n分別是第一個和第二個數(shù)據(jù)樣本中的觀察次數(shù).在本文實驗中,運行了相同次數(shù)的兩種算法,即m和n的值都設(shè)置為5.

        結(jié)果表明,大多數(shù)p值在0.003 到0.005 范圍內(nèi),效應(yīng)量為1,表明在96%的置信度上,該提升具有統(tǒng)計學(xué)意義.在50 個案例中有2 個案例(反饋數(shù)據(jù)量為10%時的Hit@3和Hit@5),其中p值大于0.005(即,應(yīng)否定原假設(shè)).

        4.3 模擬用戶反饋場景

        本節(jié)設(shè)計了一個偽用戶來模擬真實場景下的用戶推薦及反饋過程.實驗隨機選擇50 個查詢,將其作為偽用戶在編程環(huán)境中輸入的查詢語句,依次進行自然語言查詢.在每次查詢期間,本工具都會根據(jù)反饋庫信息推薦API,而偽用戶則會從推薦結(jié)果中選擇API.查詢語句和選擇的API 用于擴展反饋庫.實驗結(jié)果如表2所示,通過記錄每次用戶查詢的評價指標,可計算出評價指標的平均值(表2Avg.Tool),通過計算本文方法與對比方法的絕對提升值和相對提升值(表2Abs.Imp.和Rel.Imp.),可以更清晰的看出本工作相對于對比實驗的優(yōu)越性.

        表2 模擬用戶反饋場景

        5 結(jié)論與展望

        本文提出了一種新的工具來提升API 推薦方法的性能,并將其以插件的形式集成到VS Code IDE中.在用戶編程環(huán)境中,通過獲取用戶輸入的自然語言查詢語句,推薦相關(guān)API.受傳統(tǒng)推薦系統(tǒng)中的用戶反饋信息的啟發(fā),本工作通過不斷收集用戶對于API 推薦列表的反饋,提高推薦準確率.實驗表明,本工具的推薦性能優(yōu)于對比實驗,隨著反饋信息數(shù)量的增加,API 推薦的有效性也顯著提升.未來的工作計劃是擴展工具以支持更多的編程語言.此外,本文中提出的方法實際上具有更廣泛的適用性,因此計劃將其擴展到軟件工程中的其他推薦場景.

        猜你喜歡
        列表語句文檔
        巧用列表來推理
        有人一聲不吭向你扔了個文檔
        學(xué)習(xí)運用列表法
        重點:語句銜接
        擴列吧
        精彩語句
        基于RI碼計算的Word復(fù)制文檔鑒別
        Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
        不含3-圈的1-平面圖的列表邊染色與列表全染色
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        国产高清一级毛片在线看| 4399理论片午午伦夜理片| 亚洲人成网7777777国产| 成年女人在线观看毛片| 国产亚洲精品免费专线视频| 国产欧美日韩一区二区加勒比| 国产av人人夜夜澡人人爽麻豆| 无夜精品久久久久久| 国产精品二区三区在线观看| 伊人中文字幕亚洲精品乱码| 国产精品ⅴ无码大片在线看| 中文字幕无码人妻丝袜| 白白白色视频在线观看播放| 精品国产一区二区三区av | 少妇高潮潮喷到猛进猛出小说| 毛片无码高潮喷白浆视频| 亚洲国产成人久久精品美女av| 深夜放纵内射少妇| 亚洲色大网站www永久网站| 中文字幕一区二区三区精彩视频| 女的把腿张开男的猛戳出浆| 精品久久免费国产乱色也| 欧洲乱码伦视频免费| 久久国产精久久精产国| 亚洲人成无码网站十八禁| 一区二区在线观看视频高清| www射我里面在线观看| 中国精学生妹品射精久久| 亚洲国产一区二区三区最新| 一本大道综合久久丝袜精品| 国产一区亚洲二区三区| 国产在视频线精品视频| 老男人久久青草AV高清| 一级黄色一区二区三区视频| 国产18禁黄网站免费观看| 亚洲国产长腿丝袜av天堂| 制服无码在线第一页| 日本刺激视频一区二区| 欧美私人情侣网站| 国产午夜成人久久无码一区二区 | 亚洲av偷拍一区二区三区|