CN115017294B - 代码搜索方法 - Google Patents

代码搜索方法 Download PDF

Info

Publication number
CN115017294B
CN115017294B CN202210615089.7A CN202210615089A CN115017294B CN 115017294 B CN115017294 B CN 115017294B CN 202210615089 A CN202210615089 A CN 202210615089A CN 115017294 B CN115017294 B CN 115017294B
Authority
CN
China
Prior art keywords
code
feature
description
matrix
descriptions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210615089.7A
Other languages
English (en)
Other versions
CN115017294A (zh
Inventor
蔡波
杨顺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN202210615089.7A priority Critical patent/CN115017294B/zh
Publication of CN115017294A publication Critical patent/CN115017294A/zh
Application granted granted Critical
Publication of CN115017294B publication Critical patent/CN115017294B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及代码搜索技术领域,涉及一种代码搜索方法,其包括以下步骤:一、输入带描述的代码;二、分别对代码和描述进行单独的嵌入;三、对代码特征跟描述特征做交互计算得到一个细粒度相似矩阵,用构建好的CNN网络对矩阵进行学习;四、分别为代码和描述构建全连接图,通过一定的规则更新节点向量;五、对代码和描述分别用注意力机制做加权求和操作;六、预测每个候选代码片段的分数,使用分数对所有候选代码片段进行重新排序。本发明能实现更加复杂的联合交互匹配工作。

Description

代码搜索方法
技术领域
本发明涉及代码搜索技术领域,具体地说,涉及一种代码搜索方法。
背景技术
在现代社会中,软件系统是不可或缺的,而且已经无处不在了。在开发一个新的软件项目时,开发人员将重用大量设计良好和经过充分测试的代码片段。开源社区,如GitHub和StackOverflow,在公共场合提供了数百万个源代码。代码搜索任务的关键挑战在于学习代码片段和查询文本的对应关系,从而能够准确地反映代码-查询对的相似性。为了支持代码搜索任务,早期的代码搜索模型利用信息检索(IR)技术返回与搜索查询的意图相匹配的代码片段列表。然儿,这些方法通常将源代码视为文本文档,并利用信息检索模型来检索匹配给定查询的相关代码片段。这主要依赖于源代码和自然语言查询之间的文本相似性。它们缺乏对查询和源代码语义的深入理解。
随着今天大量开源代码的公开,代码搜索对软件开发变得越来越重要。早期的代码搜索模型主要依赖于源代码和自然语言查询之间的文本相似性。它们缺乏对查询和源代码的语义的深入理解。开发人员开始应用深度学习技术对搜索模型进行代码编码。然而这些模型要么是对代码跟查询语句分别进行训练来获得全局对应关系,忽略了他们之间的交互。要么只是粗略的交互,没有系统的探讨代码特征与查询特征是如何相互影响的。
发明内容
本发明的内容是提供一种代码搜索方法,其能够克服现有技术的某种或某些缺陷。
根据本发明的一种代码搜索方法,其包括以下步骤:
一、输入带描述的代码;
二、分别对代码和描述进行单独的嵌入;
三、对代码特征跟描述特征做交互计算得到一个细粒度相似矩阵,用构建好的CNN网络对矩阵进行学习;
四、分别为代码和描述构建全连接图,通过一定的规则更新节点向量;
五、对代码和描述分别用注意力机制做加权求和操作;
六、预测每个候选代码片段的分数,使用分数对所有候选代码片段进行重新排序。
作为优选,代码部分用code tokens、methodname、API sequence作为特征进行嵌入,其中code tokens表示为T=t_{1},...,t_{N_{t}},methon name表示为M=m_{1},...,m_{N_{m}},API sequence表示为A=a_{1},...,a_{N_{a}};
通过一个多层感知器MLP嵌入,以获得初始的特征信息:
Figure BDA0003673101080000021
Figure BDA0003673101080000022
Figure BDA0003673101080000023
其中ti∈Rd,mi∈Rd,ai∈Rd分别表示令牌ti,mi,ai的嵌入式表示,Wt,Wm,Wa为MLP中可训练的参数矩阵;
在将三个代码特征嵌入到三个矩阵中之后,最终将它们合并成一个矩阵V∈Rk×d作为代码的特征矩阵:
Figure BDA0003673101080000024
其中
Figure BDA0003673101080000025
表示上下拼接操作。
作为优选,描述特征用MLP对其进行嵌入:
Figure BDA0003673101080000026
其中ei∈Rd表示描述词t=ei的嵌入式表示,We为MLP中可训练的参数矩阵。
作为优选,步骤三中,首先计算代码特征V和描述特征E之间的相似度,相似度sij衡量每个代码特征对应于每个描述特征:
Figure BDA0003673101080000031
sij表示第i个代码特征和第j个描述特征之间的细粒度交互关系,即相似度,k表示代码特征数,n表示描述特征数;
然后,使用细粒度匹配矩阵作为代码-描述关系CNN网络的输入,使用多层CNN来捕获代码和描述之间的局部相关性和长期依赖关系;
接着,对每个描述构造注意代码级特征,对每个代码特征构造注意描述级特征,以测量代码-描述相似度;
对于第i个代码特征,在S′上使用逐列注意操作来计算每个描述特征到第i个代码特征的权重;然后,通过描述特征表示的加权求和提取相应的参与描述级向量:
Figure BDA0003673101080000032
其中,λ为softmax函数的逆温度;同样,通过对S′进行行注意力操作得到第j个描述特征对应的参与的代码特征级向量:
Figure BDA0003673101080000033
作为优选,CNN网络中,引入四种不同的卷积核来扩展区域和单词的感知域;第一个卷积层用2个大小为1×1的内核过滤n×k输入;第二个卷积层具有2个大小为1×3的内核;第三卷积层具有2个大小为3×1的内核;第四个卷积层有2个大小为3×3的内核;ReLU非线性应用于每个卷积层的输出;每层的操作情况如下:
St=RELU(Conv(St-1))
用一个1×1的卷积核对第三个卷积层的输出进行滤波,得到最终的矩阵
Figure BDA0003673101080000034
作为优选,步骤四中,为每个代码特征构造一个无向全连接图G1=(V1,E1);使用矩阵A来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wa,表示节点之间的相互依赖关系:
Figure BDA0003673101080000041
利用所构造的图节点和边,通过更新节点和边来得到新的代码特征表示:
Figure BDA0003673101080000042
同样的,为每个描述特征构造一个无向全连接图G2=(V2,E2);使用矩阵B来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wa,表示节点之间的相互依赖关系:
Figure BDA0003673101080000043
利用所构造的图节点和边,通过更新节点和边来得到新的描述特征表示:
Figure BDA0003673101080000044
作为优选,步骤五中,每个代码特征节点的权重计算如下:
Figure BDA0003673101080000045
其中Wa是代码注意参数矩阵,ca是代码计算的上下文向量:
Figure BDA0003673101080000046
利用注意力权值,计算最终代码表示的加权平均值:
Figure BDA0003673101080000047
同样的,应用注意机制来学习每个描述节点的权重,计算方式如下:
Figure BDA0003673101080000051
其中,cb为查询的上下文向量,计算方法为:
Figure BDA0003673101080000052
利用注意力权值,我们计算节点嵌入向量的加权平均值来表示整个描述:
Figure BDA0003673101080000053
本发明从代码特性和描述特性中提取代码和查询信息。然后将提取的代码特征与描述特征进行细粒度相似度计算,可以探索每个代码特征和每个描述特征之间的交互匹配。接着分别为代码特征以及描述特征构造图结构,这可以获取各自特征之间的前后依赖关系,从而实现更加复杂的联合交互匹配工作。
附图说明
图1为实施例1中一种代码搜索方法的流程图;
图2为实施例1中相似度匹配示意图。
具体实施方式
为进一步了解本发明的内容,结合附图和实施例对本发明作详细描述。应当理解的是,实施例仅仅是对本发明进行解释而并非限定。
实施例1
如图1所示,本实施例提供了一种代码搜索方法(FsgCS的深度模型),其包括以下步骤:
一、输入带描述的代码;
二、分别对代码和描述进行单独的嵌入;
三、对代码特征跟描述特征做交互计算得到一个细粒度相似矩阵,用构建好的CNN网络对矩阵进行学习;
四、分别为代码和描述构建全连接图,通过一定的规则更新节点向量;
五、对代码和描述分别用注意力机制做加权求和操作;
六、预测每个候选代码片段的分数,使用分数对所有候选代码片段进行重新排序。
代码部分用code tokens、methodname、API sequence作为特征进行嵌入,考虑一个输入代码片段C=[T,M,A],其中code tokens表示为T=t_{1},...,t_{N_{t}},methonname表示为M=m_{1},...,m_{N_{m}},API sequence表示为A=a_{1},...,a_{N_{a}};将所有token信息标记分解为子标记,例如ArrayList可以细化为Array和List,这可以让不同token获取更加显式的区分;对于描述部分则表示为E=e_{1},...,e_{N_{e}}。
通过一个多层感知器MLP嵌入,以获得初始的特征信息:
Figure BDA0003673101080000061
Figure BDA0003673101080000062
Figure BDA0003673101080000063
其中ti∈Rd,mi∈Rd,ai∈Rd分别表示令牌ti,mi,ai的嵌入式表示,Wt,Wm,Wa为MLP中可训练的参数矩阵;
在将三个代码特征嵌入到三个矩阵中之后,最终将它们合并成一个矩阵V∈Rk×d作为代码的特征矩阵:
Figure BDA0003673101080000064
其中
Figure BDA0003673101080000065
表示上下拼接操作。
对于描述特征,为了跟代码特征做后续的细粒度短语匹配操作,描述特征同样用MLP对其进行嵌入:
Figure BDA0003673101080000066
其中ei∈Rd表示描述词t=ei的嵌入式表示,We为MLP中可训练的参数矩阵。
基于代码特征V和描述特征E,需要捕获代码-查询细粒度对应关系。首先计算代码特征V和描述特征E之间的相似度,如图2所示,相似度sij衡量每个代码特征对应于每个描述特征:
Figure BDA0003673101080000071
sij表示第i个代码特征和第j个描述特征之间的细粒度交互关系,即相似度,k表示代码特征数,n表示描述特征数;
然后,使用细粒度匹配矩阵作为代码-描述关系CNN网络的输入,使用多层CNN来捕获代码和描述之间的局部相关性和长期依赖关系。
这里,需要捕捉潜在的代码-描述对应关系。受卷积神经网络的启发,可以有效地提取像素之间的关系,并分层构建表达性表示。因此,目标是使用多层CNN来捕获代码和单词之间的局部相关性和长期依赖关系。与现有的将CNN应用于图像处理或文本处理不同,输入的每个元素表示一个像素或单词之间的相关性,每个元素意味着每个代码特征-单词特征的交互信息。
CNN网络中,引入四种不同的卷积核来扩展区域和单词的感知域;第一个卷积层用2个大小为1×1的内核过滤n×k输入;第二个卷积层具有2个大小为1×3的内核;第三卷积层具有2个大小为3×1的内核;第四个卷积层有2个大小为3×3的内核;ReLU非线性应用于每个卷积层的输出;每层的操作情况如下:
St=RELU(Conv(St-1))
用一个1×1的卷积核对第三个卷积层的输出进行滤波,得到最终的矩阵
Figure BDA0003673101080000072
请注意,这里删除了降采样操作为了避免信息丢失,并保持匹配矩阵的维度。通过分层卷积操作,可以捕获从代码-描述之间潜在的对齐关系。
借助学习到的代码-描述特征之间细粒度的对齐关系,可以更准确的度量代码-描述相似性。
接着,对每个描述构造注意代码级特征,对每个代码特征构造注意描述级特征,以测量代码-描述相似度;
对于第i个代码特征,在S′上使用逐列注意操作来计算每个描述特征到第i个代码特征的权重;然后,通过描述特征表示的加权求和提取相应的参与描述级向量:
Figure BDA0003673101080000081
其中,λ为softmax函数的逆温度;同样,通过对S′进行行注意力操作得到第j个描述特征对应的参与的代码特征级向量:
Figure BDA0003673101080000082
为了实现更全面的相似性匹配,构建了一个推理图,在局部和全局各级可能的对齐之间传播相似性消息。更具体地说,将所有经过细粒度匹配模块得到的代码以及描述向量作为图节点分别构建全连接图。
为每个代码特征构造一个无向全连接图G1=(V1,E1);使用矩阵A来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wa,表示节点之间的相互依赖关系:
Figure BDA0003673101080000083
利用所构造的图节点和边,通过更新节点和边来得到新的代码特征表示:
Figure BDA0003673101080000084
同样的,为每个描述特征构造一个无向全连接图G2=(V2,E2);使用矩阵B来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wa,表示节点之间的相互依赖关系:
Figure BDA0003673101080000085
利用所构造的图节点和边,通过更新节点和边来得到新的描述特征表示:
Figure BDA0003673101080000091
步骤五中,每个代码特征节点的权重计算如下:
Figure BDA0003673101080000092
其中Wa是代码注意参数矩阵,ca是代码计算的上下文向量:
Figure BDA0003673101080000093
利用注意力权值,计算最终代码表示的加权平均值:
Figure BDA0003673101080000094
同样的,应用注意机制来学习每个描述节点的权重,计算方式如下:
Figure BDA0003673101080000095
其中,cb为查询的上下文向量,计算方法为:
Figure BDA0003673101080000096
利用注意力权值,我们计算节点嵌入向量的加权平均值来表示整个描述:
Figure BDA0003673101080000097
模型训练
如果代码片段和描述具有相似的语义,那么它们的嵌入式向量应该彼此接近。换句话说,给定任意代码片段C和任意描述D,如果D是对C的精确描述,我们希望它能够预测具有高相似性的距离,否则则有点相似性。我们将每个训练实例构建为一个$<C,D_{+},D_{-}>$用于监督训练。对于每个代码片段C,都有一个积极的描述$D_{+}$(正确的描述)和一个由其他D+集合中随机选取的负的描述D-(错误的描述)。在训练过程中,搜索模型都预测了<C,D+>和<C,D->的余弦相似性,并将排序损失最小化,定义如下:
Figure BDA0003673101080000101
其中θ表示模型参数,P表示训练语料库,∈为恒定边距,将其设置为1.0。c,d+和d-分别为C,D+和D-的嵌入式向量。函数L(θ)会增加代码片段与其正确描述之间的相似性,而代码片段与其错误描述之间的相似性则会减少。
代码搜索的模型预测
经过模型训练后,可以通过嵌入一个大规模的代码库来部署模型在线进行代码搜索,其中每个代码都由一个向量c表示。对于开发人员的搜索查询,模型将描述嵌入为一个向量q。然后,描述q和代码c之间的语义相似性可以通过它们的余弦相似性来衡量;最后,该模型推荐了与代码搜索查询高度相关的top-k个代码:
Figure BDA0003673101080000102
数据集
Hu等人的数据集是从GitHub从2015年至2016年创建的Java存储库中收集过来的。为了过滤掉低质量的项目,Hu等人只考虑了那些有超过十颗星的项目。然后,他们从这些Java项目中提取了Java方法及其相应的Javadoc。Javadoc的第一句话被认为是查询。然而,这个数据集中的一些代码片段有无用的注释,例如,只有参数描述的注释。因此,过滤掉查询语句未超过两个单词的代码片段。经过过滤后,得到了一个包含69k注释函数对的训练集,一个包含8k注释函数对的测试集和一个包含8k注释函数对的验证集,详细的统计数据见表1。
表1统计数据
Training set Testing set Validation set
69687 8712 8714
对比
本实施例比较了最先进的模型DeepCS、UNIF、MPCAT、CARLCS-CNN和FsgCS模型之间的代码搜索有效性。结果表明,FsgCS优于四种基于DL的模型(即DeepCS、UNIF、MPCAT、CARLCS-CNN)。
DeepCS,这是由Gu等人提出的第一个将深度学习用于代码搜索的模型。DeepCS使用LSTM和max-pooling来编码代码特性和查询。实验结果表明,DeepCS的性能优于基于信息检索的模型。
CARLCS-CNN,最近由Shuai等人提出的CARLCS-CNN是一种使用共同注意机制的最先进的模型。它利用CNN和LSTM学习代码和查询的嵌入表示并且引入了一种协同注意机制来学习代码标记和查询标记之间的内部语义关联。
UNIF,Cambronero等人提出了一种先进的监督代码搜索模型UNIF。UNIF对代码token以及查询token都用fastText嵌入初始化。再分别使用注意力机制和平均法将代码嵌入和查询嵌入组合起来。
MPCAT,一种使用分层遍历方法编码代码抽象语法树并合并文本匹配模型BiMPM的模型。
为了评估模型FgsdCS,使用了两个常见的评估指标SuccessRate@k和MRR。具体来说,对于测试数据集中的每一对代码片段和描述,将描述作为查询,并将相应的代码片段与测试集中的其他代码片段一起作为代码检索任务的候选对象。用这两种常用于信息检索的评估指标来衡量我们的模型和基线模型的性能。
SuccessRate@k(SR@k)相关代码方法可以在排名前k的列表中找到的查询的比例。具体计算方法如下:
Figure BDA0003673101080000111
其中Q是我们测试集中的8712个查询,S是一个指示函数。如果可以在排名前k的列表中找到第i个查询(Qi),则返回1,否则返回0。我们分别评估SuccessRate@1,SuccessRate@5和SuccessRate@10。
MRR测试查询结果的倒数秩的平均值,计算方法如下:
Figure BDA0003673101080000121
其中,
Figure BDA0003673101080000122
是第i个查询的结果列表中正确代码片段的排名位置。与SuccessRate@k不同,MRR使用倒数秩作为测量的权重。换句话说,当Qi的排名超过10时,那么
Figure BDA0003673101080000123
等于0。
所有的实验都是在服务器上进行的,有16核CPU的CPU和GPU加速。该框架构建在python3.6和CUDA9.0以上。所有的词嵌入大小都是128。为了训练我们的FgsdCS模型,使用了ADAM[9]优化器,学习率为0.0003,批处理大小为32。CNN的详细设置参考上面模型描述部分。
对于Hu等人的数据集,如表2所示,FsgCS实现了MRR为0.5048,SR@1/5/10为0.4214/0.6204/0.6812。FsgCS在MRR方面分别优于基线模型DeepCS、UNIF、MPCAT和CALCS-CNN 21.69%、10.96%、9.24%和7.01%;在SR@1/5/10方面分别超过16.12%/22.90%/16.25%,11.12%/11.07%/10.26%,4.36%/7.72%/8.98%和3.59%/4.67%/6.00%。
表2对比表
Model SR@1 SR@1 SR@1 MRR
DeepCS 0.2602 0.3914 0.5187 0.2879
UNIF 0.3102 0.5097 0.5786 0.3952
MACAT 0.3688 0.5432 0.5914 0.4124
CALCS-CNN 0.3765 0.5737 0.6212 0.4347
FsgCS 0.4214 0.6204 0.6812 0.5048
以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。所以,如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。

Claims (3)

1.代码搜索方法,其特征在于:包括以下步骤:
一、输入带描述的代码;
二、分别对代码和描述进行单独的嵌入;
三、对代码特征跟描述特征做交互计算得到一个细粒度相似矩阵,用构建好的CNN网络对矩阵进行学习;
步骤三中,首先计算代码特征V和描述特征E之间的相似度,相似度sij衡量每个代码特征对应于每个描述特征:
Figure FDA0004131757390000011
sij表示第i个代码特征和第j个描述特征之间的细粒度交互关系,即相似度,k表示代码特征数,n表示描述特征数;
然后,使用细粒度匹配矩阵作为代码-描述关系CNN网络的输入,使用多层CNN来捕获代码和描述之间的局部相关性和长期依赖关系;
CNN网络中,引入四种不同的卷积核来扩展区域和单词的感知域;第一个卷积层用2个大小为1×1的内核过滤n×k输入;第二个卷积层具有2个大小为1×3的内核;第三卷积层具有2个大小为3×1的内核;第四个卷积层有2个大小为3×3的内核;ReLU非线性应用于每个卷积层的输出;每层的操作情况如下:
St=RELU(Conv(St-1))
用一个1×1的卷积核对第三个卷积层的输出进行滤波,得到最终的矩阵S′;
接着,对每个描述构造注意代码级特征,对每个代码特征构造注意描述级特征,以测量代码-描述相似度;
对于第i个代码特征,在S′上使用逐列注意操作来计算每个描述特征到第i个代码特征的权重;然后,通过描述特征表示的加权求和提取相应的参与描述级向量:
Figure FDA0004131757390000012
其中,λ为softmax函数的逆温度;同样,通过对S′进行行注意力操作得到第j个描述特征对应的参与的代码特征级向量:
Figure FDA0004131757390000021
四、分别为代码和描述构建全连接图,通过一定的规则更新节点向量;
步骤四中,为每个代码特征构造一个无向全连接图G1=(V1,E1);使用矩阵A来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wa,表示节点之间的相互依赖关系:
Figure FDA0004131757390000022
利用所构造的图节点和边,通过更新节点和边来得到新的代码特征表示:
Figure FDA0004131757390000023
同样的,为每个描述特征构造一个无向全连接图G2=(V2,E2);使用矩阵B来表示每个节点的相邻矩阵,并添加自循环;边权值表示为矩阵Wb,表示节点之间的相互依赖关系:
Figure FDA0004131757390000024
利用所构造的图节点和边,通过更新节点和边来得到新的描述特征表示:
Figure FDA0004131757390000025
五、对代码和描述分别用注意力机制做加权求和操作;
步骤五中,每个代码特征节点的权重计算如下:
Figure FDA0004131757390000026
其中Wa是代码注意参数矩阵,ca是代码计算的上下文向量:
Figure FDA0004131757390000031
利用注意力权值,计算最终代码表示的加权平均值:
Figure FDA0004131757390000032
同样的,应用注意机制来学习每个描述节点的权重,计算方式如下:
Figure FDA0004131757390000033
其中,cb为查询的上下文向量,计算方法为:
Figure FDA0004131757390000034
利用注意力权值,计算节点嵌入向量的加权平均值来表示整个描述:
Figure FDA0004131757390000035
六、预测每个候选代码片段的分数,使用分数对所有候选代码片段进行重新排序。
2.根据权利要求1所述的代码搜索方法,其特征在于:代码部分用code tokens、methodname、API sequence作为特征进行嵌入,其中code tokens表示为
Figure FDA0004131757390000036
methon name表示为
Figure FDA0004131757390000037
API sequence表示为
Figure FDA0004131757390000038
通过一个多层感知器MLP嵌入,以获得初始的特征信息:
Figure FDA0004131757390000039
Figure FDA00041317573900000310
Figure FDA00041317573900000311
其中ti∈Rd,mi∈Rd,ai∈Rd分别表示令牌ti,mi,ai的嵌入式表示,Wt,Wm,Wa为MLP中可训练的参数矩阵;
在将三个代码特征嵌入到三个矩阵中之后,最终将它们合并成一个矩阵V∈Rk×d作为代码的特征矩阵:
Figure FDA0004131757390000041
其中
Figure FDA0004131757390000042
表示上下拼接操作。
3.根据权利要求2所述的代码搜索方法,其特征在于:描述特征用MLP对其进行嵌入:
Figure FDA0004131757390000043
其中ei∈Rd表示描述词t=ei的嵌入式表示,We为MLP中可训练的参数矩阵。
CN202210615089.7A 2022-05-31 2022-05-31 代码搜索方法 Active CN115017294B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210615089.7A CN115017294B (zh) 2022-05-31 2022-05-31 代码搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210615089.7A CN115017294B (zh) 2022-05-31 2022-05-31 代码搜索方法

Publications (2)

Publication Number Publication Date
CN115017294A CN115017294A (zh) 2022-09-06
CN115017294B true CN115017294B (zh) 2023-05-09

Family

ID=83071486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210615089.7A Active CN115017294B (zh) 2022-05-31 2022-05-31 代码搜索方法

Country Status (1)

Country Link
CN (1) CN115017294B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115577075B (zh) * 2022-10-18 2024-03-12 华中师范大学 一种基于关系图卷积网络的深度代码搜索方法
CN115878094B (zh) * 2023-01-06 2023-07-14 粤港澳大湾区数字经济研究院(福田) 代码搜索方法、装置、设备及存储介质
CN117349453B (zh) * 2023-12-04 2024-02-23 武汉大学 一种基于扩展代码的深度学习代码搜索模型的加速方法
CN117421392B (zh) * 2023-12-15 2024-03-08 武汉大学 一种基于词级对齐的代码搜索方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111488137A (zh) * 2020-04-07 2020-08-04 重庆大学 一种基于共同注意力表征学习的代码搜索方法
CN112800172A (zh) * 2021-02-07 2021-05-14 重庆大学 一种基于两阶段注意力机制的代码搜索方法
CN112860879A (zh) * 2021-03-08 2021-05-28 南通大学 一种基于联合嵌入模型的代码推荐方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162593B (zh) * 2018-11-29 2023-03-21 腾讯科技(深圳)有限公司 一种搜索结果处理、相似度模型训练方法及装置
US11721335B2 (en) * 2019-07-01 2023-08-08 Koninklijke Philips N.V. Hierarchical self-attention for machine comprehension
US11132512B2 (en) * 2019-11-08 2021-09-28 International Business Machines Corporation Multi-perspective, multi-task neural network model for matching text to program code
CN111142850B (zh) * 2019-12-23 2021-05-25 南京航空航天大学 一种基于深度神经网络的代码片段推荐方法与装置
CN111159223B (zh) * 2019-12-31 2021-09-03 武汉大学 一种基于结构化嵌入的交互式代码搜索方法及装置
US11775414B2 (en) * 2020-09-17 2023-10-03 RAM Laboratories, Inc. Automated bug fixing using deep learning
US11720346B2 (en) * 2020-10-02 2023-08-08 International Business Machines Corporation Semantic code retrieval using graph matching
CN113342318B (zh) * 2021-04-19 2022-06-10 山东师范大学 基于多视图代码特征的细粒度代码自动生成方法及系统
CN114186017B (zh) * 2021-11-02 2024-02-27 武汉大学 基于多维度匹配的代码搜索方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111488137A (zh) * 2020-04-07 2020-08-04 重庆大学 一种基于共同注意力表征学习的代码搜索方法
CN112800172A (zh) * 2021-02-07 2021-05-14 重庆大学 一种基于两阶段注意力机制的代码搜索方法
CN112860879A (zh) * 2021-03-08 2021-05-28 南通大学 一种基于联合嵌入模型的代码推荐方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李阵 ; 钮俊 ; 王奎 ; 辛园园 ; .基于多特征权重分配的源代码搜索优化.计算机应用.2018,(第03期),全文. *
陆龙龙 ; 陈统 ; 潘敏学 ; 张天 ; .CodeSearcher:基于自然语言功能描述的代码查询.计算机科学.2020,(第09期),全文. *

Also Published As

Publication number Publication date
CN115017294A (zh) 2022-09-06

Similar Documents

Publication Publication Date Title
Le et al. Deep learning for source code modeling and generation: Models, applications, and challenges
CN115017294B (zh) 代码搜索方法
CN111159223B (zh) 一种基于结构化嵌入的交互式代码搜索方法及装置
Pujara et al. Knowledge graph identification
CN109376222B (zh) 问答匹配度计算方法、问答自动匹配方法及装置
CN112528034B (zh) 一种基于知识蒸馏的实体关系抽取方法
Bhola et al. Retrieving skills from job descriptions: A language model based extreme multi-label classification framework
Lei et al. Deep learning application on code clone detection: A review of current knowledge
Onan SRL-ACO: A text augmentation framework based on semantic role labeling and ant colony optimization
Noei et al. Towards prioritizing user-related issue reports of mobile applications
Wang et al. How well do pre-trained contextual language representations recommend labels for github issues?
US11874798B2 (en) Smart dataset collection system
Sellam et al. Deepbase: Deep inspection of neural networks
CN113312480A (zh) 基于图卷积网络的科技论文层级多标签分类方法及设备
Almiman et al. Deep neural network approach for Arabic community question answering
Pimentel et al. Fast node embeddings: Learning ego-centric representations
Wang et al. Personalizing label prediction for GitHub issues
US11797281B2 (en) Multi-language source code search engine
Hernandez et al. An automated approach to identify scientific publications reporting pharmacokinetic parameters
Rahmani et al. Improving code example recommendations on informal documentation using bert and query-aware lsh: A comparative study
WO2021080735A1 (en) Automated exception featurization and search
Mitra et al. Incremental and iterative learning of answer set programs from mutually distinct examples
Sen et al. Support-BERT: predicting quality of question-answer pairs in MSDN using deep bidirectional transformer
Zheng et al. Novel knowledge-based system with relation detection and textual evidence for question answering research
Wu et al. A programming language learning service by linking stack overflow with textbooks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 921, 9/F, No. 2 Office Building, Phase II, Luosiwan International Trade City, Guandu District, Kunming, Yunnan 650000

Applicant after: Yunnan Hengyu Technology Co.,Ltd.

Applicant after: WUHAN University

Address before: 430072 Hubei Province, Wuhan city Wuchang District of Wuhan University Luojiashan

Applicant before: WUHAN University

Applicant before: Yunnan Hengyu Technology Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230419

Address after: 430072 Hubei Province, Wuhan city Wuchang District of Wuhan University Luojiashan

Applicant after: WUHAN University

Address before: Room 921, 9/F, No. 2 Office Building, Phase II, Luosiwan International Trade City, Guandu District, Kunming, Yunnan 650000

Applicant before: Yunnan Hengyu Technology Co.,Ltd.

Applicant before: WUHAN University

GR01 Patent grant
GR01 Patent grant