CN113553052B - 使用Attention编码表示自动识别与安全相关的代码提交的方法 - Google Patents

使用Attention编码表示自动识别与安全相关的代码提交的方法 Download PDF

Info

Publication number
CN113553052B
CN113553052B CN202110641394.9A CN202110641394A CN113553052B CN 113553052 B CN113553052 B CN 113553052B CN 202110641394 A CN202110641394 A CN 202110641394A CN 113553052 B CN113553052 B CN 113553052B
Authority
CN
China
Prior art keywords
code
vector
word
patch
semantic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110641394.9A
Other languages
English (en)
Other versions
CN113553052A (zh
Inventor
罗飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kirin Software Co Ltd
Original Assignee
Kirin Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kirin Software Co Ltd filed Critical Kirin Software Co Ltd
Priority to CN202110641394.9A priority Critical patent/CN113553052B/zh
Publication of CN113553052A publication Critical patent/CN113553052A/zh
Application granted granted Critical
Publication of CN113553052B publication Critical patent/CN113553052B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Machine Translation (AREA)

Abstract

一种使用Attention编码表示自动识别与安全相关的代码提交的方法,包括如下步骤:步骤S1:准备数据集;步骤S2:预处理数据集;步骤S3:获得Attention编码表示,得到编码向量;步骤S4:训练神经网络分类模型;步骤S5:将编码向量输入训练好的神经网络,输出识别结果。

Description

使用Attention编码表示自动识别与安全相关的代码提交的 方法
技术领域
本发明涉及神经网络数据集预处理技术领域,具体涉及一种Attention编码表示自动识别与安全相关的代码提交的方法。
背景技术
软件漏洞是指在系统的设计、实现、配置或者操作过程中造成的,可被非授权人员非法利用,对系统和数据的保密性、完整性、可用性等造成威胁的软硬件缺陷。近年来,在各种软件产品中发现和报告的漏洞数量急剧增加。目前有国际安全组织维护的公共漏洞数据库,对已发现的漏洞进行披露。然而一些软件厂商出于安全等原因并不会向官方的漏洞网站公开其发现的漏洞,而是选择在内部代码库中静默更改代码以修复漏洞,之后发行更新版本。对于非安全专业领域的用户,并不能判断发行版本是与安全相关的更新还是增强软件功能的更新。对于一些用户(例如企业级用户),由于经济等原因不宜跟进软件的每个更新版本进行升级安装。这种情况导致其系统存在安全隐患。
一种已经研发出的用于解决上述问题的方法是:将源代码存储库中的代码提交信息和日志信息视为用自然语言编写的文档,并使用自然语言处理任务中标准的文档分类方法分别对它们进行分类,最后使用投票机制将两个分类器的结果综合得到最终分类结果,从而得出该文件是否为与安全相关的提交。这种方法将源代码视为自然语言,使用NLP中独热编码方法Bag of Words将源码文件转化为向量形式,再输入线性支持向量机分类器中得到分类结果。
该技术存在如下缺点:
1)代码表征方式缺失信息:编程语言本来就是具有严格的语法结构信息,上述方案使用了Bag of Words方法标记给定单词在句子中出现的次数完全忽略句子中单词顺序的表示,损失了原本就具有规律的代码结构信息。
2)Bag of Words方法得到的表示向量通常都是高维的稀疏向量,这种输入数据通常严重影响分类器的准确率。
3)该方法将日志信息和代码信息独立地进行分类之后使用投票机制得出分类结果,这种对原始信息分类后再次计算分类结果的方法由于增加了整个流程中出现误差的概率,且没有通过训练结果反馈进行矫正的机制,因此更容易导致较低的分类准确率。
发明内容
针对现有方法表征方式缺失信息,分类准确率低等问题,本发明提供了一种使用Attention编码表示自动识别与安全相关的代码提交的方法,包括如下步骤:
步骤S1:准备数据集;
步骤S2:预处理数据集;
步骤S3:获得Attention编码表示,得到编码向量;
步骤S4:训练神经网络分类模型;
步骤S5:将编码向量输入训练好的神经网络,输出识别结果。
其中,所述步骤S1包括:
步骤S11:列出常出现漏洞的软件条目,查找其中具有开源代码库的网址;
步骤S12:根据开源代码库的网址下载软件代码库历次提交的代码信息和日志信息。
其中,所述步骤S2包括:
步骤S21,提取有意义字符,得到代码信息对应的补丁文件patch_semantic,并将日志信息标记为msg_semanic;
步骤S22,分词:使用基于Keras的英文分词工具,对日志文件msg_semantic及补丁文件patch_semantic分别进行分词提取得到msg_list及patch_list,并分别存储为msg_dict及patch_dict变量;
步骤S23,统一句子序列长度:对步骤S22得到的每个patch_dict变量,统计每个变量中text文本序列长度,取其中90%的变量长度的变量的长度作为统一的序列长度并以patch_seauence_length表示,对于text文本序列长度不足300的给其序列填零使其长度为300,对超过300的text文本序列长度部分做截断处理,对msg_dict变量做相同操作;
步骤S24,标注样本类别:对于修复漏洞的补丁文件所对应patch_dict变量标记为正样本,label取值为1,未修复漏洞的补丁文件所对应patch_dict变量标记为负样本,label取值为0;对日志文件做相同处理;
步骤S25,词嵌入:将步骤S24得到的dict型变量使用word2vec表示成向量,并将日志信息和代码信息所对应的向量拼接后得到
Figure BDA0003107941340000031
其中xi表示第i个单词对应的词向量,d1表示词向量的维度,L=l1+l2表示将日志信息和代码信息拼接后形成的整段文本向量的长度。
其中,所述步骤S3包括:
步骤S31:获取第i个向量与第j个向量之间的代码语义相关程度
Figure BDA0003107941340000032
Figure BDA0003107941340000033
其中WQ
Figure BDA0003107941340000034
为参数矩阵,随机初始化生成,d2是矩阵维度,T代表矩阵转置;
步骤S32:获取第i个单词的语义向量与第j个单词的语义向量之间的代码语义相关性在这段代码中的重要性,记作
Figure BDA0003107941340000035
Figure BDA0003107941340000041
其中e为自然常数;
步骤S33:获取第i个单词在这段语句中所形成的代码语义编码向量,记作
Figure BDA0003107941340000042
Figure BDA0003107941340000043
其中
Figure BDA0003107941340000044
为参数矩阵,经过随机初始化生成;
步骤S34:获取第i个向量和第j个向量之间相对位置的关系,记作
Figure BDA0003107941340000045
Figure BDA0003107941340000046
其中,
Figure BDA0003107941340000047
是函数,确定方法如下:
Figure BDA0003107941340000048
其中ui代表第i个位置的空间位置编码向量,uj代表第j个位置的空间位置编码向量,随机初始化赋值;
步骤S35:获取第i个单词的位置向量与第j个单词的位置向量之间的位置相关性在这段语句中的重要性,记作
Figure BDA0003107941340000049
Figure BDA00031079413400000410
步骤S36:获取在第i个位置单词的位置信息在这段语句中与其他位置单词的相对位置形成的位置编码向量,记作
Figure BDA00031079413400000411
Figure BDA00031079413400000412
步骤S37:获取第i个单词对代码语义信息的重视程度,记作fi p
Figure BDA00031079413400000413
其中
Figure BDA0003107941340000051
是参数矩阵,
Figure BDA0003107941340000052
是偏置参数;
步骤S38:获取第i个单词对位置信息的重视程度,记作fi c
Figure BDA0003107941340000053
步骤S39:获取融合代码语义信息和代码结构信息编码向量,记作
Figure BDA0003107941340000054
Figure BDA0003107941340000055
其中,所述步骤S4包括:
步骤S41:划分训练集和测试集;
步骤S42:初始化神经网络模型;
步骤S43:设置训练参数;
步骤S44:进行模型训练。
本发明提供的使用Attention编码表示自动识别与安全相关的代码提交的方法,将识别问题转化为机器学习二分类任务,能够自动识别代码提交文件中的每个补丁文件是否做了与安全相关的更改,该方法为用户判断软件的更新版本是与安全相关的更新还是增强功能相关的更新提供了一种解决方案。
附图说明
图1:本发明的使用Attention编码表示自动识别与安全相关的代码提交的方法的总体逻辑框架图。
图2:本发明的使用Attention编码表示自动识别与安全相关的代码提交的方法的代码提交文件预处理流程图。
图3:本发明的使用Attention编码表示自动识别与安全相关的代码提交的方法的神经网络模型结构图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
本发明提出了一种使用Attention编码表示自动识别与安全相关的代码提交的方法,其逻辑体系主要包括以下几个部分:1.代码提交文件预处理模块;2.编码表示模块;3.识别模块。其中代码提交文件预处理模块,将下载的代码提交文件经过提取有效数据、分词、统一序列长度、标注文件类别和词嵌入处理后得到能够输入Attention编码表示模块的数据形式;编码表示模块,使用Attention注意机制的编码模型将输入数据表示成向量形式;识别模块,将识别代码提交文件是否为与安全相关的更改问题转化为机器学习二分类问题,分类结果为1时表示该代码提交做了与安全相关的修改,结果为0时表示该代码提交做的修改为非安全相关的修改,该模块使用神经网络模型实现,将编码表示模块处理所得的向量输入神经网络分类模型后输出分类结果0或1。总体逻辑框架图如图1。
本发明的一较佳的实施例的详细的实现方法如下:
一、准备数据集
此步骤确定需要进行分类的软件条目,并下载相应软件的代码提交,为后续步骤准备训练神经网络的数据集,包含多个详细步骤,具体流程如下:
1、首先列出常出现漏洞的软件条目(例如python、squid、openssh、openssl),并查找其中具有开源代码库的网址。
2、根据开源代码库的网址下载软件代码库历次提交的代码信息和日志信息,代码信息既包括修复漏洞的补丁文件(即与安全相关的提交),又包括非修复漏洞的补丁文件(称为patch)。
二、预处理数据集
此步骤对步骤1中下载的数据集进行预处理后得到能够输入神经网络模型的向量格式数据。此部分功能由代码提交文件预处理模块实现,代码提交文件预处理流程图如图2,结合图2详细描述具体步骤:
1、提取有意义字符:为了保留补丁文件有意义的更改行,首先删除了每个补丁文件中的上下文行,保留实际更改行。其次删除注释部分、删除停用字、过滤非字母数字字符并规范化文本数据,经过上述处理后得到的每个patch文件称为patch_semantic文件。日志文件直接当作有意义的文件并标记为msg_semantic。
2、分词:使用基于Keras的英文分词工具,对补丁文件以及日志文件(称为msg)分别进行分词提取得到patch_list和msg_list。得到的每个patch_list文件存为一个python字典变量,形式为patch_dict:{”text”:文本,”label”:分类标签},patch_dict的长度即为每一个补丁文件中词的个数。对msg_list进行相同的处理,得到msg_dict变量。
3、统一句子序列长度:统计2中得到的每个patch_dict变量长度,patch_dict变量形式为{”text”:文本,”label”:分类标签}。其中”text”:文本。“文本”的长度不同。取其中90%的patch_dict变量的长度作为统一的序列长度并用patch_sequence_length表示,例如取patch_sequence_length为300,若text文本序列长度不足300,则给序列填零使其长度为300,对超过300的部分做截断处理。对msg_dict变量做相同操作。
4、标注样本类别:对于修复漏洞的(即与安全相关的修改)补丁文件所对应的patch_dict标记为正样本,”label”取值为1,未修复漏洞的补丁文件所对应的patch_dict标记为负样本,”label”取值为0。对日志文件做相同处理。
5、词嵌入:将(4)得到的dict型变量使用word2vec表示成向量。由于日志信息
Figure BDA0003107941340000071
和代码信息
Figure BDA0003107941340000072
一一对应,为了同步利用两种信息进行分类,首先将两种信息拼接得到
Figure BDA0003107941340000073
记作
Figure BDA0003107941340000081
其中xi表示第i个单词对应的词向量,d1表示词向量的维度,L=l1+l2表示将日志信息和代码信息拼接后形成的整段文本向量的长度。
三、获得Attention编码表示
此步骤将步骤2得到的向量输入Attention编码表示模块,通过一系列步骤计算得到包含语义信息和代码结构信息的向量表示,包含多个详细步骤,具体流程如下:
1、计算第i个向量与第j个向量之间的代码语义相关程度记为
Figure BDA0003107941340000082
计算公式如下:
Figure BDA0003107941340000083
其中WQ
Figure BDA0003107941340000084
为参数矩阵,随机初始化生成,后期随着神经网络的学习会迭代更新,d2是矩阵维度,本发明取为512。T代表矩阵转置。
本发明中的数学公式,变量用斜体表示,常量用正体。矢量为粗体,标量为白体(非粗体)。
2、计算第i个单词的语义向量与第j个单词的语义向量之间的代码语义相关性在这段代码中的重要性,记作
Figure BDA0003107941340000085
计算公式如下:
Figure BDA0003107941340000086
其中e为自然常数。
Figure BDA0003107941340000087
3、计算第i个单词在这段语句中所形成的代码语义编码向量,记作
Figure BDA0003107941340000088
计算公式如下
Figure BDA0003107941340000089
其中
Figure BDA0003107941340000091
为参数矩阵,经过随机初始化生成,后期随着神经网络的学习会迭代更新。
4、计算第i个向量和第j个向量之间相对位置的关系,记作
Figure BDA0003107941340000092
计算公式如下:
Figure BDA0003107941340000093
其中,
Figure BDA0003107941340000094
是函数,定义为:
Figure BDA0003107941340000095
其中ui代表第i个位置的空间位置编码向量,uj代表第j个位置的空间位置编码向量,随机初始化赋值。
由于前1~l1个向量表示的是代码信息,L-l1~L个向量表示的是日志信息,这两种信息在位置上的相关性较低,因此当计算这两种向量的位置相关性时使用
Figure BDA0003107941340000096
函数将两者相关性降低。
5、计算第i个单词的位置向量与第j个单词的位置向量之间的位置相关性在这段语句中的重要性,记作
Figure BDA0003107941340000097
计算公式如下:
Figure BDA0003107941340000098
6、计算在第i个位置单词的位置信息在这段语句中与其他位置单词的相对位置形成的位置编码向量,记作
Figure BDA0003107941340000099
计算公式如下:
Figure BDA00031079413400000910
7、计算第i个单词对代码语义信息的重视程度,记作fi p,计算公式如下:
Figure BDA00031079413400000911
其中
Figure BDA0003107941340000101
是参数矩阵,
Figure BDA0003107941340000102
是偏置参数。
8、计算第i个单词对位置信息的重视程度,记作fi c,计算公式如下:
Figure BDA0003107941340000103
9、计算融合代码语义信息和代码结构信息编码向量,记作
Figure BDA0003107941340000104
计算公式如下:
Figure BDA0003107941340000105
四、训练神经网络
此步骤首先初始化神经网络分类模型,再将步骤3得到的
Figure BDA0003107941340000106
向量表示输入神经网络,通过训练得出可以对代码提交文件进行分类的神经网络,包含多个详细步骤,具体流程如下:
1、划分训练集和测试集:将步骤3得到的patch_list中的dict编码向量随机排序,取其中95%个样本作为训练样本,其余5%的元素作为测试样本。对新msg_list序列进行相同的操作。
2、初始化神经网络模型:本发明使用的神经网络模型借鉴了Yoon KIM提出的TextCNN模型。其模型结构如图3所示。
第一层为输入层,输入层的作用是获取输入向量。输入层是一个L×d1的矩阵。也就是说,输入层的每一行就是一个单词所对应的d1维的词向量;
第二层为卷积层,卷积层的作用是提取输入信息的特征。本模型中使用6个卷积滤波器,卷积核的宽度为d1,卷积核的长分别取(3,3,4,4,5,5),卷积层之后的激活函数为ReLU函数。
第三层为池化层,由于在卷积层之后得到的特征维度较高,引入池化层进行降维。这里使用最大池化方法(Max pooling),即为从每个滑动窗口产生的特征向量中筛选出一个最大的特征,然后将这些特征拼接起来构成向量表示。
第四层为全连接层,全连接层的作用是将池化层后的所有局部特征拼接成全局特征,之后计算分类结果。本模型中使用Softmax激活函数输出每个类别的概率。
3、训练参数设置:每一次训练选取的样本数用batch_size表示,此方法中batch_size取为24;设置初始学习率learning_rate为10-6
4、模型训练的衡量指标是AUC。当前epoch训练完毕之后,用测试集衡量当前训练结果,并记下当前epoch的AUC,如果当前的AUC较上一个epoch没有提升,那么降低学习率,实际操作时让当前的学习率降低1/5,直到10个epoch测试集的AUC都没有提升就停止训练。初始学习率为10-6
五、识别代码提交文件
将步骤3得到的信息编码向量输入代码提交模块训练的神经网络模型中进行识别,输出0或1,其中0表示非安全相关的代码提交,1表示与安全相关的代码提交。
本发明的有益效果如下:
1.本发明提出了一种对代码提交文件进行自动分类的方法,将识别问题转化机器学习二分类任务,能够自动识别代码提交文件中的每个补丁文件是否做了与安全相关的更改,该方法为用户判断软件的更新版本是与安全相关的更新还是增强功能相关的更新提供了一种解决方案。
2.本发明提出的代码提交文件自动分类方法使用了Attention的编码方式为源代码文件和日志文件进行编码表示,该编码方式能够保留代码结构信息和代码语义信息,解决现有方法代码表征方式缺失信息的问题。同时,本发明提供的Attention的编码方式,通过
Figure BDA0003107941340000111
函数的引入降低了日志信息和代码信息的位置相关性。
3.本发明针对现有方法使用bag of words编码+线性分类器,存在高维稀疏向量输入线性分类器导致分类准确率不高的问题,本发明使用Attention编码+非线性的基于机器学习的分类方案准确率更高。
4.本发明提出的分类方法不同于现有技术方案中的对日志信息和代码信息分别进行分类的方法,将两种信息同时进行作为神经网络的输入数据只训练一个神经网络分类模型,减少了多个计算环节带来的误差。
本发明中,所谓的“神经网络”,是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数,通常被用于处理人工智能问题,例如,推理、决策。
本发明中,所谓的“自然语言处理(Natural Language Processing,NLP)”,是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间用自然语言进行有效通信的理论和方法。融语言学、计算机科学、数学等于一体的科学。旨在从文本数据中提取信息。目的是让计算机处理或“理解”自然语言,以执行自动翻译、文本分类和情感分析等。自然语言处理是人工智能中最为困难的问题之一。
本发明中,所谓的“Epoch”,是指使用训练集的全部数据对模型进行一次完整训练。
本发明中,所谓的“Bag of Words”,是一种独热编码方法,该方法构建数据集中所有唯一单词的词汇表,并将唯一索引与词汇表中的每个单词相关联。然后将每个句子表示为与词汇表中不同单词的数量一样长的列表。在此列表中的每个索引处,标记给定单词在句子中出现的次数。
本发明中,所谓的“二分类”,是指通过训练集{(x1,y1),(x2,y2),…,(xn,yn)}进行学习,建立一个从输入空间X到输出空间Y的映射f:X→Y。其中Y={-1,+1}或{0,1}。
本发明中,所谓的“Attention注意机制”,全称为Bidirectional EncoderRepresentations from Transformer,Attention模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示,然后将文本的语义表示在特定NLP任务中作微调,最终应用于该NLP任务。
本发明中,所谓的“AUC”,是指一种用于机器学习分类任务中判断分类器效果的指标。ROC曲线为一种感受性曲线,用于选取最佳的数据值,ROC曲线下与坐标轴围成的面积称为AUC(Area Under Curve)。AUC取值范围[0~1],数值越大,表示模型分类效果越好。
本发明中,所谓的“word2vec”,是指常用在各种NLP任务中的一种词嵌入方式。词嵌入是指将不可计算、非结构化的词转化为可计算、结构化的向量。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

