[發明專利]一種基于程序切片的深度神經網絡類型推導方法在審
| 申請號: | 202210052087.1 | 申請日: | 2022-01-17 |
| 公開(公告)號: | CN114580641A | 公開(公告)日: | 2022-06-03 |
| 發明(設計)人: | 馮洋;燕言言;范弘鋮;李玉瑩;徐寶文 | 申請(專利權)人: | 南京大學 |
| 主分類號: | G06N5/04 | 分類號: | G06N5/04;G06N3/04;G06N3/08 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 210023 江蘇省南京市棲霞*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 程序 切片 深度 神經網絡 類型 推導 方法 | ||
本發明涉及一種基于程序切片的深度神經網絡類型推導方法,首先獲取大量包含類型標注信息的動態語言程序項目,提取項目中的類型信息,構建類型信息數據集;然后用編碼技術將提取的類型信息數據集嵌入成向量形式;最后用嵌入向量訓練深度神經網絡模型并使用訓練好的模型預測程序變量類型或函數簽名。本發明目的在于解決目前存在的動態語言程序類型推導效率低、準確率低的問題,提高動態語言程序在軟件工程的生產實踐中的可讀性、可理解性和可維護性,最終實現提高軟件質量保障的目標。
技術領域
本發明屬于軟件工程中程序分析與類型推導領域,尤其適用于動態類型語言程序的類型推導領域,其目的在于自動化提高類型推導的精度,是一種提高軟件可讀性、可理解性、可維護性的軟件質量保障方法。
背景技術
在動態語言程序中,變量類型、對象屬性、類結構等均可以在程序運行時改變,這使得動態語言具有較高的靈活性。然而,動態語言靈活的語法特性使得程序缺少嚴格的靜態檢查和約束,使得開發者難以及時發現程序中的缺陷,增加了程序調試與維護的成本。如果能夠實現動態語言自動化高精度類型推導,就可以獲知豐富的類型信息。類型信息不僅可以提高代碼的可讀性、可理解性和可維護性,而且可以實現動態語言程序的高準確率靜態檢查。
以Python為例,目前已經有許多Python類型推導方法,根據方法所使用技術的差異,大致分為以下兩大類:第一類是基于傳統方法的類型推導,該類方法只關注源程序,從程序上下文如數據流信息獲取相關信息推導標識符類型;第二類是基于機器學習的類型推導,該類方法關注程序內部規則的學習,借助機器學習技術預測標識符類型,該類方法主要關注類型數據集構建、模型訓練。理論及實證研究表明,上述理論及技術都具有較好的類型推導效果,為開發人員及維護人員提供了一定的幫助。然而,對于動態語言,第一類方法需要將類型標注添加到代碼庫(標準庫和第三方庫)中,基于已有的類型代碼庫,推導程序中標識符類型。當項目規模較大時,人工標注代碼庫非常耗時。因此,基于傳統方法的類型推導技術無法適用于實際中的項目;第二類方法,無需依賴包含類型標注信息的代碼庫,訓練好的類型推導模型適用于任意規模的項目,輸出項目中標識符預測的類型向量,省略人工標注工作。但是目前已有的方法大部分是對函數進行類型推導,變量類型推導精度不高;而且現有的方法都沒有結合程序切片技術,沒有充分利用變量或函數相關的上下文信息,因此,類型預測的準確率較低。
綜上所述,本發明提出一種基于程序切片的深度神經網絡類型推導方法,該方法可以自動化地對動態語言程序進行類型推導。該方法有以下三方面創新:首先該方法結合了程序切片技術,充分利用了程序中標識符相關信息,從而有效提升類型推導的準確率;其次該方法創新了數據嵌入的過程,先將數據集中文本信息預處理成子字符串的形式,然后對子字符串進行嵌入,有效避免了嵌入過程中OOV(Out Of Vocabulary輸入數據不在詞匯表)的問題;最后該方法還結合了深度學習技術,不僅可以推導程序中的變量的類型,還可以推導函數簽名。因此,該方法可以顯著提高類型推導的準確率和推導過程的效率,減少開發人員和維護人員理解和維護項目代碼所花費的時間,有效地提高軟件研發和軟件維護的效率。
發明內容
本發明通過提供一種基于程序切片的深度神經網絡類型推導方法,來有效解決目前存在的動態語言類型推導效率低、準確率低的問題,提高動態語言程序在軟件工程的生產實踐中的可讀性、可理解性和可維護性,最終實現提高軟件質量保障的目標。
為達成上述目標,本發明提出一種基于程序切片的深度神經網絡類型推導方法。該方法首先需要獲取大量包含類型標注信息的項目,提取項目中的類型信息,構建類型信息數據集;其次,該方法用編碼技術將提取的類型信息數據集嵌入成向量形式;然后,基于嵌入生成的向量,訓練深度神經網絡模型;最后,使用訓練好的模型預測程序變量類型或函數簽名。具體而言,該方法包括下列步驟。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京大學,未經南京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210052087.1/2.html,轉載請聲明來源鉆瓜專利網。





