[发明专利]一种基于共同注意力表征学习的代码搜索方法有效
| 申请号: | 202010267172.0 | 申请日: | 2020-04-07 |
| 公开(公告)号: | CN111488137B | 公开(公告)日: | 2023-04-18 |
| 发明(设计)人: | 徐玲;帅鉴航;鄢萌;刘超;雷晏;徐洲;何健军;张文燕;李灿;王备 | 申请(专利权)人: | 重庆大学 |
| 主分类号: | G06F8/20 | 分类号: | G06F8/20;G06F16/903;G06N3/0464;G06N3/0442;G06N3/045;G06N3/047;G06N3/084 |
| 代理公司: | 重庆晟轩知识产权代理事务所(普通合伙) 50238 | 代理人: | 王海凤 |
| 地址: | 400044 *** | 国省代码: | 重庆;50 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 共同 注意力 表征 学习 代码 搜索 方法 | ||
1.一种基于共同注意力表征学习的代码搜索方法,其特征在于,包括如下步骤:
S100:取每个代码特征和该代码所对应的描述,每个代码都包含三个特征:方法名,API序列和词语;构建CARLCS-CNN模型,所述CARLCS-CNN模型包括采用三个独立的CNN神经网络嵌入方法名、词语和描述,用LSTM网络嵌入API序列得到相应的特征矩阵;
所述CNN神经网络嵌入方法名得到特征矩阵M的过程如下:
S110:提取方法名中的单词序列,令mi∈Rk为与方法名序列中第i个单词相对应的k维单词向量,长度为n的序列表示为式(1.1):
其中是拼接运算符;
S111:从单词mi:i+h-1的窗口生成特征ci
ci=f(WM*mi:i+h-1+b) (1.2);
其中b∈R是偏差项,*是卷积算子,f是非线性函数,该过滤器WM应用于方法名序列mi:h,m2:h+1,...,mn-h+1:n中每个可能的单词窗口,以生成特征图:
Mh=[c1,c2,...,cn-h+1] (1.3);
S112:使用WM∈Rk×h三种类型的过滤器,三个过滤器窗口大小h在2到4之间变化,每种类型的过滤器的数量为d,通过所述三个过滤器实现卷积运算,以提取三个独特的特征图,分别为Mh1,Mh2,Mh3∈Rd×(n-h+1),然后,将三个特征图拼接为一个统一的特征图得到特征矩阵M:
所述CNN神经网络嵌入词语得到特征矩阵T的过程如下:
一组长度为n的k维单词被连接为t1:n,使用三种类型的过滤器WT∈Rk×h,其窗口大小h从2到4进行卷积,每种类型的过滤器的数量为d,将三种类型的过滤器应用于每个单词的窗口,得到三个对应的特征图Th1,Th2,Th3∈Rd×(n-h+1),将三个特征图拼接为一个统一的特征图得到特征矩阵T中:
ci=f(WT*ti:i+h-1+b) (2.1);
Th=[c1,c2,...,cn-h+1] (2.2);
所述LSTM网络嵌入API序列得到特征矩阵A的过程如下:
S130:ai∈Rk是API序列中第i个词的k维词向量,长度为n的API序列拼接为a1:n,隐藏状态hi∈Rd为时间步长i的表示,可以通过双向LSTM获得,隐藏状态的表示如下所示:
S131:时间步骤i的最终隐藏状态hi是正向LSTM和反向LSTM的拼接:
S132:将所有输出的隐藏状态连接到特征矩阵A∈Rd×n来嵌入API序列:
其中n是隐藏状态的数量;
所述CNN神经网络嵌入描述得到特征矩阵的过程如下:
di∈Rk是与描述中的第i个词相对应的k维词向量,长度描述表示为d1:n,使用三种类型的过滤器WD∈Rk×h,其窗口大小h从2到4进行卷积,每种类型的过滤器的数量为d,将三种类型的过滤器应用于每个单词的窗口,得到三个对应的特征图Dh1,Dh2,Dh3∈Rd×(n-h+1),将三个特征图拼接为一个统一的特征图得到特征矩阵D:
ci=f(WD*di:i+h-1+b) (4.1);
Dh=[c1,c2,...,cn-h+1] (4.2);
S200:然后将方法名,API序列和词语对应的特征矩阵合并为一个矩阵作为每个代码的特征矩阵;
S300:通过引入经神经网络学习的参数矩阵,计算代码和与其对应的描述的相关矩阵,并沿着相关矩阵行和列进行最大池化操作,得到用于代码和其描述的共同注意力表征;
S400:将大量相互匹配的代码和描述作为CARLCS-CNN模型的输入,通过损失函数,采用梯度下降法同步更新所述三个独立的CNN神经网络和LSTM网络的参数,得到优化的CARLCS-CNN模型;
S500:代码搜索预测,采用S100的方法将大规模代码库中代码嵌入优化的CARLCS-CNN模型中,将大规模代码库中的每个代码均由一个向量c表示,研发人员将待预测的代码输入优化的CARLCS-CNN模型中,得到待预测向量p,计算待预测向量p与每个向量c之间的相关度,将相关度排在前k个的向量c所对应的代码作为推荐列表输出。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆大学,未经重庆大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010267172.0/1.html,转载请声明来源钻瓜专利网。





