大规模候选集中的语义代码搜索模型构建方法及相关装置制造方法及图纸

技术编号:34531550 阅读:18 留言:0更新日期:2022-08-13 21:24
本实施例提供的大规模候选集中的语义代码搜索模型构建方法及相关装置中,模型训练设备通过将样本查询语句以及样本代码片段一同输入到目标模型中,用于训练该目标模型学习样本插叙语句与样本代码片段之间的语义信息,待目标模型满足预设收敛条件时,获得能够同时对目标查询语句以及候选代码片段同时进行编码处理的语义代码搜索模型。如此,使得训练出的语义代码搜索模型能够在对目标查询语句以及候选代码片段进行处理时,能够发掘出两者之间可能存在的关联性。可能存在的关联性。可能存在的关联性。

【技术实现步骤摘要】
大规模候选集中的语义代码搜索模型构建方法及相关装置


[0001]本申请涉及语义搜索领域,具体而言,涉及一种大规模候选集中的语义代码搜索模型构建方法及相关装置。

技术介绍

[0002]虽然近些年来对于自然语言甚至是图像的搜索已经取得了非常大的进步,但是对于代码的搜索,目前的技术仍然不能满足大多数使用者的需求。这是因为在传统的信息检索中,搜索的关键词往往和搜索的结果会有很多相同的词语,因此,通过关键词匹配的方式可以很容易找到相关的搜索结果。
[0003]但是,在代码搜索中,自然语言和代码各自使用的词汇很多时候存在着巨大差异,而目前大多数的代码搜索引擎仍然局限于关键字搜索,这种搜索策略需要用户了解相关编程语言的语法;或者需要用户可以预测目标代码片段周围的注释中可能包含的关键字。
[0004]因此,提出了基于语义代码搜索的相关技术,即通过在同一向量空间中表示查询语句和代码片段,然后,将余弦距离最近的代码片段作为查询语句对应的代码片段。然而,目前的相关技术在将查询语句和代码片段表示在同一向量空间时,忽略了二者可能共有的一些信息。

技术实现思路

[0005]为了克服现有技术中的至少一个不足,本申请提供一种大规模候选集中的语义代码搜索模型构建方法及相关装置,包括:
[0006]第一方面,本申请提供一种大规模候选集中的语义代码搜索模型构建方法,应用于模型训练设备,所述方法包括:
[0007]获取样本查询语以及样本代码片段;
[0008]训练目标模型学习所述样本查询语句与所述样本代码片段之间的语义信息,直到所述目标模型满足预设收敛条件时,获得语义代码搜索模型。
[0009]第二方面,本申请提供一种大规模候选集中的语义代码搜索模型构建装置,应用于模型训练设备,所述装置包括:
[0010]样本模块,用于获取样本查询语以及样本代码片段;
[0011]训练模块,用于训练目标模型学习所述样本查询语句与所述样本代码片段之间的语义信息,直到所述目标模型满足预设收敛条件时,获得语义代码搜索模型。
[0012]第三方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现所述的大规模候选集中的语义代码搜索模型构建方法。
[0013]第四方面,本申请提供一种模型训练设备,所述模型训练设备包括处理器以及存储器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述的大规模候选集中的语义代码搜索模型构建方法。
[0014]相对于现有技术而言,本申请具有以下有益效果:
[0015]本实施例提供的大规模候选集中的语义代码搜索模型构建方法中,模型训练设备通过将样本查询语句以及样本代码片段一同输入到目标模型中,用于训练该目标模型学习样本插叙语句与样本代码片段之间的语义信息,待目标模型满足预设收敛条件时,获得能够同时对目标查询语句以及候选代码片段同时进行编码处理的语义代码搜索模型。如此,使得训练出的语义代码搜索模型能够在对目标查询语句以及候选代码片段进行处理时,能够发掘出两者之间可能存在的关联性。
附图说明
[0016]为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0017]图1为本申请实施例提供的现有语义代码搜索原理示意图;
[0018]图2为本申请实施例提供的模型训练设备的结构示意图;
[0019]图3为本申请实施例提供的大规模候选集中的语义代码搜索模型构建方法的流程示意图;
[0020]图4为本申请实施例提供的大规模候选集中的语义代码搜索模型构建装置的结构示意图。
[0021]图标:120

存储器;130

处理器;140

通信单元;150

系统总线;201

样本模块;202

