[發明專利]一種基于LSTM的非API函數實參推薦方法有效
| 申請號: | 201711202702.8 | 申請日: | 2017-11-27 |
| 公開(公告)號: | CN107832047B | 公開(公告)日: | 2018-11-27 |
| 發明(設計)人: | 李光杰;劉文美;劉輝 | 申請(專利權)人: | 北京理工大學 |
| 主分類號: | G06F8/33 | 分類號: | G06F8/33;G06N3/04;G06N3/08 |
| 代理公司: | 北京理工正陽知識產權代理事務所(普通合伙) 11639 | 代理人: | 唐華 |
| 地址: | 100081 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 lstm api 函數 實參 推薦 方法 | ||
1.一種基于LSTM的非API函數實參推薦方法,其特征在于:通過以下步驟實現:
步驟1:根據開源軟件的非API函數調用信息,提取函數調用的實參和上下文信息并存儲到文件或數據庫中;
其中,開源軟件的非API函數為開源代碼中所有不能找到函數定義的函數;實參包括函數調用中參數列表中的變量或函數名稱;上下文信息包括:形參、函數名稱和候選參數,候選參數又是指在函數調用的地方所有可以作為實參且類型兼容的變量和函數調用;
其中,實參中的變量、函數名稱以及上下文信息中的形參、函數名稱和候選參數統稱為標識符;具體利用CDT工具提取開源軟件的非API函數調用的實參Arg及上下文信息Context=<parName,mName,cd1,……cdn>;
步驟2:將步驟1提取出來的實參和上下文信息轉換為向量表示的訓練數據;
其中,實參轉換為的向量表示的訓練數據稱為實參向量,上下文信息轉換為向量表示的訓練數據稱為上下文向量,具體為:
步驟2.1將每個實參argName分割為一系列的單詞<t1,t2,……,tk>,每個單詞ti映射為一個向量,再將argName映射為向量argVec;
步驟2.2將每條上下文信息中形參parName分割為一系列的單詞<p1,p2,……,pk>,每個單詞pi映射為一個向量,再將parName映射為向量parVec;
步驟2.3將每條上下文信息中函數名稱mName分割為一系列的單詞<m1,m2,……,mk>,每個單詞mi映射為一個向量,再將mName映射為向量mVec;
步驟2.4將每條上下文信息中每個候選參數分割為一系列的單詞<c1,c2,……,ck>,每個單詞ci映射為一個向量,再將候選參數映射為向量cdVec;
其中,步驟2.2至步驟2.4的向量組合成上下文向量CxtVec=<parVec,mVec,cdVec1,……cdVecn>;
其中,所述方法要求考慮標識符中單詞的順序和語義關系,規定使用定長的段落向量表示;其中,段落向量的長度根據實參和上下文信息確定;
步驟3:初始化神經網絡,將步驟2轉換的向量表示的訓練數據輸入神經網絡訓練,得到網絡模型model,具體為:
步驟3.1初始化一個包括輸入層InputLayer、隱含層HiddenLayer和輸出層OutputLayer的LSTM神經網絡;
步驟3.2將步驟2中得到的上下文向量CxtVec設定為步驟3.1構建網絡的輸入;
步驟3.3將步驟2中得到的實參向量argVec設定為步驟3.2網絡輸入的輸出基準;
步驟3.4開始網絡訓練,訓練后得到一個網絡模型model;
步驟4:依據步驟1思路提取新的非API函數調用的上下文信息TContext;
具體為:當開發人員輸入新的非API函數的調用名稱時,利用CDT工具自動提取函數調用的上下文信息;
步驟5:將步驟4得到的上下文信息TContext轉換為向量表示的待推薦數據TCxtVec;
步驟6:將步驟5得到的待推薦數據TCxtVec輸入步驟3中得到的網絡模型model中,網絡模型將自動輸出一個向量Rec作為待推薦數據TCxtVec的推薦實參。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京理工大學,未經北京理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711202702.8/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:數據生成方法及裝置
- 下一篇:可編輯節拍的實現方法及裝置





