[发明专利]一种基于LSTM的非API函数实参推荐方法有效
申请号: | 201711202702.8 | 申请日: | 2017-11-27 |
公开(公告)号: | CN107832047B | 公开(公告)日: | 2018-11-27 |
发明(设计)人: | 李光杰;刘文美;刘辉 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F8/33 | 分类号: | G06F8/33;G06N3/04;G06N3/08 |
代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 唐华 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 lstm api 函数 实参 推荐 方法 | ||
一种基于LSTM的非API函数实参推荐方法,属于代码补全以及代码推荐技术领域。本方法首先从开源软件中提取非API函数调用的实参及上下文信息,然后将上下文转变为段落向量输入到LSTM神经网络,将实参转变为段落向量作为预期输出训练神经网络,训练后得到一个神经网络模型。当用户进行新的函数调用时,本方法自动提取函数调用的上下文信息并转变为向量输入到训练好的神经网络模型中,模型的输出结果就是本方法推荐本次函数调用使用的实参。与现有基于相似度、基于k近邻和基于局部性特点的推荐方法相比,本方法在相同数据集下正确推荐的实参个数以及能够推荐的实参数量高于现有方法。
技术领域
本发明涉及一种基于LSTM的非API函数实参推荐方法,属于代码补全以及代码推荐技术领域。
背景技术
代码补全是指当程序员敲入部分字符时IDE自动预测剩余代码的功能。如果代码补全功能可以正确预测用户要输入的语句,则可以提高编码效率。代码补全技术应用广泛,是Eclipse软件中最经常被程序员使用的10个命令之一。
函数调用时的实参推荐是一种特殊的代码推荐。当程序员进行函数调用时,IDE工具会自动检查可选的参数,并推荐程序员最可能使用的参数或者参数列表。然而,大部分主流的IDEs工具都是根据候选实参和形参的类型进行参数推荐的,当类型兼容的候选参数很多时,IDEs工具就会生成一个长长的候选参数列表,程序员从中选择正确的参数就需要很长的时间。
为了提高参数推荐的效果,有人提出利用k近邻算法为API函数推荐参数。这种方法基于被调用API函数的最近k次调用信息进行参数推荐;有人利用API参数推荐的局部性特点对基于k紧邻的API参数推荐方法进行了改进,这种方法利用函数调用之前的几行代码信息对API函数调用的参数进行推荐;也有人提出基于统计语言模型进行API函数及参数的推荐,这种方法利用API函数调用的顺序及相关参数进行推荐。
虽然现有方法能够很好地为流行的API函数推荐参数,但是这些方法在进行参数推荐时都依赖于被推荐方法的丰富历史调用信息。而对于非API函数或不流行的API函数而言,由于这些方法被调用的次数有限,调用历史信息不丰富,因此现有方法很难对非API进行参数推荐。另一方面,非API函数调用或不流行的API调用又非常常见。我们对85个流行的开源C项目进行统计分析,结果发现49%的方法调用是非API调用,48%的API调用仅被调用一次。这说明对非API函数进行参数推荐又是迫切必要的。
本发明主要针对非API函数调用中的实参进行推荐。我们做了一项调查问卷,发现开发人员不用查看方法的被调用历史信息,仅根据被调用方法的声明就可以从候选参数列表中选出正确的参数。因此我们假设基于大量的开源项目真实数据,深度学习技术也可以学习从候选参数列表中选择正确参数的通用规则,因为神经网络和深度学习技术的特点就是从大量数据中选择有用的特征自动构建从输入到输出的复杂映射关系。本发明选用LSTM技术进行参数推荐,因为LSTM是最有效的深度学习模型之一,这种模型尤其适用于自然语言处理。
发明内容
本发明的目的在于针对现有参数推荐方法中对非API函数参数推荐效果较差的现状,提出了一种基于LSTM的非API函数实参推荐方法。
本发明一种基于LSTM的非API函数实参推荐方法,通过以下步骤实现:
步骤1:根据开源软件的非API函数调用信息,提取函数调用的实参和上下文信息并存储到文件或数据库中;
其中,开源软件的非API函数为开源代码中所有不能找到函数定义的函数;实参包括函数调用中参数列表中的变量或函数名称;上下文信息包括:形参、函数名称和候选参数,候选参数又是指在函数调用的地方所有可以作为实参且类型兼容的变量和函数调用;
其中,实参中的变量、函数名称以及上下文信息中的形参、函数名称和候选参数统称为标识符;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711202702.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据生成方法及装置
- 下一篇:可编辑节拍的实现方法及装置