日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

一種多維源代碼表征學(xué)習(xí)方法和裝置

文檔序號:39724362發(fā)布日期:2024-10-22 13:21閱讀:1來源:國知局
一種多維源代碼表征學(xué)習(xí)方法和裝置

本發(fā)明涉及表征學(xué)習(xí),具體涉及一種多維源代碼表征學(xué)習(xí)方法和裝置。


背景技術(shù):

1、表征學(xué)習(xí)是指學(xué)習(xí)數(shù)據(jù)的表示,使其在構(gòu)建分類器或其他預(yù)測因子時更容易提取有用信息。目前代碼表征學(xué)習(xí)方法被用于代碼克隆檢測、代碼搜索、代碼補(bǔ)全等多個代碼分析任務(wù)中,取得了一定的成就。根據(jù)源代碼的抽象層次不同,現(xiàn)階段代碼表征學(xué)習(xí)工作可以分為基于token的代碼表征、基于樹的代碼表征、基于圖的代碼表征、基于語法和語義混合的代碼表征四類。但代碼表征學(xué)習(xí)技術(shù)目前仍存在如下幾點局限性:

2、(1)集外詞問題:基于token的代碼表征通常利用詞法分析器將代碼中的詞匯單元token劃分出來。這些詞匯單元通常包含關(guān)鍵字、數(shù)字、標(biāo)識符等。將代碼表示為詞匯單元序列之后,利用深度學(xué)習(xí)技術(shù)對其進(jìn)行建模,學(xué)習(xí)代碼序列中所包含的有效信息,如功能語義信息、語法結(jié)構(gòu)信息等,最后生成具有豐富代碼信息的表征向量,應(yīng)用于后續(xù)的代碼克隆檢測任務(wù)中?,F(xiàn)有方法大多都對token進(jìn)行了規(guī)范化,比如將變量名用統(tǒng)一的標(biāo)識符來代替,這樣存在的問題是會丟失部分詞法信息,但是如果不進(jìn)行規(guī)范化,會存在集外詞(out-of-vocabulary,oov)問題,即出現(xiàn)了在詞匯表中不存在的token。集外詞oov問題嚴(yán)重限制了代碼表示的有效性。

3、(2)梯度消失問題:抽象語法樹(abstract?syntax?tree,ast)是源代碼語法結(jié)構(gòu)的一種抽象表現(xiàn)形式,以樹的形式包含了源代碼中的語法信息和語法結(jié)構(gòu)。通常利用深度神經(jīng)網(wǎng)絡(luò)對抽象語法樹進(jìn)行建模得到其向量表示,根據(jù)該特征向量完成代碼克隆檢測任務(wù),實現(xiàn)基于樹的源代碼表征。針對抽象語法樹的處理,現(xiàn)有的方法主要分為兩類:一類是將ast轉(zhuǎn)換為完整的二叉樹,另一類是將ast直接視作二叉樹,這兩種方法都會或多或少破壞源代碼原有的語法結(jié)構(gòu),而且在轉(zhuǎn)換的過程會增加ast的高度,ast樹過高會導(dǎo)致梯度消失問題,可能會丟失長期上下文信息,削弱神經(jīng)網(wǎng)絡(luò)模型捕捉更真實和復(fù)雜語義的能力,導(dǎo)致代碼信息丟失。

4、(3)規(guī)模開銷問題:程序依賴圖(program?dependence?graph,pdg)是程序的一種圖形表示,所含結(jié)構(gòu)信息最多,能夠表示程序的控制依賴,數(shù)據(jù)依賴等關(guān)系,是一種帶有標(biāo)記的有向多重圖。程序依賴圖pdg中結(jié)點代表語句,邊代表依賴關(guān)系,依賴關(guān)系包括數(shù)據(jù)依賴和控制依賴。通過將程序表示為圖的形式使得模型能夠更好地理解代碼中不同部分之間的依賴關(guān)系。現(xiàn)有的方法大多將pdg圖中的控制流和數(shù)據(jù)流編碼為一個緊湊的語義特征矩陣,其中每個元素都是一個高維的稀疏二值特征向量。但這種方法通常需要消耗大量的時間和空間,計算開銷大。

5、綜上,相關(guān)技術(shù)中的源代碼表征學(xué)習(xí)存在代碼表示有效性低、代碼信息丟失、規(guī)模開銷大等的問題。


