Learning Python Code Suggestion with a Sparse Pointer Network
arXiv:1611.08307
Abstract
To enhance developer productivity, all modern integrated development environments (IDEs) include code suggestion functionality that proposes likely next tokens at the cursor. While current IDEs work well for statically-typed languages, their reliance on type annotations means that they do not provide the same level of support for dynamic programming languages as for statically-typed languages. Moreover, suggestion engines in modern IDEs do not propose expressions or multi-statement idiomatic code. Recent work has shown that language models can improve code suggestion systems by learning from software repositories. This paper introduces a neural language model with a sparse pointer network aimed at capturing very long-range dependencies. We release a large-scale code suggestion corpus of 41M lines of Python code crawled from GitHub. On this corpus, we found standard neural language models to perform well at suggesting local phenomena, but struggle to refer to identifiers that are introduced many tokens in the past. By augmenting a neural language model with a pointer network specialized in referring to predefined classes of identifiers, we obtain a much lower perplexity and a 5 percentage points increase in accuracy for code suggestion compared to an LSTM baseline. In fact, this increase in code suggestion accuracy is due to a 13 times more accurate prediction of identifiers. Furthermore, a qualitative analysis shows this model indeed captures interesting long-range dependencies, like referring to a class member defined over 60 tokens in the past.
Under review as a conference paper at ICLR 2017
Cited by in corpus (16)
- Generating Focussed Molecule Libraries for Drug Discovery with Recurrent Neural Networks
- Language-Agnostic Representation Learning of Source Code from Structure and Context
- Unsupervised Translation of Programming Languages
- A parallel corpus of Python functions and documentation strings for automated code documentation and code generation
- Semantic Code Repair using Neuro-Symbolic Transformation Networks
- Sequence Model Design for Code Completion in the Modern IDE
- SmartPaste: Learning to Adapt Source Code
- Neural Networks for Modeling Source Code Edits
- Towards Full-line Code Completion with Neural Language Models
- Multi-task Learning based Pre-trained Language Model for Code Completion
- Program Classification Using Gated Graph Attention Neural Network for Online Programming Service
- Language Modelling for Source Code with Transformer-XL
- Learning Semantic Vector Representations of Source Code via a Siamese Neural Network
- Borrowing from Similar Code: A Deep Learning NLP-Based Approach for Log Statement Automation
- Modeling Programs Hierarchically with Stack-Augmented LSTM
- Modular Tree Network for Source Code Representation Learning