System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 代码搜索模型的训练方法、代码搜索方法及设备技术_技高网

代码搜索模型的训练方法、代码搜索方法及设备技术

技术编号:41284516 阅读:3 留言:0更新日期:2024-05-11 09:33
本申请公开了一种代码搜索模型的训练方法、代码搜索方法及设备,训练方法获取包含多种代码语言的训练样本的训练数据批次;将各训练样本输入深度学习模型,通过深度学习模型确定各训练样本的特征向量对;基于确定的特征向量对和各训练样本的样本标签,对深度学习模型进行训练以得到代码搜索模型。本申请通过采用包含多种代码语言的训练数据批次来对深度学习模型进行训练以得到代码搜索模型,使得代码搜索模型不但可以学习到各代码语言的语法和语义特征,还可以将不同代码语言的语义特征进行隐式对齐,有效利用各代码语言的语义特征,提高了代码搜索模型在每种代码语言上的模型性能,避免了代码搜索模型在少数代码语言上模型性能不佳的问题。

【技术实现步骤摘要】

本申请涉及人工智能,特别涉及一种代码搜索模型的训练方法、代码搜索方法及设备


技术介绍

1、深度学习模型如bert系列(codebert、graphcodebert、unixcoder)等已经被广泛应用于代码搜索领域,用来处理代码理解任务。这些预训练模型通过在大规模代码库上的预训练,学习了丰富的代码表示,并在各种代码相关任务中表现出色。然而,这些模型在处理多种编程语言时普遍会受不同代码语言之间的数据分布不均衡的影响,使得深度学习模型在少数代码语言上的性能不佳。

2、因而现有技术还有待改进和提高。


技术实现思路

1、本申请要解决的技术问题在于,针对现有技术的不足,提供一种代码搜索模型的训练方法、代码搜索方法及设备。

2、为了解决上述技术问题,本申请第一方面提供了一种代码搜索模型的训练方法,其中,所述的代码搜索模型的训练方法具体包括:

3、获取训练数据批次,其中,所述训练数据批次包括多种代码语言的训练样本,每个训练样本均包括代码字段和功能查询描述字段;

4、将所述训练数据批次中的各训练样本输入深度学习模型,通过深度学习模型确定各训练样本对应的特征向量对,其中,所述特征向量对包括代码特征向量和查询特征向量;

5、基于确定的所有特征向量对,对所述深度学习模型进行训练以得到代码搜索模型。

6、所述的代码搜索模型的训练方法,其中,所述的获取训练数据批次具体包括:

7、获取代码语料库,并将所述代码语料库按照代码语言划分为多组代码语料组,其中,每组代码语料组对应一种代码语言;

8、分别在各代码语料组中采样若干代码语料,以形成训练数据批次。

9、所述的代码搜索模型的训练方法,其中,所述基于确定的所有特征向量对,对所述深度学习模型进行训练以得到代码搜索模型具体包括:

10、根据所有特征向量对构建相似度矩阵,基于所述相似度矩阵构建第一对比学习损失项;

11、基于所述第一对比学习损失项对所述深度学习模型进行训练,以得到代码搜索模型。

12、所述的代码搜索模型的训练方法,其中,所述根据所有特征向量对构建相似度矩阵具体包括:

13、对于每个特征向量对,计算所述特征向量对中的查询特征向量和所述特征向量对中的代码特征向量的第一相似度,以及所述特征向量对中的查询特征向量和其他特征向量对中的代码特征向量的第二相似度;

14、根据计算得到的所有第一相似度和所有第二相似度构建相似度矩阵。

15、所述的代码搜索模型的训练方法,其中,所述基于所述相似度矩阵构建第一对比学习损失项具体包括:

16、根据所述相似度矩阵,计算各训练样本对应的第二对比学习损失项;

17、根据计算得到的所有第二对比学习损失项确定第一对比学习损失项。

18、所述的代码搜索模型的训练方法,其中,所述根据所述相似度矩阵,计算各训练样本对应的第二对比学习损失项具体包括:

19、对于每个训练样本,在所述相似度矩阵查找所述训练样本的查询特征向量对应的第一相似度和所有第二相似度,其中,所述第一相似度用于反映所述查询特征向量和其配对的代码字段的代码特征向量间的相似性,第二相似度用于反映所述查询特征向量与其他非配对的代码字段的代码特征向量间的相似性;

20、根据所述第一相似度和所述所有第二相似度,采用对比学习损失函数计算所述训练样本对应的第二对比学习损失项。

21、所述的代码搜索模型的训练方法,其中,所述将所述训练数据批次中的各训练样本输入深度学习模型,通过深度学习模型确定各训练样本对应的特征向量对具体包括:

22、对于训练数据批次中的每个训练样本,将所述训练样本中的代码字段和功能查询描述字段进行分词,以得到若干代码词符和若干功能查询描述词符;

23、获取各代码词符的代码词符编码以及各功能查询描述词符的查询词符编码;

24、基于获取到的所有代码词符编码形成代码输入项,并基于获取到的所有查询词符编码形成查询输入项;

25、将代码输入项和功能查询描述输入项输入深度学习模型,通过所述深度学习模型确定特征向量对。

26、本申请实施例第二方面提供了一种代码搜索方法,使用采用如上所述的代码搜索模型的训练方法所得的代码搜索模型,所述的代码搜索方法具体包括:

27、接收待搜索功能查询描述,并通过所述代码搜索模型确定所述待搜索功能查询描述的查询特征向量;

