[發明專利]一種基于字符的代碼補全方法及系統在審
| 申請號: | 201811223489.3 | 申請日: | 2018-10-19 |
| 公開(公告)號: | CN109614103A | 公開(公告)日: | 2019-04-12 |
| 發明(設計)人: | 李戈;郝逸洋;劉洋 | 申請(專利權)人: | 北京硅心科技有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06N3/04;G06N3/08 |
| 代理公司: | 北京辰權知識產權代理有限公司 11619 | 代理人: | 劉廣達 |
| 地址: | 100190 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 語言模型 源代碼 循環神經網絡 模型訓練 標識符 抽象語法樹 編程過程 方法調用 受限制 語料庫 預測 準確率 構建 句子 解析 學習 | ||
本發明提供了一種基于字符的代碼補全方法及系統,包括:源代碼處理步驟,使用抽象語法樹和標識符化工具解析源代碼;模型訓練步驟,使用LSTM模型訓練語言模型;預測補全步驟,根據訓練過的語言模型補全代碼。本發明利用深度學習模型中的循環神經網絡(RNN)來構建大規模代碼語料庫上的語言模型以預測后續的代碼。本發明提出了一個受限制的字符級循環神經網絡并將其用于在Java語言中補全方法調用。本發明實現了在編程過程中,不僅可以對程序句子進行補全,也可以對單個關鍵詞進行補全。本發明的技術方案具有簡單、快速的特點,能夠較好地提高代碼推薦的準確率和推薦效率。
技術領域
本發明涉及計算機軟件工程技術領域,尤其是涉及一種基于字符的代碼補全方法及系統。
背景技術
計算機自動生成代碼是近年來軟件工程的研究熱點之一。代碼自動生成極大的減少了程序員的工作量,提高了開發效率。隨著開源社區的發展,可以通過分析大量的代碼從而進行代碼生成。代碼自動生成的一大困難在于源代碼本身具有諸多的約束和限制。近年來,在原有的基于組合優化方法進行程序綜合研究的基礎上,產生了一些新的基于機器學習技術進行程序生成的方法。
按照所采取的技術及應用場景的不同,可將當前的程序生成方法分成兩類:一類為基于程序輸入輸出結果的程序生成,一類為基于程序代碼語言特性的代碼生成。基于輸入輸出結果的程序綜合主要基于機器學習模型,利用程序輸入輸出結果之間的對應關系構造訓練數據集,并利用該數據集對機器學習模型進行訓練,以達到在輸入輸出效果上模擬程序行為的目的。該類方法尤以基于深度神經網絡的方法為代表。基于程序設計語言模型的程序生成主要利用程序設計語言自身所具有的的統計特性,通過對已有大量程序代碼的學習建立相應程序設計語言的機器學習模型,并基于該模型在已有程序代碼的基礎上通過自動補全的方式生成新的代碼。
LSTM(Long Short-Term Memory)是長短期記憶網絡,是一種時間遞歸神經網絡,適合于處理和預測時間序列中間隔和延遲相對較長的重要事件。LSTM已經在科技領域有了多種應用。基于LSTM的系統可以學習翻譯語言、控制機器人、圖像分析、文檔摘要、語音識別圖像識別、手寫識別、控制聊天機器人、預測疾病、點擊率和股票、合成音樂等等任務。
中國發明專利申請號201710687197.4,涉及一種基于長短期記憶網絡(LSTM)的代碼推薦方法,針對現有代碼推薦技術普遍存在推薦準確率低、推薦效率低等問題,該發明先將源代碼提取成API序列,利用長短期記憶網絡構建一個代碼推薦模型,學習API調用之間的關系,然后進行代碼推薦。并使用了dropout技術防止模型過擬合。同時提出運用ReLu函數代替傳統飽和函數,解決梯度消失問題加快模型收斂速度,提高模型性能,充分發揮神經網絡的優勢。
然而,上述專利實際上進行的是API推薦,與代碼級推薦或者自動補全的目標仍有較大差距。不能實現在任意地點對任意代碼的推薦。
絕大多數的程序員在進行軟件開發的過程中會使用框架或庫API來復用代碼。但程序員幾乎不可能記住所有的API,因為現有的API數量已經很龐大。因此,代碼自動補全機制已經成為現代集成開發環境(Integrated Development Environment,IDE)中的不可或缺的組成部分。據統計,代碼補全是開發者最常使用的十個指令之一。代碼補全機制在程序員輸入代碼時會嘗試補全程序的剩余部分。智能的代碼補全可以通過消除編程時的輸入錯誤和推薦合適的API來加快軟件開發過程。
發明內容
為解決以上問題,本發明利用深度學習模型中的循環神經網絡(RNN)來構建大規模代碼語料庫上的語言模型以預測后續的代碼。本發明提出了一個受限制的字符級循環神經網絡并將其用于在Java語言中補全方法調用。
具體的,本發明提供了一種基于字符的代碼補全方法,包括:
源代碼處理步驟,使用抽象語法樹和標識符化工具解析源代碼;
模型訓練步驟,使用LSTM模型訓練語言模型;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京硅心科技有限公司,未經北京硅心科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811223489.3/2.html,轉載請聲明來源鉆瓜專利網。





