1.一种软件漏洞的分类方法,其特征在于,所述分类方法包括如下步骤:从漏洞数据库中获取训练集和测试集;
构建C-GRU模型;
采用所述训练集和所述测试集训练和测试所述C-GRU模型,得到训练后的C-GRU模型;
获取软件漏洞文本集;
采用Skip-gram语言模型将每条漏洞文本中的词映射到预设维数的空间中,生成漏洞词向量,得到每条漏洞文本的二维文本特征矩阵;
将所述二维文本特征矩阵输入所述训练后的C-GRU模型进行分类,获得分类结果。
2.根据权利要求1所述软件漏洞的分类方法,其特征在于,所述C-GRU模型包括嵌入层、卷积层、最大池化层、GRU层和输出层。
3.根据权利要求1所述的软件漏洞的分类方法,其特征在于,所述采用Skip-gram语言模型将每条漏洞文本中的词映射到预设维数的空间中,生成漏洞词向量,得到每条漏洞文本的二维文本特征矩阵,具体包括:采用Skip-gram语言模型基于无监督学习算法训练生成漏洞文本中每个词的预设维数的漏洞词向量;
将漏洞文本中的所有词的漏洞词向量纵向堆叠,生成所述漏洞文本的二维文本特征矩阵。
4.根据权利要求3所述的软件漏洞的分类方法,其特征在于,所述采用Skip-gram语言模型基于无监督学习算法训练生成漏洞文本中每个词的预设维数的漏洞词向量,具体包括:将所述漏洞文本中的第i个词输入所述Skip-gram语言模型获得第i个词的初始预设维数输出向量,并利用目标函数计算初始的目标函数值;
采用负样本对第i个词进行更新,得到第j次迭代的第i个词;
将所述第j次迭代的第i个词输入所述Skip-gram语言模型获得第i个词的第j次迭代预设维数输出向量;
采用公式 计算第j次迭代的目标函数值;其中,
wo是指输入的词, 是词wo的输出向量,h∈RN是隐含层的值,Sneg是任意抽取的负样本集合,wn是输入的负样本, 表示负样本wn的输出向量;
判断第j次迭代的目标函数值与第j-1次迭代的目标函数值的差值是否小于预设阈值,得到第一判断结果;
若所述第一判断结果表示差值小于预设阈值,则判断迭代次数是否小于预设迭代次数,得到第二判断结果;
若所述第二判断结果表示所述迭代次数小于所述预设迭代次数,则采用负样本对第j次迭代的第i个词进行更新,得到第j+1次迭代的第i个词,令迭代次数的数值增加1,返回步骤“将所述第j次迭代的第i个词输入所述Skip-gram语言模型获得第i个词的第j次迭代预设维数输出向量”;
若所述第二判断结果表示所述迭代次数不小于所述预设迭代次数,则输出第i个词的第j次迭代预设维数输出向量作为第i个词的预设维数的漏洞词向量;
若所述第一判断结果表示差值不小于预设阈值,则输出第i个词的第j次迭代预设维数输出向量作为第i个词的预设维数的漏洞词向量。
5.根据权利要求1所述的软件漏洞的分类方法,其特征在于,所述采用Skip-gram语言模型将每条漏洞文本中的词映射到预设维数的空间中,生成漏洞词向量,得到每条漏洞文本的二维文本特征矩阵,之前还包括:过滤漏洞文本的标点符号和特殊字符,得到过滤后的漏洞文本;
将过滤后的漏洞文本中的大写字符转换成小写字符,得到转换后的漏洞文本;
将转换后的漏洞文本中的英文单词转换成名词形式,得到形式转化后的漏洞文本;
过滤所述形式转化后的漏洞文本中的停用词,得到预处理后的漏洞文本。
6.一种软件漏洞的分类系统,其特征在于,所述分类系统包括:训练集和测试集获取模块,用于从漏洞数据库中获取训练集和测试集;
C-GRU模型构建模块,用于构建C-GRU模型;
C-GRU模型训练和测试模块,用于采用所述训练集和所述测试集训练和测试所述C-GRU模型,得到训练后的C-GRU模型;
漏洞文本集获取模块,用于获取软件漏洞文本集;
漏洞文本映射模块,用于采用Skip-gram语言模型将每条漏洞文本中的词映射到预设维数的空间中,生成漏洞词向量,得到每条漏洞文本的二维文本特征矩阵;
分类模块,用于将所述二维文本特征矩阵输入所述训练后的C-GRU模型进行分类,获得分类结果。
7.根据权利要求6所述软件漏洞的分类系统,其特征在于,所述C-GRU模型包括嵌入层、卷积层、最大池化层、GRU层和输出层。
8.根据权利要求6所述的软件漏洞的分类系统,其特征在于,所述漏洞文本映射模块,具体包括:漏洞词向量训练生成子模块,用于采用Skip-gram语言模型基于无监督学习算法训练生成漏洞文本中每个词的预设维数的漏洞词向量;
纵向堆叠子模块,用于将漏洞文本中的所有词的漏洞词向量纵向堆叠,生成所述漏洞文本的二维文本特征矩阵。
9.根据权利要求8所述的软件漏洞的分类系统,其特征在于,所述漏洞词向量训练生成子模块,具体包括:初始化单元,用于将所述漏洞文本中的第i个词输入所述Skip-gram语言模型获得第i个词的初始预设维数输出向量,并利用目标函数计算初始的目标函数值;
更新单元,用于采用负样本对第i个词进行更新,得到第j次迭代的第i个词;
向量输出单元,用于将所述第j次迭代的第i个词输入所述Skip-gram语言模型获得第i个词的第j次迭代预设维数输出向量;
目标函数值计算单元,用于采用公式 计算第j
次迭代的目标函数值;其中,wo是指输入的词, 是词wo的输出向量,h∈RN是隐含层的值,Sneg是任意抽取的负样本集合,wn是输入的负样本, 表示负样本wn的输出向量;
第一判断单元,用于判断第j次迭代的目标函数值与第j-1次迭代的目标函数值的差值是否小于预设阈值,得到第一判断结果;
第二判断单元,用于若所述第一判断结果表示差值小于预设阈值,则判断迭代次数是否小于预设迭代次数,得到第二判断结果;
第二判断结果处理单元,用于若所述第二判断结果表示所述迭代次数小于所述预设迭代次数,则采用负样本对第j次迭代的第i个词进行更新,得到第j+1次迭代的第i个词,令迭代次数的数值增加1,返回步骤“将所述第j次迭代的第i个词输入所述Skip-gram语言模型获得第i个词的第j次迭代预设维数输出向量”;若所述第二判断结果表示所述迭代次数不小于所述预设迭代次数,则输出第i个词的第j次迭代预设维数输出向量作为第i个词的预设维数的漏洞词向量;
第一判断结果处理单元,用于若所述第一判断结果表示差值不小于预设阈值,则输出第i个词的第j次迭代预设维数输出向量作为第i个词的预设维数的漏洞词向量。
10.根据权利要求6所述的软件漏洞的分类系统,其特征在于,所述分类系统,还包括:第一过滤模块,用于过滤漏洞文本的标点符号和特殊字符,得到过滤后的漏洞文本;
大小写转换模块,用于将过滤后的漏洞文本中的大写字符转换成小写字符,得到转换后的漏洞文本;
形式转化模块,用于将转换后的漏洞文本中的英文单词转换成名词形式,得到形式转化后的漏洞文本;
第二漏洞模块,用于过滤所述形式转化后的漏洞文本中的停用词,得到预处理后的漏洞文本。