28、基于所述查询特征向量,确定所述待搜索功能查询描述与目标代码库中的各代码片段的相似度;

29、根据所述相似度在所述目标代码库中选取预设数量的代码片段。

30、所述的代码搜索方法,其中,所述接收待搜索功能查询描述之前,所述方法还包括:

31、获取初始代码库中的每个代码片段,并识别每个代码片段的代码语言;

32、将各代码片段输入所述代码搜索模型,通过所述代码搜索模型输出各代码片段对应的代码特征向量;

33、将各代码片段的代码特征向量和代码语言与各代码片段关联,以得到目标代码库。

34、所述的代码搜索方法,其中,所述基于所述查询特征向量,确定所述待搜索功能查询描述与目标代码库中的各代码片段的相似度之前,所述方法还包括:

35、检测所述功能查询描述是否包括指定代码语言;

36、当不包括指定代码语言时,将所述目标代码库作为待搜索功能查询描述对应的目标代码库;

37、当包括指定代码语言时,根据所述指定代码语言在所述目标代码库中选取候选代码集,并将所述候选代码集作为待搜索功能查询描述对应的目标代码库,其中,所述候选代码集中的每个代码片段关联的代码语言与所述指定代码语言相同。

38、所述的代码搜索方法,其中,所述的基于所述查询特征向量,确定所述待搜索功能查询描述与目标代码库中的各代码片段的相似度具体包括:

39、获取所述目标代码库中的各代码片段关联的代码特征向量;

40、分别计算所述查询特征向量与各代码特征向量的相似度,以得到所述待搜索功能查询描述与各代码片段的相似度。

41、本申请第三方面提供了一种代码搜索模型的训练装置,其中,所述的代码搜索模型的训练装置具体包括:

42、获取模块,用于获取训练数据批次,其中,所述训练数据批次包括多种代码语言的训练样本,每个训练样本均包括代码字段和功能查询描述字段;

43、控制模块,用于将所述训练数据批次中的各训练样本输入深度学习模型,通过深度学习模型确定各训练样本对应的特征向量对,并基于确定的所有特征向量对,对所述深度学习模型进行训练以得到代码搜索模型,其中,所述特征向量对包括代码特征向量和查询特征向量。

44、本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序本文档来自技高网...

【技术保护点】

1.一种代码搜索模型的训练方法,其特征在于,所述的代码搜索模型的训练方法具体包括:

2.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述的获取训练数据批次具体包括:

3.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述基于确定的所有特征向量对,对所述深度学习模型进行训练以得到代码搜索模型具体包括:

4.根据权利要求3所述的代码搜索模型的训练方法,其特征在于,所述根据所有特征向量对构建相似度矩阵具体包括:

5.根据权利要求3所述的代码搜索模型的训练方法,其特征在于,所述基于所述相似度矩阵构建第一对比学习损失项具体包括:

6.根据权利要求5所述的代码搜索模型的训练方法,其特征在于,所述根据所述相似度矩阵,计算各训练样本对应的第二对比学习损失项具体包括:

7.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述将所述训练数据批次中的各训练样本输入深度学习模型,通过深度学习模型确定各训练样本对应的特征向量对具体包括:

8.一种代码搜索方法,其特征在于,使用采用如权利要求1-7任意一项所述的代码搜索模型的训练方法所得的代码搜索模型,所述的代码搜索方法具体包括:

9.根据权利要求8所述的代码搜索方法,其特征在于,所述接收待搜索功能查询描述之前,所述方法还包括:

10.根据权利要求9所述的代码搜索方法,其特征在于,所述基于所述查询特征向量,确定所述待搜索功能查询描述与目标代码库中的各代码片段的相似度之前,所述方法还包括:

11.根据权利要求9或10所述的代码搜索方法,其特征在于,所述的基于所述查询特征向量,确定所述待搜索功能查询描述与目标代码库中的各代码片段的相似度具体包括:

12.一种代码搜索模型的训练装置,其特征在于,所述的代码搜索模型的训练装置具体包括:

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-7任意一项所述的代码搜索模型的训练方法中的步骤,和/或以实现如权利要求8-11任意一项所述的代码搜索方法中的步骤。

14.一种终端设备,其特征在于,包括:处理器和存储器;

...

【技术特征摘要】

1.一种代码搜索模型的训练方法,其特征在于,所述的代码搜索模型的训练方法具体包括:

2.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述的获取训练数据批次具体包括:

3.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述基于确定的所有特征向量对,对所述深度学习模型进行训练以得到代码搜索模型具体包括:

4.根据权利要求3所述的代码搜索模型的训练方法,其特征在于,所述根据所有特征向量对构建相似度矩阵具体包括:

5.根据权利要求3所述的代码搜索模型的训练方法,其特征在于,所述基于所述相似度矩阵构建第一对比学习损失项具体包括:

6.根据权利要求5所述的代码搜索模型的训练方法,其特征在于,所述根据所述相似度矩阵,计算各训练样本对应的第二对比学习损失项具体包括:

7.根据权利要求1所述的代码搜索模型的训练方法,其特征在于,所述将所述训练数据批次中的各训练样本输入深度学习模型,通过深度学习模型确定各训练样本对应的特征向量对具体包括:

8.一种代码搜索方法,其特征在于,使用采用如权利要求1-...

【专利技术属性】
技术研发人员:林嘉怡谢育涛
申请(专利权)人:粤港澳大湾区数字经济研究院福田
类型:发明
国别省市:

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

1