国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2021-02-02 02:35梁婉瑩朱佳吳志杰顏志文湯庸黃晉余偉浩
關鍵詞:解碼器集上解碼

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

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

梁婉瑩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)絡解碼器, 通過更改上下文向量的計算范圍, 并在解碼過程中融合更多的前序信息, 增強單詞之間的相關性。在 Hearthstone 和 Django 兩個數(shù)據(jù)集上進行的代碼生成實驗證實了所提模型的有效性, 與最新的模型相比, 所提模型不僅表現(xiàn)出更出色的準確率和雙語評估學習成績, 還可以使計算工作量最小化。

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

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

上述模型的雙語評估研究指標(BLEU)和準確率上逐漸得到提高, 但在代碼生成方面仍存在以下缺陷: 首先, 傳統(tǒng)的序列到序列(Seq2Seq)模型(如LPN 模型[1]和 SNM 模型[7])的解碼器包含的結構信息較少, 可能導致前序信息對當前運算的影響不足, 使得當前向量在抽象語法樹中位置選擇錯誤; 其次, 單純使用軟注意力(即將所有編碼器輸出向量置入上下文向量的計算中), 會導致輸入序列的先驗語義向量被后驗語義向量覆蓋, 缺乏對輸出語法與模型特征[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ù)。在注意力機制部分, 為了增強上下文之間的相關性, 我們使用選擇性局部注意力機制, 可以根據(jù)預設或輸入語句的長度采用不同的注意力機制, 從而減少無關單詞對當前單詞權重計算的干擾。與單純使用軟注意力機制相比, 選擇性局部注意力可以更好地適應不同大小的數(shù)據(jù)集。在解碼器部分, 為了包含更多的結構信息, 我們使用基于樸素 LSTM 改進的 PI-LSTM 作為解碼器計算單元。通過對輸出值的二次更新, PI-LSTM 提升了前序信息在解碼運算中的參與度, 更好地修正了解碼運算, 減少了模型在抽象語法樹中生成錯誤分支的可能性。

1 代碼生成

1.1 SNM模型

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

1.2 抽象語法樹

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

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

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

2.1 底層語法驅動

代碼生成模型多數(shù)以抽象語法樹(AST)為基礎。在計算機科學和語言學中, 句法分析(或語法解析)[17]是一種對由一系列單詞組成的輸入文本的語法結構進行分析和確定的過程。底層語法驅動程序包含一組生產(chǎn)規(guī)則, 并通過固有的幾個生產(chǎn)規(guī)則, 生成頭節(jié)點和多個子節(jié)點, 從而生成相應的樹結構, 如圖 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指底層語法驅動程序遍歷語法樹的時間步

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

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

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

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

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

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

2.3 選擇性局部注意力

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

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

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

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

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

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

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

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

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

圖4 PI-LSTM結構圖

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

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

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

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

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

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

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

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

3 實驗結果分析

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

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

3.2 評估標準

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

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

3.3 參數(shù)設置

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

3.4 對比實驗

實驗結果如表 2 所示。我們在同一數(shù)據(jù)集上選擇 11 個經(jīng)典模型進行比較: 1)基于 Seq2Seq 框架的神經(jīng)機器翻譯模型(NMT)模型[4]; 2)生成多層樹代碼邏輯形式的 Seq2Tree 模型及其改進模型; 3)Seq2- Tree-UNK[5]; 4)使用指針網(wǎng)絡的潛伏預測器網(wǎng)絡模型(LPN)[1]; 5)基于語法的 Seq2Seq 神經(jīng)網(wǎng)絡模型(SNM)[7]; 6)抽象語法網(wǎng)絡(ASN)模型及其改進; 7)ASN+SUPATT[8]; 8)基于語義分析和代碼生成的抽象解析器 TRANX[9]; 9)基于 Transformer[10]架構并優(yōu)化捕獲長依賴性語句的 TreeGen[11]模型;10)基于 TreeGen 的 Self Attention 消融模型; 11)基于語法結構的 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 個模型, 實驗結果與HS 數(shù)據(jù)集類似, 本文模型也顯示最佳效果, 準確率比 SNM 模型提高 4.1%, BLEU 分數(shù)提高 2.9 分, 且比解析器 TRANX 模型的 BLEU 分數(shù)提高 2 分。實驗結果證明, 選擇性局部注意力機制和 PI-LSTM 在提高準確率和 BLEU 方面起關鍵作用。與 SNM 模型使用的軟注意力機制相比, 選擇性局部注意力機制有效地提高了 HS 數(shù)據(jù)集上某些長句子的上下文緊密度, 使 BLEU 值得到進一步改善。PI-LSTM 通過對輸出的二次更新, 提高了基于 SNM 模型的準確率。當使用 PI-LSTM作為解碼器單元時, 與僅使用 LSTM 相比, 計算得到的向量包含更多的前導信息, 加強了單詞之間的聯(lián)系(尤其在 Django 數(shù)據(jù)集上的長序列中), 大大地提高了準確率和 BLEU。

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

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

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

3.5 消融實驗

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

3.5.1 框架消融實驗

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

用 BiLSTM 替換編碼器單元, 用樸素 LSTM 替換解碼器單元, 并將注意力機制(此處使用軟注意力)視為無關變量。鑒于 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)絡 PI-LSTM 后, GRU 對準確率的負面影響可被忽略, PI-LSTM 使更多的前序解碼信息參與解碼, 提高了準確率和 BLEU 得分。因此, GRU 和 PI- LSTM的組合顯示出相對好的效果。

表3 消融實驗結果

3.5.2 注意力消融實驗

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

從實驗結果看出, 與 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 結語

本文提出一種基于語法的代碼生成模型。該模型基于使用 Seq2Seq 框架、GRU 編碼器和 PI-LSTM解碼器的語法結構, 解決了在解碼中未充分包含預定信息的問題, 并糾正了注意力機制的偏重, 更適合訓練大規(guī)模的預處理數(shù)據(jù)。與其他 11 個模型和 3個消融模型相比, 本文模型在準確率、BLEU 評分和訓練時間方面具有很大的優(yōu)勢。本文模型有望實現(xiàn)自動編程和在線代碼糾正等需求任務并可用于智能交互式設備自更新和 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)、廣東省重點領域研發(fā)計劃(2018B010109002)、廣州市科學技術計劃項目(2019 04010393)和廣州市大數(shù)據(jù)智能教育重點實驗室(201905010009)資助

猜你喜歡
解碼器集上解碼
基于雙空間模糊鄰域相似關系的多標記特征選擇
關于短文本匹配的泛化性和遷移性的研究分析
解碼 四十五度仰望天空
文化解碼
基于Android環(huán)境下的數(shù)據(jù)包校驗技術分析
文化 解碼
文明 解碼
淺談SCOPUS解碼器IRD—2600系列常用操作及故障處理
做一個二進制解碼器
因人而異調整播放設置
色达县| 昌乐县| 衡南县| 兴文县| 泗洪县| 磐石市| 肥乡县| 汨罗市| 横山县| 泰顺县| 全州县| 吴旗县| 镇沅| 营口市| 嵊州市| 旌德县| 天长市| 深圳市| 阳朔县| 泸西县| 巴青县| 贺州市| 上蔡县| 长沙县| 抚顺县| 深泽县| 金川县| 天台县| 宜兴市| 哈密市| 水城县| 嘉善县| 砚山县| 伊春市| 越西县| 长子县| 调兵山市| 汤阴县| 仁化县| 微山县| 庄河市|