面向语义源代码检索的多模态注意力网络学习
软件工程
2019-10-01 v1 编程语言
摘要
代码检索技术与工具在帮助软件开发人员根据用户输入查询从可用开源仓库中检索已有代码片段方面发挥着关键作用。尽管已有诸多改进代码检索效能的努力,但在回答复杂查询时,仍存在两个主要问题阻碍其从大规模仓库中准确检索出令人满意的代码片段。首先,现有方法仅考虑源代码的浅层特征(如方法名与代码词元),而忽略了源代码的结构化特征(如抽象语法树(AST)与控制流图(CFG)),后者包含丰富且定义良好的源代码语义。其次,尽管基于深度学习的方法在源代码表示上表现良好,但其缺乏可解释性,难以解释检索结果,且几乎无法理解源代码的哪些特征对最终结果贡献更大。为应对上述两个问题,本文提出 MMAN,一种用于语义源代码检索的新型多模态注意力网络(Multi-Modal Attention Network)。我们构建了全面的源代码多模态表示以表征其非结构化与结构化特征:用 LSTM 处理代码的顺序词元,用 Tree-LSTM 处理代码的 AST,用 GGNN(门控图神经网络)处理代码的 CFG。此外,应用多模态注意力融合层为源代码各模态的不同部分分配权重,并将其整合为单一的混合表示。在大规模真实数据集上的详尽实验与分析表明,我们所提模型能准确检索代码片段,并优于当前最优(SOTA)方法。
引用
@article{arxiv.1909.13516,
title = {Multi-Modal Attention Network Learning for Semantic Source Code Retrieval},
author = {Yao Wan and Jingdong Shu and Yulei Sui and Guandong Xu and Zhou Zhao and Jian Wu and Philip S. Yu},
journal= {arXiv preprint arXiv:1909.13516},
year = {2019}
}