code summarization through retrieval
234771677
Self Supervised Contrastive Learning for Code Retrieval and Summarization via Semantic Preserving Transformations
We propose Corder, a self supervised contrastive learning framework for source code model. Corder is designed to alleviate the need of labeled data for code retrieval and code summarization tasks. The pre trained model of Corder can be used in two ways: (1) it can produce vector representation of code which can be applied to code retrieval tasks that do not have labeled data; (2) it can be used in a fine tuning process for tasks that might still require label data such as code summarization. The key innovation is that we train the source code model by asking it to recognize similar and dissimilar code snippets through acontrastive learning objective. To do so, we use a set of semantic preserving transformation operators to generate code snippets that are syntactically diverse but semantically equivalent. Through extensive experiments, we have shown that the code models pretrained by Corder substantially outperform the other baselines for code to code retrieval, text to code retrieval, and code to text summarization tasks.
SIGIR
Nghi D Q Bui Yijun Yu Lingxiao Jiang
211163834
Retrieval based Neural Source Code Summarization
Source code summarization aims to automatically generate concise summaries of source code in natural language texts, in order to help developers better understand and maintain source code. Traditional work generates a source code summary by utilizing information retrieval techniques, which select terms from original source code or adapt summaries of similar code snippets. Recent studies adopt Neural Machine Translation techniques and generate summaries from code snippets using encoder decoder neural networks. The neural based approaches prefer the high frequency words in the corpus and have trouble with the low frequency ones. In this paper, we propose a retrieval based neural source code summarization approach where we enhance the neural model with the most similar code snippets retrieved from the training set. Our approach can take advantages of both neural and retrieval based techniques. Specifically, we first train an attentional encoder decoder model based on the code snippets and the summaries in the training set; Second, given one input code snippet for testing, we retrieve its two most similar code snippets in the training set from the aspects of syntax and semantics, respectively; Third, we encode the input and two retrieved code snippets, and predict the summary by fusing them during decoding. We conduct extensive experiments to evaluate our approach and the experimental results show that our proposed approach can improve the state of the art methods.
2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE)
Jian Zhang Xu Wang Hongyu Zhang Hailong Sun Xudong Liu
211259251
Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning
Code summarization generates brief natural language description given a source code snippet, while code retrieval fetches relevant source code given a natural language query. Since both tasks aim to model the association between natural language and programming language, recent studies have combined these two tasks to improve their performance. However, researchers have yet been able to effectively leverage the intrinsic connection between the two tasks as they train these tasks in a separate or pipeline manner, which means their performance can not be well balanced. In this paper, we propose a novel end to end model for the two tasks by introducing an additional code generation task. More specifically, we explicitly exploit the probabilistic correlation between code summarization and code generation with dual learning, and utilize the two encoders for code summarization and code generation to train the code retrieval task via multi task learning. We have carried out extensive experiments on an existing dataset of SQL and Python, and results show that our model can significantly improve the results of the code retrieval task over the state of art models, as well as achieve competitive performance in terms of BLEU score for the code summarization task.
WWW
Wei Ye Rui Xie Jinglei Zhang Tianxiang Hu Xiaoyin Wang Shikun Zhang
234487049
Retrieval Augmented Generation for Code Summarization via Hybrid GNN
Source code summarization aims to generate natural language summaries from structured code snippets for better understanding code functionalities. However, automatic code summarization is challenging due to the complexity of the source code and the language gap between the source code and natural language summaries. Most previous approaches either rely on retrieval based (which can take advantage of similar examples seen from the retrieval database, but have low generalization performance) or generation based methods (which have better generalization performance, but cannot take advantage of similar examples) This paper proposes a novel retrieval augmented mechanism to combine the benefits of both worlds. Furthermore, to mitigate the limitation of Graph Neural Networks (GNNs) on capturing global graph structure information of source code, we propose a novel attention based dynamic graph to complement the static graph representation of the source code, and design a hybrid message passing GNN for capturing both the local and global structural information. To evaluate the proposed approach, we release a new challenging benchmark, crawled from diversified large scale open source C projects (total 95k+ unique functions in the dataset) Our method achieves the state of the art performance, improving existing methods by 1.42, 2.44 and 1.29 in terms of BLEU 4, ROUGE L and METEOR.
ICLR
Shangqing Liu Xiaofei Xie J Siow
52068576
A Neural Framework for Retrieval and Summarization of Source Code
Code retrieval and summarization are two tasks often employed by software developers to reuse code that spreads over online repositories. In this paper, we present a neural framework that allows bidirectional mapping between source code and natural language to improve these two tasks. Our framework, BVAE, is designed to have two Variational AutoEncoders (VAEs) to model bimodal data: C VAE for source code and L VAE for natural language. Both VAEs are trained jointly to reconstruct their input as much as possible with regularization that captures the closeness between the latent variables of code and description. BVAE could learn semantic vector representations for both code and description and generate completely new descriptions for arbitrary code snippets. We design two instance models of BVAE for retrieval and summarization tasks respectively and evaluate their performance on a benchmark which involves two programming languages: C# and SQL. Experiments demonstrate BVAE's potential on the two tasks.
2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)
Qingying Chen Minghui Zhou
210118029
Code Summarization with Abstract Syntax Tree
Code summarization, which provides a high level description of the function implemented by code, plays a vital role in software maintenance and code retrieval. Traditional approaches focus on retrieving similar code snippets to generate summaries, and recently researchers pay increasing attention to leverage deep learning approaches, especially the encoder decoder framework. Approaches based on encoder decoder suffer from two drawbacks: (a) Lack of summarization in functionality level; (b) Code snippets are always too long (more than ten words) regular encoders perform poorly. In this paper, we propose a novel code representation with the help of Abstract Syntax Trees, which could describe the functionality of code snippets and shortens the length of inputs. Based on our proposed code representation, we develop Generative Task, which aims to generate summary sentences of code snippets. Experiments on large scale real world industrial Java projects indicate that our approaches are effective and outperform the state of the art approaches in code summarization.
ICONIP
Qiuyuan Chen Han Hu Zhaoyi Liu
52069701
Improving Automatic Source Code Summarization via Deep Reinforcement Learning
Code summarization provides a high level natural language description of the function performed by code, as it can benefit the software maintenance, code categorization and retrieval. To the best of our knowledge, most state of the art approaches follow an encoder decoder framework which encodes the code into a hidden space and then decode it into natural language space, suffering from two major drawbacks: a) Their encoders only consider the sequential content of code, ignoring the tree structure which is also critical for the task of code summarization; b) Their decoders are typically trained to predict the next word by maximizing the likelihood of next ground truth word with previous ground truth word given. However, it is expected to generate the entire sequence from scratch at test time. This discrepancy can cause an exposure bias issue, making the learnt decoder suboptimal. In this paper, we incorporate an abstract syntax tree structure as well as sequential content of code snippets into a deep reinforcement learning framework (i.e. actor critic network) The actor network provides the confidence of predicting the next word according to current state. On the other hand, the critic network evaluates the reward value of all possible extensions of the current state and can provide global guidance for explorations. We employ an advantage reward composed of BLEU metric to train both networks. Comprehensive experiments on a real world dataset show the effectiveness of our proposed model when compared with some state of the art methods.
2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)
Yao Wan Zhou Zhao Min Yang Guandong Xu Haochao Ying Jian Wu Philip S Yu
51926976
code2seq: Generating Sequences from Structured Representations of Code
The ability to generate natural language sequences from source code snippets has a variety of applications such as code summarization, documentation, and retrieval. Sequence to sequence (seq2seq) models, adopted from neural machine translation (NMT) have achieved state of the art performance on these tasks by treating source code as a sequence of tokens. We present \rm \scriptsize CODE2SEQ} an alternative approach that leverages the syntactic structure of programming languages to better encode source code. Our model represents a code snippet as the set of compositional paths in its abstract syntax tree (AST) and uses attention to select the relevant paths while decoding. We demonstrate the effectiveness of our approach for two tasks, two programming languages, and four datasets of up to $16$M examples. Our model significantly outperforms previous models that were specifically designed for programming languages, as well as state of the art NMT models. An interactive online demo of our model is available at this http URL Our code, data and trained models are available at this http URL
ICLR
Uri Alon Omer Levy Eran Yahav
218570919
CAiRE COVID: A Question Answering and Multi Document Summarization System for COVID 19 Research
To address the need for refined information in COVID 19 pandemic, we propose a deep learning based system that uses state of the art natural language processing (NLP) question answering (QA) techniques combined with summarization for mining the available scientific literature. Our system leverages the Information Retrieval (IR) system and QA models to extract relevant snippets from the existing literature given a query. Fluent summaries are also provided to help understand the content in a more efficient way. In this paper, we describe our CAiRE COVID system architecture and methodology for building the system. To bootstrap the further study, the code for our system is available at this https URL
ArXiv
Dan Su Yan Xu Tiezheng Yu Farhad Bin Siddique Elham J Barezi Pascale Fung
15836170
Code fragment summarization
Current research in software engineering has mostly focused on the retrieval accuracy aspect but little on the presentation aspect of code examples, e.g. how code examples are presented in a result page. We investigate the feasibility of summarizing code examples for better presenting a code example. Our algorithm based on machine learning could approximate summaries in an oracle manually generated by humans with a precision of 0.71. This result is promising as summaries with this level of precision achieved the same level of agreement as human annotators with each other.
ESEC/FSE 2013
Annie T T Ying Martin P Robillard