基于知识驱动的预训练模型软件漏洞实体识别装置及方法与流程

文档序号:37009839发布日期:2024-02-09 12:57阅读:24来源:国知局
基于知识驱动的预训练模型软件漏洞实体识别装置及方法与流程

本发明涉及软件漏洞安全领域,更为具体的,涉及一种基于知识驱动的预训练模型软件漏洞实体识别装置及方法。


背景技术:

1、软件漏洞是指在软件开发、运行过程中产生的错误、故障等不可接受的偏差。软件漏洞的数据来源包括cnnvd、cwe、nvd等数据库,这些数据库比较权威,涵盖的漏洞相当广泛。然而这些权威的数据库的更新存在着滞后性,对于在互联网上传播的新兴的软件漏洞无法在第一时间记录下来。而很多包含大量互联网开放信息的论坛和漏洞网站,如stackoverflow、微软官方论坛等,这些论坛和漏洞网站能够在第一时间记录相关的事件,而基于论坛等数据源的研究很少,安全人员很难在第一时间获取关键信息,需要使用半自动/自动化的方法获取软件漏洞相关的实体以及实体关系。

2、常见的实体识别方法大致可分为三种:基于规则和字典的方法、基于传统机器学习的方法和基于深度学习的方法。基于规则和字典的方法依赖于专家人工定制,能够在小范围领域内取得较好的效果;基于传统机器学习的方法对特征选取的要求较高,对语料库的依赖也比较大,在满足条件的情况下可以取得较好的效果;基于深度学习的方法是近年比较热门的方向,也是未来的发展趋势,并且在通用域的实体抽取中都取得了良好的效果。然而,受限于深度学习技术自身的问题,其在标注较少的软件漏洞领域实体提取效果不佳。如何有效的利用海量的数据源的信息,快速准确的提取软件漏洞相关实体,提高实体抽取的准确率,具有重要的意义。


技术实现思路

1、本发明的目的在于克服现有技术的不足,提供一种基于知识驱动的预训练模型软件漏洞实体识别装置及方法,改进了深度学习模型,提升了实体的识别准确率。

2、本发明的目的是通过以下方案实现的:

3、一种基于知识驱动的预训练模型软件漏洞实体识别装置,包括预处理模块、预训练模型模块和知识驱动模块,所述预训练模型模块包括编码单元和深度学习单元;

4、所述预处理模块,用于通过将长文本进行分句,并结合输出结果进行分词,得到由多个单词组成的数组作为预训练模型模块的输入;

5、所述预训练模型模块的编码单元,用于使用预训练模型做编码,将输入转换为特征向量;

6、所述预训练模型模块的深度学习,用于使用深度学习模型,学习特征向量之间的关系;

7、所述知识驱动模块,用于根据软件漏洞知识构建软件漏洞知识库,并设计基于datalog规则的修正算法对深度学习模型的输出进行改进,最终得到修正后的结果;最终的结果作为先验知识再作为预处理模块的部分输入,指导分词。

8、进一步地,所述预训练模型包括bert预训练模型,所述深度学习模型包括bilstm-crf模型。

9、一种基于知识驱动的预训练模型软件漏洞实体识别方法,基于如上所述的装置,所述预处理模块执行以下步骤:

10、首先,采用正则表达式对文本数据进行筛选和清理,去除非文本内容,得到有效的文本数据;

11、其次,采用分句工具对文本进行分句;

12、最后,采用分词工具对分句结果进行分词,使用输出结果对分词结果做改进。

13、进一步地,经过文本预处理模块后,输出的分词结果作为预训练模型模块的输入;在预训练模型模块中,所述编码单元执行如下步骤:

14、首先,输入分句[字1,字2,字3,……,字n],经过bert预训练模型的字典得到对应的整数型token向量[token 1,token 2,token 3,……,token n],每个token代表一个整数值,对应字典中的一个词;

15、再对token向量做填充,若向量长度大于max_len,则用“[pad]”字符将token向量填充至max_len;若向量长度小于max_len,则将token向量向后截断至max_len;

16、最后,将向量输入包含多个隐藏层的transformer层,使用bert预训练模型进行编码,最终得到max_len*768维的embedding向量;其中,max_len表示词向量最大长度,token表示词对应的整数值,embedding表示词向量。

17、进一步地,经过编码单元后,输出的max_len*768维的矩阵作为深度学习单元的输入;在预训练模型模块中,所述深度学习单元包括输入层、bilstm层、crf层和输出层;输入层用于输入文本的embedding向量;bilstm由前向lstm模型和后向lstm模型构成,用于训练数据的学习及新数据预测;crf层连接后向lstm模型,取得bilstm的发射分数,获取最优路径;输出层得到最优路径,返回预测标签。

18、进一步地,在知识驱动模块中,还包括制作datalog规则模板步骤:使用rulename属性表示当前设置规则的名称,每一个名称对应唯一的一条规则;其公式为:

19、rule(content,tags,vul):-rulename(content)

20、其中,tags表示规则所涉及的标签,vul表示当前规则所涉及的软件漏洞知识,content表示具体的设计内容。

21、进一步地,所述bilstm层的神经元包括遗忘门、记忆门和输出门;且在深度学习单元中,所述使用深度学习模型,学习特征向量之间的关系具体包括如下子步骤:

22、首先,遗忘门的输入是前一时刻的隐藏层状态ht-1和当前时刻的输入xt,输出是ft;其计算公式为:

23、ft=σ(wf*[ht-1,xt]+bf)

24、σ为sigmoid函数,wf为权重向量,xt为当前时刻输入值,bf为偏置向量;

25、记忆门的输入为前一时刻的隐藏层状态ht-1和当前时刻的输入xt,输出it和临时细胞状态其计算公式为:

26、it=σ(wi*[ht-1,xt]+bi)

27、

28、wi为输入权重向量,bi为输入偏置向量,wc为临时状态权重向量,bc为临时状态偏置向量;

29、接着,根据上一时刻的细胞状态ct-1计算当前时刻细胞状态ct,其计算公式为:

30、

31、最后,计算得到输出门的值ot和隐藏层状态ht,其计算公式为:

32、ot=σ(wo*[ht-1,xt]+bo)

33、ht=ot*tanh(ct)

34、wo为输出权重向量,bo为输出偏置向量;

35、crf层连接bilstm的最后一个隐藏层,通过计算真实路径得分得到最优路径,最终得到预测标签。

36、进一步地,所述datalog规则模板的应用方法包括步骤:

37、首先,确定要调整的标签tags;

38、再根据需求确定需要调用的软件漏洞知识库内容vul;

39、最后,设计具体的规则content;其中,每个content对应一种指定的规则。最终的输出结果可以作为先验知识输入预处理模块中,指导长文本的分词。

40、进一步地,所述分句工具包括python自然语言处理工具库nltk。

41、进一步地,所述分词工具包括basictokenizer。

42、本发明的有益效果包括:

43、(1)本发明实施例方案基于知识驱动构建了一个软件漏洞知识库,并在此知识库的基础上提出了一种基于datalog规则的修正算法,能够较好的改进深度学习模型的结果。

44、(2)本发明实施例方案使用datalog规则模板指导具体规则的设计,提高了修正算法的可读性,降低了修正算法的更新难度。

45、(3)本发明实施例方案提出了一种基于知识驱动的预训练模型用于识别软件漏洞相关实体,可用于在海量的互联网开放信息中提取软件漏洞实体。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1