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

Posted CodeWisdom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word2API: 自然语言单词与程序API的统一低维表示技术相关的知识,希望对你有一定的参考价值。

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



   研究作者

该工作于2018年10月被TSE录用

作者:

李晓晨,大连理工大学博士生

江贺,大连理工大学教授

Yasutaka Kamei,日本九州大学副教授

陈信,杭州电子科技大学讲师



   研究背景

应用程序接口(API,Application Programming Interfaces)的学习是软件开发者掌握软件开发技能的必经之路,为此软件工程领域研发了丰富的工具来帮助软件开发者检索API信息以提升学习效率,如通过自然语言搜索API序列,根据技术提问搜索相关的API文档。这些工具往往采用文本匹配的方式来根据自然语言中的单词查找API或者API文档,然而由于单词和API之间与生俱来的语义差异,这些工具的效果往往差强人意。我们可以用下面两个例子理解语义差异的概念:



01

在API序列搜索任务上,开发者利用查询词“generate md5 hash code”搜索API序列,相关的(Java)API可能是“MessageDigest#getInstance”或“MessageDigest#digest”。但是这些API并不包含“md5“或者”hash code“等单词,因此会导致基于文本匹配的信息检索模型返回错误的API序列。


02

在API文档链接任务上,开发者可能会在类似于Stack Overflow的问答论坛上询问技术问题,如“How to (conduct a) sanity check (on) a date in Java”。在回答中,参与者推荐利用API “Calendar#setLenient”解决该问题。但是根据文本匹配却很难发现“sanity check (on) a date”和”Calendar#setLenient”之间的关系,甚至提问者也在抱怨“(it is) not so obvious to use lenient calendar”。 (https://stackoverflow.com/questions/226910/)


CON

由此,自然语言中的单词和程序API的语义差异可见一斑



   研究问题

为了消除这种语义差异,一个根本的方法就是正确的评估单词和API的语义相关性,例如正确度量“sanity check (on) a date”和”Calendar#setLenient”之间的相似性。为此我们提出Word2API方法。它利用GitHub上超过3000万的Java源代码文件,分析在每个代码段内代码注释中的单词和方法体中的API之间的语义关系,结合词嵌入(word embedding)技术,建立单词和API的向量表示,即

将每个单词和API表示为同一语义空间下的低维定长向量,进而利用向量的相似性度量不同单词和API之间的语义相关性。



   研究贡献

01

我们提出Word2API方法解决自然语言中单词和程序中API的统一低维表示问题。Word2API可以将单词和API转换为统一语义空间上的低维向量。

02

利用Word2API方法,我们生成126,853个单词和API的向量,这些向量有效的消除了单词和API之间的语义差异(向量词典可访问https://github.com/softw-lab/word2api获得)。

03

我们将生成的低维向量用于解决API序列推荐和API文档链接两个典型软件工程任务,研究发现Word2API方法生成的向量可以有效提升解决典型软件工程任务的效果。


   研究概要

   学术报告PPT如下:


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


CodeWisdom

欢迎关注CodeWisdom,Codewisdom平台由复旦大学软件工程实验室运营,提供智能化软件开发平台及线上沙龙相关资讯,关注可了解更多智能化软件开发的最新消息~


以上是关于Word2API: 自然语言单词与程序API的统一低维表示技术的主要内容,如果未能解决你的问题,请参考以下文章

英语单词复数形式的Java API

VueJS 异步检测语言与 Yandex Translate API

微保API网关的探索与实践

为跨 Android、IOS 和 Web 的 expo 应用程序统一 localhost dev api 服务器访问?

程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

mpvue 开发小程序接口数据统一管理