技術(shù)實現(xiàn)思路

1、有鑒于此,本發(fā)明提供了一種多維源代碼表征學(xué)習(xí)方法和裝置,能夠解決相關(guān)技術(shù)中的源代碼表征學(xué)習(xí)存在代碼表示有效性低、代碼信息丟失、規(guī)模開銷大等的問題。

2、本發(fā)明采用的具體技術(shù)方案如下:

3、一種多維源代碼表征學(xué)習(xí)方法,包括:獲取源代碼的詞法單元token序列、抽象語法樹ast、程序依賴圖pdg;根據(jù)所述token序列獲取所述源代碼的屬性特征向量,根據(jù)所述ast獲取所述源代碼的結(jié)構(gòu)特征向量,根據(jù)所述pdg獲取所述源代碼的語義特征向量;對所述屬性特征向量、所述結(jié)構(gòu)特征向量、所述語義特征向量進(jìn)行特征融合處理,獲取所述源代碼的多維表征。

4、進(jìn)一步地,其中,所述獲取源代碼的詞法單元token序列、抽象語法樹ast、程序依賴圖pdg,包括:根據(jù)所述源代碼獲取代碼塊;對所述代碼塊進(jìn)行標(biāo)準(zhǔn)化處理,獲得標(biāo)準(zhǔn)化的代碼片段;根據(jù)所述標(biāo)準(zhǔn)化的代碼片段,獲取所述token序列、所述ast和所述pdg。

5、進(jìn)一步地,所述根據(jù)所述token序列獲取所述源代碼的屬性特征向量,包括:根據(jù)所述token序列構(gòu)建初始詞匯表;組合相鄰的所述token序列獲得組合單元,將出現(xiàn)次數(shù)最多的所述組合單元輸入至詞嵌入模型,以對所述初始詞匯表進(jìn)行更新獲得更新詞匯表;對所述組合單元合并一個與之相鄰的所述token序列,作為新的組合單元;將所述新的組合單元輸入至所述詞嵌入模型,對所述更新詞匯表進(jìn)行重復(fù)更新,直至達(dá)到預(yù)設(shè)的更新次數(shù),獲取最終詞匯表;根據(jù)所述最終詞匯表,獲取每個組合單元的向量表示,通過循環(huán)神經(jīng)網(wǎng)絡(luò)對所述向量表示進(jìn)行學(xué)習(xí)處理,獲取所述屬性特征向量。

6、進(jìn)一步地,所述根據(jù)所述token序列構(gòu)建初始詞匯表,包括:根據(jù)所述token序列,獲得文本語料庫;將所述文本語料庫輸入至所述詞嵌入模型,獲得初始詞匯表。

7、進(jìn)一步地,所述根據(jù)所述ast獲取所述源代碼的結(jié)構(gòu)特征向量,包括:根據(jù)所述抽象語法樹ast,分割獲取多個語句樹序列;根據(jù)所述獲取語句樹序列,獲取每個所述語句樹序列對應(yīng)的語句向量序列;根據(jù)所述語句向量序列,通過基于樹的卷積神經(jīng)網(wǎng)絡(luò),獲取每個所述語句樹序列的結(jié)構(gòu)向量表示;根據(jù)所述結(jié)構(gòu)向量表示,通過雙向循環(huán)神經(jīng)網(wǎng)絡(luò),獲取所述源代碼的所述結(jié)構(gòu)特征向量。

8、進(jìn)一步地,所述根據(jù)所述pdg獲取所述源代碼的語義特征向量,包括:根據(jù)所述程序依賴圖pdg的代表特征,對所述程序依賴圖pdg進(jìn)行圖過濾處理,獲得過濾后的pdg;根據(jù)所述過濾后的pdg,通過圖卷積神經(jīng)網(wǎng)絡(luò),獲取所述源代碼的所述語義特征向量。

9、進(jìn)一步地,其中,所述代表特征至少包括以下之一:所述pdg的節(jié)點個數(shù);所述pdg的控制邊數(shù);所述pdg的執(zhí)行邊數(shù);所述pdg的數(shù)據(jù)邊數(shù);所述pdg的聲明節(jié)點數(shù);所述pdg的函數(shù)調(diào)用數(shù);所述pdg的傳入?yún)?shù);所述pdg的傳出參數(shù)。

