论文部分内容阅读
随着软件开发需求的不断增加,可复用软件代码的种类日益增多、规模日益增大,如何帮助软件开发人员为当前编程任务快速、准确地找到合适的应用程序编程接口(Application Programming Interface,API)进行复用,是智能软件工程的一个重要研究方向。现有的API推荐方法大多仅从用户使用的角度进行间接推荐(如采用词向量技术在Stack Overflow等软件开发讨论社区中查找在语义上与编程任务相似的历史问题,进行API推荐),未能有效利用API文档本身的语义信息,且词向量模型无法表示句子级别的深层次语义信息,因此API推荐效果仍有待进一步提高。针对上述问题,本文提出了一种融合Stack Overflow和API文档信息的API混合推荐方法。该方法通过融合API实体的文档信息以及改进问题查询相似度计算方法来改进API推荐准确率。给定编程任务,该方法首先收集Stack Overflow问题的标题语义信息和标签信息,通过Sentence-BERT模型和标签预测模型计算得到编程任务与问题的相似度,查找与编程任务相似的历史问题,获取相似历史问题中的候选API,并计算候选API的问题查询相似度,获得基于历史问题相似度计算的API推荐列表;同时利用API文档中API实体的描述文本语义信息和API实体的概念信息,通过Sentence-BERT模型和API知识图谱计算API实体的文档相似度,获得基于API文档相似度计算的API推荐列表;最后,计算推荐列表中所有API的综合得分,并进行排序和API推荐。在上述工作的基础上,本文实现了融合Stack Overflow和API文档信息的API混合推荐工具—HAPIR。为了验证HAPIR的有效性,本文选取了486个Java核心API相关的编程任务作为查询数据开展实验研究。实验结果表明,HAPIR可有效提高API推荐准确率,且具有较高的用户查询效率。与BIKER相比,HAPIR在方法级别的API推荐任务上,MRR和MAP分别提高31.97%和29.27%;与Deep API相比,HAPIR在方法级别的API推荐任务上,MRR和MAP分别提高108.95%和111.54%。