[发明专利]一种基于LSTM的非API函数实参推荐方法有效
申请号: | 201711202702.8 | 申请日: | 2017-11-27 |
公开(公告)号: | CN107832047B | 公开(公告)日: | 2018-11-27 |
发明(设计)人: | 李光杰;刘文美;刘辉 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F8/33 | 分类号: | G06F8/33;G06N3/04;G06N3/08 |
代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 唐华 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于LSTM的非API函数实参推荐方法,属于代码补全以及代码推荐技术领域。本方法首先从开源软件中提取非API函数调用的实参及上下文信息,然后将上下文转变为段落向量输入到LSTM神经网络,将实参转变为段落向量作为预期输出训练神经网络,训练后得到一个神经网络模型。当用户进行新的函数调用时,本方法自动提取函数调用的上下文信息并转变为向量输入到训练好的神经网络模型中,模型的输出结果就是本方法推荐本次函数调用使用的实参。与现有基于相似度、基于k近邻和基于局部性特点的推荐方法相比,本方法在相同数据集下正确推荐的实参个数以及能够推荐的实参数量高于现有方法。 | ||
搜索关键词: | 一种 基于 lstm api 函数 实参 推荐 方法 | ||
【主权项】:
1.一种基于LSTM的非API函数实参推荐方法,其特征在于:通过以下步骤实现:步骤1:根据开源软件的非API函数调用信息,提取函数调用的实参和上下文信息并存储到文件或数据库中;其中,开源软件的非API函数为开源代码中所有不能找到函数定义的函数;实参包括函数调用中参数列表中的变量或函数名称;上下文信息包括:形参、函数名称和候选参数,候选参数又是指在函数调用的地方所有可以作为实参且类型兼容的变量和函数调用;其中,实参中的变量、函数名称以及上下文信息中的形参、函数名称和候选参数统称为标识符;具体利用CDT工具提取开源软件的非API函数调用的实参Arg及上下文信息Context=;步骤2:将步骤1提取出来的实参和上下文信息转换为向量表示的训练数据;其中,实参转换为的向量表示的训练数据称为实参向量,上下文信息转换为向量表示的训练数据称为上下文向量,具体为:步骤2.1将每个实参argName分割为一系列的单词,每个单词ti映射为一个向量,再将argName映射为向量argVec;步骤2.2将每条上下文信息中形参parName分割为一系列的单词,每个单词pi映射为一个向量,再将parName映射为向量parVec;步骤2.3将每条上下文信息中函数名称mName分割为一系列的单词,每个单词mi映射为一个向量,再将mName映射为向量mVec;步骤2.4将每条上下文信息中每个候选参数分割为一系列的单词,每个单词ci映射为一个向量,再将候选参数映射为向量cdVec;其中,步骤2.2至步骤2.4的向量组合成上下文向量CxtVec=;其中,所述方法要求考虑标识符中单词的顺序和语义关系,规定使用定长的段落向量表示;其中,段落向量的长度根据实参和上下文信息确定;步骤3:初始化神经网络,将步骤2转换的向量表示的训练数据输入神经网络训练,得到网络模型model,具体为:步骤3.1初始化一个包括输入层InputLayer、隐含层HiddenLayer和输出层OutputLayer的LSTM神经网络;步骤3.2将步骤2中得到的上下文向量CxtVec设定为步骤3.1构建网络的输入;步骤3.3将步骤2中得到的实参向量argVec设定为步骤3.2网络输入的输出基准;步骤3.4开始网络训练,训练后得到一个网络模型model;步骤4:依据步骤1思路提取新的非API函数调用的上下文信息TContext;具体为:当开发人员输入新的非API函数的调用名称时,利用CDT工具自动提取函数调用的上下文信息;步骤5:将步骤4得到的上下文信息TContext转换为向量表示的待推荐数据TCxtVec;步骤6:将步骤5得到的待推荐数据TCxtVec输入步骤3中得到的网络模型model中,网络模型将自动输出一个向量Rec作为待推荐数据TCxtVec的推荐实参。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711202702.8/,转载请声明来源钻瓜专利网。
- 上一篇:数据生成方法及装置
- 下一篇:可编辑节拍的实现方法及装置