[发明专利]一种基于结构化嵌入的交互式代码搜索方法及装置有效

专利信息
申请号: 201911420354.0 申请日: 2019-12-31
公开(公告)号: CN111159223B 公开(公告)日: 2021-09-03
发明(设计)人: 彭敏;黎芮彤;胡刚;刘进;崔晓晖 申请(专利权)人: 武汉大学
主分类号: G06F16/242 分类号: G06F16/242
代理公司: 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人: 罗飞
地址: 430072 湖*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 结构 嵌入 交互式 代码 搜索 方法 装置
【权利要求书】:

1.一种基于结构化嵌入的交互式代码搜索方法,其特征在于,包括:

步骤S1:收集原始数据,对原始数据中抽取出软件存储库以及代码-描述匹配对的模型语料,在抽取过程中获取每条代码-描述匹配对的社交属性值;

步骤S2:对模型语料进行结构化分词以及预处理,得到处理后的语料;

步骤S3:采用预设工具对处理后的语料进行词嵌入训练,构建预训练的结构化词嵌入;

步骤S4:对模型语料进行结构化分词以及预处理后,根据代码-描述匹配对的社交属性值筛选出预设数量的语料进行采样作为代码搜索模型的语料,并划分为训练集、验证集和测试集;

步骤S5:构建依次包含特征抽取模块、交互注意力抽取模块和相似度匹配模块的交互式代码搜索模型NICS,并设置训练网络的合页损失函数,其中,所述特征抽取模块用于捕获并编码代码段和自然查询的序列信息;所述交互注意力模块用于捕获并编码代码段和自然查询的交互信息;所述相似度匹配模块用于计算查询与代码段之间的相似度;

步骤S6:将预训练结构化词嵌入加载至交互式代码搜索NICS模型,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代预设次直到合页损失函数收敛,得到训练好的NICS模型;

步骤S7:利用训练好的NICS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果;

其中,步骤S5具体包括:

步骤S5.1:构建特征抽取模块;

在给定代码段C=c1,...,c|C|和相应的查询Q=q1,...,q|C|时,首先在步骤S2中得到的处理后的语料查询相应的编码向量,查询公式如下:

其中,E∈Rd×V是预训练的结构嵌入的矩阵,和是单词qi和ci的嵌入矢量,其中V是固定大小的词汇,d是单词嵌入的维度,改进后的Bi-LSTM包含正向LSTM和反向LSTM,从两个方向捕获每个步骤的历史和未来信息,顺序输入向量的正向和向后隐藏状态按如下方式表示:

将两种隐藏状态和串联,以形成最终隐藏状态ht

其中表示两个向量的串联,让每个单向LSTM的隐藏单位编号为u,基于Bi-LSTM的嵌入矢量从长度的为n的输入xt更新的公式写作H∈Rn×2u

H=[h1,...ht,...,hn]

按照将长度为n的输入向量转换为嵌入向量序列H的过程,这些基于BiLSTM的嵌入式矢量集和被表示为H∈R|C|×2u,用于保留更多的历史信息;

步骤S5.2:构建交互注意力模块;

采用双向交互方法来进行交互信息抽取,给定在每个时间步t上查询序列HQ中的嵌入矢量以及给定每个时间步t上的代码序列HC中的嵌入矢量使用注意机制为QC的交互表示构造注意矩阵M,注意矩阵如下:

其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度,矩阵M∈R|Q|×|C|中包含了查询Q和代码C之间的交互信息;

采用注意力池化操作,从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池,分别获取重要的分数向量mQ∈R|Q|和mC∈R|C|,矢量mq和mc的第k个元素的计算方式如下:

每个元素被视为第k个“查询-代码”单词对的重要性分数,同样,每个元素都被视为第k个“代码-查询”单词对的重要性分数,为给查询与代码分配特定的权重,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:

δQ=softmax(mQ);δC=softmax(mC)

通过权重向量δQ∈R|Q|和δC∈R|C|以及基于BiLSTM的嵌入矢量HC和HQ的计算得到交互向量表示VQ∈R2u和VC∈R2u

VQ=δQHQ;VC=δCHC

步骤S5.3:构建相似度匹配模块;

使用cosine相似度cos(VQ,VC)测量源代码和自然查询之间的相关性,并共同嵌入其向量表示,cosine相似度的计算方式为:

其中的表示两个矩阵通过其转置的乘法,相似性越高,代码片段与自然查询的关系越大,相似度匹配模块以查询代码对Q,C作为输入,并预测其cosine相似度cos(VQ,VC);

步骤S5.4:构建网络的合页损失函数,构造一个三元组样本对Q,C+,C-作为训练实例,该实例由一个查询以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码,三元组来自步骤S1的模型语料,目标是学习一个具有可训练参数的函数f,使得这个函数能够实现对Q,C+的评分高于Q,C-

当在一组Q,C+,C-三元组训练时,交互式代码搜索模型分别预测Q,C+和Q,C-样本对的cosine相似度,并减少损失函数的值:

其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ,VC+和VC-分别是Q,C+和C-的交互式表示形式。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911420354.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top