TreeGen: A Tree-Based Transformer Architecture for Code Generation

Zeyu Sun, Qihao Zhu, Yingfei Xiong, Yican Sun, Lili Mou +1 more
11/22/2019
cs.LGcs.SE

Official code: zysszy/TreeGen (92 stars, MIT, last commit 2022-05-31).

Abstract

A code generation system generates programming language code based on an input natural language description. State-of-the-art approaches rely on neural networks for code generation. However, these code generators suffer from two problems. One is the long dependency problem, where a code element often depends on another far-away code element. A variable reference, for example, depends on its definition, which may appear quite a few lines before. The other problem is structure modeling, as programs contain rich structural information. In this paper, we propose a novel tree-based neural architecture, TreeGen, for code generation. TreeGen uses the attention mechanism of Transformers to alleviate the long-dependency problem, and introduces a novel AST reader (encoder) to incorporate grammar rules and AST structures into the network. We evaluated TreeGen on a Python benchmark, HearthStone, and two semantic parsing benchmarks, ATIS and GEO. TreeGen outperformed the previous state-of-the-art approach by 4.5 percentage points on HearthStone, and achieved the best accuracy among neural network-based approaches on ATIS (89.1%) and GEO (89.6%). We also conducted an ablation test to better understand each component of our model.

View on arXivView PDF

Code Implementations(1)

zysszy/TreeGenOfficial100%
MIT

A Tree-Based Transformer Architecture for Code Generation. (AAAI'20)

9227PythonNov 20, 20194 years agoMIT

Similar Papers

Cite this paper

@article{sun2019treegen,
  title  = {TreeGen: A Tree-Based Transformer Architecture for Code Generation},
  author = {Zeyu Sun and Qihao Zhu and Yingfei Xiong and Yican Sun and Lili Mou and Lu Zhang},
  year   = {2019},
  eprint = {1911.09983},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1911.09983}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1911.09983.svg)](https://codeofpaper.com/paper/1911.09983)

Discussion