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的统一低维表示技术](https://image.cha138.com/20210412/2326cff355a8404da8e7960ba52e39e7.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/351526c8ada549d995db6e2e4132da95.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/d872d7c4a67d45528b5073729e7f80d6.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/18e29efd66fc4a669766e829a709fa03.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/af4f3a46d167494cb50351bf4508d1d6.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/8b4e97eb0e104cda934f08231572f220.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/124475342ec84d42b913549594a3d755.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/1215abeaaee2455eaa43677a73accf03.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/ac112bab3f534018b77583ca09ea62b3.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/3ff02d658e8c49f7990cc553db43d361.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/605d0fd6dccc435fbad13d7ca68ecfbc.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/a69e432a8b494fcaa28bec4e5da3c7f3.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/8ff7b8aace8b4136bc727b51f9714928.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/ff93dab27d6f492bbf07dc982d3b7447.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/a3821abef2364c5e830a2d22ef7723fc.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/34e7b292bb54481fbe5a14b1670e4a57.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/4ca8517cfdaf4e9f93551d98d0d335ba.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/e42e0741dd88410da9b04d78def6e5af.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/9f7824ca9c814832af7a634ab2e586c0.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/5d9be25bc71642c3bd81d78924e0684d.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/afe40d995be841d280acbffa204e3b2f.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/0d8afa2f03a843b38b81f0412a095123.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/a692cec7ff404343a3824893744c6adb.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/513c8c9cb7b94f5ab5499d6e5caf5518.jpg)
![Word2API: 自然语言单词与程序API的统一低维表示技术](https://image.cha138.com/20210412/a76909c9f0b44420bed26092afd2acd2.jpg)
CodeWisdom
欢迎关注CodeWisdom,Codewisdom平台由复旦大学软件工程实验室运营,提供智能化软件开发平台及线上沙龙相关资讯,关注可了解更多智能化软件开发的最新消息~
以上是关于Word2API: 自然语言单词与程序API的统一低维表示技术的主要内容,如果未能解决你的问题,请参考以下文章
VueJS 异步检测语言与 Yandex Translate API
为跨 Android、IOS 和 Web 的 expo 应用程序统一 localhost dev api 服务器访问?