1.一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述代碼生成方法包括下列步驟:s1,構(gòu)建編程語言知識庫;s2,設(shè)置分類器模型;s3,設(shè)置代碼生成模型;以及s4,知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成。
2.根據(jù)權(quán)利要求1所述的一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述所述步驟s1包括下列子步驟:s1.1,學(xué)習(xí)獲取目標(biāo)編程語言相關(guān)知識;s1.2,設(shè)置代碼類別及對應(yīng)知識表示;s1.3,形成知識庫。
3.根據(jù)權(quán)利要求2所述的一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述子步驟s1.2的具體內(nèi)容為:將在所述編程語言編寫中出現(xiàn)的各主要數(shù)據(jù)類別形式的知識歸納總結(jié),形成所述類別人工總結(jié)提煉出的“知識”;所述子步驟s1.3的具體內(nèi)容為:將得到的各個代碼類別和對應(yīng)的知識表示以鍵值對(k,v)的形式組織起來,并將這些鍵值對匯總成為一個字典,作為該編程語言的知識庫k,也就是:k={(k1,v1),(k2,v2),…,(kn,vn)},其中,(ki,vi)表示第i個類別和對應(yīng)的知識。
4.根據(jù)權(quán)利要求3所述的一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述子步驟s2.1的具體內(nèi)容為:根據(jù)目標(biāo)編程語言特點和數(shù)據(jù)獲取的難易程度,從網(wǎng)絡(luò)搜索已有數(shù)據(jù)集,或是自行編寫腳本從已有工程源代碼中自動抽取生成分類數(shù)據(jù)集,所述分類數(shù)據(jù)集的格式應(yīng)為:dt={(x1,y1),(x2,y2),…,(xn,yn)},其中,dt表示文本分類數(shù)據(jù)集,xi表示第i個自然語言描述文本,yi表示該自然語言描述文本對應(yīng)的生成代碼的類別;所述子步驟s2.2的具體內(nèi)容為:使用編程語言指令文本分類數(shù)據(jù)集訓(xùn)練分類器模型,使所述分類器模型學(xué)會根據(jù)目標(biāo)編程語言的自然語言代碼生成指令,判斷用戶想要生成的目標(biāo)代碼的所屬類別。
5.根據(jù)權(quán)利要求4所述的一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述子步驟s3.1的具體內(nèi)容為:根據(jù)目標(biāo)編程語言代碼生成數(shù)據(jù)獲取的難易程度,以直接選取已有數(shù)據(jù)集或自行構(gòu)建數(shù)據(jù)集的方式,得到訓(xùn)練用數(shù)據(jù)集;所述子步驟s3.2的具體內(nèi)容為:使用所述訓(xùn)練數(shù)據(jù)集,對基線代碼生成模型按硬件資源水平和實際使用需求進(jìn)行訓(xùn)練或微調(diào)。
6.根據(jù)權(quán)利要求5所述的一種知識和數(shù)據(jù)雙輪驅(qū)動的代碼生成方法,其特征在于,所述子步驟s4具體包括下列內(nèi)容:s4.1,將所述知識庫模塊、分類器模塊和代碼生成模塊進(jìn)行組合;s4.2,輸入需要生成對應(yīng)代碼的自然語言描述文本,記為description,所述自然語言描述文本首先經(jīng)過分類器模型進(jìn)行意圖解析,得到該描述想要生成的目標(biāo)代碼類別,記為categoryd,即:categoryd=classifier(description),classifier()表示通過分類器網(wǎng)絡(luò)進(jìn)行推斷,在編程語言知識庫k中搜索鍵categoryd,若搜到,取出其映射的值knowledged,也就是“知識”,與用戶輸入的自然語言描述文本拼接,形成代碼生成模型的輸入,記為inputd;若是沒有搜到,則直接將輸入作為代碼生成模型的輸入inputd;最后,將得到的輸入饋送給代碼生成模型進(jìn)行文本到代碼的生成任務(wù),即:outputd=generator(inputd),其中,outputd即為最終生成的目標(biāo)編程語言代碼段,generator()表示使用代碼生成模型進(jìn)行推斷。