System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及人工智能领域,可以用于金融领域,具体是一种程序代码智能补全方法及装置。
技术介绍
1、通常,程序员在编写程序时,常会用代码补全工具进行辅助编写。代码自动补全技术极大地减少了程序员的工作量,提升了开发效率、质量及体验。
2、然而,现有的人工智能编码助手类产品通常提供项目级补全模型训练引擎,支持根据现有代码库训练私有补全模型。然而,对于有些项目,同一应用可能分为不同群组,并且同一群组内代码也分为联机程序、批量程序、路由层程序和web程序等不同类型。不同群组、不同类型之间的代码在存在着依赖包、引用方法及代码规约等各方面差异,导致对代码补全功能的推送内容或推送优先级存在需求上的差异。总之,现有的智能编码助手类产品是以项目为维度进行补全模型训练的,以至于面对不同群组或不同类型的代码时,推送精度有所欠缺。
技术实现思路
1、针对现有技术中的问题,本申请提供一种程序代码智能补全方法及装置,能够根据待补全程序代码的内容识别出其属于的群组以及类型,并自动调用对应的子私有补全模型进行代码补全,提高代码补全的精准度。
2、为解决上述技术问题,本申请提供以下技术方案:
3、第一方面,本申请提供一种程序代码智能补全方法,包括:
4、根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识;
5、根据所述群组类型标识从预先构建的私有补全模型集合中选取所述待补全程序代码适配的子私有补全模型;
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、群组选取模块,本文档来自技高网...
【技术保护点】
1.一种程序代码智能补全方法,其特征在于,包括:
2.根据权利要求1所述的程序代码智能补全方法,其特征在于,所述根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识,包括:
3.根据权利要求2所述的程序代码智能补全方法,其特征在于,预先训练双向长短记忆网络模型的步骤,包括:
4.根据权利要求3所述的程序代码智能补全方法,其特征在于,在将所述词表与类别表输入原始双向长短记忆网络模型进行训练前,还包括:
5.根据权利要求3所述的程序代码智能补全方法,其特征在于,预先构建私有补全模型集合的步骤,包括:
6.根据权利要求1所述的程序代码智能补全方法,其特征在于,所述根据所述群组类型标识从预先构建的私有补全模型集合中选取所述待补全程序代码适配的子私有补全模型,包括:
7.一种程序代码智能补全装置,其特征在于,包括:
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的程
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的程序代码智能补全方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至6任一项所述的程序代码智能补全方法的步骤。
...【技术特征摘要】
1.一种程序代码智能补全方法,其特征在于,包括:
2.根据权利要求1所述的程序代码智能补全方法,其特征在于,所述根据预设的代码群组与代码类型对待补全程序代码进行分类,得到所述待补全程序代码对应的群组类型标识,包括:
3.根据权利要求2所述的程序代码智能补全方法,其特征在于,预先训练双向长短记忆网络模型的步骤,包括:
4.根据权利要求3所述的程序代码智能补全方法,其特征在于,在将所述词表与类别表输入原始双向长短记忆网络模型进行训练前,还包括:
5.根据权利要求3所述的程序代码智能补全方法,其特征在于,预先构建私有补全模型集合的步骤,包括:
6.根据权利要求1所述的程序代码智能补全方法,其特征在于,所述根据所...
【专利技术属性】
技术研发人员:樊刚,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。