Claims (2)

1.一种使用Attention编码表示自动识别与安全相关的代码提交的方法,其特征在于,包括如下步骤:
步骤S1:准备数据集;
步骤S2:预处理数据集;
步骤S3:获得Attention编码表示,得到编码向量;
步骤S4:训练神经网络分类模型;
步骤S5:将编码向量输入训练好的神经网络,输出识别结果;
所述步骤S1包括:
步骤S11:列出常出现漏洞的软件条目,查找其中具有开源代码库的网址;
步骤S12:根据开源代码库的网址下载软件代码库历次提交的代码信息和日志信息;
所述步骤S2包括:
步骤S21,提取有意义字符,得到代码信息对应的补丁文件patch_semantic,并将日志信息标记为msg_semanic;
步骤S22,分词:使用基于Keras的英文分词工具,对日志文件msg_semantic及补丁文件patch_semantic分别进行分词提取得到msg_list及patch_list,并分别存储为msg_dict及patch_dict变量;
步骤S23,统一句子序列长度:对步骤S22得到的每个patch_dict变量,统计每个变量中text文本序列长度,取其中90%的变量的长度作为统一的序列长度并以patch_seauence_length表示,对于text文本序列长度不足300的给其序列填零使其长度为300,对超过300的text文本序列长度部分做截断处理,对msg_dict变量做相同操作;
步骤S24,标注样本类别:对于修复漏洞的补丁文件所对应patch_dict变量标记为正样本,label取值为1,未修复漏洞的补丁文件所对应patch_dict变量标记为负样本,label取值为0;对日志文件做相同处理;
步骤S25,词嵌入:将步骤S24得到的dict型变量使用word2vec表示成向量,并将日志信息和代码信息所对应的向量拼接后得到
Figure FDA0003629706520000021
其中xi表示第i个单词对应的词向量,d1表示词向量的维度,L=l1+l2表示将日志信息和代码信息拼接后形成的整段文本向量的长度;
所述步骤S3包括:
步骤S31:获取第i个向量与第j个向量之间的代码语义相关程度
Figure FDA0003629706520000022
Figure FDA0003629706520000023
其中WQ
Figure FDA0003629706520000024
为参数矩阵,随机初始化生成,d2是矩阵维度,T代表矩阵转置;
步骤S32:获取第i个单词的语义向量与第j个单词的语义向量之间的代码语义相关性在这段代码中的重要性,记作
Figure FDA0003629706520000025
Figure FDA0003629706520000026
其中e为自然常数;
步骤S33:获取第i个单词在这段语句中所形成的代码语义编码向量,记作
Figure FDA0003629706520000027
Figure FDA0003629706520000028
其中
Figure FDA0003629706520000029
为参数矩阵,经过随机初始化生成;
步骤S34:获取第i个向量和第j个向量之间相对位置的关系,记作
Figure FDA00036297065200000210
Figure FDA0003629706520000031
其中,
Figure FDA0003629706520000032
是函数,确定方法如下:
Figure FDA0003629706520000033
其中ui代表第i个位置的空间位置编码向量,uj代表第j个位置的空间位置编码向量,随机初始化赋值;
步骤S35:获取第i个单词的位置向量与第j个单词的位置向量之间的位置相关性在这段语句中的重要性,记作
Figure FDA0003629706520000034
Figure FDA0003629706520000035
步骤S36:获取在第i个位置单词的位置信息在这段语句中与其他位置单词的相对位置形成的位置编码向量,记作
Figure FDA0003629706520000036
Figure FDA0003629706520000037
步骤S37:获取第i个单词对代码语义信息的重视程度,记作fi p
Figure FDA0003629706520000038
其中
Figure FDA0003629706520000039
是参数矩阵,
Figure FDA00036297065200000310
是偏置参数;
步骤S38:获取第i个单词对位置信息的重视程度,记作fi c
Figure FDA00036297065200000311
步骤S39:获取融合代码语义信息和代码结构信息编码向量,记作
Figure FDA00036297065200000312
Figure FDA00036297065200000313
2.如权利要求1所述的使用Attention编码表示自动识别与安全相关的代码提交的方法,其特征在于,所述步骤S4包括:
步骤S41:划分训练集和测试集;
步骤S42:初始化神经网络模型;
步骤S43:设置训练参数;
步骤S44:进行模型训练。
CN202110641394.9A 2021-06-09 2021-06-09 使用Attention编码表示自动识别与安全相关的代码提交的方法 Active CN113553052B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110641394.9A CN113553052B (zh) 2021-06-09 2021-06-09 使用Attention编码表示自动识别与安全相关的代码提交的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110641394.9A CN113553052B (zh) 2021-06-09 2021-06-09 使用Attention编码表示自动识别与安全相关的代码提交的方法

