The Good, the Bad, and the Missing: Neural Code Generation for Machine Learning Tasks
Open Access
- 22 December 2023
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 33 (2) , 1-24
Abstract
Machine learning (ML) has been increasingly used in a variety of domains, while solving ML programming tasks poses unique challenges due to the fundamental difference in the nature and the construct of general programming tasks, especially for developers who do not have ML backgrounds. Automatic code generation that produces a code snippet from a natural language description can be a promising technique to accelerate ML programming tasks. In recent years, although many deep learning-based neural code generation models have been proposed with high accuracy, the fact that most of them are mainly evaluated on general programming tasks calls into question their effectiveness and usefulness in ML programming tasks. In this article, we set out to investigate the effectiveness of existing neural code generation models on ML programming tasks. For our analysis, we select six state-of-the-art neural code generation models and evaluate their performance on four widely used ML libraries, with newly created 83K pairs of natural-language described ML programming tasks. Our empirical study reveals some good, bad, and missing aspects of neural code generation models on ML tasks, with a few major ones listed below. ( Good ) Neural code generation models perform significantly better on ML tasks than on non-ML tasks with an average difference of 10.6 points in BLEU-4 scores. ( Bad ) More than 80% of the generated code is semantically incorrect. ( Bad ) Code generation models do not have significance in improving developers’ completion time. ( Good ) The generated code can help developers write correct code by providing developers with clues for using correct APIs. ( Missing ) The observation from our user study reveals the missing aspects of code generation for ML tasks, e.g., decomposing code generation for divide-and-conquer into API sequence identification and API usage generation.Keywords
All Related Versions
Funding Information
- Natural Sciences and Engineering Research Council of Canada (NSERC) and the National Natural Science Foundation of China (62272445 and 62332001)
This publication has 32 references indexed in Scilit:
- Learning to mine aligned code and natural language pairs from stack overflow2018
- StaQC2018
- A Syntactic Neural Model for General-Purpose Code Generation2017
- Abstract Syntax Networks for Code Generation and Semantic Parsing2017
- Latent Predictor Networks for Code Generation2016
- Learning to Generate Pseudo-Code from Source Code Using Statistical Machine Translation2015
- Searching connected API subgraph via text phrases2012
- Portfolio2011
- Using AUC and accuracy in evaluating learning algorithmsIEEE Transactions on Knowledge and Data Engineering, 2005
- Individual Comparisons by Ranking MethodsBiometrics Bulletin, 1945