10、一種多維源代碼表征學(xué)習(xí)裝置,包括:第一獲取模塊,用于獲取源代碼的詞法單元token序列、抽象語法樹ast、程序依賴圖pdg;第二獲取模塊,用于根據(jù)所述token序列獲取所述源代碼的屬性特征向量,根據(jù)所述ast獲取所述源代碼的結(jié)構(gòu)特征向量,根據(jù)所述pdg獲取所述源代碼的語義特征向量;特征融合模塊,用于對所述屬性特征向量、所述結(jié)構(gòu)特征向量、所述語義特征向量進(jìn)行特征融合處理,獲取所述源代碼的多維表征。

11、進(jìn)一步地,其中,所述第二獲取模塊還用于,根據(jù)所述抽象語法樹ast,分割獲取多個語句樹序列;根據(jù)所述獲取語句樹序列,獲取每個所述語句樹序列對應(yīng)的語句向量序列;根據(jù)所述語句向量序列,通過基于樹的卷積神經(jīng)網(wǎng)絡(luò),獲取每個所述語句樹序列的結(jié)構(gòu)向量表示;根據(jù)所述結(jié)構(gòu)向量表示,通過雙向循環(huán)神經(jīng)網(wǎng)絡(luò),獲取所述源代碼的所述結(jié)構(gòu)特征向量。

12、進(jìn)一步地,其中,所述第二獲取模塊還用于,根據(jù)所述程序依賴圖pdg的代表特征,對所述程序依賴圖pdg進(jìn)行圖過濾處理,獲得過濾后的pdg;根據(jù)所述過濾后的pdg,通過圖卷積神經(jīng)網(wǎng)絡(luò),獲取所述源代碼的所述語義特征向量。

13、有益效果:

14、(1)本發(fā)明提供了一種多維源代碼表征學(xué)習(xí)方法,包括:獲取源代碼的詞法單元token序列、抽象語法樹ast、程序依賴圖pdg;根據(jù)token序列獲取源代碼的屬性特征向量,根據(jù)ast獲取源代碼的結(jié)構(gòu)特征向量,根據(jù)pdg獲取源代碼的語義特征向量,實現(xiàn)了將將源代碼的語義信息表示為稠密低維實值向量,在低維空間中高效計算實體和關(guān)系的語義聯(lián)系。通過對屬性特征向量、結(jié)構(gòu)特征向量、語義特征向量進(jìn)行特征融合處理,獲取源代碼的多維表征,實現(xiàn)了對代碼信息的充分利用,以更加全面準(zhǔn)確與智能化的方式提高下游代碼任務(wù)的準(zhǔn)確率。

15、(2)通過根據(jù)token序列構(gòu)建初始詞匯表,組合相鄰的token序列獲得組合單元,將出現(xiàn)次數(shù)最多的組合單元輸入至詞嵌入模型,以對初始詞匯表進(jìn)行更新獲得更新詞匯表;對組合單元合并一個與之相鄰的token序列,作為新的組合單元,對更新詞匯表進(jìn)行重復(fù)更新,直至達(dá)到預(yù)設(shè)的更新次數(shù),獲取最終詞匯表,減少出現(xiàn)集外詞問題的概率。

16、(3)通過根據(jù)抽象語法樹ast,分割獲取多個語句樹序列;根據(jù)獲取語句樹序列,獲取每個語句樹序列對應(yīng)的語句向量序列;根據(jù)語句向量序列,通過卷積神經(jīng)網(wǎng)絡(luò),獲取每個語句樹序列的結(jié)構(gòu)向量表示;根據(jù)結(jié)構(gòu)向量表示,通過雙向循環(huán)神經(jīng)網(wǎng)絡(luò),獲取源代碼的結(jié)構(gòu)特征向量。這種細(xì)粒度的處理使得模型可以很好處理很深的抽象語法樹,解決梯度消失問題。

17、(4)根據(jù)程序依賴圖pdg的代表特征,對程序依賴圖pdg進(jìn)行圖過濾處理,獲得過濾后的pdg,根據(jù)過濾后的pdg,通過圖卷積神經(jīng)網(wǎng)絡(luò),獲取源代碼的語義特征向量。其中,通過收集pdg的簡單特征來進(jìn)行圖過濾,減少了圖卷積神經(jīng)網(wǎng)絡(luò)模型的輸入規(guī)模。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1