[發明專利]一種基于API使用概率模型的程序合成方法有效
| 申請號: | 202011180092.8 | 申請日: | 2020-10-29 |
| 公開(公告)號: | CN112162745B | 公開(公告)日: | 2022-06-21 |
| 發明(設計)人: | 董威;劉斌斌;尹良澤;陳立前;陳振邦;王戟 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F8/35 | 分類號: | G06F8/35;G06F40/284;G06F40/216;G06F11/36;G06F16/901;G06K9/62;G06N5/02;G06N7/00 |
| 代理公司: | 湖南兆弘專利事務所(普通合伙) 43008 | 代理人: | 劉暢舟 |
| 地址: | 410073 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 api 使用 概率 模型 程序 合成 方法 | ||
1.一種基于API使用概率模型的程序合成方法,其特征在于,包括以下步驟:
S1)數據獲取和處理:從目標網絡資源中獲取API對應文本集合W1;
S2)概率可達圖的構造:計算任務描述與指定的范圍庫中每個API在網絡資源中對應文本集合W1的相似度,并對各API對應的相似度加權求和得到各API與任務相關度的概率信息,API與任務相關度的概率信息表征API的使用概率,根據指定的范圍庫構造Petri網模型,然后根據Petri網模型構造得到可達圖模型,根據各API與任務相關度的概率信息為可達圖模型中的每條邊添加概率得到概率的可達圖模型;
S3)基于API使用概率的程序合成:針對概率的可達圖模型上的每個節點,按照從大到小的順序從每個節點對應的概率最大的邊開始在概率的可達圖模型上搜索一條從初始狀態到終結狀態的可達路徑,根據被搜索的可達路徑對應的API調用序列構造得到程序框架,若所有可達路徑已搜索完畢,結束并退出;
S4)候選程序正確性驗證:按照不同填充方式利用變量和參數對程序框架進行填充后得到候選程序,利用不同測試用例對候選程序的正確性進行驗證,直到通過所有測試用例后將候選程序作為結果返回,若未通過測試用例且已得到所有填充方式對應的候選程序,丟棄被搜索的可達路徑并返回步驟S3)。
2.根據權利要求1所述的基于API使用概率模型的程序合成方法,其特征在于,步驟S1)具體包括以下步驟:
S11)從互聯網抓取HTML格式的API文檔,提取每個API的簽名和自然語言描述;
S12)從目標網站獲取代碼塊中包含的API信息并構造得到API與文本對應的數據對;
S13)對API的簽名和自然語言描述以及API與文本對應的數據對中的自然語言文本進行數據精化,構建API對應文本集合W1,將數據精化后的數據加入API對應文本集合W1中。
3.根據權利要求1所述的基于API使用概率模型的程序合成方法,其特征在于,步驟S2)中計算任務描述與指定的范圍庫中每個API網絡資源中對應文本集合W1的相似度具體包括以下步驟:
S21)選取指定的范圍庫中的一個API作為當前API,針對當前API,將編程任務中的自然語言描述進行分詞得到任務描述集合W2;
S22)利用Word2Vector模型將API對應文本集合W1和任務描述集合W2中的每個單詞轉化為詞向量表示;
S23)計算API對應文本集合W1和任務描述集合W2中文本的相似度sim(W1,W2),函數表達式如下:
上式中,ω為API對應文本集合W1中單詞轉化的詞向量,simmax(ω,W2)為詞向量ω和任務描述集合W2中的每個單詞詞向量的余弦相似度的最大值,idf(ω)為詞向量ω的逆文檔頻率,ω′為任務描述集合W2中單詞轉化的詞向量,simmax(ω′,W1)為詞向量ω′和API對應文本集合W1中的每個單詞詞向量的余弦相似度的最大值,idf(ω′)為詞向量ω′的逆文檔頻率;
S24)返回步驟S21)直到指定的范圍庫中的所有API選取完畢。
4.根據權利要求1所述的基于API使用概率模型的程序合成方法,其特征在于,步驟S3)包括以下步驟:
S31)判斷概率的可達圖模型中當前節點是否為終結狀態,是則跳轉步驟S33),否則按照從大到小的順序從當前節點對應的概率最大的邊開始選取一條邊到達下一節點;
S32)將下一節點作為當前節點,返回步驟31)直到得到當前可達路徑;
S33)判斷當前可達路徑是否為被丟棄的可達路徑,否則進入步驟S34),是則判斷是否還有未搜索的可達路徑,若還有未搜索的可達路徑,將前一節點作為當前節點,返回步驟S31),若所有可達路徑已搜索完畢,結束并退出;
S34)根據當前可達路徑對應的API調用序列構造得到程序框架,跳轉步驟S4)。
5.根據權利要求1所述的基于API使用概率模型的程序合成方法,其特征在于,步驟S4)包括以下步驟:
S41)選取一種填充方式作為當前填充方式,按照當前填充方式利用變量和參數對程序框架進行填充后得到候選程序;
S42)利用不同測試用例對候選程序的正確性進行驗證,若通過所有測試用例,將候選程序作為結果返回,若存在未通過的測試用例,進入步驟S43);
S43)判斷是否還有未選取的填充方式,是則返回步驟S41),否則丟棄搜索的可達路徑并跳轉步驟S3)。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011180092.8/1.html,轉載請聲明來源鉆瓜專利網。





