买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于代码表征的智能合约模版推荐方法、装置及电子设备_布比(北京)网络技术有限公司_202311822325.3 

申请/专利权人:布比(北京)网络技术有限公司

申请日:2023-12-27

公开(公告)日:2024-04-09

公开(公告)号:CN117473170B

主分类号:G06F16/9535

分类号:G06F16/9535;G06F40/216;G06F40/289;G06F40/30;G06F16/35;G06F40/194;G06N3/0464;G06N3/0455;G06N3/091;G06N3/048

优先权:

专利状态码:有效-授权

法律状态:2024.04.09#授权;2024.02.20#实质审查的生效;2024.01.30#公开

摘要:本发明公开了一种基于代码表征的智能合约模版推荐方法、装置及电子设备,其中,方法包括:收集以太坊的智能合约代码并进行数据预处理,生成待编码数据;基于特征编码器对待编码数据进行编码,得到合约代码特征;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对合约代码特征中各特征划分的标量值进行变换并输出分析结果。基于分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。本发明基于代码表征的方式用于区块链智能合约代码的特征提取任务中,根据智能合约代码的特性构建合约特征解码器,提升了系统的整体性能。

主权项:1.一种基于代码表征的智能合约模版推荐方法,其特征在于,包括:收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版;所述对所述智能合约代码进行数据预处理包括:去除所述智能合约代码中标点符号和常用词;将去除标点符号和常用词的所述智能合约代码投入嵌入层进行包含合约代码位置编码信息的待编码数据;通过通道将所述待编码数据拼接转换为基于特征编码器的参数形式;基于特征编码器对所述待编码数据进行编码,得到合约代码特征,还包括:基于特征编码器对所述待编码数据基于自注意力层捕捉输入序列内部的依赖关系和建立上下文之间的联系;基于全连接层对输入序列的特征进行线性变化的映射和变换,引入非线性激活函数,对输入序列实现非线性处理;基于残差连接和归一化对所述自注意力层、全连接层进行优化,实现对所述待编码数据进行编码,得到合约代码特征;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值还包括:基于卷积神经网络CNN对编码器得到的合约代码特征进行分析,确定卷积核的数量;基于所述数量的卷积核,通过全局最大池化提取出所述合约代码特征中各特征划分的标量值;所述方法还包括:基于预设智能合约表征提取模型评估指标对所述合约代码特征中各特征划分的标量值进行变换生成的结果进行评估,得到所述合约代码特征中各特征划分的分析结果;基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,还包括:基于所述合约代码特征中各特征划分的分析结果创建与智能合约类别对应的数量的模版库;基于智能合约代码的类别对智能合约代码收集到与所述智能合约代码相应的模块库中,建立代码与类别的映射关系;设定各模板库标签、描述元数据,并定期对所述模板库进行维护;为推荐用户提供智能合约模版还包括:基于合约方向按照类别进行检索结果为推荐用户提供智能合约模版;根据合约代码计算合约向量,基于所述合约向量与智能合约模版的匹配相似度为推荐用户提供智能合约模版;所述智能合约代码进行数据预处理的方法包括三步,分别为合约代码分词处理、合约代码词嵌入和合约代码位置嵌入;所述分词处理是通过WordPiece对代码进行分词,同时将合约代码转换为编码器能接受的输入方式,包括去除合约代码片段中注释、标点符号以及代码的归一化处理;接着统计智能合约代码数据集中每个字符或字词的出现频率,生成词频统计表;然后根据词频统计表迭代训练WordPiece,在迭代过程中根据词频统计表和切割规则计算每个切割点的得分,并选择得分最高的切割点进行切割,重复迭代上述过程直到达到预设的词表大小或切割得分不再增加为止;最后使用训练好的WordPiece对智能合约代码进行分词操作,即遍历智能合约代码的每个字符,然后根据词表和切割规则将代码切成子词序列,如果某个子词在词表中不存在,将其拆分为更小的子词,直到所有子词都在词表中存在;所述合约代码词嵌入层是将预处理后的智能合约代码转换为Token进行标记化,标记化过程中将代码字符串分割成词汇表中的单词、标点符号或其他符号;接着将标记化后的代码转换为TokenIDs,使得每个Token标记都对应词汇表中的唯一标识符,可以通过查找词汇表中每个Token的标识符来实现;同时在Token首部加入CLS特殊Token标记,以作为一个拥有合约代码全局特征的合约聚合序列表示,该Token标记在经过编码器编码后,直接用于模型后续合约解码器的输入;如果编码后的Token序列长度小于最大代码长度,则使用填充标记将其填充至相同长度,如果编码后的Token序列长度超过最大代码长度,则根据设定策略对其进行截断,确保序列长度一致;所述合约代码位置嵌入使用正余弦位置编码方式,对合约代码位置信息进行嵌入获得嵌入层,由于位置嵌入和词嵌入维度相同,因此最终对两者编码在通道维度上进行叠加;具体实现过程为首先确定输入序列的最大长度,然后创建一个位置编码矩阵,大小为(L,d),其中L是最大序列长度,d是隐藏层维度;其中位置编码矩阵每个位置都对应一个d维向量,以表示该位置的位置编码;同时对于合约位置编码矩阵中的每个位置,根据其在序列中的位置信息计算位置编码向量,其中位置编码公式如下:偶数位编码:PE(pos,2i)=sinpos100002idmodel奇数位编码:PE(pos,2i+1)=cospos100002idmodel其中公式中的pos表示位置,i表示位置编码的维度索引,dmodel是隐藏层维度;最后将计算得到的位置编码向量按元素加到输入序列的嵌入向量上,即将位置编码向量与输入序列的嵌入向量相加,以在嵌入层融合合约代码的位置信息和语义信息;其中所述位置编码使得后续模型能够处理不同位置的代码片段,并在训练过程中学习到它们的相对位置关系;所述特征编码器包括编码器部分,所述编码器部分用于实现对输入Token合约代码预处理后的向量表示的特征编码,由于Transformer中的编码器具有强大的特征提取能力,在编码部分结合了Transformer和自注意力机制实现对输入特征进行编码,同时连续使用12个编码块进行叠加;所述合约特征编码器能够自动学习智能合约代码中的特征表示,并通过自注意力机制捕捉不同代码片段之间的依赖关系,从而模型可以深入理解代码的结构、语义和上下文信息;并使用多头的自注意力机制,整体编码过程包括三部分,分别为自注意力层、全连接层和残差连接和归一化;所述自注意力层,用于捕捉输入序列内部的依赖关系和建立上下文之间的联系;自注意力层在智能合约代码特征提取过程中提供了特征交互、上下文关联和长距离依赖功能,其中特征交互旨自注意力机制能够对输入序列中的每个位置与其他位置进行交互,便于捕捉序列内部的依赖关系和语义信息,通过计算位置之间的相对权重,从而对不同位置的代码特征进行加权组合;上下文关联旨其能够对每个位置与其他位置的代码相关性进行建模,从而将全局上下文信息纳入考虑,其中每个位置都可以利用其他位置的特征进行编码,从而获取全局视野和上下文依赖;长距离依赖是由于自注意力机制能够通过位置之间的相对权重来建模依赖关系,它具有处理长距离依赖的能力;所述自注意力层是通过计算注意力分数来确定每个位置与其他位置的交互权重,注意力分数由输入序列中的特征向量计算得到,使用点积的计算方式;其中通过每个Token的Q向量与其余合约代码Token的K向量之间计算距离,并作为权重与V向量相乘,通过Softmax作为当前编码器的输出;其中所述自注意力层注意力分数计算公式如下,其中Q,K,V分别代表query、key和value三个投影后的向量,dk表示key的维度: 所述全连接层用于对输入序列的特征进行映射和变换,以提取更高级别的代码特征表示,同时全连接层通过使用具有较少输出维度的权重矩阵来实现特征压缩和维度约简,所述全连接层在线性变化后引入非线性激活函数,非线性激活函数能够实现非线性关系,使用两层全连接来对自注意力层得到的编码特征进行组合,其中全连接层计算公式如下:Zi=ghi=W2σW1hiZj=gZi=W4σW3Zi其中σ为ReLu激活函数,使用全连接层可以有效的捕获合约代码的全局特征,为模型后续解码器提供有效特征;所述残差连接和归一化,作用于每一层全连接层和自注意力层的网络前,用于提升模型训练稳定性、减轻梯度消失问题以及促进信息流动;是将输入直接添加到层输出的技术,对于有序的序列特征使用归一化的方式进行处理,将每个位置的代码特征向量沿特征维度进行归一化操作,即对每个位置的特征进行平均值和方差的归一化操作;特征解码器一种两层卷积神经网络的组合方式,将编码器作为输入提供给所述特征解码器的解码部分,所述特征解码器获取编码器中编码层对特殊位Token的编码结果,作为特征解码器的输入,同时最后使用多个卷积核并使用全局最大池化的方法,获取了多个标量特征,每个标量特征分别代表以下多种合约类别,并使用Softmax对结果进行处理,将结果映射到0,1之间;所述解码部分每个卷积层使用32个卷积核并且在模型的分类层的顶部使用全局最大池化方法,该池化方法不采取窗口的形式输出每个特征图的最大值,而是通过全局最大池化获得每个特征图中的最大值,然后将该最大值组合成特征向量并发送到模型的最终分类层,使用该池化方法可以将代码中最具代表性和重要性的特征保留下来,同时忽略其他次要的特征。

全文数据:

权利要求:

百度查询: 布比(北京)网络技术有限公司 基于代码表征的智能合约模版推荐方法、装置及电子设备

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。