[发明专利]一种基于深度学习的交互式API代码片段推荐方法在审
| 申请号: | 202010727140.4 | 申请日: | 2020-07-26 |
| 公开(公告)号: | CN111966818A | 公开(公告)日: | 2020-11-20 |
| 发明(设计)人: | 彭鑫;陈驰;赵文耘 | 申请(专利权)人: | 复旦大学 |
| 主分类号: | G06F16/335 | 分类号: | G06F16/335;G06F16/35;G06F16/34;G06N3/08;G06F8/33 |
| 代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;陆尤 |
| 地址: | 200433 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 深度 学习 交互式 api 代码 片段 推荐 方法 | ||
本发明属于软件工程技术领域,具体为一种基于深度学习的交互式API代码片段推荐方法。本发明通过对大量包含目标API的源代码进行解析来构造大量的训练样本;使用深度学习模型中的Encoder‑Decoder模型框架实例化深度学习网络,包括Seq2Seq模型、Transformer模型或Graph2Seq模型,并用训练样本训练深度学习模型,以用于预测推荐;根据深度学习模型的推荐结果,通过后处理方式来优化推荐结果;所述后处理方式包括:启发式束搜索、聚类以及交互式意图选择。本发明为软件开发人员提供基于代码上下文的智能化多行API代码推荐,在开发人员已经编写好的代码的基础上为其推荐多行API代码,从而辅助开发人员完成当前代码的开发。
技术领域
本发明属于软件工程技术领域,具体涉及软件开发中的交互式API代码片段推荐方法。
背景技术
在软件开发任务中,软件开发人员依赖API(Application ProgrammingInterface,即应用编程接口)代码(即API代码片段)(如JDK、Android)来实现所需要的软件特性。然而,API数量庞大并且每个API中又包含数量众多的方法调用和成员变量,并且API代码存在一定的使用模式和规律(如API的使用组合、调用顺序以及相配合的控制结构(如条件判断、循环等)等),这使得开发人员难以熟知所有的API代码使用模式。因此,如何在当前的代码上下文中使用合适的API代码片段来完成当前正在开发的功能特性经常成为开发人员遇到的难题。
针对这一问题的一个有效解决方案是,在软件集成开发环境等开发工具中提供智能化多行API代码推荐能力。这种智能化API推荐应当通过对开发人员正在编写的代码上下文的分析,解析当前代码上下文的语义并推测开发人员的意图,进而推荐API代码片段。
当前存在两种捕获API使用模式和规律并进而进行多行API代码推荐的方法,一种是基于挖掘算法挖掘显式的API代码使用模式,另一种是基于机器学习模型(或深度学习模型)学习得到隐式的API代码使用模式。本发明采用基于深度学习模型的方法学习得到隐式的API代码使用模式,并对通过对深度学习模型预测推荐结果的后处理来优化推荐结果,从而实现更有效,更友好的多行API代码推荐。
发明内容
本发明的目的是为软件开发人员提供基于代码上下文的智能化多行交互式API代码片段推荐方法,以便在开发人员已经编写好的代码的基础上,为其推荐能够完成当前开发任务并适合于当前代码上下文的API代码片段(A包括API方法调用、成员变量访问、控制语句(if、while等)以及变量和对象实例声明等)。
本发明提供的交互式API代码片段推荐方法,是基于深度学习的,具体是通过对大量包含目标API(如JDK、Android中的API)的源代码(开源代码或企业代码)进行解析来构造大量的训练样本,在此基础上使用深度学习模型中的Encoder-Decoder模型(如Seq2Seq模型,Transformer模型,Graph2Seq模型等(见参考文献1-4)),并用训练样本训练深度学习模型,以用于预测推荐;根据深度学习模型的推荐结果,通过后处理方式来优化推荐结果。所述的后处理方式,包括:启发式束搜索,聚类,以及交互式意图选择;其流程如图1所示。
本发明提供的基于深度学习的交互式API代码片段推荐方法,具体步骤为:
(一)构建训练样本;
包括以下子步骤:
(1)以方法为最小单位,对代码库中每一个源代码文件中的每一个方法进行解析并进行抽象(抽象即忽略API中的参数名,变量名和对象名,只保留API的完整签名)得到相应的代码表示,如Seq2Seq模型及Transformer模型接收代码的序列化表示,Graph2Seq模型接收代码的图结构表示;
(2)对于每一个代码表示,挖取出部分API代码,将剩余的API代码与挖取出的API代码构成一个训练样本。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010727140.4/2.html,转载请声明来源钻瓜专利网。





