[發明專利]一種從自然語言自動生成Python代碼的方法有效
| 申請號: | 201910689490.3 | 申請日: | 2019-07-29 |
| 公開(公告)號: | CN110489102B | 公開(公告)日: | 2021-06-18 |
| 發明(設計)人: | 祝亞兵;張巖峰 | 申請(專利權)人: | 東北大學 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/41 |
| 代理公司: | 大連理工大學專利中心 21200 | 代理人: | 戴風友;梅洪玉 |
| 地址: | 110819 遼寧*** | 國省代碼: | 遼寧;21 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 自然語言 自動 生成 python 代碼 方法 | ||
1.一種從自然語言自動生成Python代碼的方法,其特征在于,步驟如下:
步驟1:采用GAN網絡的生成器根據自然語言描述生成程序片段的抽象語法樹;生成器是一個Encoder-Decoder深度學習框架,Encoder負責對自然語言描述序列進行編碼,Decoder則根據Encoder的編碼結果,將自然語言描述的語義解碼成程序片段的抽象語法樹;
步驟1.1:采用雙向LSTM網絡作為Encoder,對自然語言描述序列進行編碼;
步驟1.1.1:從左到右以及從右到左兩個方向對自然語言描述序列進行編碼,得到每個字符的中間隱藏向量
步驟1.1.2:將中間隱藏向量進行concat操作即為自然語言描述字符的編碼向量,并把每個字符的編碼向量保存下來,以待后面Decoder使用;
步驟1.1.3:將最后一個字符的中間隱藏向量作為Decoder的初始狀態hend;
步驟1.2:采用單向LSTM網絡作為Decoder,將Encoder編碼的自然語言語義解碼構建為程序的抽象語法樹;
步驟1.2.1:將1.1.3中的初始狀態hend作為Decoder的初始狀態,并使用注意力機制計算hend的內容向量,然后將該內容向量作為LSTM的輸入;
步驟1.2.2:采用Softmax對1.2.1的LSTM輸出結果進行多分類,這些類別分別對應生成抽象語法樹的動作;
步驟1.2.3:對于1.2.2生成的抽象語法樹的動作,該動作一類是生成葉子節點,該動作另一類是生成非葉子節點;
步驟1.2.4:按照深度優先遍歷的方式應用1.2.3的抽象語法樹的動作構建抽象語法樹;
步驟1.2.5:將1.2.4的輸出結果作為1.2.1的輸入,重復1.2.1到1.2.4操作,最終得到一棵完整的抽象語法樹,即自然語言描述語義對應的程序片段的抽象法樹;
步驟1.2.6:將抽象語法樹解析成程序片段;
步驟2:訓練判別器的數據分為三種:A訓練數據中的自然語言描述和與之對應的程序的抽象語法樹;B給定自然語言描述和生成器生成的抽象語法樹;C自然語言描述序列和與之無關的程序的抽象語法樹;
對于訓練數據A給定標簽為一致;而訓練數據B,C給定標簽為不一致;
步驟2.1:采用GAN生成器中Encoder的方法對自然語言描述序列進行編碼;
步驟2.2:采用樹型LSTM網絡,自底向上對抽象語法樹進行編碼,一直編碼到抽象語法樹的根節點;
步驟2.3:將2.1和2.2中的自然語言語義向量和抽象語法樹的語義向量進行向量乘法;
步驟2.4:重復2.1和2.3,對步驟2中的訓練數據B和訓練數據C進行同樣的操作;
步驟2.5:對2.4中的訓練數據對進行二分類預測,及判斷這三種情況下自然語言和程序抽象語法樹的語義是否一致;
步驟3:將GAN網絡的生成器和判別器一起訓練,生成器和判別器交替優化。
2.如權利要求1所述的從自然語言自動生成Python代碼的方法,其特征在于,所述的步驟3中,在訓練生成器和判別器之前,先分別對生成器和判別器進行預訓練,再一起博弈訓練。
3.根據權利要求1或2所述的從自然語言自動生成Python代碼的方法生成的模型包含兩個部分:生成器和判別器,其中生成器負責實現從自然語言到編程語言程序片段的生成,而判別器則識別出生成器生成的程序片段;訓練時,生成器和判別器處于博弈訓練的狀態,相互提高,到最后判別器不能識別出編程語言程序片段是原始訓練集的數據還是由生成器生成的數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東北大學,未經東北大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910689490.3/1.html,轉載請聲明來源鉆瓜專利網。





