【技术实现步骤摘要】
在异构语义空间中基于假设检验的软件跨模态检索方法
[0001]本专利技术涉及一种软件跨模态检索方法,具体涉及一种异构语义空间中基于假设检验的可以应用于多种任务的软件跨模态检索方法。
技术介绍
[0002]随着互联网技术与大数据系统的发展,软件开发过程中的软件数据逐渐被积累并存储在开源软件数据库中,其中比较有代表性的软件数据库包括代码版本管理数据库GitHub、软件漏洞数据库NVD以及软件缺陷追踪数据库Bugzilla等。利用软件仓库中积累的知识来指导软件开发,有助于降低软件开发与维护的周期,提高软件产品的质量和安全性。因此,为了充分利用软件数据库中的知识来指导软件工程的生产实践,软件信息检索领域在近几年受到了广泛的关注。其中,自然语言文本与代码间的软件跨模态检索(如缺陷定位、代码搜索等文本检索代码的任务,以及漏洞知识检索、补丁日志检索等代码检索文本的任务)是该领域中的热门研究方向之一。
[0003]关于软件跨模态检索的早期研究主要通过人工特征分别表示文本与代码,并通过计算二者的相似度来实现信息检索。但是该类方法更关注 ...
【技术保护点】
【技术特征摘要】
1.一种在异构语义空间中基于假设检验的软件跨模态检索方法,其特征在于所述方法包括如下步骤:步骤1:对文本和代码数据进行预处理;步骤2:使用分布生成网络将文本表示为CFP相关分布;步骤3:使用样本生成网络将代码表示为CFP样本向量集合;步骤4:使用某种假设检验方法在异构语义空间中计算CFP样本向量集合和CFP相关分布的匹配分数;步骤5:通过三元组损失函数和随机梯度下降算法优化分布生成网络和样本生成网络;步骤6:使用步骤5训练好的分布生成网络和样本生成网络实现文本检索代码形式的软件跨模态检索任务;步骤7:使用步骤5训练好的分布生成网络和样本生成网络实现代码检索文本形式的软件跨模态检索任务。2.根据权利要求1所述的在异构语义空间中基于假设检验的软件跨模态检索方法,其特征在于所述步骤1的具体步骤如下:步骤11:文本预处理去除文本中的停用词、数字以及标点符号,拆分以驼峰命名法或下划线命名法出现的标识符,并对每一个词进行词性还原和小写化;步骤12:提取代码中的CFP对于文件粒度的搜索任务,首先基于下推自动机的函数文法分析器提取代码文件中的所有函数,随后对函数中的语句换行方式进行规范化,最后将每一个函数都转化为CFG,并通过深度优先搜索提取其中的每一条CFP;步骤13:CFP预处理对CFP中以驼峰命名法或下划线命名法命名的标识符进行拆分,并对拆分后的token进行词性还原和小写化。3.根据权利要求1所述的在异构语义空间中基于假设检验的软件跨模态检索方法,其特征在于所述步骤2中将CFP相关分布的协方差矩阵∑看作是一个对角线元素大于0而其他元素为0的对角阵,并将由其对角线元素构成的向量定义为σ2,由σ2中每个元素的平方根的倒数构成的向量定义为σ
‑1,具体步骤如下:步骤21:将文本中的单词表示为独热编码,并使用词嵌入层将文本中的每个单词表示为词嵌入向量;步骤22:使用Text
‑
CNN网络提取文本的语义向量表示;步骤23:将该文本的语义向量表示送入激活函数为tanh的全连接层中生成期望向量μ并输出;步骤24:将该文本的语义向量表示送入激活函数为sigmoid的全连接层中生成标准差倒数向量σ
‑1并输出,生成的μ和σ2可以唯一地表示一个CFP相关分布N(μ,σ2)。4.根据权利要求1所述的在异构语义空间中基于假设检验的软件跨模态检索方法,其特征在于所述步骤3的具体步骤如下:步骤31:将给定的CFP中每条语句中的token都表示为独热编码,使用词嵌入层将每个token表示为词嵌入向量;
步骤32:对于给定的CFP中的每条语句,使用多个不同卷积核大小的卷积神经网络分别提取语句在不同感受野下的向量表示,并将不同感受野下的向量表示拼接,得到语句的向量表示;步骤33:将CFP中语句的表示序列送入到长短期记忆网络中,使用每个时刻输出的平均作为CFP样本向量;步骤34:对代码中的所有CFP执行步骤31
‑
步骤33,从而将代码表示为...
【专利技术属性】
技术研发人员:苏小红,魏宏巍,郑伟宁,陶文鑫,蒋远,
申请(专利权)人:哈尔滨工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。