[發(fā)明專利]一種基于深度學(xué)習(xí)的交互式API代碼片段推薦方法在審
| 申請?zhí)枺?/td> | 202010727140.4 | 申請日: | 2020-07-26 |
| 公開(公告)號: | CN111966818A | 公開(公告)日: | 2020-11-20 |
| 發(fā)明(設(shè)計)人: | 彭鑫;陳馳;趙文耘 | 申請(專利權(quán))人: | 復(fù)旦大學(xué) |
| 主分類號: | G06F16/335 | 分類號: | G06F16/335;G06F16/35;G06F16/34;G06N3/08;G06F8/33 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 深度 學(xué)習(xí) 交互式 api 代碼 片段 推薦 方法 | ||
本發(fā)明屬于軟件工程技術(shù)領(lǐng)域,具體為一種基于深度學(xué)習(xí)的交互式API代碼片段推薦方法。本發(fā)明通過對大量包含目標(biāo)API的源代碼進(jìn)行解析來構(gòu)造大量的訓(xùn)練樣本;使用深度學(xué)習(xí)模型中的Encoder?Decoder模型框架實(shí)例化深度學(xué)習(xí)網(wǎng)絡(luò),包括Seq2Seq模型、Transformer模型或Graph2Seq模型,并用訓(xùn)練樣本訓(xùn)練深度學(xué)習(xí)模型,以用于預(yù)測推薦;根據(jù)深度學(xué)習(xí)模型的推薦結(jié)果,通過后處理方式來優(yōu)化推薦結(jié)果;所述后處理方式包括:啟發(fā)式束搜索、聚類以及交互式意圖選擇。本發(fā)明為軟件開發(fā)人員提供基于代碼上下文的智能化多行API代碼推薦,在開發(fā)人員已經(jīng)編寫好的代碼的基礎(chǔ)上為其推薦多行API代碼,從而輔助開發(fā)人員完成當(dāng)前代碼的開發(fā)。
技術(shù)領(lǐng)域
本發(fā)明屬于軟件工程技術(shù)領(lǐng)域,具體涉及軟件開發(fā)中的交互式API代碼片段推薦方法。
背景技術(shù)
在軟件開發(fā)任務(wù)中,軟件開發(fā)人員依賴API(Application ProgrammingInterface,即應(yīng)用編程接口)代碼(即API代碼片段)(如JDK、Android)來實(shí)現(xiàn)所需要的軟件特性。然而,API數(shù)量龐大并且每個API中又包含數(shù)量眾多的方法調(diào)用和成員變量,并且API代碼存在一定的使用模式和規(guī)律(如API的使用組合、調(diào)用順序以及相配合的控制結(jié)構(gòu)(如條件判斷、循環(huán)等)等),這使得開發(fā)人員難以熟知所有的API代碼使用模式。因此,如何在當(dāng)前的代碼上下文中使用合適的API代碼片段來完成當(dāng)前正在開發(fā)的功能特性經(jīng)常成為開發(fā)人員遇到的難題。
針對這一問題的一個有效解決方案是,在軟件集成開發(fā)環(huán)境等開發(fā)工具中提供智能化多行API代碼推薦能力。這種智能化API推薦應(yīng)當(dāng)通過對開發(fā)人員正在編寫的代碼上下文的分析,解析當(dāng)前代碼上下文的語義并推測開發(fā)人員的意圖,進(jìn)而推薦API代碼片段。
當(dāng)前存在兩種捕獲API使用模式和規(guī)律并進(jìn)而進(jìn)行多行API代碼推薦的方法,一種是基于挖掘算法挖掘顯式的API代碼使用模式,另一種是基于機(jī)器學(xué)習(xí)模型(或深度學(xué)習(xí)模型)學(xué)習(xí)得到隱式的API代碼使用模式。本發(fā)明采用基于深度學(xué)習(xí)模型的方法學(xué)習(xí)得到隱式的API代碼使用模式,并對通過對深度學(xué)習(xí)模型預(yù)測推薦結(jié)果的后處理來優(yōu)化推薦結(jié)果,從而實(shí)現(xiàn)更有效,更友好的多行API代碼推薦。
發(fā)明內(nèi)容
本發(fā)明的目的是為軟件開發(fā)人員提供基于代碼上下文的智能化多行交互式API代碼片段推薦方法,以便在開發(fā)人員已經(jīng)編寫好的代碼的基礎(chǔ)上,為其推薦能夠完成當(dāng)前開發(fā)任務(wù)并適合于當(dāng)前代碼上下文的API代碼片段(A包括API方法調(diào)用、成員變量訪問、控制語句(if、while等)以及變量和對象實(shí)例聲明等)。
本發(fā)明提供的交互式API代碼片段推薦方法,是基于深度學(xué)習(xí)的,具體是通過對大量包含目標(biāo)API(如JDK、Android中的API)的源代碼(開源代碼或企業(yè)代碼)進(jìn)行解析來構(gòu)造大量的訓(xùn)練樣本,在此基礎(chǔ)上使用深度學(xué)習(xí)模型中的Encoder-Decoder模型(如Seq2Seq模型,Transformer模型,Graph2Seq模型等(見參考文獻(xiàn)1-4)),并用訓(xùn)練樣本訓(xùn)練深度學(xué)習(xí)模型,以用于預(yù)測推薦;根據(jù)深度學(xué)習(xí)模型的推薦結(jié)果,通過后處理方式來優(yōu)化推薦結(jié)果。所述的后處理方式,包括:啟發(fā)式束搜索,聚類,以及交互式意圖選擇;其流程如圖1所示。
本發(fā)明提供的基于深度學(xué)習(xí)的交互式API代碼片段推薦方法,具體步驟為:
(一)構(gòu)建訓(xùn)練樣本;
包括以下子步驟:
(1)以方法為最小單位,對代碼庫中每一個源代碼文件中的每一個方法進(jìn)行解析并進(jìn)行抽象(抽象即忽略API中的參數(shù)名,變量名和對象名,只保留API的完整簽名)得到相應(yīng)的代碼表示,如Seq2Seq模型及Transformer模型接收代碼的序列化表示,Graph2Seq模型接收代碼的圖結(jié)構(gòu)表示;
(2)對于每一個代碼表示,挖取出部分API代碼,將剩余的API代碼與挖取出的API代碼構(gòu)成一個訓(xùn)練樣本。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于復(fù)旦大學(xué),未經(jīng)復(fù)旦大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010727140.4/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 根據(jù)用戶學(xué)習(xí)效果動態(tài)變化下載學(xué)習(xí)數(shù)據(jù)的系統(tǒng)及方法
- 用于智能個人化學(xué)習(xí)服務(wù)的方法
- 漸進(jìn)式學(xué)習(xí)管理方法及漸進(jìn)式學(xué)習(xí)系統(tǒng)
- 輔助學(xué)習(xí)的方法及裝置
- 基于人工智能的課程推薦方法、裝置、設(shè)備及存儲介質(zhì)
- 基于強(qiáng)化學(xué)習(xí)的自適應(yīng)移動學(xué)習(xí)路徑生成方法
- 一種線上視頻學(xué)習(xí)系統(tǒng)
- 一種基于校園大數(shù)據(jù)的自適應(yīng)學(xué)習(xí)方法、裝置及設(shè)備
- 一種學(xué)習(xí)方案推薦方法、裝置、設(shè)備和存儲介質(zhì)
- 游戲?qū)W習(xí)效果評測方法及系統(tǒng)