Publications (2)

Publication Number Publication Date
CN113553052A CN113553052A (zh) 2021-10-26
CN113553052B true CN113553052B (zh) 2022-07-08

Family

ID=78130571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110641394.9A Active CN113553052B (zh) 2021-06-09 2021-06-09 使用Attention编码表示自动识别与安全相关的代码提交的方法

Country Status (1)

Country Link
CN (1) CN113553052B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902175A (zh) * 2019-02-20 2019-06-18 上海方立数码科技有限公司 一种基于神经网络结构模型的文本分类方法及分类系统
CN109992648A (zh) * 2019-04-10 2019-07-09 北京神州泰岳软件股份有限公司 基于词迁徙学习的深度文本匹配方法及装置
EP3767516A1 (en) * 2019-07-18 2021-01-20 Ricoh Company, Ltd. Named entity recognition method, apparatus, and computer-readable recording medium
CN112528168A (zh) * 2020-12-23 2021-03-19 华南理工大学 基于可形变自注意力机制的社交网络文本情感分析方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9818067B2 (en) * 2016-03-24 2017-11-14 Accenture Global Solutions Limited Self-learning log classification system
US10318405B2 (en) * 2016-08-24 2019-06-11 International Business Machines Corporation Applying consistent log levels to application log messages
US10831899B2 (en) * 2018-05-14 2020-11-10 Sap Se Security-relevant code detection system
CN109783603B (zh) * 2018-12-13 2023-05-26 平安科技(深圳)有限公司 基于自编码神经网络的文本生成方法、装置、终端及介质
CN111209168A (zh) * 2020-01-14 2020-05-29 中国人民解放军陆军炮兵防空兵学院郑州校区 一种基于nLSTM-self attention的日志序列异常检测框架
CN111782264A (zh) * 2020-07-22 2020-10-16 平安银行股份有限公司 代码分类信息提取方法、装置、计算机设备及存储介质
CN112925908A (zh) * 2021-02-19 2021-06-08 东北林业大学 一种基于Attention的图注意力网络的文本分类方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109902175A (zh) * 2019-02-20 2019-06-18 上海方立数码科技有限公司 一种基于神经网络结构模型的文本分类方法及分类系统
CN109992648A (zh) * 2019-04-10 2019-07-09 北京神州泰岳软件股份有限公司 基于词迁徙学习的深度文本匹配方法及装置
EP3767516A1 (en) * 2019-07-18 2021-01-20 Ricoh Company, Ltd. Named entity recognition method, apparatus, and computer-readable recording medium
CN112528168A (zh) * 2020-12-23 2021-03-19 华南理工大学 基于可形变自注意力机制的社交网络文本情感分析方法