训练模块。
具体实施方式
[0022]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
[0023]因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0025]在本申请的描述中,需要说明的是,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。此外,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0026]随着开发项目的增加,以及各项目随时间的不断迭代,代码库的规模越来越大。例如,随着互联网时代的到来,开源代码的数量也在急剧增长:根据GitHub官方数据,在2021年内,全球就创建了超过6千万个新仓库,合并了超过1亿个Pull Request。因此,在信息化时代中,面对浩如烟海的代码,如何进行高效的代码搜索成为了一个十分有意义的任务。
[0027]另外,在敏捷开发为主流的互联网时代背景下,为了迅速对不断变化的需求做出响应,需要开发人员通过自然语言形式的查询语句,高效地从海量代码中定位到相关代码片段。因此,提出了基于语义代码搜索的相关技术。
[0028]所谓基于语义代码搜索的相关技术,表示要求从一系列候选代码集中查找出与查询语句的语义作为接近的若干个代码片段,这就要求不仅需要充分阅读并理解自然语言,还需要理解候选代码集中各代码片段的含义,并根据匹配程度的得分返回最终的查询结果。换句话说,假定自然语言问题由一系列的单词组成候选代码集中的代码片段可以描述为其中n表示查询语句中的单词数,m表示候选代码片段的长度。语义代码检索的目标函可以表示为f(q,c)=argmax
c∈C
P(c∣q),其中C表示全部代码片段候选集。
[0029]然而,目前基于语义代码搜索的相关技术中,分别本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种大规模候选集中的语义代码搜索模型构建方法,其特征在于,应用于模型训练设备,所述方法包括:获取样本查询语句以及样本代码片段;训练目标模型学习所述样本查询语句与所述样本代码片段之间的语义信息,直到所述目标模型满足预设收敛条件时,获得语义代码搜索模型。2.根据权利要求1所述的大规模候选集中的语义代码搜索模型构建方法,其特征在于,预设收敛条件包括第一条件以及第二条件,所述训练目标模型学习所述样本查询语句与所述样本代码片段之间的语义信息,直到所述目标模型满足预设收敛条件时,获得语义代码搜索模型,包括:训练所述目标模型对所述样本查询语句与所述样本代码片段中的关键信息进行预测,直到所述目标模型满足第一条件时,获得预训练模型;其中,所述关键信息包括被随机遮蔽的文本片段以及预设的关键词;训练所述预训练模型学习所述样本查询语句与所述样本代码片段语义之间的相似信息,直到所述预训练模型满足所述第二条件时,获得所述语义代码搜索模型。3.根据权利要求2所述的大规模候选集中的语义代码搜索模型构建方法,其特征在于,所述训练所述目标模型对所述样本查询语句与所述样本代码片段中的关键信息进行预测,直到所述目标模型满足第一条件时,获得预训练模型,包括:执行至少一次所述目标模型的迭代步骤,直到所述目标模型满足所述第一条件时,获得所述预训练模型;其中,所述目标模型的迭代步骤包括:按照预设概率从所述样本查询语句与所述样本代码片段中确定出所述文本片段;将遮蔽了所述文本片段的所述样本查询语句与所述样本代码片段,输入到所述目标模型;根据所述目标模型对所述文本片段的预测结果,获得所述目标模型的第一模型损失;根据所述目标模型对所述关键词的识别结果,获得所述目标模型的第二模型损失;将遮蔽了关键词的所述样本查询语句与所述样本代码片段,输入到所述目标模型;根据所述目标模型对所述关键词的预测结果,获得所述目标模型的第三模型损失;根据所述第一模型损失、所述第二模型损失以及所述第三模型损失,更新所述目标模型。4.根据权利要求3所述的大规模候选集中的语义代码搜索模型构建方法,其特征在于,所述第一模型损失的表达式为:式中,θ表示所述目标模型的模型参数,第t个被遮蔽的文本片段,y
\mask
表示遮蔽了所述文本片段的所述样本查询语句与所述样本代码片段,表示前t

1个文本片段的预测结果,k表示所述文本片段的数量;所述第二模型损失的表达式为:
式中,m表示所述样本代码片段中文本词汇的数量;y
i
表示第i个词汇的实际类型,p
i
表示第i个词汇的预测结果;所述第三模型损失的表达式为:式中,θ表示所述目标模型的模型参数,S
j
第j个被遮蔽的关键词,x
\s
表示遮蔽了关键词的所述样本查询语句与所述样本代码片段,S
<j
表示前j

1个关键词的预测结果,|S|表示所述关键词的数量。5.根据权利要求2所述的大规模候选集中的语义代码...

【专利技术属性】
技术研发人员:牛建伟陈俊任孙钢灿
申请(专利权)人:北京航空航天大学杭州创新研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1