[發明專利]一種基于網絡知識匯聚和迭代式搜索的程序自動構造方法有效
| 申請號: | 202011180161.5 | 申請日: | 2020-10-29 |
| 公開(公告)號: | CN112162746B | 公開(公告)日: | 2022-07-05 |
| 發明(設計)人: | 董威;劉加芯;章雅婷;王黛艷;陳立前;尹良澤;王戟 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F8/35 | 分類號: | G06F8/35;G06F8/41;G06F16/953;G06F16/36;G06K9/62 |
| 代理公司: | 湖南兆弘專利事務所(普通合伙) 43008 | 代理人: | 劉暢舟 |
| 地址: | 410073 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 網絡 知識 匯聚 迭代式 搜索 程序 自動 構造 方法 | ||
1.一種基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,包括以下步驟:
S1)在互聯網上進行檢索:從目標網絡資源中根據查詢輸入檢索得到包含API的代碼片段;
S2)解析和提取API:解析并提取代碼片段中的API得到具有指定格式的API列表,將API列表匹配用戶指定包得到API組件列表;
S3)構造API排序器:計算API組件列表中每個API的IDF值和DF值,針對API組件列表中用于構造函數的API,按照DF值排序生成構造方法排序器;針對API組件列表中返回類型與用戶提供的函數簽名中定義的返回類型一致的API,按照DF值排序生成return排序器;針對API組件列表中所有API,通過IDF值以及包含預先訓練得到的單詞向量和API向量的向量字典生成核心API排序器;
S4)構造迭代空間并合成程序:分別從構造方法排序器、return排序器和核心API排序器中選取API構建程序搜索空間,根據程序搜索空間中的API進行程序合成,若在當前程序搜索空間中找到了通過測試用例的候選程序,結束并退出,否則繼續從構造方法排序器、return排序器和核心API排序器中選取API添加到程序搜索空間并根據程序搜索空間中的API進行程序合成,直到生成了通過測試用例的候選程序。
2.根據權利要求1所述的基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,步驟S2)的具體步驟包括:
S21)將包含API的代碼片段構建為抽象語法樹;
S22)對抽象語法樹上的調用信息進行解析并提取API調用得到具有指定格式的API列表;
S23)將API列表與用戶提供的指定包進行匹配,丟棄不屬于用戶指定包的API,將剩余API與用戶指定包中方法進行匹配得到對應的完全限定名,將具有完整的限定名的API組成API組件列表用于后續的程序合成過程。
3.根據權利要求1所述的基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,步驟S3)中還包括向量字典的發布步驟,具體包括:使用CBOW模型對預設的API序列以及自然語言描述的單詞集合進行訓練,將生成的單詞向量和API向量發布為向量字典。
4.根據權利要求1所述的基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,步驟S3)中每個API表示一個文檔,DF值為每個API的出現次數,IDF值的函數表達式如下:
上式中,DF為API的DF值。
5.根據權利要求1所述的基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,步驟S3)中通過IDF值以及包含預先訓練得到的單詞向量和API向量的向量字典生成核心API排序器的具體步驟包括:
S31)在API組件列表中選取一個API作為當前API,在向量字典中查找當前API對應的API向量;
S32)對查詢輸入進行切分、去停用詞預處理得到一系列單詞,而后在向量字典中查找每個單詞對應的單詞向量,根據當前API對應的API向量以及當前API的IDF值計算得到API與查詢輸入之間的相似性,函數表達式如下:
上式中,W為查詢輸入中的單詞集合,A為當前API,w為查詢輸入對應的單詞向量,a為當前API對應的API向量,simmax為查詢輸入中的單詞集合和當前API之間的最大余弦相似度,idf(w)為查詢輸入對應的單詞向量的逆文檔頻率,idf(a)為當前API對應的API向量的逆文檔頻率;
S33)返回步驟S31)直到得到API組件列表中每個API與查詢輸入之間的相似性,根據每個API與輸入之間的相似性對所有API排序得到核心API排序器。
6.根據權利要求1所述的基于網絡知識匯聚和迭代式搜索的程序自動構造方法,其特征在于,步驟S4)具體步驟包括:
S41)選取構造方法排序器中前五個API,return排序器中第一個API,核心API排序器中第一個API以及核心API排序器中第一個API在API列表中對應的上下文API,構建搜索空間,將被選取的API添加到搜索空間中;
S42)根據搜索空間中的API進行程序合成得到候選程序,判斷候選程序是否通過測試用例,是則結束并輸出候選程序,否則進入步驟S43);
S43)判斷構造方法排序器、return排序器和核心API排序器中的API是否選取完畢,是則結束并退出,否則選取構造方法排序器中下一個API,return排序器中下一個API,核心API排序器中下一個API以及核心API排序器中下一個API在API列表中對應的上下文API,將被選取的API添加到搜索空間中并返回步驟S42)。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011180161.5/1.html,轉載請聲明來源鉆瓜專利網。





