• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    具有選擇性局部注意力和前序信息解碼器的代碼生成模型

    2021-02-02 02:35:26梁婉瑩朱佳吳志杰顏志文湯庸黃晉余偉浩
    北京大學學報(自然科學版) 2021年1期
    關(guān)鍵詞:代碼生成解碼器集上

    梁婉瑩 朱佳,? 吳志杰 顏志文 湯庸 黃晉 余偉浩

    具有選擇性局部注意力和前序信息解碼器的代碼生成模型

    梁婉瑩1,2朱佳1,2,?吳志杰1,2顏志文1,2湯庸1,2黃晉1,2余偉浩1,2

    1.華南師范大學計算機學院, 廣州 510631; 2.廣州市大數(shù)據(jù)智能教育重點實驗室, 廣州 510631; ?通信作者, E-mail: jzhu@m.scnu.edu.cn

    提出一種基于語法的代碼生成模型, 該模型具有選擇性局部注意力和包含前序信息的長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)解碼器, 通過更改上下文向量的計算范圍, 并在解碼過程中融合更多的前序信息, 增強單詞之間的相關(guān)性。在 Hearthstone 和 Django 兩個數(shù)據(jù)集上進行的代碼生成實驗證實了所提模型的有效性, 與最新的模型相比, 所提模型不僅表現(xiàn)出更出色的準確率和雙語評估學習成績, 還可以使計算工作量最小化。

    代碼生成; 抽象語法樹; 包含前序信息的長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM); 選擇性局部注意力

    代碼生成是機器翻譯的一個分支問題, 比自然語言生成或翻譯[1]要求更高。代碼符合規(guī)定的文法以及格式時, 才能被機器真正識別并運行。隨著機器學習領(lǐng)域的發(fā)展, 人們逐漸找到代碼生成的解決方案。Brown 等[2]提出僅依賴于統(tǒng)計分析的統(tǒng)計機器翻譯模型(statistical machine translation, SMT),盡管其準確率相對較低, 卻是當時代碼生成問題的新突破。隨后, 基于 Seq2Seq[3]框架的神經(jīng)機器翻譯模型(neural machine translation, NMT)[4]被提出, 可以從自然語言序列映射到目標代碼序列, 支持可變長度的輸入和輸出, 在翻譯、對話和單詞概括中表現(xiàn)出色。之后, 一些研究人員嘗試使用指針網(wǎng)絡(luò)來改進 NMT 模型, 例如致力于解決輸出嚴重依賴于輸入問題的潛伏預測器網(wǎng)絡(luò)(latent predictor net-works, LPN)[1]、通過長短期記憶單元(Long-Short Term Memory, LSTM)[5]生成多層樹的代碼邏輯形式的 Seq2Tree 模型[6]、基于句法神經(jīng)網(wǎng)絡(luò)的 Seq2Seq模型(syntactic neural network model, SNM)[7]、抽象語法網(wǎng)絡(luò)(abstract syntax networks, ASN)模型[8]、基于語義分析和代碼生成的抽象解析器(TRANX)[9]、采用 Transformer[10]架構(gòu)并捕獲長依賴性句子的TreeGen[11]模型以及基于語法結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò)(CNN decoder model)解碼器模型[12]。

    上述模型的雙語評估研究指標(BLEU)和準確率上逐漸得到提高, 但在代碼生成方面仍存在以下缺陷: 首先, 傳統(tǒng)的序列到序列(Seq2Seq)模型(如LPN 模型[1]和 SNM 模型[7])的解碼器包含的結(jié)構(gòu)信息較少, 可能導致前序信息對當前運算的影響不足, 使得當前向量在抽象語法樹中位置選擇錯誤; 其次, 單純使用軟注意力(即將所有編碼器輸出向量置入上下文向量的計算中), 會導致輸入序列的先驗語義向量被后驗語義向量覆蓋, 缺乏對輸出語法與模型特征[1]之間模塊化或緊密耦合的考慮。

    針對以上問題, 本文提出一種基于語法的代碼生成模型。該模型具有選擇性局部注意力和帶有前序信息的長短期記憶單元解碼器 PI-LSTM (preorder information LSTM), 使用序列到序列(Seq2-Seq)的編碼–解碼框架。在編碼器部分, 使用門控循環(huán)單元(gate recurrent unit, GRU)[13]作為計算單元。與SNM 模型中的樸素 LSTM 相比, GRU 相對簡單高效, 在減少訓練時間的同時, 對準確率或雙語評估學習成績的 BLEU 分數(shù)產(chǎn)生可忽略的負面影響, 適用于訓練大規(guī)模的預處理數(shù)據(jù)。在注意力機制部分, 為了增強上下文之間的相關(guān)性, 我們使用選擇性局部注意力機制, 可以根據(jù)預設(shè)或輸入語句的長度采用不同的注意力機制, 從而減少無關(guān)單詞對當前單詞權(quán)重計算的干擾。與單純使用軟注意力機制相比, 選擇性局部注意力可以更好地適應不同大小的數(shù)據(jù)集。在解碼器部分, 為了包含更多的結(jié)構(gòu)信息, 我們使用基于樸素 LSTM 改進的 PI-LSTM 作為解碼器計算單元。通過對輸出值的二次更新, PI-LSTM 提升了前序信息在解碼運算中的參與度, 更好地修正了解碼運算, 減少了模型在抽象語法樹中生成錯誤分支的可能性。

    1 代碼生成

    1.1 SNM模型

    基于句法神經(jīng)網(wǎng)絡(luò)的 Seq2Seq 模型(SNM)[7]是目前最具代表性的代碼生成模型。SNM 模型不必恢復原有的基礎(chǔ)語法, 只需要集中精力學習現(xiàn)有語法規(guī)則之間的可組合性[7]。它配備了標準的遞歸神經(jīng)網(wǎng)絡(luò)(RNN)[14]解碼器, 允許更多的神經(jīng)連接反映抽象語法樹的遞歸結(jié)構(gòu)。SNM 模型應用雙向 LSTM (bidirection-LSTM)[15]編碼器、LSTM 解碼器和軟注意力來訓練給定的預處理數(shù)據(jù)集, 與 2017 年前推出的模型相比, SNM 模型的準確率非常出色。

    1.2 抽象語法樹

    抽象語法樹(abstract syntax tree, AST)[16]是領(lǐng)域?qū)S谜Z言(即代碼)的樹型結(jié)構(gòu)。AST 僅用于代碼摘要, 不代表實際語法的每個細節(jié), 其每個節(jié)點都代表源代碼中的一個分支。抽象語法樹有兩個特征: 1)不依賴具體的語法, 在解析輸入語句時, 系統(tǒng)會構(gòu)造相同的語法樹, 且該語法樹給編譯器后端提供一個清晰、統(tǒng)一的接口;2)構(gòu)造語法樹時不依賴語言的細節(jié), 并且, 針對不同的語言有不同的表示形式[7]。

    2 編碼器–解碼器代碼生成模型

    代碼生成是不定長輸入到不定長輸出的轉(zhuǎn)換過程。本文提出的基于語法的代碼生成模型如圖 1 所示。該模型具有 GRU 編碼器、選擇性局部注意力以及 PI-LSTM 解碼器。模型根據(jù)輸入序列的第一個單詞, 生成目標抽象語法樹的主干, 然后通過編碼器–解碼器的計算, 逐步將語法樹主干填充成完整語法樹。編碼器對輸入序列中的每個單詞進行編碼, 并將編碼輸出傳送到選擇性局部注意力機制中, 計算上下文向量。解碼器接收到上下文向量后, 使用 PI-LSTM計算并解碼, 得到最終輸出。

    2.1 底層語法驅(qū)動

    代碼生成模型多數(shù)以抽象語法樹(AST)為基礎(chǔ)。在計算機科學和語言學中, 句法分析(或語法解析)[17]是一種對由一系列單詞組成的輸入文本的語法結(jié)構(gòu)進行分析和確定的過程。底層語法驅(qū)動程序包含一組生產(chǎn)規(guī)則, 并通過固有的幾個生產(chǎn)規(guī)則, 生成頭節(jié)點和多個子節(jié)點, 從而生成相應的樹結(jié)構(gòu), 如圖 2 所示。如果輸入序列中的第一個單詞是“if”, 模型則以“If→expr [test] stmt * [body] stmt * [or else]”的形式生成主干 AST。然后使用 GENTO-KEN 和APPLYRULE, 分別在非終端節(jié)點和終端節(jié)點上進行操作, 前者通過添加終端令牌來填充可變終端節(jié)點, 后者將生產(chǎn)規(guī)則應用于當前派生樹, 最終達成擴展和填充空值語法樹的目的。

    圖1 基于語法的選擇性局部注意力和PI-LSTM解碼代碼生成模型

    t0~t4指底層語法驅(qū)動程序遍歷語法樹的時間步

    2.2 門控循環(huán)單元(GRU)編碼器

    為了減少模型訓練的時間, 在編碼器中, 我們以門控循環(huán)網(wǎng)絡(luò) GRU 作為計算單元。GRU 的門控通過丟棄或保留輸入序列數(shù)據(jù)來調(diào)整信息流并沿序列傳遞相關(guān)信息, 用于預測下一個輸出。GRU 是LSTM[5]的一種變體, 它將遺忘門和輸入門簡化為單個更新門, 使計算相對簡單, 更適合訓練大規(guī)模的預處理數(shù)據(jù)。給定輸入序列中的每個單詞向量={1,2, ...,X}, 通過 GRU 計算轉(zhuǎn)換為編碼向量(默認0是零向量)。

    首先, 將單詞向量和前序編碼輸出向量–1通過 Sigmoid 函數(shù)[18], 計算獲得更新門的結(jié)果z和重置門的結(jié)果r:

    z= Sigmoid (·[–1,]), (1)

    r=Sigmoid (·[–1),])。 (2)

    以上公式中的和均為待學習的權(quán)重參數(shù),通過神經(jīng)網(wǎng)絡(luò)訓練獲得其最優(yōu)值。

    2.3 選擇性局部注意力

    在代碼生成問題中, 注意力機制[19]是相對重要的環(huán)節(jié)。無論輸入序列的長短, SNM 模型使用軟注意力機制, 將所有編碼輸出匹配度和編碼輸出加入上下文相關(guān)度計算中, 并通過 Softmax 函數(shù)[20]將其歸一化。在每個解碼時間步中, 將編碼后的向量和前序解碼單元狀態(tài) Cell–1連接在一起。經(jīng)過式(5)和(6)的計算以及 Softmax 函數(shù)歸一化, 獲得編碼輸出向量之間的匹配度a:

    其中,為待學習的權(quán)重參數(shù)。

    單純使用軟注意力的計算方式雖然較常用, 但會導致在長句翻譯中, 單詞之間的相關(guān)性數(shù)值普遍相似, 差別不明顯。被偏置的相關(guān)性值將影響當前的解碼輸出, 導致生成目標代碼的準確率下降。因此, 我們參考其他注意力機制(如局部注意力機制), 如圖 3 所示。與軟注意力機制相比, 局部注意力使用滑窗限制上下文向量的計算范圍, 在長句上的表現(xiàn)明顯更好, 但單純使用局部注意力機制仍將導致在短輸入序列中語境理解能力較弱, 準確率相對較低。

    當≥時, 則使用局部注意力機制的滑動窗口來限制上下文向量的計算范圍, 并根據(jù)當前計算位置滑動窗口。對滑動窗口中所有編碼輸出匹配度和編碼輸出執(zhí)行加權(quán)和計算:

    通過限制上下文向量的計算范圍, 選擇性局部注意力機制減少了無關(guān)單詞向量對當前計算單詞向量的干擾。當前計算位置在滑動窗口的正中間, 意味著當前計算向量將與左右兩邊的向量共同參與上下文相關(guān)度計算。如果滑動窗口的下限小于位置1, 則從位置 1 開始。如果滑動窗口的上限大于序列的最后位置, 則以最后位置結(jié)束?;瑒哟翱诘拈L度=/2。我們經(jīng)過多次實驗證明, 當>12 時,值取 12 (即= 6)可達最優(yōu)效果; 當<12 時, 則值取14 (即=7)。

    2.4 包含前序信息的長短期記憶網(wǎng)絡(luò)

    在解碼部分, 為了將更多的前序解碼信息添加到網(wǎng)絡(luò)結(jié)構(gòu)中進行計算, 我們使用 PI-LSTM 作為解碼器計算單元, 如圖4所示。

    PI-LSTM 是基于樸素 LSTM 改進的計算單位。模型利用 PI-LSTM 對輸出進行二次更新, 從而減小在抽象語法樹中生成錯誤的分支的可能性。在每個時間步中, 將上下文向量 Context、前序 PI-LSTM解碼輸出–1和前序解碼單元狀態(tài) Cell–1輸入 PI-LSTM 中, 獲得當前解碼輸出和當前操作單元狀態(tài) Cell。以下公式中的是每個門控中實時變化的權(quán)重, 最佳參數(shù)通過模型訓練獲得。

    圖3 局部注意力工作示意圖

    圖4 PI-LSTM結(jié)構(gòu)圖

    首先, 將前序解碼輸出–1以及上下文向量Context輸入 Sigmoid 函數(shù), 計算遺忘門f和輸入門i:

    最后, 對遺忘門結(jié)果f、輸入門結(jié)果i和前序計算單元狀態(tài) Cell-1進行如下計算, 獲得當前操作單元狀態(tài) Cell的狀態(tài):

    此時, 我們需要確認最終輸出。將上下文向量Context輸入 Sigmoid 函數(shù)中, 計算輸出門結(jié)果o:

    將當前操作單元狀態(tài) Cell輸入 tanh 函數(shù)中, 與輸出門結(jié)果o相乘, 將結(jié)果作為當前 PI-LSTM 中樸素 LSTM 輸出的結(jié)果vanilla_t:

    我們設(shè)置前序信息包含的數(shù)量為 2。句首單詞往往起關(guān)鍵性的作用, 上述設(shè)置能夠最大程度地保留開頭兩個單詞的原有信息; 同時確保真實地反映其后文本與前文本的關(guān)系。前序信息包含的數(shù)量越大, 對其后文本的前序解碼信息負向加成越大。如果當前計算位置≤2, 解碼操作將僅使用樸素 LSTM作為計算單元, 即最終解碼的輸出等同于樸素LSTM 的輸出vanilla_t; 若>2, 解碼操作將使用完整的 PI-LSTM 作為計算單元, 即對樸素 LSTM 的輸出vanilla_t進行二次更新。

    在獲得樸素 LSTM 輸出vanilla_t的同時, 解碼器將前序解碼的輸出–2和上下文向量 Context送入LSTM 單元, 計算出前序補充信息P:

    使用權(quán)重pre對樸素 LSTM 的輸出vanilla_t進行二次更新:

    PI-LSTM 將更多的前序解碼信息集成到當前的解碼操作中, 使得最終輸出值能夠真實地反映當前單詞與先前文本的緊密關(guān)系。前序補充信息P可以糾正錯誤的語法結(jié)構(gòu), 并在預測語法樹生成中發(fā)揮積極的作用。

    3 實驗結(jié)果分析

    3.1 數(shù)據(jù)集

    本研究使用 HS (Hearthstone)[1]和 Django[22]數(shù)據(jù)集, 其輸入序列如表 1 所示。HS 和 Django 是代碼生成模型中常用的數(shù)據(jù)集。HS 數(shù)據(jù)集是實現(xiàn)紙牌游戲的 Python 類的集合, 其輸入是關(guān)于卡牌的半結(jié)構(gòu)化描述(如卡名、描述和費用等屬性), 序列長度相對較短。Django 數(shù)據(jù)集是一個關(guān)于 Django Web 框架的代碼行, 每行代碼都有自然語言描述的注釋, 比HS 具有更長的輸入語句, 且涵蓋更多的實際用例。

    3.2 評估標準

    我們選擇準確率、雙語評估研究指標(BLEU)和訓練時間作為評估標準。準確率是生成語句與目標語句中相同單詞數(shù)在句子長度中的占比。由于代碼生成是相對復雜的問題, 僅靠準確率并不能體現(xiàn)出模型的優(yōu)劣性, 所以采用雙語評估研究指標(BLEU)。BLEU 常用于機器翻譯領(lǐng)域, 用于衡量生成文本與目標文本的相似性, BLEU 比準確率更具說服力。本文實驗中, 使用 bleu-4[23]作為 BLEU 指標。bleu-4 廣泛用于大多數(shù)模型研究中, 例如 SMT模型[2]、ASN 模型[8]和 CNN 模型[9]。此外, 我們使用訓練時間作為評估指標的一部分(單位為分鐘)。

    表1 數(shù)據(jù)集Django和HS的輸入序列

    3.3 參數(shù)設(shè)置

    本文實驗在 GeForce1070-ti 顯卡和 Ubuntu18.04 LST 系統(tǒng)中進行, 使用 Adam 優(yōu)化器[24], 將可選注意力機制的值預設(shè)為 14。在 Django 數(shù)據(jù)集上, epoch 為 50; 在 HS數(shù)據(jù)集上, epoch 為 200。dropout為 0.2。編碼器 GRU 和解碼器 PI-LSTM 的隱藏層數(shù)均為 128。

    3.4 對比實驗

    實驗結(jié)果如表 2 所示。我們在同一數(shù)據(jù)集上選擇 11 個經(jīng)典模型進行比較: 1)基于 Seq2Seq 框架的神經(jīng)機器翻譯模型(NMT)模型[4]; 2)生成多層樹代碼邏輯形式的 Seq2Tree 模型及其改進模型; 3)Seq2- Tree-UNK[5]; 4)使用指針網(wǎng)絡(luò)的潛伏預測器網(wǎng)絡(luò)模型(LPN)[1]; 5)基于語法的 Seq2Seq 神經(jīng)網(wǎng)絡(luò)模型(SNM)[7]; 6)抽象語法網(wǎng)絡(luò)(ASN)模型及其改進; 7)ASN+SUPATT[8]; 8)基于語義分析和代碼生成的抽象解析器 TRANX[9]; 9)基于 Transformer[10]架構(gòu)并優(yōu)化捕獲長依賴性語句的 TreeGen[11]模型;10)基于 TreeGen 的 Self Attention 消融模型; 11)基于語法結(jié)構(gòu)的 CNN 解碼器模型[12]。

    從表 2 可以看出, 本文模型在 HS 數(shù)據(jù)集的準確率和 BLEU 得分優(yōu)于其他模型。與 SNM 模型相比, 本文模型的準確率提升 11.1%, BLEU 分數(shù)提升11.7 分, 并且比其他模型提升至少 7.9 分。與基于Transformer 的 TreeGen 模型相比, 本文模型的準確率稍遜一籌, 但雙語評估標準分數(shù)高出近 7 分。在Django 數(shù)據(jù)集上, 我們選取 5 個模型, 實驗結(jié)果與HS 數(shù)據(jù)集類似, 本文模型也顯示最佳效果, 準確率比 SNM 模型提高 4.1%, BLEU 分數(shù)提高 2.9 分, 且比解析器 TRANX 模型的 BLEU 分數(shù)提高 2 分。實驗結(jié)果證明, 選擇性局部注意力機制和 PI-LSTM 在提高準確率和 BLEU 方面起關(guān)鍵作用。與 SNM 模型使用的軟注意力機制相比, 選擇性局部注意力機制有效地提高了 HS 數(shù)據(jù)集上某些長句子的上下文緊密度, 使 BLEU 值得到進一步改善。PI-LSTM 通過對輸出的二次更新, 提高了基于 SNM 模型的準確率。當使用 PI-LSTM作為解碼器單元時, 與僅使用 LSTM 相比, 計算得到的向量包含更多的前導信息, 加強了單詞之間的聯(lián)系(尤其在 Django 數(shù)據(jù)集上的長序列中), 大大地提高了準確率和 BLEU。

    表2 本文模型與11個經(jīng)典模型的對比實驗結(jié)果

    說明: 粗體數(shù)字表示效果最佳, 下同。

    在訓練時間方面, 由于服務(wù)器的限制, 我們只有 SNM 模型的結(jié)果。在 HS 數(shù)據(jù)集上, 本文模型的訓練時間為 198 分鐘, 僅為 SNM 模型訓練時間(376分鐘)的一半; 在 Django 數(shù)據(jù)集上的訓練時間為297 分鐘, 為 SNM 訓練時間(341 分鐘)的 87%。GRU 單元簡化了 LSTM 中的門控運算, 減少計算時間, 且對精度的負面影響很小。

    3.5 消融實驗

    為了評估本文模型的效果, 我們進行消融實驗。根據(jù)模型的結(jié)構(gòu), 分別進行框架消融實驗和注意力消融實驗, 以便驗證模型各部分的必要性。

    3.5.1 框架消融實驗

    框架消融測試用于驗證 GRU 的有效性, 實驗中, 替換了編碼器和解碼器的計算單元, 結(jié)果如表3所示。

    用 BiLSTM 替換編碼器單元, 用樸素 LSTM 替換解碼器單元, 并將注意力機制(此處使用軟注意力)視為無關(guān)變量。鑒于 GRU 在絕大多數(shù)情況下僅減少計算時間, 對準確率的影響不大, 因此對GRU-LSTM 進行實驗意義不大??蚣芟趯嶒炛?3個模型分別為 BiLSTM-LSTM, BiLSTN-PI-LSTM和 GRU-PI-LSTM。

    與 BiLSTM-LSTM 相比, GRU-PI-LSTM 表現(xiàn)出更好的效果。在 HS 和 DJANGO 數(shù)據(jù)集上, 準確率提高 2.7%~5%, BLEU 得分提高 1.3%~1.5%。除GRU-PI-LSTM 的 BLEU 低于 BiLSTN-PI-LSTM 外, 其他評估標準也有所改進。HS 數(shù)據(jù)集的訓練時間減少 178 分鐘, 僅為 BiLSTM-LSTM 的一半, Django數(shù)據(jù)集則減少 42 分鐘。

    與 BiLSTM 相比, GRU 簡化了計算過程, 將訓練時間縮短約 50%。在使用包含前序信息的長短期記憶網(wǎng)絡(luò) PI-LSTM 后, GRU 對準確率的負面影響可被忽略, PI-LSTM 使更多的前序解碼信息參與解碼, 提高了準確率和 BLEU 得分。因此, GRU 和 PI- LSTM的組合顯示出相對好的效果。

    表3 消融實驗結(jié)果

    3.5.2 注意力消融實驗

    消融實驗用于驗證選擇性局部注意力機制對提高準確率和 BLEU 的積極影響。以本文模型為基礎(chǔ), 在注意力部分消融模型中, 將選擇性局部注意力替換為軟注意力, 該模型稱為 GRU-PI-LSTM-SOFT (等同于框架消融實驗中的 GRU-PI-LSTM)。實驗結(jié)果如表3 所示。

    從實驗結(jié)果看出, 與 GRU-PI-LSTM-SOFT 相比, 本文模型顯示出更好的效果, 準確率在 Django數(shù)據(jù)集上提高 1.4%, 在 HS 數(shù)據(jù)集上提高 6.1%; BLEU 分數(shù)在 Django 數(shù)據(jù)集上提高 0.6 分, 在 HS數(shù)據(jù)集上提高 5.6 分。注意力消融測試表明, 選擇性局部注意力機制的 BLEU 得分均超過 85, 有助于提高生成代碼的準確率, 還能使 HS 數(shù)據(jù)集上的長句子得到更好的理解以及輸出。注意力消融實驗中各模型的訓練時間相近, 證實注意力機制不對訓練時間產(chǎn)生影響。

    4 結(jié)語

    本文提出一種基于語法的代碼生成模型。該模型基于使用 Seq2Seq 框架、GRU 編碼器和 PI-LSTM解碼器的語法結(jié)構(gòu), 解決了在解碼中未充分包含預定信息的問題, 并糾正了注意力機制的偏重, 更適合訓練大規(guī)模的預處理數(shù)據(jù)。與其他 11 個模型和 3個消融模型相比, 本文模型在準確率、BLEU 評分和訓練時間方面具有很大的優(yōu)勢。本文模型有望實現(xiàn)自動編程和在線代碼糾正等需求任務(wù)并可用于智能交互式設(shè)備自更新和 AI 機器人等現(xiàn)實場景。在未來的工作中, 我們將嘗試使用雙向 GRU[25]作為編碼器計算單元, 希望可以通過緊密編碼, 再次提高模型的準確率和 BLEU 分數(shù)。

    致謝 研究工作得到華南師范大學計算機學院朱佳教授、湯庸教授以及廣州市大數(shù)據(jù)智能教育重點實驗室的支持, 表示衷心感謝。

    [1] Ling W, Grefenstette E, Hermann K M, et al. Latent predictor networks for code generation [EB/OL]. (2016–06–08)[2020–05–04]. https://arxiv.org/abs/160 3.06744

    [2] Brown P F, Cocke J, Della Pietra S A, et al. A statistical approach to machine translation. Computa-tional Linguistics, 1990, 16(2): 79–85

    [3] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks // Advances in Neural Information Processing Systems. Cambridge, MA, 2014: 3104–3112

    [4] Mandal S, Naskar S K. Natural language programing with automatic code generation towards solving addi-tion-subtraction word problems // Proceedings of the 14th International Conference on Natural Language Processing. Venice, 2017: 146–154

    [5] Hochreiter S, Schmidhuber J. Long short-term me-mory. Neural Computation, 1997, 9(8): 1735–1780

    [6] Dong L, Lapata M. Language to logical form with neural attention [EB/OL]. (2016–06–06) [2020–05–04]. https://arxiv.org/abs/1601.01280

    [7] Yin P, Neubig G. A syntactic neural model for general-purpose code generation [EB/OL]. (2017–04–06)[2020–05–04]. https://arxiv.org/abs/1704.01696

    [8] Rabinovich M, Stern M, Klein D. Abstract syntax networks for code generation and semantic parsing [EB/OL]. (2017–04–25)[2020–05–04]. https://arxiv.org/ abs/1704.07535

    [9] Yin P, Neubig G. TRANX: a transition-based neural abstract syntax parser for semantic parsing and code generation [EB/OL]. (2018–10–05) [2020–05–04]. https://arxiv.org/abs/1810.02720v1

    [10] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need // Advances in Neural Information Pro-cessing Systems. Red Hook, 2017: 5998–6008

    [11] Sun Z, Zhu Q, Xiong Y, et al. TreeGen: a tree-based transformer architecture for code generation // Asso-ciation for the Advancement of Artificial Intelli- gence. New York, 2020: 8984–8991

    [12] Sun Z, Zhu Q, Mou L, et al. A grammar-based structural CNN decoder for code generation // Pro-ceedings of the AAAI Conference on Artificial Intelligence. New York, 2019, 33: 7055–7062

    [13] Chung J, Gulcehre C, Cho K H, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling [EB/OL]. (2014–12–11)[2020–05–04]. https://arxiv.org/abs/1412.3555

    [14] Cho K, Van Merri?nboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation [EB/OL]. (2014–09–03)[2020–05–04]. https://arxiv.org/abs/1406. 1078

    [15] Schuster M, Paliwal K K. Bidirectional recurrent neural networks. IEEE Transactions on Signal Pro-cessing, 1997, 45(11): 2673–2681

    [16] Joshi A K, Levy L S, Takahashi M. Tree adjunct grammars. Journal of Computer and System Sciences, 1975, 10(1): 136–163

    [17] Schwarz C. Automatic syntactic analysis of free text. Journal of the American Society for Information Science, 1990, 41(6): 408–417

    [18] Saul L K, Jaakkola T, Jordan M I. Mean field theory for sigmoid belief networks. Journal of Artificial Intelligence Research, 1996, 4: 61–76

    [19] Luong M T, Pham H, Manning C D. Effective app-roaches to attention-based neural machine translation [EB/OL]. (2015–09–20)[2020–05–04]. https://arxiv. org/abs/1508.04025

    [20] Mikolov T, Kombrink S, Burget L, et al. Extensions of recurrent neural network language model // IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). Prague, 2011: 5528–5531

    [21] Xu K, Ba J, Kiros R, et al. Show, attend and tell: Neural image caption generation with visual attention // International Conference on Machine Learning. Lille, 2015: 2048–2057

    [22] Oda Y, Fudaba H, Neubig G, et al. Learning to generate pseudo-code from source code using statis-tical machine translation // 2015 30th IEEE/ ACM International Conference on Automated Software En-gineering (ASE). Lincoln, 2015: 574–584

    [23] Papineni K, Roukos S, Ward T, et al. BLEU: a method for automatic evaluation of machine translation // Proceedings of the 40th annual Meeting of the Asso-ciation for Computational Linguistics. Philadelphia, PA, 2002: 311–318

    [24] Kingma D P, Ba J. Adam: A method for stochastic optimization [EB/OL]. (2017–01–30) [2020–05–04]. https://arxiv.org/abs/1412.6980

    [25] Ortega-Bueno R, Rosso P, Pagola J E M. UO_UPV2at HAHA 2019: BiGRU neural network informed with linguistic features for humor recognition // Procee-dings of the Iberian Languages Evaluation Forum (IberLEF’19), Co-Located with the 35th Conference of the Spanish Society for Natural Language Proces-sing (SEPLN’19). Bilbao, 2019: 212–221

    Syntax-based Code Generation Model with Selective Local Attention and Pre-order Information LSTM Decoder

    LIANG Wanying1,2, ZHU Jia1,2,?, WU Zhijie1,2, YAN Zhiwen1,2, TANG Yong1,2, HUANG Jin1,2, YU Weihao1,2

    1. School of Computer, South China Normal University, Guangzhou 510631; 2. Guangzhou Key Laboratory of Big Data and Intelligent Education, Guangzhou 510631; ? Corresponding author, E-mail: jzhu@m.scnu.edu.cn

    This paper proposes a syntax-based code generation model with selective local attention and a pre-order information decoder based on long-short term memory (LSTM) neural network, which aims to enhance the relevance by changing the calculation scope of the context vector and fuse more pre-order information during the decoding process. Code generation experiments in two dataset Hearthstone and Django confirm the effectiveness of this model. Compared with state-of-the-art models, the proposed model not only achieves excellent accuracy and bilingual evaluation understudy score, but also minimizing computational effort.

    code generation; abstract syntactic tree; pre-order information LSTM; selective local attention

    10.13209/j.0479-8023.2020.086

    2020–06–08;

    2020–08–08

    國家自然科學基金(61877020, U1811263, 61772211)、廣東省重點領(lǐng)域研發(fā)計劃(2018B010109002)、廣州市科學技術(shù)計劃項目(2019 04010393)和廣州市大數(shù)據(jù)智能教育重點實驗室(201905010009)資助

    猜你喜歡
    代碼生成解碼器集上
    科學解碼器(一)
    科學解碼器(二)
    科學解碼器(三)
    Cookie-Cutter集上的Gibbs測度
    Lustre語言可信代碼生成器研究進展
    鏈完備偏序集上廣義向量均衡問題解映射的保序性
    線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍蜻蜓解碼器
    復扇形指標集上的分布混沌
    代碼生成技術(shù)在軟件開發(fā)中的應用
    電子世界(2016年15期)2016-08-29 02:14:28
    基于XML的代碼自動生成工具
    電子科技(2015年2期)2015-12-20 01:09:20
    广南县| 宁乡县| 汕尾市| 保定市| 若羌县| 伊宁县| 景洪市| 温宿县| 卢氏县| 浠水县| 呼图壁县| 山阳县| 太仓市| 隆德县| 泗阳县| 马边| 寿宁县| 科技| 云霄县| 宁武县| 衡东县| 额敏县| 台州市| 永登县| 东光县| 贺州市| 江达县| 兰西县| 安顺市| 卓资县| 丹江口市| 饶平县| 时尚| 三门峡市| 宝坻区| 武义县| 繁昌县| 峡江县| 四川省| 渭南市| 陆丰市|