Word2API: 自然语言单词与程序API的统一低维表示技术

图灵汇官网

Word2API:自然语言单词与程序API的统一低维表示技术

研究作者

该研究于2018年10月被《IEEE Transactions on Software Engineering》(TSE)录用。作者包括: - 李晓晨:大连理工大学博士生 - 江贺:大连理工大学教授 - Yasutaka Kamei:日本九州大学副教授 - 陈信:杭州电子科技大学讲师

研究背景

学习应用程序接口(API)是软件开发者掌握软件开发技能的关键步骤。为了帮助开发者更高效地检索API信息,软件工程领域开发了多种工具,比如通过自然语言搜索API序列或根据技术问题搜索相关的API文档。然而,由于单词和API之间存在固有的语义差异,这些工具的效果往往不尽如人意。以下两个例子可以更好地理解这种语义差异:

示例

示例1 在API序列搜索任务中,开发者使用查询词“generate md5 hash code”来搜索API序列。虽然相关的API可能包括“MessageDigest#getInstance”或“MessageDigest#digest”,但这些API并未直接包含“md5”或“hash code”等关键词,导致基于文本匹配的检索模型容易出错。

示例2 在API文档链接任务中,开发者在Stack Overflow等问答平台上询问“如何在Java中执行日期的合理性检查?”回答者建议使用“Calendar#setLenient”来解决问题。然而,基于文本匹配很难发现“sanity check (on) a date”与“Calendar#setLenient”之间的关联,甚至提问者也认为“使用lenient日历不太直观”。

研究问题

为了克服这种语义差异,关键在于准确评估单词和API之间的语义相关性,例如衡量“sanity check (on) a date”与“Calendar#setLenient”之间的相似性。为此,我们提出了Word2API方法。

研究贡献

  1. Word2API方法:该方法利用GitHub上的超过3000万份Java源代码文件,分析代码注释中的单词与方法体中的API之间的语义关系,结合词嵌入技术,构建单词和API的低维向量表示,从而评估它们之间的语义相似性。
  2. 向量生成:通过Word2API方法,我们生成了126,853个单词和API的向量,这些向量有效地消除了单词和API之间的语义差异。这些向量可以在https://github.com/softw-lab/word2api下载。
  3. 应用效果:我们使用这些低维向量解决了API序列推荐和API文档链接两个典型的软件工程任务。研究发现,Word2API方法生成的向量显著提升了这些任务的效果。

研究概要

学术报告PPT如下: [附上PPT链接]

CodeWisdom

[附上图片链接] 欢迎关注CodeWisdom,该平台由复旦大学软件工程实验室运营,提供智能化软件开发平台及线上沙龙相关资讯。关注可了解智能化软件开发的最新动态。

本文来源: 图灵汇 文章作者: 黑马良驹