[发明专利]一种基于深度学习的交互式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 代码 片段 推荐 方法 | ||
1.一种基于深度学习的交互式API代码片段推荐方法,其特征在于,通过对大量包含目标API的源代码进行解析来构造大量的训练样本;在此基础上使用深度学习模型中的Encoder-Decoder模型框架实例化Encoder和Decoder中的深度学习网络,包括Seq2Seq模型、Transformer模型或Graph2Seq模型,并用训练样本训练深度学习模型,以用于预测推荐;根据深度学习模型的推荐结果,通过后处理方式来优化推荐结果;所述后处理方式,包括:启发式束搜索、聚类以及交互式意图选择;具体步骤为:
(一)构建训练样本;包括以下子步骤:
(1)以方法为最小单位,对代码库中每一个源代码文件中的每一个方法进行解析并进行抽象得到相应的代码表示;对于Seq2Seq模型及Transformer模型,接收代码为序列化表示,对于Graph2Seq模型,接收代码为图结构表示;
(2)对于每一个代码表示,挖取出部分API代码,将剩余的API代码与挖取出的API代码构成一个训练样本;
(二)训练深度学习模型即Encoder-Decoder模型;
将所有训练样本输入深度学习模型进行训练,得到训练好的深度学习模型;
(三)利用训练好的深度学习模型,进行预测即解码,推荐API代码片段;具体步骤为:
(1)用户输入带有窟窿的程序;
(2)将用户输入解析深度学习模型所需要的代码表示;
(3)运行深度学习模型进行预测,即解码;
(4)利用启发式束搜索优化推荐结果;
(5)对推荐结果进行聚类;
(6)对聚类结果进行概要生成;
(7)可视化最终结果,供开发人员进行交互式选择。
2.根据权利要求1所述的基于深度学习的交互式API代码片段推荐方法,其特征在于,所述启发式束搜索,是在束搜索中加入启发式规则,对深度学习模型预测的结果进行筛选和过滤,从而实现结果优化并推荐多个API代码片段;所述启发式规则如下:
(1)在每一步解码时,如若当前步解码得到的API不满足Java中的语法规则,那么过滤掉此API;
(2)在每一步解码时,如若当前步解码得到的API中的所涉及的对象或变量在当前代码上下文中没有声明过,那么过滤掉此API;
(3)如果若候选结果集中存在某一个API代码片段包含另一个API代码片段,那么保留概率高的API代码片段。
3.根据权利要求2所述的基于深度学习的交互式API代码片段推荐方法,其特征在于,所述聚类,是设计一种聚类方法对启发式搜索的候选结果集中的API代码片段进行聚类;该聚类方法利用深度学习模型中训练得到的API向量,将候选结果集中的每一个API代码片段表示为向量,具体的表示方式为:将API代码片段中的所有API的向量求和再求平均,从而计算两两API代码片段之间的余弦相似度,记为语义相似度;此外,计算候选集中的API代码片段两两之间的文本相似度;若文本相似度为0,则两个API代码片段之间的相似度为0;若文本相似度不为0;则两个API代码片段之间的相似度为语义相似度与文本相似度的和的平均;从而两个API代码片段之间的距离为1-两个API代码片段之间相似度,进而通过层次聚类算法进行聚类。
4.根据权利要求3所述的基于深度学习的交互式API代码片段推荐方法,其特征在于,所述交互式意图选择,是对于聚类后的API代码片段,设计一种概要生成方法,为每一类中的API代码片段生成概要来反映该类中API代码片段的意图,从而让开发人员根据概要进行交互式意图选择,进而选择相应的API代码片段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010727140.4/1.html,转载请声明来源钻瓜专利网。