Also Published As

Publication number Publication date
CN113553052A (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
WO2021042503A1 (zh) 信息分类抽取方法、装置、计算机设备和存储介质
CN110348214B (zh) 对恶意代码检测的方法及系统
CN110532353B (zh) 基于深度学习的文本实体匹配方法、系统、装置
CN112818093B (zh) 基于语义匹配的证据文档检索方法、系统及存储介质
CN111695343A (zh) 错词纠正方法、装置、设备及存储介质
CN115438650B (zh) 融合多源特征的合同文本纠错方法、系统、设备及介质
CN113656547A (zh) 文本匹配方法、装置、设备及存储介质
CN113761444A (zh) 基于代码评分的教程推荐方法、教程推荐装置及终端设备
CN112215014A (zh) 基于用户评论的画像生成方法、装置、介质及设备
CN115033890A (zh) 一种基于对比学习的源代码漏洞检测方法及系统
CN113672731B (zh) 基于领域信息的情感分析方法、装置、设备及存储介质
CN114691525A (zh) 测试用例的选择方法及装置
CN112380848B (zh) 文本生成方法、装置、设备及存储介质
CN113486178A (zh) 文本识别模型训练方法、文本识别方法、装置以及介质
CN113553052B (zh) 使用Attention编码表示自动识别与安全相关的代码提交的方法
US11481389B2 (en) Generating an executable code based on a document
CN115718889A (zh) 针对公司简介的行业分类方法及装置
CN113761875B (zh) 事件抽取方法、装置、电子设备及存储介质
İnce Spell checking and error correcting application for Turkish
CN114780577A (zh) Sql语句生成方法、装置、设备及存储介质
CN114925175A (zh) 基于人工智能的摘要生成方法、装置、计算机设备及介质
Pham et al. VQ-based written language identification
CN114943229B (zh) 一种基于多级别特征融合的软件缺陷命名实体识别方法
CN112364666B (zh) 文本表征方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant