亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種知識(shí)和數(shù)據(jù)雙輪驅(qū)動(dòng)的代碼生成方法

文檔序號(hào):40384728發(fā)布日期:2024-12-20 12:07閱讀:5來源:國(guó)知局
一種知識(shí)和數(shù)據(jù)雙輪驅(qū)動(dòng)的代碼生成方法

本發(fā)明涉及一種代碼生成方法,具體涉及一種基于知識(shí)和數(shù)據(jù)雙輪驅(qū)動(dòng)的用于自動(dòng)生成編程語言的方法,屬于自然語言處理。


背景技術(shù):

1、隨著人工智能技術(shù)的發(fā)展和大模型的普及,自然語言處理相關(guān)技術(shù)也得到了革新性的突破。擁有高達(dá)幾億到幾千億參數(shù),在海量數(shù)據(jù)上預(yù)訓(xùn)練的各種大語言模型,在進(jìn)行各類自然語言處理時(shí)展現(xiàn)出了前所未有的強(qiáng)大能力。

2、代碼生成(code?generation)是由自然語言文本生成程序代碼片段的過程。代碼生成的發(fā)展可以劃分為三個(gè)主要階段:最初是根據(jù)程序員或?qū)<腋鶕?jù)掌握的編程知識(shí),手動(dòng)編寫代碼生成規(guī)則和模板,實(shí)現(xiàn)一些簡(jiǎn)單初級(jí)的代碼生成相關(guān)任務(wù);之后是基于機(jī)器學(xué)習(xí)的方法,使用概率與統(tǒng)計(jì)方法實(shí)現(xiàn)代碼生成;最后是通過深度神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)代碼語言特征的自動(dòng)提取。在這一發(fā)展過程中,代碼生成的準(zhǔn)確率有了質(zhì)的提升。

3、傳統(tǒng)的基于模板和規(guī)則的方法以及機(jī)器學(xué)習(xí)方法可解釋性好、資源要求低,但是需要領(lǐng)域內(nèi)專家通過手工編寫模板和規(guī)則的方式將知識(shí)注入,也就是依賴于“知識(shí)”驅(qū)動(dòng)。此外,這種方法缺乏靈活性和適應(yīng)性,代碼生成的結(jié)果差強(qiáng)人意。基于深度神經(jīng)網(wǎng)絡(luò)模型的方法能夠從大量文本數(shù)據(jù)或代碼數(shù)據(jù)中學(xué)習(xí)相應(yīng)編程語言的特點(diǎn),在主流的編程語言生成上取得了不錯(cuò)的成績(jī),但需要巨量標(biāo)注數(shù)據(jù)作為數(shù)據(jù)集才能得到較好的訓(xùn)練結(jié)果,也就是依賴于“數(shù)據(jù)”驅(qū)動(dòng)。對(duì)于一些少見的、難以獲得大量標(biāo)注數(shù)據(jù)的編程語言,基線模型難以獲得與其體量匹配的訓(xùn)練數(shù)據(jù)量,也就難以達(dá)到令人滿意的代碼生成能力。


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

1、針對(duì)現(xiàn)有技術(shù)中代碼生成方法存在的不足,即要么過度依賴于知識(shí),要么過度依賴于數(shù)據(jù)的情況,發(fā)明人創(chuàng)造性地提出一種知識(shí)和數(shù)據(jù)雙輪驅(qū)動(dòng)的代碼生成方法,從而更好地完成代碼生成任務(wù)。

2、本發(fā)明的創(chuàng)新點(diǎn)在于:在進(jìn)行代碼生成任務(wù)時(shí),充分利用專家規(guī)則和模板以及訓(xùn)練用標(biāo)注數(shù)據(jù),將知識(shí)與數(shù)據(jù)有機(jī)地結(jié)合起來,以較少的數(shù)據(jù)和硬件資源完成代碼生成任務(wù)。

3、一種知識(shí)與數(shù)據(jù)雙輪驅(qū)動(dòng)的代碼生成方法,包括以下步驟:

4、步驟1:構(gòu)建編程語言知識(shí)庫模塊。

5、具體地,包括以下子步驟:

6、步驟1.1:學(xué)習(xí)獲取目標(biāo)編程語言相關(guān)知識(shí)。

7、通過閱讀該編程語言相關(guān)著作,通過網(wǎng)絡(luò)博客或視頻學(xué)習(xí)該編程語言編寫方法,閱讀相關(guān)工程源代碼等多種方式,學(xué)習(xí)目標(biāo)編程語言相關(guān)知識(shí)以及如何編寫該語言。

8、步驟1.2:設(shè)置代碼類別及對(duì)應(yīng)知識(shí)表示。

