基于注意力机制的Java API序列推荐方法

作者:张睿峰; 王鹏程; 吴鸣; 徐云*
来源:计算机系统应用, 2019, 28(09): 209-214.
DOI:10.15888/j.cnki.csa.007043

摘要

软件开发者在软件代码中如何正确使用API和API序列(APIs),是一个需要学习的困难过程.于是面对不熟悉函数库或像Github那样包含大量APIs的代码仓库,需要一些推荐工具或系统辅助开发者的APIs使用.目前我们所知最好的方法 DeepApi能较好理解用户的查询语义,但基于RNN的模型存在问题:(1)没有考虑每个单词的权重;(2)将输入序列压缩为一个固定长度的向量,损失了较多有用信息;(3)句子过长会使关键信息丢失.为此,本文使用了一种基于注意力机制的模型,可以区分每个单词的重要程度并解决长查询输入所产生的长距离依赖问题.我们从Github上面爬取了649个Java开源项目,经过处理得到有114 364对注释-API序列的训练集.实验结果表明我们的方法比DeepApi方法对于BLUE指标在Top1、Top5、Top10上均能提升约20%以上.

全文