[發明專利]一種基于深度學習進行JavaScript類型推斷的方法在審
| 申請號: | 201911020317.0 | 申請日: | 2019-10-25 |
| 公開(公告)號: | CN110780878A | 公開(公告)日: | 2020-02-11 |
| 發明(設計)人: | 孫建華;劉利娜;陳浩 | 申請(專利權)人: | 湖南大學 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F11/36;G06N3/04;G06N3/08 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 410082 湖南省*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 源代碼 準確度 推斷 神經網絡 構建 標識符 神經元 人工智能領域 源代碼表示 分類誤差 結果標注 模型參數 模型評估 數據格式 數據轉換 損失函數 統計模型 形式輸出 對齊 詞匯庫 數據集 映射 加載 向量 學習 單詞 匹配 篩選 跟蹤 評估 更新 | ||
本發明涉及人工智能領域的深度學習,特別是涉及一種對源代碼的學習。本發明的內容包括:數據的收集與處理、模型的構建、模型的訓練、模型的評估、類型推斷。數據的收集與處理包括:首先在Github上下載一定量的源代碼,接著篩選類型豐富的源代碼作為最終的數據集,然后將數據轉換為單詞(token)和類型(type)對齊匹配的格式,同時生成token和type詞匯庫,最后利用token?type映射將源代碼表示為一種適合學習的數據格式,如向量。模型的構建包括:首先確定神經網絡種類,然后確定神經網絡層數,最后確定每層神經元個數。模型的訓練包括:跟蹤損失函數值和分類誤差,更新模型參數,直至得到準確度較高的模型。模型評估包括:統計模型的準確度和一致性。類型推斷包括:加載訓練好的準確度較高的模型,將類型推斷結果標注在其對應標識符的后面,最后以文件的形式輸出。其流程如圖1所示。
技術領域
本發明涉及人工智能領域的深度學習,特別是涉及一種對源代碼的學習。具體通過對源代碼的處理后,將其作為神經網絡的輸入,然后進行訓練,得到準確度較高的模型,從而進行JavaScript類型推斷的方法。
背景技術
近年來,深度學習在語音識別、機器翻譯、自動駕駛等領域都得到了廣泛的應用,目前針對源代碼的學習也引起了人們的關注。深度學習的優勢在于能夠通過深度神經網絡提取高度復雜的特征,而機器學習則需要自己定義特征。目前,深度神經網絡已經在一系列自然語言任務上獲得了成功。與自然語言不同,程序中包含豐富、明確、復雜的結構信息,傳統的自然語言處理模型(NLP,Natural Language Processing)將不適用于源代碼任務,所以可以將神經網絡與自然語言處理模型進行結合,從而處理源代碼任務。
Javascript作為web開發的一種語言,仍然是最受歡迎的語言之一。JavaScript是一種弱類型語言,在靜態類型檢查、代碼重構和語言服務方面存在一定的劣勢。而類型推斷可以通過對標識符(指變量、函數、屬性的名字,或者函數的參數)等進行類型標注從而使代碼的靜態驗證有很大不同,同時類型推斷可以提高代碼質量。Typescript是一種強類型的語言,通過類型注解,對類型進行約束,可以避免一些類型問題,提高代碼健壯性。Flow是一個靜態類型檢查器,用于快速的發現JavaScript應用中的錯誤,驗證JavaScript中的基本數據類型。另外還有一些其他的代碼檢查工具,但這些工具存在一些不足,比如無法檢測引用類型、自定義類型等類型錯誤,所以對JavaScript進行類型推斷是很有必要的。
傳統的JavaScript類型推斷需要考慮眾多因素,一般是通過各種分析技術如語法分析和語義分析等,不斷細化類型,從而進行類型推斷。而基于深度學習的JavaScript類型推斷僅需構建單詞和類型對齊匹配的語料庫,然后基于語料庫和數據集進行模型的構建和訓練,最終得到準確度較高的模型。
發明內容
本發明是一種采用深度學習技術進行JavaScript類型推斷的方法。第一,對源代碼數據進行收集與處理,將數據分為訓練數據、驗證數據和測試數據,并表示為一種適合學習的數據格式,如表示為向量形式;第二,進行模型的構建,選取合適的神經網絡,如雙向傳播的門控循環單元(GRU,Gated Recurrent Unit)、循環神經網絡(RNN,Recurrent NeuralNetwork)、長短時記憶神經網絡(LSTM,Long Short-Term Memory)等,可以捕獲到更多的源代碼信息,使輸入數據通過神經網絡后有一個合理的輸出;第三,進行模型的訓練,根據每一次訓練結束后的損失函數值及驗證集準確率不斷更新網絡參數,不斷提高模型的精度,直至得到一個準確度較高的模型;第四,進行模型的評估,統計模型的準確度和一致性;第五,進行類型推斷,將待推斷的數據輸入到已訓練好的準確度較高的模型中,并將推斷結果進行輸出。以上所述方法如圖1,包括:
1.數據收集與處理
針對深度學習任務,不經任何處理的源代碼數據是不能直接使用的,本發明通過對源代碼數據進行篩選、轉換、切分、表示等處理后,將其作為神經網絡的輸入。具體如下:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于湖南大學,未經湖南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911020317.0/2.html,轉載請聲明來源鉆瓜專利網。





