[发明专利]一种代码补全方法、装置以及相关设备在审
申请号: | 202011507517.1 | 申请日: | 2020-12-18 |
公开(公告)号: | CN112527273A | 公开(公告)日: | 2021-03-19 |
发明(设计)人: | 王健宗;李泽远;何安珣 | 申请(专利权)人: | 平安科技(深圳)有限公司 |
主分类号: | G06F8/33 | 分类号: | G06F8/33;G06N20/00;G06N3/04 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 熊永强 |
地址: | 518000 广东省深圳市福田区福*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 方法 装置 以及 相关 设备 | ||
1.一种代码补全方法,其特征在于,应用于第一参与方,所述第一参与方是包括聚合服务器和多个参与方的系统中的任意一个参与方,包括:
获取本地数据集和聚合服务器发送的初始模型参数,其中,所述本地数据集包括多个源代码;
根据所述初始模型参数和所述本地数据集训练局部模型,得到局部模型参数;
将所述局部模型参数加密并发送给所述聚合服务器,以供所述聚合服务器根据所述多个参与方发送的所述局部模型参数进行聚合,得到全局模型参数;
获取所述全局模型参数,根据所述全局模型参数和所述局部模型参数更新所述局部模型,得到训练好的代码补全模型;
获取用户输入的代码,将所述代码输入至所述代码补全模型,得到目标代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述初始模型参数和所述本地数据集训练局部模型,得到局部模型参数,包括:
获取本地数据集中的源代码,将所述源代码解析成抽象语法树,所述抽象语法树包括多个节点;
将所述抽象语法树输入所述局部模型,训练所述局部模型,得到目标节点元素,所述目标节点元素包括目标节点的值与目标节点的类型;
根据所述目标节点元素与实际节点元素确定损失函数值;
根据所述损失函数值更新所述局部模型;
在满足收敛条件时,得到更新后的局部模型对应的所述局部模型参数,所述收敛条件为迭代次数等于预设迭代次数或所述损失函数值小于预设值。
3.根据权利要求2所述的方法,其特征在于,
所述局部模型包括并联的节点值预测模型和节点类型预测模型;所述节点值预测模型用于对所述抽象语法树编码,预测所述目标节点的值,所述节点类型预测模型用于提取所述抽象语法树的层次结构,预测所述目标节点的类型。
4.根据权利要求2所述方法,其特征在于,所述训练所述局部模型,得到目标节点元素,包括:
对所述抽象语法树进行深度优先遍历,得到节点序列,采用Path2root保存所述抽象语法树的层次结构,得到Path2root层次化特征;
采用Transformer XL算法对所述节点序列进行编码,得到抽象语法树向量,采用循环神经网络算法对所述Path2root层次化特征进行编码,得到Path2root向量;
将所述抽象语法树向量和所述Path2root向量连接预测目标节点的值,得到所述目标节点的值;将所述抽象语法树向量和所述Path2root向量连接预测目标节点的类型,得到所述目标节点的类型。
5.根据权利要求2所述的方法,其特征在于,所述根据目标节点元素与实际节点元素确定损失函数值,包括:
根据所述目标节点的值与实际节点的值确定第一损失函数值;
根据所述目标节点的类型与实际节点的类型确定第二损失函数值;
将所述第一损失函数值与第二损失函数值进行加权平均,得到所述局部模型的损失函数值。
6.根据权利要求1所述的方法,其特征在于,所述将所述局部模型参数加密并发送给所述聚合服务器,包括:
将所述局部模型参数进行同态加密,得到加密的局部模型参数,将所述加密的局部模型参数发送给所述聚合服务器。
7.根据权利要求1所述的方法,其特征在于,所述根据所述全局模型参数和所述局部模型参数更新所述局部模型,包括:
将所述局部模型参数与所述全局模型参数进行加权平均,得到新的局部模型参数,根据所述新的局部模型参数更新所述局部模型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于平安科技(深圳)有限公司,未经平安科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011507517.1/1.html,转载请声明来源钻瓜专利网。