Lyra: A Benchmark for Turducken-Style Code Generation
This work addresses a gap in code generation for real-world software development, where mixed-language programming is common, but it is incremental as it builds on existing neural models.
The paper tackles the problem of generating turducken-style code, where a declarative language (SQL) is embedded in an imperative language (Python), by introducing the Lyra benchmark with 2,000 annotated programs. The result shows that GPT-style models achieve the best performance with AST exact matching accuracies of 24% for Chinese comments and 25.5% for English comments.
Recently, neural techniques have been used to generate source code automatically. While promising for declarative languages, these approaches achieve much poorer performance on datasets for imperative languages. Since a declarative language is typically embedded in an imperative language (i.e., the turducken-style programming) in real-world software development, the promising results on declarative languages can hardly lead to significant reduction of manual software development efforts. In this paper, we define a new code generation task: given a natural language comment, this task aims to generate a program in a base imperative language with an embedded declarative language. To our knowledge, this is the first turducken-style code generation task. For this task, we present Lyra: a dataset in Python with embedded SQL. This dataset contains 2,000 carefully annotated database manipulation programs from real-world projects. Each program is paired with both a Chinese comment and an English comment. In our experiment, we adopted Transformer, BERT-style, and GPT-style models as baselines. In the best setting, the generation performance of GPT-style models is better than others, where the AST exact matching accuracy is 24% and 25.5% when using Chinese and English comments, respectively. Therefore, we believe that Lyra provides a new challenge for code generation. Yet, overcoming this challenge may significantly boost the applicability of code generation techniques for real-world software development.