【基于图嵌入的语义代码搜索算法案例分析8600字】_第1页
【基于图嵌入的语义代码搜索算法案例分析8600字】_第2页
【基于图嵌入的语义代码搜索算法案例分析8600字】_第3页
【基于图嵌入的语义代码搜索算法案例分析8600字】_第4页
【基于图嵌入的语义代码搜索算法案例分析8600字】_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于图嵌入的语义代码搜索算法案例分析 11.1GraphCS算法概述 11.2GraphCS语义特征提取 5 5 6 61.3GraphCS结构特征提取 6 7 8 1.4GraphCS特征融合 1.5GraphCS算法总结 源代码片段中的纯文本结构特征难以表达出程序中包含的复杂逻辑结构信代码片段中无关的噪声信息,GraphCS引入注意力机制来更加高效的学习不同粒1.1GraphCS算法概述的逻辑结构特征。GraphCS融合源代码片段的文本结构特征和图结构特征,在特征融合过程中融入注意力来更全面捕获源代码片段语义特征和结构特征。语义和结构特征融合阶段以及特征空间映射阶段4个部分,其网络结构图如4.1fmlba代码搜索任务中包含的文本结构信息的处理,主信息的单词序列,以双向LSTM来更好的捕获方法名中包含的文本语义特征向标记中多次出现的词汇标记来保证每个单词只出现一次,以MLP的方式来捕获意义的单词,以双向LSTM来更好的捕获自然语言注释中包含的文本语义特征习图的嵌入表示,确保了结构相似的图表示会产生相似的嵌入。源代码中的一个.java文件中包含只包含一个函数,因此每个文件只能提取与函从源代码中提取的文本结构语义特征包括函数的方法名序列特征以及函代码特征融合部分考虑注意力方式为源代码片段中的文本结构特征(方法名序列码特征给予不同的权重系数来融合源代码片段来捕获源代码语义特征和结构特代码搜索任务中代码片段和自然语言注释是异构数据,因此考虑将源代图4.1为融合图嵌入的语义代码搜索算法GraphCS的网络结构图。GraphCS对的形式存在的,因此GraphCS是以End-To-End的方式来学习代码搜索模型。图4.1中左侧部分是函数名为copyLarge的方法体及其对应的自然语言注释,并从函数copyLarge中提取出源代码中的文本结构特征和图结构特征数据。函数copyLarge中提取的源代码令牌标记特征数据为count,buffer,…,read,input;函数copyLarge中提取的源代码方法名序列特征数据为copylarge;函数copyLarge中有向边的状态情况如图4.2所示;函数cfinalOutputStreamoutput<3>finalInputStreaminput<2>longcount=0;<4EOF=m=mptredufey6outputwite(buffer,0,n);<7>buffer1.2.1方法名序列给定方法名序列M=methname₁,methname2,…,methnameNm,其文本给定令牌标记T=token₁,token2,…,tokenn.为包含Nt不包含重复且唯一出现的无时序关系的单词集合,以多层感知机来捕获令牌1.3GraphCS结构特征提取5.以哈希函数的方式将slabel;(v)映射到压缩标签集合;成4个部分。原始标签为1,并且其相邻的节点为v₁和v₃的原始标签分别为1和2,因此一次(1)原始标签进行升序排序,若原始标签相同则对比聚合邻域标签部分的相(2)若聚合邻域标签相同位置的值较小,则放在排序列表较前位置。若聚合在Step-3标签压缩过程以一个哈希函数的方式将生成的复杂新标签进行压缩,压缩后的标签包含其聚合的邻域信息。例如1-1,3哈希映射方式压缩后的标签为7的子树结构,其中子树的根节点标签为1且邻域标签为1和3。V4Step2-1#iteration3-1,1,2为了学习图的嵌入向量表示,Graph2Vec算法将每个图视为的方式是相同的。Doc2Vec算法的网络结构如图4.5(a)所示,而Graph2Vec算法学习相似上下文的文档或者段落的向量表示,而Graph2Vec算法基于Word2Vec21 5.Nn:={n*|(n,n*)∈E}6.Ma:={WLSubGraph(n*,G,d-1)|n*∈Nn}10.return全部图的向量矩阵T图结构是比较大的。Graph2Vec(算法4.3)算法以基于负赖图的嵌入表示。任意一个图Gi∈PDG且context(Gi)=c=机的选取k负样本Cneg={Sgneg₁…,Sgnegk},negsample∈subGraphvocab'c组成的<Gi,c>数据对。为了更好的提高图嵌入向量的学习效率,在迭代更新过fuse_code=αnm*nm+αtk*tk+αpag*pdg其中,tanh是神经网络中的非线性激活函数,wfuse和wdesc是全连接层在同一个特征空间中,若源代码片段特征向量与自然语言注释特征向量会较近且语义相关程度更高。图4.7为代码片段和自然语言注释在特征空间中的映射过程,图中自然语言注释为appendtexttoanexistingfile,并且函数名为publicstaticfinalvoidFilewriterfw=newFilL(θ)=∑<c,D+,D->ETmax(0,△-cos(c,d+)+22.results=model.search(query,top_n,code23.以余弦相似度对results进行排序;24.向results_lists中追加 GraphCS分为3个阶段,分别为模型训练阶段、代码库转换向量阶段以及搜索代码片段阶段。(1)在模型训练阶段,代码搜索数据集为代码片段和正样本自然语言注释,并以随机负采样的方式相应的负样本自然语言注释(第2行)。为了序依赖图特征(第3行)。提取的数据是存在噪声的,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论