【技术实现步骤摘要】
一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统
[0001]本专利技术涉及代码摘要生成
,具体涉及一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法及系统。
技术介绍
[0002]随着越来越多的研究人员将深度学习应用到解决软件工程领域的问题上,代码自动摘要技术作为程序理解的一项重要突破,在近几年逐渐成为研究热点。代码摘要是指能简明扼要地描述代码行为、主体和设计思想的一种概括的表示,它可以帮助代码阅读者迅速获取代码基本内容方面的信息。生成代码摘要的任务可以描述为:利用源代码序列来预测方法、变量、类或代码段的名称。自动代码摘要生成是指运用计算机自动地为未知源代码或未知代码片段生成具有可读性的相关描述,为不了解此段代码的阅读者提供代码摘要。源代码的自然语言摘要通过显著减少开发人员的工作量来促进程序理解。
[0003]目前的代码摘要生成任务虽然完成了为未知源代码段生成具有可读性的代码摘要的任务,但仍存在以下不足:(1)通常情况下,二进制源代码长度差距较大,使得模型可捕获代码句柄之间的长距离依赖关系能力较差;(2)从源代码编译生成二进制过程中,有很多有助于理解代码意图的信息会被丢失,比如:函数名称、变量名称、数据结构定义、变量类型定义、注释信息等,为二进制代码摘要生成产生了更大的阻碍。
[0004]在二进制代码摘要生成任务中,如何解决二进制源代码长度差距较大,使得模型可捕获代码token之间的长距离依赖关系能力较差这一问题,以及如何处理从源代码编译生成二进制过程中 ...
【技术保护点】
【技术特征摘要】
1.一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,包括以下步骤:将一段程序经过编译和链接过程生成可执行程序,提取其中的二进制代码序列和对应的二进制函数名序列;对所述二进制函数名序列进行编码,获得函数名表示向量;将所述二进制代码序列输入BERT预训练语言模型,获取二进制代码序列全局上下文信息特征;利用多个卷积核对所述二进制代码序列全局上下文信息特征进行局部语义特征提取;将所述二进制代码序列全局上下文信息特征和局部语义特征输入预训练的深层等长卷积神经网络,获取二进制代码序列的表示向量;将所述函数名表示向量和所述二进制代码序列的表示向量输入预训练的前馈神经网络,获取二进制代码摘要。2.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,提取二进制代码序列和对应的二进制函数名序列的方法包括:去除所述可执行程序中的静态数据区、堆和栈,即获得二进制代码序列和与其对应的二进制函数名序列。3.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,对所述二进制函数名序列进行编码,获得函数名表示向量的具体过程包括:对于所述二进制函数名序列中的每一个二进制函数名,提取关键词,计算二进制函数名关键词的词频,所述词频表示该二进制函数名关键词在所述二进制函数名序列中出现的概率;计算二进制函数名关键词的逆文档频率,所述逆文档频率表示该函数名关键词在所述二进制函数名序列中的普遍程度;将所述词频和所述逆文档频率相乘,获得函数名表示向量。4.根据权利要求3所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,所述词频的计算公式为:其中,表示函数名关键词w在二进制函数名集D
i
中出现的概率,count(w)表示函数名关键词w出现的次数,|D
i
|表示二进制函数名集D
i
中出现的所有函数名关键词的数量;所述逆文档频率的计算公式为:其中,IDF
w
表示当前函数名关键词w在二进制函数名集的普遍程度,n表示二进制函数名集总数,l(w,D
i
)表示当前二进制函数名集D
i
中是否包含当前函数名关键词w,包含则为1,不包含则为0。5.根据权利要求1所述的一种基于BERT模型和深层等长卷积神经网络的二进制代码摘要生成方法,其特征在于,将所述二进制代码序列输入BERT预训练语言模型,获取二进制代
码序列全局上下文信息特征的具体过程包括:计算二进制代码序列T中每个二进制代码的位置编码,获得所述二进制代码序列T对应的位置编码序列LE;将所述二进制代码序列T和对应的位置编码序列LE相加,获得输入T
input
;将输入T
input
通过自注意力机制处理,获得自注意力机制的输出结果Attention(Q,K,V);具体过程包括:将输入T
input
与查询向量的权重矩阵、值向量的权重矩阵、键向量的权重矩阵分别相乘,获得查询向量Q、值向量K、键向量V;将查询向量Q、值向量K、键向量V作为softmax函数的输入,通过运算获得自注意力机制的输出结果Attention(Q,K,V);其中,d
k
为调节参数;将输入T
input
和输出结果Attenti...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。