Skip to main content
QUICK REVIEW

[论文解读] DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning

Xiaodong Gu, Hongyu Zhang|arXiv (Cornell University)|Apr 25, 2017
Software Engineering Research参考文献 11被引用 17
一句话总结

DeepAM 是一种深度学习系统,通过在大规模代码语料库上使用多模态序列到序列学习,学习 API 序列的联合语义嵌入,从而实现编程语言之间的自动 API 迁移。它通过挖掘 808,488 个 API 映射(比 StaMiner 多 8 倍以上)显著优于最先进方法,同时保持高准确率(88.2% 正确性)并实现 72.4% 的对齐准确率,超越传统基于信息检索(IR)的方法。

ABSTRACT

Computer programs written in one language are often required to be ported to other languages to support multiple devices and environments. When programs use language specific APIs (Application Programming Interfaces), it is very challenging to migrate these APIs to the corresponding APIs written in other languages. Existing approaches mine API mappings from projects that have corresponding versions in two languages. They rely on the sparse availability of bilingual projects, thus producing a limited number of API mappings. In this paper, we propose an intelligent system called DeepAM for automatically mining API mappings from a large-scale code corpus without bilingual projects. The key component of DeepAM is based on the multimodal sequence to sequence learning architecture that aims to learn joint semantic representations of bilingual API sequences from big source code data. Experimental results indicate that DeepAM significantly increases the accuracy of API mappings as well as the number of API mappings, when compared with the state-of-the-art approaches.

研究动机与目标

  • 为解决双语项目稀缺的问题,该问题限制了现有迁移工具中可用 API 映射的数量。
  • 通过自动化发现跨语言的等价 API 序列,减少手动定义迁移规则的工作量。
  • 通过从大规模带注释代码语料库中学习深度语义表示,提升 API 映射的准确率和覆盖范围。
  • 实现在无需成对的源语言和目标语言项目的情况下,挖掘 API 映射。

提出的方法

  • 从包含 1000 万个代码片段的大规模语料库中,提取带自然语言描述的 API 序列。
  • 应用多模态序列到序列学习模型,将源语言和目标语言的 API 序列嵌入到一个共享的高维语义空间中。
  • 利用这些联合嵌入,通过测量向量相似性,对跨语言中语义相似的 API 序列进行对齐。
  • 利用对齐后的序列,通过统计机器翻译技术提取通用的 API 映射。
  • 采用深层神经网络架构,联合建模 API 序列及其文本描述,以学习比传统浅层模型更丰富的语义表示。
  • 通过人工检查 500 对随机采样的序列,验证对齐质量,并与基于文本相似度的 IR 基线方法进行性能对比。

实验结果

研究问题

  • RQ1在不依赖双语项目的情况下,深度学习模型能否有效学习跨编程语言的 API 序列联合语义表示?
  • RQ2与传统基于信息检索(IR)的方法相比,多模态序列到序列学习在对齐等价 API 序列方面的性能如何?
  • RQ3与最先进方法相比,该方法在挖掘的 API 映射数量方面具有多大的可扩展性?
  • RQ4对于更长、更复杂的 API 序列,该模型是否仍能保持高准确率?

主要发现

  • DeepAM 挖掘出 808,488 个 API 映射,是 StaMiner 的 100,825 个映射的 8 倍以上,显著提升了覆盖范围。
  • DeepAM 映射的正确率达到 88.2%,略高于 StaMiner 的 87.1%,表明在更大规模下仍保持相当或更优的质量。
  • DeepAM 的对齐准确率为 72.4%,远超基于 IR 的基线方法的 40.8%,证明了深度语义嵌入的有效性。
  • DeepAM 在处理较长 API 序列(如 'copy file' 和 'play audio')时表现尤为出色,这些序列对传统方法而言具有挑战性。
  • 该系统能够从大规模代码语料库中学习,而无需依赖双语项目,从而在真实代码迁移场景中展现出更广泛的应用潜力和可扩展性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。