Deep Graph Matching and Searching for Semantic Code Retrieval
arXiv:2010.12908 · doi:10.1145/3447571
Abstract
Code retrieval is to find the code snippet from a large corpus of source code repositories that highly matches the query of natural language description. Recent work mainly uses natural language processing techniques to process both query texts (i.e., human natural language) and code snippets (i.e., machine programming language), however neglecting the deep structured features of query texts and source codes, both of which contain rich semantic information. In this paper, we propose an end-to-end deep graph matching and searching (DGMS) model based on graph neural networks for the task of semantic code retrieval. To this end, we first represent both natural language query texts and programming language code snippets with the unified graph-structured data, and then use the proposed graph matching and searching model to retrieve the best matching code snippet. In particular, DGMS not only captures more structural information for individual query texts or code snippets but also learns the fine-grained similarity between them by cross-attention based semantic matching operations. We evaluate the proposed DGMS model on two public code retrieval datasets with two representative programming languages (i.e., Java and Python). Experiment results demonstrate that DGMS significantly outperforms state-of-the-art baseline models by a large margin on both datasets. Moreover, our extensive ablation studies systematically investigate and illustrate the impact of each part of DGMS.
Accepted by ACM Transactions on Knowledge Discovery from Data (ACM TKDD)
References in corpus (6)
- PyTorch: An Imperative Style, High-Performance Deep Learning Library
- Fast Graph Representation Learning with PyTorch Geometric
- CoaCor: Code Annotation for Code Retrieval with Reinforcement Learning
- A Compare-Aggregate Model for Matching Text Sequences
- Neural Code Search Evaluation Dataset
- KerGM: Kernelized Graph Matching
Cited by in corpus (9)
- Adversarial Attacks against Windows PE Malware Detection: A Survey of the State-of-the-Art
- Deep Learning-based Software Engineering: Progress, Challenges, and Opportunities
- Code Search: A Survey of Techniques for Finding Code
- Survey of Code Search Based on Deep Learning
- Approaching Code Search for Python as a Translation Retrieval Problem with Dual Encoders
- Is a Single Model Enough? MuCoS: A Multi-Model Ensemble Learning for Semantic Code Search
- PyTorrent: A Python Library Corpus for Large-scale Language Models
- Deep Code Search with Naming-Agnostic Contrastive Multi-View Learning
- Constructing Contrastive samples via Summarization for Text Classification with limited annotations