本技术涉及人工智能领域,可以用于金融领域,具体是一种程序代码智能补全方法及装置。
背景技术:
1、通常,程序员在编写程序时,常会用代码补全工具进行辅助编写。代码自动补全技术极大地减少了程序员的工作量,提升了开发效率、质量及体验。
2、然而,现有的人工智能编码助手类产品通常提供项目级补全模型训练引擎,支持根据现有代码库训练私有补全模型。然而,对于有些项目,同一应用可能分为不同群组,并且同一群组内代码也分为联机程序、批量程序、路由层程序和web程序等不同类型。不同群组、不同类型之间的代码在存在着依赖包、引用方法及代码规约等各方面差异,导致对代码补全功能的推送内容或推送优先级存在需求上的差异。总之,现有的智能编码助手类产品是以项目为维度进行补全模型训练的,以至于面对不同群组或不同类型的代码时,推送精度有所欠缺。
技术实现思路
1、针对现有技术中的问题,本技术提供一种程序代码智能补全方法及装置,能够根据待补全程序代码的内容识别出其属于的群组以及类型,并自动调用对应的子私有补全模型进行代码补全,提高代码补全的精准度。
2、为解决上述技术问题,本技术提供以下技术方案:
3、第一方面,本技术提供一种程序代码智能补全方法,包括:
4、根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识;
5、根据所述群组类型标识从预先构建的私有补全模型集合中选取所述待补全程序代码适配的子私有补全模型;
6、利用适配的子私有补全模型对所述待补全程序代码进行程序代码智能补全操作。
7、进一步地,所述根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识,包括:
8、对所述待补全程序代码数字化后执行嵌入操作,得到对应的待分类向量;
9、将所述待分类向量输入预先训练的双向长短记忆网络模型,得到所述待补全程序代码中各词汇的上文信息、当前词信息及下文信息;
10、将所述上文信息、当前词信息及下文信息输入卷积神经网络,生成当前词向量;
11、对各当前词向量进行拼接后导入全连接层进行分类,得到所述待补全程序代码对应的群组类型标识;其中,所述群组类型标识用于表示所述待补全程序代码对应的代码群组与代码类型;每个代码群组包括多个代码类型。
12、进一步地,预先训练双向长短记忆网络模型的步骤,包括:
13、利用历史程序代码构建第一训练集文件;
14、根据所述第一训练集文件中的数据内容创建词表与类别表;其中,所述词表包括词汇编号与词汇频次,所述类别表包括类别编号;
15、将所述词表与类别表输入原始双向长短记忆网络模型进行训练,得到所述训练的双向长短记忆网络模型。
16、进一步地,在将所述词表与类别表输入原始双向长短记忆网络模型进行训练前,还包括:
17、对所述词表与类别表进行预处理操作;其中,所述预处理操作包括低频词过滤。
18、进一步地,预先构建私有补全模型集合的步骤,包括:
19、利用所述历史程序代码构建第二数据集文件;其中,所述历史程序代码涉及各代码群组与代码类型;
20、将所述第二数据集文件输入原始神经网络模型,并基于定制transformer的多层神经网络训练所述原始神经网络模型,得到所述私有补全模型;其中,每一代码群组下的每一代码类型对应一种私有补全模型;
21、汇聚所述私有补全模型,得到所述私有补全模型集合。
22、进一步地,所述根据所述群组类型标识从预先构建的私有补全模型集合中选取所述待补全程序代码适配的子私有补全模型,包括:
23、从所述群组类型标识提取群组标识,并根据所述群组标识确定所述待补全程序代码对应的代码群组;
24、从所述群组类型标识提取类型标识,并根据所述类型标识确定所述待补全程序代码对应的代码类型;
25、根据所述群组标识在所述私有补全模型集合中进行群组匹配,确定该代码群组对应的多个候选子私有补全模型;
26、根据所述类型标识从多个候选子私有补全模型中选取所述待补全程序代码适配的子私有补全模型。
27、第二方面,本技术提供一种程序代码智能补全装置,包括:
28、群组类型识别单元,用于根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识;
29、补全模型选取单元,用于根据所述群组类型标识从预先构建的私有补全模型集合中选取所述待补全程序代码适配的子私有补全模型;
30、代码补全操作单元,用于利用适配的子私有补全模型对所述待补全程序代码进行程序代码智能补全操作。
31、进一步地,所述群组类型识别单元,包括:
32、分类向量生成模块,用于对所述待补全程序代码数字化后执行嵌入操作,得到对应的待分类向量;
33、词汇信息生成模块,用于将所述待分类向量输入预先训练的双向长短记忆网络模型,得到所述待补全程序代码中各词汇的上文信息、当前词信息及下文信息;
34、向量组合模块,用于将所述上文信息、当前词信息及下文信息输入卷积神经网络,生成当前词向量;
35、群组类型标识确定模块,用于对各当前词向量进行拼接后导入全连接层进行分类,得到所述待补全程序代码对应的群组类型标识;其中,所述群组类型标识用于表示所述待补全程序代码对应的代码群组与代码类型;每个代码群组包括多个代码类型。
36、进一步地,补全模型选取单元,包括:
37、第一训练文件构建模块,用于利用历史程序代码构建第一训练集文件;
38、词表类表创建模块,用于根据所述第一训练集文件中的数据内容创建词表与类别表;其中,所述词表包括词汇编号与词汇频次,所述类别表包括类别编号;
39、网络模型训练模块,用于将所述词表与类别表输入原始双向长短记忆网络模型进行训练,得到所述训练的双向长短记忆网络模型。
40、进一步地,补全模型选取单元,用于:
41、对所述词表与类别表进行预处理操作;其中,所述预处理操作包括低频词过滤。
42、进一步地,补全模型选取单元,包括:
43、第二训练文件构建模块,用于利用所述历史程序代码构建第二数据集文件;其中,所述历史程序代码涉及各代码群组与代码类型;
44、补全模型构建模块,用于将所述第二数据集文件输入原始神经网络模型,并基于定制transformer的多层神经网络训练所述原始神经网络模型,得到所述私有补全模型;其中,每一代码群组下的每一代码类型对应一种私有补全模型;
45、补全模型汇聚模块,用于汇聚所述私有补全模型,得到所述私有补全模型集合。
46、进一步地,所述补全模型选取单元,包括:
47、群组选取模块,用于从所述群组类型标识提取群组标识,并根据所述群组标识确定所述待补全程序代码对应的代码群组;
48、类型选取模块,用于从所述群组类型标识提取类型标识,并根据所述类型标识确定所述待补全程序代码对应的代码类型;
49、候选模型确定模块,用于根据所述群组标识在所述私有补全模型集合中进行群组匹配,确定该代码群组对应的多个候选子私有补全模型;
50、补全模型确定模块,用于根据所述类型标识从多个候选子私有补全模型中选取所述待补全程序代码适配的子私有补全模型。
51、第三方面,本技术提供一种电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述程序代码智能补全方法的步骤。
52、第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述程序代码智能补全方法的步骤。
53、第五方面,本技术提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现所述程序代码智能补全方法的步骤。
54、针对现有技术中的问题,本技术提供的程序代码智能补全方法及装置,能够将程序代码按照不同群组以及不同类型代码进行分类,然后通过补全模型训练引擎分别对不同群组以及不同类型的程序代码进行私有补全模型训练,生成不同群组下的不同类型的子私有补全模型,最后在进行程序代码研发时,根据待补全程序代码的内容,通过机器学习的方式识别出其属于的群组以及类型,并自动调用对应的子私有补全模型执行代码补全操作,从而提高代码补全的推送精准度,提升程序代码的编写效率。