[發(fā)明專利]一種基于LSTM自動補(bǔ)全代碼的裝置有效
| 申請?zhí)枺?/td> | 201810231329.7 | 申請日: | 2018-03-20 |
| 公開(公告)號: | CN108563433B | 公開(公告)日: | 2021-01-26 |
| 發(fā)明(設(shè)計(jì))人: | 李戈;金芝 | 申請(專利權(quán))人: | 北京大學(xué) |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/41 |
| 代理公司: | 北京辰權(quán)知識產(chǎn)權(quán)代理有限公司 11619 | 代理人: | 劉廣達(dá) |
| 地址: | 100871*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 lstm 自動 代碼 裝置 | ||
本發(fā)明提供了一種基于LSTM自動補(bǔ)全代碼的裝置,包括:源代碼處理單元,使用抽象語法樹解析源代碼;線下訓(xùn)練單元,使用LSTM模型訓(xùn)練語言模型;線上代碼補(bǔ)全單元,根據(jù)訓(xùn)練過的語言模型補(bǔ)全代碼。所述LSTM模型包括約束字符級LSTM和使用前上下文標(biāo)識符編碼器的標(biāo)識符級LSTM。本發(fā)明實(shí)現(xiàn)了在編程過程中,任意地方輸入任意字符都可以實(shí)現(xiàn)代碼的自動補(bǔ)全,以及任意代碼的推薦,并保證推薦過程的準(zhǔn)確性。本發(fā)明的技術(shù)方案具有簡單、快速的特點(diǎn),能夠較好地提高代碼推薦的準(zhǔn)確率和推薦效率。大量的代碼可以自動生成或者僅需要少量的標(biāo)識符提示即可生成,極大的提高了程序員的代碼編寫效率。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件工程技術(shù)領(lǐng)域,尤其是涉及一種基于LSTM自動補(bǔ)全代碼的裝置。
背景技術(shù)
計(jì)算機(jī)自動生成代碼是近年來軟件工程的研究熱點(diǎn)之一。代碼自動生成極大的減少了程序員的工作量,提高了開發(fā)效率。隨著開源社區(qū)的發(fā)展,我們可以通過分析大量的代碼從而進(jìn)行代碼生成。代碼自動生成的一大困難在于源代碼本身具有諸多的約束和限制。近年來,在原有的基于組合優(yōu)化方法進(jìn)行程序綜合研究的基礎(chǔ)上,產(chǎn)生了一些新的基于機(jī)器學(xué)習(xí)技術(shù)進(jìn)行程序生成的方法。
按照所采取的技術(shù)及應(yīng)用場景的不同,可將當(dāng)前的程序生成方法分成兩類:一類為基于程序輸入輸出結(jié)果的程序生成,一類為基于程序代碼語言特性的代碼生成。基于輸入輸出結(jié)果的程序綜合主要基于機(jī)器學(xué)習(xí)模型,利用程序輸入輸出結(jié)果之間的對應(yīng)關(guān)系構(gòu)造訓(xùn)練數(shù)據(jù)集,并利用該數(shù)據(jù)集對機(jī)器學(xué)習(xí)模型進(jìn)行訓(xùn)練,以達(dá)到在輸入輸出效果上模擬程序行為的目的。該類方法尤以基于深度神經(jīng)網(wǎng)絡(luò)的方法為代表。基于程序設(shè)計(jì)語言模型的程序生成主要利用程序設(shè)計(jì)語言自身所具有的的統(tǒng)計(jì)特性,通過對已有大量程序代碼的學(xué)習(xí)建立相應(yīng)程序設(shè)計(jì)語言的機(jī)器學(xué)習(xí)模型,并基于該模型在已有程序代碼的基礎(chǔ)上通過自動補(bǔ)全的方式生成新的代碼。
LSTM(Long Short-Term Memory)是長短期記憶網(wǎng)絡(luò),是一種時間遞歸神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件。LSTM已經(jīng)在科技領(lǐng)域有了多種應(yīng)用。基于LSTM的系統(tǒng)可以學(xué)習(xí)翻譯語言、控制機(jī)器人、圖像分析、文檔摘要、語音識別圖像識別、手寫識別、控制聊天機(jī)器人、預(yù)測疾病、點(diǎn)擊率和股票、合成音樂等等任務(wù)。
中國發(fā)明專利申請?zhí)?01710687197.4,涉及一種基于長短期記憶網(wǎng)絡(luò)(LSTM)的代碼推薦方法,針對現(xiàn)有代碼推薦技術(shù)普遍存在推薦準(zhǔn)確率低、推薦效率低等問題,該發(fā)明先將源代碼提取成API序列,利用長短期記憶網(wǎng)絡(luò)構(gòu)建一個代碼推薦模型,學(xué)習(xí)API調(diào)用之間的關(guān)系,然后進(jìn)行代碼推薦。并使用了dropout技術(shù)防止模型過擬合。同時提出運(yùn)用ReLu函數(shù)代替?zhèn)鹘y(tǒng)飽和函數(shù),解決梯度消失問題加快模型收斂速度,提高模型性能,充分發(fā)揮神經(jīng)網(wǎng)絡(luò)的優(yōu)勢。
然而,上述專利實(shí)際上進(jìn)行的是API推薦,與代碼級推薦或者自動補(bǔ)全的目標(biāo)仍有較大差距。不能實(shí)現(xiàn)在任意地點(diǎn)對任意代碼的推薦。
如圖1所示,為現(xiàn)有技術(shù)中常見的代碼自動補(bǔ)全方式。當(dāng)在“accuracy=tf”之后輸入“.”時,會自動出現(xiàn)一個下拉菜單,編程人員可以選擇例如“framework_lib”、“client_lib”等類名進(jìn)行代碼自動補(bǔ)全。然而,這種方式的缺陷在于:只有當(dāng)用戶輸入“.”等特殊字符后才能夠出現(xiàn)下拉菜單進(jìn)行代碼補(bǔ)全,無法實(shí)現(xiàn)在任意地點(diǎn)(例如輸入任意一個字母時)進(jìn)行代碼補(bǔ)全或推薦;下拉菜單里推薦的僅僅是類名而非一段代碼,仍然無法直接使用。
發(fā)明內(nèi)容
為解決以上問題,本發(fā)明提出深度自動代碼生成,采用基于LSTM的引入標(biāo)識符實(shí)現(xiàn)代碼自動補(bǔ)全的任務(wù),將訓(xùn)練語言模型用于從大規(guī)模代碼集合中提取出的程序,預(yù)測代碼元素。
具體的,本發(fā)明提供了一種基于LSTM自動補(bǔ)全代碼的裝置,包括:
源代碼處理單元,使用抽象語法樹解析源代碼;
線下訓(xùn)練單元,使用LSTM模型訓(xùn)練語言模型。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京大學(xué),未經(jīng)北京大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810231329.7/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 用于高階長短期記憶網(wǎng)絡(luò)的系統(tǒng)和方法
- 基于深度學(xué)習(xí)LSTM的空調(diào)故障診斷方法
- 基于注意力機(jī)制的時間序列預(yù)測方法、裝置及存儲介質(zhì)
- 一種基于PCA-LSTM網(wǎng)絡(luò)的廢水處理智能監(jiān)控方法
- 一種基于FAF-LSTM深度神經(jīng)網(wǎng)絡(luò)的居民負(fù)荷預(yù)測方法及系統(tǒng)
- 用于預(yù)測血糖水平的循環(huán)神經(jīng)網(wǎng)絡(luò)裝置和系統(tǒng)
- 基于情景LSTM結(jié)構(gòu)網(wǎng)絡(luò)的微博情感分析方法
- 語音信號處理方法、裝置、電子設(shè)備和存儲介質(zhì)
- 基于約束并行LSTM分位數(shù)回歸的電力負(fù)荷概率預(yù)測方法
- 基于深度網(wǎng)絡(luò)AS-LSTM的命名實(shí)體識別系統(tǒng)及識別方法





