首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于细粒度共注意机制的语义代码搜索方法 

申请/专利权人:重庆大学

申请日:2021-12-20

公开(公告)日:2024-06-25

公开(公告)号:CN114237621B

主分类号:G06F8/41

分类号:G06F8/41

优先权:

专利状态码:有效-授权

法律状态:2024.06.25#授权;2022.04.12#实质审查的生效;2022.03.25#公开

摘要:本发明涉及一种基于细粒度共注意机制的语义代码搜索方法,包括如下步骤:首先,将代码特征即方法名、API序列、令牌和语句树序列和查询特征即令牌序列输入到一个注意力机制中,来获得代码查询特征矩阵;然后,将获得的代码查询特征矩阵分别输入四种细粒度的共注意机制中,得到每个代码特征与查询之间的细粒度相关性;最后,相互依赖的特征向量分别融合成最终的代码查询向量,并计算两个代表性向量之间的余弦相似性,将余弦相似性降序排列,得到最终推荐的N个查询结果。使用本方法可以增强对代码查询特征向量的信息使用效率,提高代码查询最终结果的准确性。

主权项:1.一种基于细粒度共注意机制的语义代码搜索方法,其特征在于:包括如下步骤:S1:构建代码搜索模型,该代码搜索模型由五部分堆叠而成:该五部分分别是数据预处理模块、特征表示网络模块、细粒度共注意力网络模块、语义特征融合网络模块和余弦相似度计算模块;S2:选取公开Java数据集,该数据集包括若干个代码查询对,每个代码查询对包括一个Java代码片段和相应的自然语言查询令牌;S3:数据预处理模块采用现有特征提取方法将数据集中所有的代码片段和查询令牌分别进行处理得到代码特征和查询特征,其中代码特征包括:方法名特征、API序列特征、代码令牌特征和语句树序列特征;S4:特征表示网络模块将方法名特征、API序列特征、代码令牌特征和语句树序列特征分别经过WordEmbedding词嵌入技术处理后对应的得到方法名特征嵌入矩阵MethodName、API序列特征嵌入矩阵Api、代码令牌特征嵌入矩阵Token和语句树序列特征嵌入矩阵StatementTree;方法名特征嵌入矩阵:MethodName=m1,m2,mi,...,mp,其中,mi表示方法名中第i个词向量;API序列特征嵌入矩阵:Api=a1,a2,ai,...,aq,ai表示API序列中第i个API词向量;代码令牌特征嵌入矩阵:Token=t1,t2,ti,...,Tn,ti表示代码令牌中第i个代码词向量;语句树序列特征嵌入矩阵:StatementTree=staTree1,staTree2,staTreei,...,staTrees,staTreei表示第i个语句树向量;将方法名特征嵌入矩阵MethodName、API序列特征嵌入矩阵Api、代码令牌特征嵌入矩阵Token和语句树序列特征嵌入矩阵StatementTree输入到注意力网络中,得到对应的特征矩阵,用M表示方法名特征矩阵、A表示API特征矩阵、T表示代码令牌特征矩阵、staTree表示语句树序列特征矩阵和Q表示查询特征矩阵,Q={q1,q2,qi,...,qo},qi表示查询中第i个查询词向量;S5:细粒度共注意力网络模块将构成代码特征矩阵的M、A、T、staTree分别和查询特征矩阵Q通过细粒度共注意机制进行对齐;S6:语义特征融合网络模块计算代码向量VC和查询向量VQ;S7:余弦相似度计算模块计算代码向量VC和查询向量VQ的余弦相似度,表达式如下: 其中,sim表示代码向量和查询向量之间的余弦相似度;S8:对代码搜索模型进行训练,具体步骤如下:S81:采用S2获得的数据集构建训练样本集,训练样本集中每个训练样本为一个实例三元组c、q+、q-,其中,c,q+是代码查询对,q-表示除c,q+代码查询对以外的其他的代码查询对中的一个查询语句;S82:采用S2-S6的方法将代码c表示成代码向量Vc,将代码c的查询q+和查询q-分别表示成查询向量和通过步骤S7的方法计算向量间的余弦相似度和S83:预设边缘约束参数β,将训练样本中代码的余弦相似度和作为输入,通过损失函数计算Lθ,并采用梯度下降法反向更新代码搜索模型进中的所有参数,损失函数计算如下: 其中θ表示模型中所有的参数,G表示训练样本集;S84:当训练达到最大迭代次数时停止训练,并将当前代码搜索模型作为最优搜索模型,否则返回S82;S80:对于一个待查询代码,将其输入最优搜索模型,同时在最优搜索模型中预设查询输出结果个数为N,最优搜索模型计算待查询代码与代码库中的各个代码向量计算余弦相似度,将余弦相似度自大到小排序,输出前N个余弦相似度对应的代码,该N个代码即为待查询代码的的查询结果。

全文数据:

权利要求:

百度查询: 重庆大学 一种基于细粒度共注意机制的语义代码搜索方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。