[發明專利]代碼搜索方法有效
| 申請號: | 202210615089.7 | 申請日: | 2022-05-31 |
| 公開(公告)號: | CN115017294B | 公開(公告)日: | 2023-05-09 |
| 發明(設計)人: | 蔡波;楊順 | 申請(專利權)人: | 武漢大學 |
| 主分類號: | G06F16/335 | 分類號: | G06F16/335;G06F16/338;G06F40/194;G06N3/0464;G06N3/08 |
| 代理公司: | 成都東恒知盛知識產權代理事務所(特殊普通合伙) 51304 | 代理人: | 何健雄 |
| 地址: | 430072 湖*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 搜索 方法 | ||
本發明涉及代碼搜索技術領域,涉及一種代碼搜索方法,其包括以下步驟:一、輸入帶描述的代碼;二、分別對代碼和描述進行單獨的嵌入;三、對代碼特征跟描述特征做交互計算得到一個細粒度相似矩陣,用構建好的CNN網絡對矩陣進行學習;四、分別為代碼和描述構建全連接圖,通過一定的規則更新節點向量;五、對代碼和描述分別用注意力機制做加權求和操作;六、預測每個候選代碼片段的分數,使用分數對所有候選代碼片段進行重新排序。本發明能實現更加復雜的聯合交互匹配工作。
技術領域
本發明涉及代碼搜索技術領域,具體地說,涉及一種代碼搜索方法。
背景技術
在現代社會中,軟件系統是不可或缺的,而且已經無處不在了。在開發一個新的軟件項目時,開發人員將重用大量設計良好和經過充分測試的代碼片段。開源社區,如GitHub和StackOverflow,在公共場合提供了數百萬個源代碼。代碼搜索任務的關鍵挑戰在于學習代碼片段和查詢文本的對應關系,從而能夠準確地反映代碼-查詢對的相似性。為了支持代碼搜索任務,早期的代碼搜索模型利用信息檢索(IR)技術返回與搜索查詢的意圖相匹配的代碼片段列表。然兒,這些方法通常將源代碼視為文本文檔,并利用信息檢索模型來檢索匹配給定查詢的相關代碼片段。這主要依賴于源代碼和自然語言查詢之間的文本相似性。它們缺乏對查詢和源代碼語義的深入理解。
隨著今天大量開源代碼的公開,代碼搜索對軟件開發變得越來越重要。早期的代碼搜索模型主要依賴于源代碼和自然語言查詢之間的文本相似性。它們缺乏對查詢和源代碼的語義的深入理解。開發人員開始應用深度學習技術對搜索模型進行代碼編碼。然而這些模型要么是對代碼跟查詢語句分別進行訓練來獲得全局對應關系,忽略了他們之間的交互。要么只是粗略的交互,沒有系統的探討代碼特征與查詢特征是如何相互影響的。
發明內容
本發明的內容是提供一種代碼搜索方法,其能夠克服現有技術的某種或某些缺陷。
根據本發明的一種代碼搜索方法,其包括以下步驟:
一、輸入帶描述的代碼;
二、分別對代碼和描述進行單獨的嵌入;
三、對代碼特征跟描述特征做交互計算得到一個細粒度相似矩陣,用構建好的CNN網絡對矩陣進行學習;
四、分別為代碼和描述構建全連接圖,通過一定的規則更新節點向量;
五、對代碼和描述分別用注意力機制做加權求和操作;
六、預測每個候選代碼片段的分數,使用分數對所有候選代碼片段進行重新排序。
作為優選,代碼部分用code?tokens、methodname、API?sequence作為特征進行嵌入,其中code?tokens表示為T=t_{1},...,t_{N_{t}},methon?name表示為M=m_{1},...,m_{N_{m}},API?sequence表示為A=a_{1},...,a_{N_{a}};
通過一個多層感知器MLP嵌入,以獲得初始的特征信息:
其中ti∈Rd,mi∈Rd,ai∈Rd分別表示令牌ti,mi,ai的嵌入式表示,Wt,Wm,Wa為MLP中可訓練的參數矩陣;
在將三個代碼特征嵌入到三個矩陣中之后,最終將它們合并成一個矩陣V∈Rk×d作為代碼的特征矩陣:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢大學,未經武漢大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210615089.7/2.html,轉載請聲明來源鉆瓜專利網。