9、根據(jù)所學(xué)到的內(nèi)容和對(duì)該內(nèi)容的理解,將在該編程語言編寫中出現(xiàn)的各主要數(shù)據(jù)類型或語句形式(如一般高級(jí)編程語言中的數(shù)據(jù)結(jié)構(gòu)、類定義、函數(shù)定義、算法實(shí)現(xiàn)或目標(biāo)待生成語言中類似的概念,之后統(tǒng)稱為“類別”)的知識(shí)歸納總結(jié),形成該類別人工總結(jié)提煉出的“知識(shí)”。具體來說,如果該類別形式較為固定且有統(tǒng)一的代碼模板,則可以將該模板和一些指示大模型按照該模板生成對(duì)應(yīng)代碼的提示(prompt)組合,作為該類別的專家設(shè)置的“知識(shí)”;如果該類別沒有模板,則可以從該語言官方文檔中摘取一些該類別有用的信息(如類型定義、編寫特點(diǎn)、關(guān)鍵詞要求等),或根據(jù)學(xué)習(xí)的內(nèi)容人為總結(jié)一些幫助代碼模型生成正確代碼的信息(如“注釋”類別可提示注釋符號(hào)和使用方法,“標(biāo)識(shí)符”類別可提示命名風(fēng)格和上下文語境等等),作為該類別的知識(shí)和規(guī)則。這些模板和提示信息還可以類比c/c++、python、java等主流編程語言特點(diǎn)來設(shè)置,這樣可以更好的讓模型調(diào)動(dòng)預(yù)訓(xùn)練編程語言信息,有利于讓代碼生成模型更好的理解新的編程語言。

10、步驟1.3:形成知識(shí)庫模塊。

11、將上述得到的各個(gè)代碼類別和對(duì)應(yīng)的知識(shí)表示以鍵值對(duì)(k,v)的形式組織起來,并將這些鍵值對(duì)匯總成為一個(gè)字典,作為該編程語言的知識(shí)庫k,也就是:

12、k={(k1,v1),(k2,v2),…,(kn,vn)}?????????????(1)

13、其中,(ki,vi)表示第i個(gè)類別和對(duì)應(yīng)的知識(shí)。

14、步驟2:設(shè)置分類器模型模塊。

15、對(duì)于用戶輸入的生成目標(biāo)編程語言代碼的自然語言指令,需要一個(gè)經(jīng)過訓(xùn)練的分類器模型解析出該指令要生成的具體類別,才能確定知識(shí)庫中與該類別對(duì)應(yīng)的專家知識(shí),之后才能通過拼接等方式將提示、規(guī)則和模板并入到輸入中,進(jìn)而引導(dǎo)代碼生成模型更好地生成對(duì)應(yīng)代碼段。

16、步驟2.1:獲取文本分類數(shù)據(jù)集。

17、根據(jù)目標(biāo)編程語言特點(diǎn)和數(shù)據(jù)獲取的難易程度,從網(wǎng)絡(luò)搜索已有數(shù)據(jù)集,或是自行構(gòu)建分類數(shù)據(jù)集。文本分類數(shù)據(jù)集的格式應(yīng)為:

18、dt={(x1,y1),(x2,y2),…,(xn,yn)}??????????????(2)

19、其中,dt表示文本分類數(shù)據(jù)集,xi表示第i個(gè)自然語言描述文本,yi表示該自然語言描述文本對(duì)應(yīng)的生成代碼的類別。

20、步驟2.2:訓(xùn)練分類器模型。

21、使用編程語言指令文本分類數(shù)據(jù)集訓(xùn)練分類器模型,使后者學(xué)會(huì)根據(jù)目標(biāo)編程語言的自然語言代碼生成指令,判斷用戶想要生成的目標(biāo)代碼的所屬類別。該方法對(duì)基線模型(baseline?model)沒有要求,用戶可以根據(jù)自己的硬件資源情況和偏好,自行選擇合適的文本分類模型。常用的模型有基于機(jī)器學(xué)習(xí)的支持向量機(jī)(support?vector?machine,svm)、決策樹、基于深度學(xué)習(xí)的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent?neural?network,rnn)、bert等。

22、步驟3:設(shè)置代碼生成模型模塊。

23、對(duì)代碼生成基線模型,在進(jìn)行新編程語言代碼生成任務(wù)前,使其在目標(biāo)編程語言數(shù)據(jù)上進(jìn)行二次預(yù)訓(xùn)練或微調(diào),使模型能夠在預(yù)測(cè)前學(xué)習(xí)該語言的特征,進(jìn)一步提升生成代碼的準(zhǔn)確度,尤其是對(duì)于那些沒有模板的類別。

24、步驟3.1:獲取代碼生成數(shù)據(jù)集。

25、與文本分類數(shù)據(jù)集的獲取方法相同,根據(jù)目標(biāo)編程語言代碼生成數(shù)據(jù)獲取的難易程度,以直接選取已有數(shù)據(jù)集或自行構(gòu)建數(shù)據(jù)集的方式,得到訓(xùn)練用數(shù)據(jù)集。根據(jù)選擇的代碼生成模型所要求的數(shù)據(jù)集格式的不同,每個(gè)樣本的格式也不同;常見的格式可分為只有輸入和輸出的序列到序列任務(wù)數(shù)據(jù)集格式({input,output}),以及額外包含“指令”字段的指令微調(diào)數(shù)據(jù)集格式({input,instruction,output})。將每個(gè)樣本表示為sample,訓(xùn)練數(shù)據(jù)集可表示為:

26、dc={sample1,sample2,…,samplen}?????????????(3)

27、其中,dc表示代碼生成數(shù)據(jù)集,samplei表示數(shù)據(jù)集中第i個(gè)樣本。

28、步驟3.2:訓(xùn)練/微調(diào)代碼生成模型。

29、使用獲取的目標(biāo)編程語言的代碼生成數(shù)據(jù)集dc,對(duì)基線代碼生成模型按硬件資源水平和實(shí)際使用需求進(jìn)行訓(xùn)練或微調(diào)。訓(xùn)練和微調(diào)的區(qū)別在于:訓(xùn)練一般指對(duì)模型的全部參數(shù)進(jìn)行更新,對(duì)硬件資源和訓(xùn)練數(shù)據(jù)量的要求非常高,但是能讓模型更好地學(xué)習(xí)到目標(biāo)編程語言的編寫特點(diǎn),適合硬件資源豐富、數(shù)據(jù)量充足的情形;而微調(diào)一般指僅對(duì)模型的少部分參數(shù)進(jìn)行更新,而將其他參數(shù)凍結(jié),微調(diào)對(duì)硬件資源的要求相比訓(xùn)練要顯著降低,且只需要較少的新編程語言的訓(xùn)練樣本就可以實(shí)現(xiàn),還能讓模型保持其原先具有的生成其他編程語言代碼的能力,適合硬件資源和數(shù)據(jù)量有限,且需要增量開發(fā)的情形。

30、步驟4:知識(shí)和數(shù)據(jù)雙輪驅(qū)動(dòng)的代碼生成。

31、步驟4.1:組合各模塊。

32、將準(zhǔn)備好的三個(gè)模型模塊,即分類器、知識(shí)庫和代碼生成器首尾連接起來,形成一個(gè)整體架構(gòu)。具體來說,分類器模型模塊的輸入端與用于輸入自然語言描述文本,分類器模型模塊的輸出端分別與知識(shí)庫和生成器的相連接,知識(shí)庫的輸出端與代碼生成器的相連接,代碼生成器輸出代碼。

33、子步驟4.2:使用代碼生成模型進(jìn)行代碼生成。

34、輸入想要生成對(duì)應(yīng)代碼的自然語言描述文本,記為description,該自然語言描述文本首先經(jīng)過分類器模型進(jìn)行意圖解析,得到想要生成的目標(biāo)代碼類別,記為categoryd,即:

35、categoryd=classifier(description)??????????????(4)

36、classifier()表示通過分類器網(wǎng)絡(luò)進(jìn)行推斷。

37、之后,在編程語言知識(shí)庫k中搜索鍵categoryd,若搜到,取出其映射值knowledged,也就是“知識(shí)”,與輸入的自然語言描述文本拼接,形成代碼生成模型的輸入,記為inputd;若是沒有搜到,則直接將用戶輸入作為代碼生成模型的輸入inputd,即:

38、

39、最后,將得到的輸入饋送給代碼生成模型進(jìn)行文本到代碼的生成任務(wù),即:

40、outputd=generator(inputd)?????????????????(6)

41、其中,outputd即為最終生成的目標(biāo)編程語言代碼段,generator()表示使用代碼生成模型進(jìn)行推斷。

42、有益效果

43、與現(xiàn)有技術(shù)相比,本發(fā)明方法具有以下優(yōu)點(diǎn):

44、1.本方法充分利用了知識(shí)和數(shù)據(jù)兩方面的學(xué)習(xí)內(nèi)容,提出一種將知識(shí)和數(shù)據(jù)兩方面信息結(jié)合的代碼生成方法,從而使模型不僅可以從數(shù)據(jù)中學(xué)習(xí)到編碼知識(shí),還可以通過模板、規(guī)則等學(xué)習(xí)目標(biāo)語言特點(diǎn)。

45、2.本方法的所涉及到的模型結(jié)構(gòu)相對(duì)獨(dú)立,使用者可以根據(jù)實(shí)際訓(xùn)練資源情況,自由選擇合適尺寸的分類器模型和代碼生成模型完成訓(xùn)練。

46、3.相比于當(dāng)下需要海量數(shù)據(jù)進(jìn)行訓(xùn)練的大模型,本方法在代碼數(shù)據(jù)量較小、代碼生成模型參數(shù)量較小的情形下依然具有不錯(cuò)的表現(xiàn)。

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