CN118051889B - 基于llm的sca许可证风险分析方法、装置及设备 - Google Patents

基于llm的sca许可证风险分析方法、装置及设备 Download PDF

Info

Publication number
CN118051889B
CN118051889B CN202410451607.5A CN202410451607A CN118051889B CN 118051889 B CN118051889 B CN 118051889B CN 202410451607 A CN202410451607 A CN 202410451607A CN 118051889 B CN118051889 B CN 118051889B
Authority
CN
China
Prior art keywords
license
component
text
risk
data
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
CN202410451607.5A
Other languages
English (en)
Other versions
CN118051889A (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.)
Beijing Anpro Information Technology Co ltd
Original Assignee
Beijing Anpro Information Technology 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 Beijing Anpro Information Technology Co ltd filed Critical Beijing Anpro Information Technology Co ltd
Priority to CN202410451607.5A priority Critical patent/CN118051889B/zh
Publication of CN118051889A publication Critical patent/CN118051889A/zh
Application granted granted Critical
Publication of CN118051889B publication Critical patent/CN118051889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供一种基于LLM的SCA许可证风险分析方法、装置及设备,涉及软件安全技术领域。所述基于LLM的SCA许可证风险分析方法包括:获取用户输入的许可证风险提问语句;从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集;其中,所述组件许可证知识库是根据组件数据集和许可证数据集构建的;将所述许可证风险提问语句和所述第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,所述许可证风险分析对话模型是采用所述组件数据集和所述许可证数据集训练预先建立的大模型而得到的。本发明实施例能够实现全阶段即时分析开源组件许可证风险的技术效果。

Description

基于LLM的SCA许可证风险分析方法、装置及设备
技术领域
本发明涉及软件安全技术领域,具体而言,涉及一种基于LLM的SCA许可证风险分析方法、装置及设备。
背景技术
近年来,在软件开发过程中广泛依赖开源软件,使用各种各样的开源组件,在一定程度上减少了很多基础开发工作,提升了软件开发效率,同时也带来了安全风险,比如开源组件的许可证不合规不可识别、开源组件之间存在许可证冲突不兼容等开源组件许可证风险。软件成分分析(SoftwareCompositionAnalysis,SCA)是一种用于管理开源组件应用安全的技术工具。
目前,主要是通过自动识别和提取开源组件许可证文件中的条款,使用户可以根据开源组件许可证文件中的条款分析组件许可证风险。但对于用户自定义的开源组件许可证文件,难以快速精准地识别和提取开源组件许可证文件中的条款,使得用户无法全面准确地分析组件许可证风险,且无法继续应对用户针对分析出的开源组件许可证风险提出的自定义问题,当前仍缺少能够全阶段即时分析开源组件许可证风险的工具或方法。
发明内容
本发明实施例的目的在于提供一种基于LLM的SCA许可证风险分析方法、装置及设备,用以实现全阶段即时分析开源组件许可证风险的技术效果。
第一方面,本发明实施例提供一种基于LLM的SCA许可证风险分析方法,包括:
获取用户输入的许可证风险提问语句;
从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集;其中,所述组件许可证知识库是根据组件数据集和许可证数据集构建的;
将所述许可证风险提问语句和所述第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,所述许可证风险分析对话模型是采用所述组件数据集和所述许可证数据集训练预先建立的大模型而得到的。
在上述实现过程中,通过预先构建组件许可证知识库,以及训练大模型得到许可证风险分析对话模型,从组件许可证知识库中查询与用户输入的许可证风险分析提问语句匹配的第一目标文本集,将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,能够允许用户进行组件许可证风险评估、组件许可证风险规避等方面的提问,即时获知相关答案,从而实现全阶段即时分析开源组件许可证风险。
进一步地,所述基于LLM的SCA许可证风险分析方法,还包括:
获取历史问题数据集,采用所述历史问题数据集微调所述许可证风险分析对话模型;或者,
获取所述用户输入的问答反馈信息,根据所述问答反馈信息微调所述许可证风险分析对话模型。
在上述实现过程中,通过采用获取的历史问题数据集或用户输入的问答反馈信息微调许可证风险分析对话模型,能够优化许可证风险分析对话模型,使许可证风险分析对话模型更加精准地处理问答任务,从而实现精准分析开源组件许可证风险。
进一步地,所述基于LLM的SCA许可证风险分析方法,还包括:
调用网络搜索引擎搜索与所述许可证风险提问语句匹配的第二目标文本集;
将所述许可证风险提问语句、所述第一目标文本集和所述第二目标文本集输入所述许可证风险分析对话模型,得到第二许可证风险应答语句。
在上述实现过程中,通过调用网络搜索引擎搜索与许可证风险提问语句匹配的第二目标文本集,将第二目标文本集与许可证风险提问语句、第一目标文本集一并输入许可证风险分析对话模型,得到第二许可证风险应答语句,能够提供更多目标文本,使许可证风险分析对话模型更加精准地处理问答任务,从而实现精准分析开源组件许可证风险。
进一步地,所述根据组件数据集和许可证数据集,构建组件许可证知识库,具体包括:
获取所述组件数据集和所述许可证数据集;
对于所述组件数据集中的每一组件数据,对所述组件数据进行文本分割,得到至少一个组件文本,并分别对每一所述组件文本进行向量化和建立索引;
对于所述许可证数据集中的每一许可证数据,对所述许可证数据进行文本分割,得到至少一个许可证文本,并分别对每一所述许可证文本进行向量化和建立索引;
将各个所述组件文本对应的向量和索引,以及各个所述许可证文本对应的向量和索引均映射到向量空间,构建所述组件许可证知识库。
在上述实现过程中,通过对组件数据集中的各个组件数据和许可证数据集中的各个许可证数据依次进行文本分割、文本向量化和建立索引,将得到的各个组件数据对应的文本向量和文本向量索引均映射到向量空间,构建组件许可证知识库,能够方便后续快速地从组件许可证知识库中查询出第一目标文本集,有利于提高组件许可证风险分析效率。
进一步地,所述获取所述组件数据集和所述许可证数据集,具体包括:
收集多个组件的原始关键信息,以及收集多个许可证的原始关键信息;其中,所述组件的原始关键信息包括所述组件的原始基本信息、原始许可证信息和原始漏洞信息;所述许可证的原始关键信息包括所述许可证的原始许可证文件和原始许可证信息文件;
对各个所述组件的原始关键信息进行预处理,分别将得到的每一所述组件的关键信息作为一个组件数据存储于所述组件数据集,以及对各个所述许可证的原始关键信息进行预处理,分别将得到的每一所述许可证的关键信息作为一个许可证数据存储于所述许可证数据集;其中,所述预处理包括数据清洗、数据增强。
在上述实现过程中,通过对收集的多个组件的原始关键信息进行数据清洗、数据增强等预处理,获取组件数据集,以及通过对收集的多个许可证的原始关键信息进行数据清洗、数据增强等预处理,获取许可证数据集,能够提高组件数据集和许可证数据集的数据可靠性,有利于后续准确构建组件许可证知识库和获取许可证风险分析对话模型。
进一步地,所述采用所述组件数据集和所述许可证数据集训练预先建立的大模型,得到许可证风险分析对话模型,具体包括:
对于所述组件数据集中的每一组件数据,对所述组件数据进行键值拼接,将得到的组件训练数据存储于组件训练集;
对所述许可证数据集中的每一许可证数据,对所述许可证数据进行键值拼接,将得到的许可证训练数据存储于许可证训练集;
根据所述组件数据集与所述许可证数据集之间的关联关系,对于所述组件数据集中的每一组件数据,对所述组件数据和与所述组件数据关联的许可证数据进行键值拼接,将得到的组件许可证训练数据存储于组件许可证训练集;
采用所述组件训练集、所述许可证训练集和所述组件许可证训练集训练所述大模型,得到所述许可证风险分析对话模型。
在上述实现过程中,通过分别对组件数据集和许可证数据集进行单独的键值拼接,以及对组件数据集和许可证数据集进行关联的键值拼接,得到组件训练集、许可证训练集和组件许可证训练集去训练大模型,能够提高大模型对组件数据和许可证数据的处理效率,更加快速准确地获取许可证风险分析对话模型。
进一步地,所述从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集,具体包括:
根据所述许可证风险提问语句,构造问题向量;
从所述组件许可证知识库中筛选与所述问题向量的相似度最高的第一预设数量的文本向量;其中,所述文本向量为所述组件文本对应的向量或所述许可证文本对应的向量;
分别获取每一所述文本向量对应的文本作为第一目标文本,得到所述第一目标文本集。
在上述实现过程中,通过将许可证风险提问语句映射为问题向量,从组件许可证知识库中筛选与问题向量的相似度最高的第一预设数量的文本向量,进而将各个文本向量对应的文本均作为第一目标文本,能够快速准确地获取第一目标文本集。
进一步地,所述将所述许可证风险提问语句和所述第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,具体包括:
将所述许可证风险提问语句与所述第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本;
对所述输入文本进行向量化,得到输入向量,将所述输入向量输入所述许可证风险分析对话模型,得到所述第一许可证风险应答语句。
在上述实现过程中,通过对许可证风险提问语句与第一目标文本集中的所有第一目标文本拼接而成的输入文本进行向量化,将输入向量输入到许可证风险分析对话模型,得到第一许可证风险应答语句,能够即时获取第一许可证风险应答语句,从而实现全阶段即时分析开源组件许可证风险。
第二方面,本发明实施例提供一种基于LLM的SCA许可证风险分析装置,包括:
用户提问模块,用于获取用户输入的许可证风险提问语句;
知识获取模块,用于从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集;其中,所述组件许可证知识库是根据组件数据集和许可证数据集构建的;
风险分析模块,用于将所述许可证风险提问语句和所述第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,所述许可证风险分析对话模型是采用所述组件数据集和所述许可证数据集训练预先建立的大模型而得到的。
第三方面,本发明实施例提供一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现如上所述的基于LLM的SCA许可证风险分析方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上所述的基于LLM的SCA许可证风险分析方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明第一实施例提供的一种基于LLM的SCA许可证风险分析方法的流程示意图;
图2为本发明第二实施例提供的一种基于LLM的SCA许可证风险分析方法的流程示意图;
图3为本发明第三实施例提供的一种基于LLM的SCA许可证风险分析装置的结构示意图;
图4为本发明第四实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
应注意到:在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。同时,文中的步骤编号,仅为了方便本发明实施例的解释,不作为限定步骤执行先后顺序的作用。本发明实施例提供的方法可以由相关的终端设备执行,且下文均以用户终端作为执行主体为例进行说明。
请参看图1,图1为本发明第一实施例提供的一种基于LLM的SCA许可证风险分析方法的流程示意图。本发明第一实施例提供一种基于LLM的SCA许可证风险分析方法,包括步骤S101~S103:
S101、获取用户输入的许可证风险提问语句;
S102、从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集;其中,组件许可证知识库是根据组件数据集和许可证数据集构建的;
S103、将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,许可证风险分析对话模型是采用组件数据集和许可证数据集训练预先建立的大模型而得到的。
作为示例性地,用户终端预先获取组件数据集和许可证数据集,组件数据集中有多个组件数据,每一组件数据包含一个组件的基本信息、许可证信息和漏洞信息等关键信息,许可证数据集中有多个许可证数据,每一许可证数据包含一个许可证的许可证文件和许可证信息文件等关键信息,根据组件数据集和许可证数据集,构建组件许可证知识库,以及采用组件数据集和许可证数据集训练预先建立的大模型,得到许可证风险分析对话模型。其中,用户终端包括用户持有的手机、平板、电脑等可与服务器进行通信连接的智能终端。
大模型,又称大语言模型(Large Language Model,LLM),大语言模型是基于海量文本数据训练的深度学习模型,它不仅能够生成自然语言文本,还能够深入理解文本含义,处理各种自然语言任务,如文本摘要、问答、翻译等。
通过采用组件数据集和许可证数据集训练一个大模型来得到许可证风险分析对话模型,使得许可证风险分析对话模型可以处理问答任务。
根据实际的应用需求,用户可以自定义许可证风险问题,向用户终端输入许可证风险提问语句,比如在用户自定义许可证风险问题为指定的开源组件许可证是否存在风险时,向用户终端输入有关评估该开源组件许可证风险的许可证风险提问语句;在用户自定义许可证风险问题为针对该开源组件许可证的风险有哪些规避方式时,向用户终端输入有关规避该开源组件许可证风险的许可证风险提问语句。
用户终端在获取到用户输入的许可证风险提问语句时,从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集,将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,使许可证风险分析对话模型针对许可证风险提问语句和第一目标文本集处理问答任务,输出第一许可证风险应答语句,此时用户可以查看第一许可证风险应答语句。
本发明实施例通过预先构建组件许可证知识库,以及训练大模型得到许可证风险分析对话模型,从组件许可证知识库中查询与用户输入的许可证风险分析提问语句匹配的第一目标文本集,将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,能够允许用户进行组件许可证风险评估、组件许可证风险规避等方面的提问,即时获知相关答案,从而实现全阶段即时分析开源组件许可证风险。
在可选的实施例当中,所述基于LLM的SCA许可证风险分析方法,还包括步骤S104:
S104、获取历史问题数据集,采用历史问题数据集微调许可证风险分析对话模型;或者,获取用户输入的问答反馈信息,根据问答反馈信息微调许可证风险分析对话模型。
作为示例性地,预先收集多个历史问题数据,具体地,可以从OSI(Open SourceInitiative,开放源代码促进会)、FSF(Free Software Foundation,自由软件基金会)等开源软件许可证官方组织提供的问题问答网页中搜索许可证风险问题的问答记录,收集多个历史问题数据,对于每一历史问题数据,将该历史问题数据中的问题分解为任务描述、输入,将该历史问题数据中的答案分解为输出、测试用例,整理各个历史问题数据对应的任务描述、输入、输出、测试用例,得到历史问题数据集。
为了使许可证风险分析对话模型更加精准地处理问答任务,用户终端可以获取历史问题数据集,采用历史问题数据集微调许可证风险分析对话模型;也可以获取用户输入的问答反馈信息,比如用户对第一许可证风险应答语句是否认可的反馈信息,根据问答反馈信息微调许可证风险分析对话模型,以便后续应用微调后的许可证风险分析对话模型处理问答任务。
本发明实施例通过采用获取的历史问题数据集或用户输入的问答反馈信息微调许可证风险分析对话模型,能够优化许可证风险分析对话模型,使许可证风险分析对话模型更加精准地处理问答任务,从而实现精准分析开源组件许可证风险。
在可选的实施例当中,所述根据组件数据集和许可证数据集,构建组件许可证知识库,具体包括:获取组件数据集和许可证数据集;对于组件数据集中的每一组件数据,对组件数据进行文本分割,得到至少一个组件文本,并分别对每一组件文本进行向量化和建立索引;对于许可证数据集中的每一许可证数据,对许可证数据进行文本分割,得到至少一个许可证文本,并分别对每一许可证文本进行向量化和建立索引;将各个组件文本对应的向量和索引,以及各个许可证文本对应的向量和索引均映射到向量空间,构建组件许可证知识库。
作为示例性地,用户终端预先获取组件数据集和许可证数据集,组件数据集中有多个组件数据,每一组件数据包含一个组件的基本信息、许可证信息和漏洞信息等关键信息,许可证数据集中有多个许可证数据,每一许可证数据包含一个许可证的许可证文件和许可证信息文件等关键信息。
对于组件数据集中的每一组件数据,对该组件数据进行文本分割,得到至少一个组件文本,并分别对每一组件文本进行向量化和建立索引,得到各个组件文本对应的向量和索引。
在实际应用中,可以根据预设文本长度,比如指定的token(词元)长度,对组件数据进行文本分割,得到至少一个组件文本,对于每一组件文本,对该组件文本进行向量化,得到该组件文本对应的向量,并针对该组件文本对应的向量建立一个索引,得到该组件文本对应的索引,该组件文本对应的索引用于定位和获取该组件文本。
对于许可证数据集中的每一许可证数据,对该许可证数据进行文本分割,得到至少一个许可证文本,并分别对每一许可证文本进行向量化和建立索引,得到各个许可证文本对应的向量和索引。
在实际应用中,可以根据预设文本长度,比如指定的token(词元)长度,对许可证数据进行文本分割,得到至少一个许可证文本,对于每一许可证文本,对该许可证文本进行向量化,得到该许可证文本对应的向量,并针对该许可证文本对应的向量建立一个索引,得到该许可证文本对应的索引,该许可证文本对应的索引用于定位和获取该许可证文本。
将各个组件文本对应的向量和索引,以及各个许可证文本对应的向量和索引均映射到向量空间,构建组件许可证知识库。
本发明实施例通过对组件数据集中的各个组件数据和许可证数据集中的各个许可证数据依次进行文本分割、文本向量化和建立索引,将得到的各个组件数据对应的文本向量和文本向量索引均映射到向量空间,构建组件许可证知识库,能够方便后续快速地从组件许可证知识库中查询出第一目标文本集,有利于提高组件许可证风险分析效率。
在可选的实施例当中,所述获取组件数据集和许可证数据集,具体包括:收集多个组件的原始关键信息,以及收集多个许可证的原始关键信息;其中,组件的原始关键信息包括组件的原始基本信息、原始许可证信息和原始漏洞信息;许可证的原始关键信息包括许可证的原始许可证文件和原始许可证信息文件;对各个组件的原始关键信息进行预处理,分别将得到的每一组件的关键信息作为一个组件数据存储于组件数据集,以及对各个许可证的原始关键信息进行预处理,分别将得到的每一许可证的关键信息作为一个许可证数据存储于许可证数据集;其中,预处理包括数据清洗、数据增强。
作为示例性地,收集多个组件的原始关键信息,具体地,可以从官方组件仓库、比如Java的maven仓库等,以及本地仓库或私服仓库中收集多个组件的原始关键信息,组件的原始关键信息包括组件的原始基本信息,比如组件的组件名称、组件版本、API(Application Programming Interface,应用程序编程接口)使用文档等,组件的原始许可证信息,比如许可证的许可证名称、许可证内容等,以及组件的原始漏洞信息,比如组件的漏洞名称、漏洞类型、漏洞风险等级等。
收集多个许可证的原始关键信息,具体地,可以从开源软件许可证官方组织、比如OSI等收集多个许可证的原始许可证文件,许可证的原始许可证文件包含许可证的许可证名称、许可证安全级别、条款详细内容等,以及从网络上收集多个许可证的原始许可证信息文件,许可证的原始许可证信息文本包含有与许可证相关的软件许可证信息,使许可证的原始关键信息包括许可证的原始许可证文件和原始许可证信息文件。
对于每一组件的原始关键信息,对该组件的原始关键信息进行数据清洗、数据增强等预处理,得到该组件的关键信息,将该组件的关键信息作为一个组件数据存储于组件数据集,从而获取组件数据集。其中,对组件的原始关键信息进行数据清洗、数据增强等预处理的具体过程如下:
1、数据清洗:按照预先定义的组件字段格式,对组件的原始关键信息进行字段格式化,得到组件的格式化关键信息。例如,组件的格式化关键信息为:
{"组件名称":"Apache Log4j",
"组件简介":"Legacy version of Log4j logging framework.",
"当前组件版本":"1.2.17",
"历史组件版本":"1.2.12、1.2.11、1.2.9、1.2.8、1.2.7、1.2.6、1.2.5、1.2.4、1.1.3",
"组件的API使用文档":" ",
""许可证名称":"Apache-2.0",
"许可证内容":" ",
"漏洞名称":"CVE-2022-23307、CVE-2022-23305、CVE-2022-23302、CVE-2021-4104、CVE-2019-17571",
"漏洞类型":"命令执行",
"漏洞风险等级":"1级"。}。
判断组件的格式化关键信息中是否存在空字段,若存在,则将空字段的内容值替换为“无/未知”,更新组件的格式化关键信息,比如组件的API使用文档字段的内容值为空值,将组件的API使用文档字段的内容值替换为“无/未知”,此时需要更新组件的格式化关键信息,以及判断组件的格式化关键信息中指定类型字段的内容表示形式是否为对应的预设内容表示形式,若不是,则将指定类型字段的内容表示形式修改为对应的预设内容表示形式,更新组件的格式化关键信息,比如组件风险等级字段的内容值为“1级”,内容表示形式是{“1级”、“2级”、“3级”},不是对应的预设内容表示形式{“低危”、“中危”、“高危”},将组件风险等级字段的内容值修改为“低危”,此时需要更新组件的格式化关键信息。
2、数据增强:在得到组件的格式化关键信息时,对组件的格式化关键信息进行字段融合,得到组件的关键信息,具体地,可以将同一类型字段中的所有内容值进行去重合并,若同一类型字段中仅有一个内容值,则予以保留;若同一类型字段中有多个内容值且至少有两个内容值相同,则对相同的所有内容值进行择一保留;若同一类型字段中有多个内容值且至少有两个内容值不同又冲突,则对不同又冲突的所有内容值进行择优保留,例如,比较这些内容值的数据来源优先级,选择数据来源优先级最高的内容值进行保留。
同样地,对于每一许可证的原始关键信息,对该许可证的原始关键信息进行数据清洗、数据增强等预处理,得到该许可证的关键信息,将该许可证的关键信息作为一个许可证数据存储于许可证数据集,从而获取许可证数据集。其中,对许可证的原始关键信息进行数据清洗、数据增强等预处理的具体过程如下:
1、数据清洗:按照预先定义的许可证字段格式,对许可证的原始关键信息进行字段格式化,得到许可证的格式化关键信息。例如,许可证的格式化关键信息为:
{"许可证的唯一标识符":"2",
"许可证的简称":"Apache-1.1",
"许可证的全称":"Apache License 1.1",
"许可证的安全级别":"低危",
"对许可证安全级别的描述":"该协议不包含实质性的限制条款",
"是否符合FSF标准":"是",
"是否符合SPDX规范":"是",
"是否被OSI认可":"是",
"许可证允许的操作列表":"分发:分发被许可软件的原始/修改/衍生版本。修改和衍生: 修改被许可软件和创建被许可软件的衍生版本。商用: 可将被许可软件用于以营利为目的的商业活动。再许可: 您可以再许可被许可软件。",
"许可证禁止的操作列表":"追究许可人责任:软件或许可人对软件的损坏进行赔偿和担负责任。使用商标: 使用被许可软件贡献者的姓名、商标、logo。",
"许可证要求的操作列表":"保留版权信息:您必须保留被许可软件的原始版权声明。保留许可信息: 使用或修改了被许可软件后,需要保留被许可软件的许可声明与许可证文本。包含提醒: 在终端用户文档中包含一个NOTICE:“本产品包括由Apache软件基金会开发的软件(http://www.Apache.org/)。",
"许可证不允许的操作列表":"开放源代码: 如果您的项目使用到了被许可软件或修改了被许可软件,那么您在对外分发您的项目或修改版本被许可软件时,无需公开源代码, 使用相同许可: 如果您的项目使用到了被许可软件或修改了被许可软件,那么您在对外分发您的项目或修改版本被许可软件时,无需采用相同的许可证或许可条款向您的用户或下游许可。声明修改: 如果您修改了被许可软件的源代码,无需要按许可证要求对修改作出说明, 包含下载说明: 无需提供被许可软件的构建和下载说明。",
"与GPL兼容性":"否",
"对许可证与GPL兼容性的描述":"这是一个纵容型非 copyleft 的自由软件许可证。它带有一些条款使之不兼容 GNU GPL,比如它强烈禁止使用和 Apache 相关的名称。",
"许可证的URL地址":"https://opensource.org/licenses/Apache-1.1",
"许可证的详细内容描述":"许可证内容的原文描述"。}。
判断许可证的格式化关键信息中是否存在空字段,若存在,则将空字段的内容值替换为“无/未知”,更新许可证的格式化关键信息,比如许可证的格式化关键信息中不存在空字段,此时不做处理,以及判断许可证的格式化关键信息中指定类型字段的内容表示形式是否为对应的预设内容表示形式,若不是,则将指定类型字段的内容表示形式修改为对应的预设内容表示形式,更新许可证的格式化关键信息,比如许可证的安全级别字段的内容值为“低危”,内容表示形式是对应的预设内容表示形式{“低危”、“中危”、“高危”},此时不做处理。
2、数据增强:在得到许可证的格式化关键信息时,对许可证的格式化关键信息进行字段融合,得到许可证的关键信息,具体地,可以将同一类型字段中的所有内容值进行去重合并,若同一类型字段中仅有一个内容值,则予以保留;若同一类型字段中有多个内容值且至少有两个内容值相同,则对相同的所有内容值进行择一保留;若同一类型字段中有多个内容值且至少有两个内容值不同又冲突,则对不同又冲突的所有内容值进行择优保留,例如,比较这些内容值的数据来源优先级,选择数据来源优先级最高的内容值进行保留。
本发明实施例通过对收集的多个组件的原始关键信息进行数据清洗、数据增强等预处理,获取组件数据集,以及通过对收集的多个许可证的原始关键信息进行数据清洗、数据增强等预处理,获取许可证数据集,能够提高组件数据集和许可证数据集的数据可靠性,有利于后续准确构建组件许可证知识库和获取许可证风险分析对话模型。
在可选的实施例当中,所述采用组件数据集和许可证数据集训练预先建立的大模型,得到许可证风险分析对话模型,具体包括:对于组件数据集中的每一组件数据,对组件数据进行键值拼接,将得到的组件训练数据存储于组件训练集;对许可证数据集中的每一许可证数据,对许可证数据进行键值拼接,将得到的许可证训练数据存储于许可证训练集;根据组件数据集与许可证数据集之间的关联关系,对于组件数据集中的每一组件数据,对组件数据和与组件数据关联的许可证数据进行键值拼接,将得到的组件许可证训练数据存储于组件许可证训练集;采用组件训练集、许可证训练集和组件许可证训练集训练大模型,得到许可证风险分析对话模型。
作为示例性地,用户终端在获取到组件数据集和许可证数据集时,确定组件数据集与许可证数据集之间的关联关系,例如,将组件数据集和许可证数据集通过许可证名称建立关联关系,比如组件数据集中一组件的许可证名称对应许可证数据集中一许可证的许可证全称或许可证简称。
对于组件数据集中的每一组件数据,对该组件数据进行键值拼接,得到该组件数据对应的组件训练数据,将该组件数据对应的组件训练数据存储于组件训练集。具体地,可以将组件数据包含的组件的基本信息、许可证信息和漏洞信息等关键信息通过键(key)和值(value)拼接成一个组件-漏洞信息数据,将组件-漏洞信息数据作为组件数据对应的组件训练数据。
对于许可证数据集中的每一许可证数据,对该许可证数据进行键值拼接,得到该许可证数据对应的许可证训练数据,将该许可证数据对应的许可证训练数据存储于许可证训练集。具体地,可以将许可证数据包含的许可证文件、许可证信息文件等关键信息通过键(key)和值(value)拼接成一个许可证信息数据,将许可证信息数据作为许可证数据对应的许可证训练数据。
根据组件数据集与许可证数据集之间的关联关系,对于组件数据集中的每一组件数据,获取许可证数据集中与该组件数据关联的许可证数据,对该组件数据和与该组件数据关联的许可证数据进行键值拼接,得到该组件数据对应的组件许可证训练数据,将该组件数据对应的组件许可证训练数据存储于组件许可证训练集。具体地,可以将组件数据包含的组件的基本信息、许可证信息和漏洞信息等关键信息,以及许可证数据包含的许可证文件、许可证信息文件等关键信息通过键(key)和值(value)拼接成一个组件-许可证-漏洞信息数据,将组件-许可证-漏洞信息数据作为组件数据对应的组件许可证训练数据。
在得到组件训练集、许可证训练集和组件许可证训练集时,采用组件训练集、许可证训练集和组件许可证训练集训练大模型,得到许可证风险分析对话模型。
在实际应用中,可以在大模型中指定训练参数,训练参数包括学习率,比如线性衰减算法、余弦退火算法控制的学习率,损失函数,训练次数等,参考现有的大模型训练方法训练大模型,在此不做赘述。
本发明实施例通过分别对组件数据集和许可证数据集进行单独的键值拼接,以及对组件数据集和许可证数据集进行关联的键值拼接,得到组件训练集、许可证训练集和组件许可证训练集去训练大模型,能够提高大模型对组件数据和许可证数据的处理效率,更加快速准确地获取许可证风险分析对话模型。
在可选的实施例当中,所述从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集,具体包括:根据许可证风险提问语句,构造问题向量;从组件许可证知识库中筛选与问题向量的相似度最高的第一预设数量的文本向量;其中,文本向量为组件文本对应的向量或许可证文本对应的向量;分别获取每一文本向量对应的文本作为第一目标文本,得到第一目标文本集。
作为示例性地,用户终端在获取到用户输入的许可证风险提问语句时,根据许可证风险提问语句,构造问题向量。
在实际应用中,可以采用词嵌入算法,将许可证风险提问语句映射为问题向量。例如,假设许可证风险提问语句为“log4j组件的许可证的感染性是什么样的?”,采用词嵌入算法,将许可证风险提问语句映射为问题向量的具体过程如下:
1、词嵌入计算:首先,对许可证风险提问语句进行分词处理,拆分为一系列tokens,如“log4j”、“组件”、“的”、“许可证”、“的”、“感染性”、“是”、“什么样的”、“?”;然后,每个token通过预训练好的词嵌入模型,比如Word2Vec、GloVe或BERT的Embedding层转化为一个词向量,这样,每个token就有一个固定长度的词向量来代表其含义;最后,对每个词向量进行位置编码,在Transformer架构中,为了保留序列信息,还会给每个词向量附加一个位置编码,确保许可证风险分析对话模型能理解词在句子中的顺序。
2、问题向量构造:串联所有词向量,组成一个整体的问题向量。
计算问题向量与组件许可证知识库中各个文本向量,即各个组件文本对应的向量和各个许可证文本对应的向量之间的相似度。具体地,可以采用余弦相似度、欧式距离或其他向量相似度计算方法,计算向量之间的相似度。
根据实际的应用需求,预先确定第一预设数量,比如N(N为大于等于1的正整数)。从组件许可证知识库中筛选与问题向量的相似度最高的N个文本向量。
在得到所有文本向量时,分别获取每一文本向量对应的文本,即组件文本/许可证文本作为第一目标文本,得到第一目标文本集。
本发明实施例通过将许可证风险提问语句映射为问题向量,从组件许可证知识库中筛选与问题向量的相似度最高的第一预设数量的文本向量,进而将各个文本向量对应的文本均作为第一目标文本,能够快速准确地获取第一目标文本集。
在可选的实施例当中,所述将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,具体包括:将许可证风险提问语句与第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本;对输入文本进行向量化,得到输入向量,将输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句。
作为示例性地,用户终端在得到第一目标文本集时,以第一目标文本集中的所有第一目标文本作为许可证风险提问语句的上下文,将许可证风险提问语句与第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本。
在得到输入文本时,对输入文本进行向量化,将输入文本映射为输入向量,将输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句。
其中,许可证风险分析对话模型根据输入向量X得到输入信息矩阵Q,内容信息矩阵K,信息本身矩阵V三个矩阵。
输入信息矩阵Q表示输入向量X所携带的信息和关注的内容特征,包含需要输入的组件和许可证问题信息。输入信息矩阵Q是通过输入向量X重构得到,具体地,对于输入向量X在位置编码i的词,表示为Qi=Wq*Xi,Wq是输入信息矩阵Q的权重,是在模型训练阶段已经学习好的固定值,Xi是输入向量X在位置编码i的向量,拼接{Q1、Q2、...、Qi、...、Qn},得到输入信息矩阵Q。
内容信息矩阵K表示待匹配的组件和许可证信息,内容信息矩阵K用于索引信息来源,即哪些其他词与当前词最相关。输入向量X在各个位置编码上的词都会有一个内容信息子矩阵,对于输入向量X在位置编码i上的词,其内容信息子矩阵Ki=Wk*Xi,Wk是内容信息矩阵K的权重,用于从输入词嵌入中提取出有效索引和匹配相关上下文信息的关键特征,是在模型训练阶段已经学习好的固定值,Xi是输入向量X在位置编码i的向量,拼接{K1、K2、...、Ki、...、Kn},得到内容信息矩阵K。
信息本身矩阵V表示输入向量X的每个词实际需要被传递到后续处理阶段的信息内容。根据注意力权重矩阵S对信息本身矩阵V进行加权求和,以获取上下文相关的输出表示。注意力权重Si(Qi,Ki)表示Qi和Ki的匹配程度,组件和许可证信息很多,其中符合用户问题中的组件的匹配程度会高一点。
计算注意力权重Si,将Qi和Ki向量进行点积计算,得到输入信息矩阵Q每个位置编码i对应于内容信息矩阵K所有位置编码i的注意力权重Si
(1);
式(1)中,dk是K向量的维度,“.”表示点积操作,Si的元素值映射到0到1之间,表示Q中的一个向量对K中的一个向量的注意力权重值。
根据得到的注意力权重Si对信息本身矩阵V 进行加权求和,
(2);
式(2)中,Vi为信息本身矩阵在位置编码i的向量。
具体地,根据注意力权重Si给Vi分配不同的权重加权求和,得到一个综合了V中所有信息的输出向量序列,将向量序列转换为对应的文本作为答案输出。
本发明实施例通过对许可证风险提问语句与第一目标文本集中的所有第一目标文本拼接而成的输入文本进行向量化,将输入向量输入到许可证风险分析对话模型,得到第一许可证风险应答语句,能够即时获取第一许可证风险应答语句,从而实现全阶段即时分析开源组件许可证风险。
请参看图2,图2为本发明第二实施例提供的一种基于LLM的SCA许可证风险分析方法的流程示意图。基于本发明第一实施例提供的一种基于LLM的SCA许可证风险分析方法,本发明第二实施例提供一种基于LLM的SCA许可证风险分析方法,还包括步骤S105~S106:
S105、调用网络搜索引擎搜索与许可证风险提问语句匹配的第二目标文本集;
S106、将许可证风险提问语句、第一目标文本集和第二目标文本集输入许可证风险分析对话模型,得到第二许可证风险应答语句。
在可选的实施例当中,所述调用网络搜索引擎搜索与许可证风险提问语句匹配的第二目标文本集,具体包括:根据许可证风险提问语句,构造问题向量;从网络中筛选与问题向量的相似度最高的第二预设数量的网络文本向量;其中,网络文本向量为网络组件文本对应的向量或网络许可证文本对应的向量;分别获取每一网络文本向量对应的文本作为第二目标文本,得到第二目标文本集。
在可选的实施例当中,所述将许可证风险提问语句、第一目标文本集和第二目标文本集输入许可证风险分析对话模型,得到第二许可证风险应答语句,具体包括:将许可证风险提问语句与第一目标文本集中的所有第一目标文本、第二目标文本集中的所有第二目标文本进行文本拼接,得到输入文本;对输入文本进行向量化,得到输入向量,将输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句。
请参看图3,图3为本发明第三实施例提供的一种基于LLM的SCA许可证风险分析装置的结构示意图。本发明第三实施例提供一种基于LLM的SCA许可证风险分析装置,包括:用户提问模块201,用于获取用户输入的许可证风险提问语句;知识获取模块202,用于从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集;其中,组件许可证知识库是根据组件数据集和许可证数据集构建的;风险分析模块203,用于将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,许可证风险分析对话模型是采用组件数据集和许可证数据集训练预先建立的大模型而得到的。
在可选的实施例当中,所述基于LLM的SCA许可证风险分析装置,还包括:模型微调模块,用于获取历史问题数据集,采用历史问题数据集微调许可证风险分析对话模型;或者,获取用户输入的问答反馈信息,根据问答反馈信息微调许可证风险分析对话模型。
在可选的实施例当中,知识获取模块202,还用于调用网络搜索引擎搜索与许可证风险提问语句匹配的第二目标文本集;风险分析模块203,还用于将许可证风险提问语句、第一目标文本集和第二目标文本集输入许可证风险分析对话模型,得到第二许可证风险应答语句。
在可选的实施例当中,所述根据组件数据集和许可证数据集,构建组件许可证知识库,具体包括:获取组件数据集和许可证数据集;对于组件数据集中的每一组件数据,对组件数据进行文本分割,得到至少一个组件文本,并分别对每一组件文本进行向量化和建立索引;对于许可证数据集中的每一许可证数据,对许可证数据进行文本分割,得到至少一个许可证文本,并分别对每一许可证文本进行向量化和建立索引;将各个组件文本对应的向量和索引,以及各个许可证文本对应的向量和索引均映射到向量空间,构建组件许可证知识库。
在可选的实施例当中,所述获取组件数据集和许可证数据集,具体包括:收集多个组件的原始关键信息,以及收集多个许可证的原始关键信息;其中,组件的原始关键信息包括组件的原始基本信息、原始许可证信息和原始漏洞信息;许可证的原始关键信息包括许可证的原始许可证文件和原始许可证信息文件;对各个组件的原始关键信息进行预处理,分别将得到的每一组件的关键信息作为一个组件数据存储于组件数据集,以及对各个许可证的原始关键信息进行预处理,分别将得到的每一许可证的关键信息作为一个许可证数据存储于许可证数据集;其中,预处理包括数据清洗、数据增强。
在可选的实施例当中,所述采用组件数据集和许可证数据集训练预先建立的大模型,得到许可证风险分析对话模型,具体包括:对于组件数据集中的每一组件数据,对组件数据进行键值拼接,将得到的组件训练数据存储于组件训练集;对许可证数据集中的每一许可证数据,对许可证数据进行键值拼接,将得到的许可证训练数据存储于许可证训练集;根据组件数据集与许可证数据集之间的关联关系,对于组件数据集中的每一组件数据,对组件数据和与组件数据关联的许可证数据进行键值拼接,将得到的组件许可证训练数据存储于组件许可证训练集;采用组件训练集、许可证训练集和组件许可证训练集训练大模型,得到许可证风险分析对话模型。
在可选的实施例当中,所述从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集,具体包括:根据许可证风险提问语句,构造问题向量;从组件许可证知识库中筛选与问题向量的相似度最高的第一预设数量的文本向量;其中,文本向量为组件文本对应的向量或许可证文本对应的向量;分别获取每一文本向量对应的文本作为第一目标文本,得到第一目标文本集。
在可选的实施例当中,所述将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,具体包括:将许可证风险提问语句与第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本;对输入文本进行向量化,得到输入向量,将输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
请参看图4,图4为本发明第四实施例提供的一种电子设备的结构示意图。本发明第四实施例提供一种电子设备30,包括处理器301、存储器302以及存储在存储器302中且被配置为由处理器301执行的计算机程序;存储器302与处理器301耦接,且处理器301执行计算机程序时实现如本发明第一实施例所述的基于LLM的SCA许可证风险分析方法,且能达到与之相同的有益效果。
其中,处理器301通过总线303从存储器302读取计算机程序并执行所述计算机程序时可实现如本发明第一实施例所述的基于LLM的SCA许可证风险分析方法包括的任意实施例的方法。
处理器301可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理器301可以是微处理器。
存储器302可以用于存储由处理器301执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本发明实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器301可以用于执行存储器302中的指令以实现如本发明第一实施例所述的基于LLM的SCA许可证风险分析方法。存储器302包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
本发明第五实施例提供一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序;其中,在计算机程序运行时控制计算机可读存储介质所在设备执行如本发明第一实施例所述的基于LLM的SCA许可证风险分析方法,且能达到与之相同的有益效果。
综上所述,本发明实施例提供一种基于LLM的SCA许可证风险分析方法、装置及设备,所述基于LLM的SCA许可证风险分析方法包括:获取用户输入的许可证风险提问语句;从组件许可证知识库中查询与许可证风险提问语句匹配的第一目标文本集;其中,组件许可证知识库是根据组件数据集和许可证数据集构建的;将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,许可证风险分析对话模型是采用组件数据集和许可证数据集训练预先建立的大模型而得到的。本发明实施例通过预先构建组件许可证知识库,以及训练大模型得到许可证风险分析对话模型,从组件许可证知识库中查询与用户输入的许可证风险分析提问语句匹配的第一目标文本集,将许可证风险提问语句和第一目标文本集输入许可证风险分析对话模型,得到第一许可证风险应答语句,能够允许用户进行组件许可证风险评估、组件许可证风险规避等方面的提问,即时获知相关答案,从而实现全阶段即时分析开源组件许可证风险。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种基于LLM的SCA许可证风险分析方法,其特征在于,包括:
获取用户输入的许可证风险提问语句;
从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集;其中,所述组件许可证知识库是根据组件数据集和许可证数据集构建的;
将所述许可证风险提问语句与所述第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本;
对所述输入文本进行向量化,得到输入向量,将所述输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,所述许可证风险分析对话模型是采用所述组件数据集和所述许可证数据集训练预先建立的大模型而得到的;所述许可证风险分析对话模型用于:根据所述输入向量得到输入信息矩阵、内容信息矩阵和信息本身矩阵;所述输入信息矩阵表示所述输入向量所携带的信息和关注的内容特征,所述内容信息矩阵用于索引所述输入向量的每个词的信息来源,所述信息本身矩阵表示所述输入向量的每个词实际需要被传递到后续处理阶段的信息内容;对所述输入信息矩阵和所述内容信息矩阵进行点积计算,得到注意力权重矩阵;根据所述注意力权重矩阵对所述信息本身矩阵进行加权求和,得到向量序列;将所述向量序列转换为文本,得到所述第一许可证风险应答语句。
2.根据权利要求1所述的基于LLM的SCA许可证风险分析方法,其特征在于,还包括:
获取历史问题数据集,采用所述历史问题数据集微调所述许可证风险分析对话模型;或者,
获取所述用户输入的问答反馈信息,根据所述问答反馈信息微调所述许可证风险分析对话模型。
3.根据权利要求1所述的基于LLM的SCA许可证风险分析方法,其特征在于,还包括:
调用网络搜索引擎搜索与所述许可证风险提问语句匹配的第二目标文本集;
将所述许可证风险提问语句、所述第一目标文本集和所述第二目标文本集输入所述许可证风险分析对话模型,得到第二许可证风险应答语句。
4.根据权利要求1至3任一项所述的基于LLM的SCA许可证风险分析方法,其特征在于,所述根据组件数据集和许可证数据集,构建组件许可证知识库,具体包括:
获取所述组件数据集和所述许可证数据集;
对于所述组件数据集中的每一组件数据,对所述组件数据进行文本分割,得到至少一个组件文本,并分别对每一所述组件文本进行向量化和建立索引;
对于所述许可证数据集中的每一许可证数据,对所述许可证数据进行文本分割,得到至少一个许可证文本,并分别对每一所述许可证文本进行向量化和建立索引;
将各个所述组件文本对应的向量和索引,以及各个所述许可证文本对应的向量和索引均映射到向量空间,构建所述组件许可证知识库。
5.根据权利要求4所述的基于LLM的SCA许可证风险分析方法,其特征在于,所述获取所述组件数据集和所述许可证数据集,具体包括:
收集多个组件的原始关键信息,以及收集多个许可证的原始关键信息;其中,所述组件的原始关键信息包括所述组件的原始基本信息、原始许可证信息和原始漏洞信息;所述许可证的原始关键信息包括所述许可证的原始许可证文件和原始许可证信息文件;
对各个所述组件的原始关键信息进行预处理,分别将得到的每一所述组件的关键信息作为一个组件数据存储于所述组件数据集,以及对各个所述许可证的原始关键信息进行预处理,分别将得到的每一所述许可证的关键信息作为一个许可证数据存储于所述许可证数据集;其中,所述预处理包括数据清洗、数据增强。
6.根据权利要求1至3任一项所述的基于LLM的SCA许可证风险分析方法,其特征在于,所述采用所述组件数据集和所述许可证数据集训练预先建立的大模型,得到许可证风险分析对话模型,具体包括:
对于所述组件数据集中的每一组件数据,对所述组件数据进行键值拼接,将得到的组件训练数据存储于组件训练集;
对所述许可证数据集中的每一许可证数据,对所述许可证数据进行键值拼接,将得到的许可证训练数据存储于许可证训练集;
根据所述组件数据集与所述许可证数据集之间的关联关系,对于所述组件数据集中的每一组件数据,对所述组件数据和与所述组件数据关联的许可证数据进行键值拼接,将得到的组件许可证训练数据存储于组件许可证训练集;
采用所述组件训练集、所述许可证训练集和所述组件许可证训练集训练所述大模型,得到所述许可证风险分析对话模型。
7.根据权利要求4所述的基于LLM的SCA许可证风险分析方法,其特征在于,所述从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集,具体包括:
根据所述许可证风险提问语句,构造问题向量;
从所述组件许可证知识库中筛选与所述问题向量的相似度最高的第一预设数量的文本向量;其中,所述文本向量为所述组件文本对应的向量或所述许可证文本对应的向量;
分别获取每一所述文本向量对应的文本作为第一目标文本,得到所述第一目标文本集。
8.一种基于LLM的SCA许可证风险分析装置,其特征在于,包括:
用户提问模块,用于获取用户输入的许可证风险提问语句;
知识获取模块,用于从组件许可证知识库中查询与所述许可证风险提问语句匹配的第一目标文本集;其中,所述组件许可证知识库是根据组件数据集和许可证数据集构建的;
风险分析模块,用于:将所述许可证风险提问语句与所述第一目标文本集中的所有第一目标文本进行文本拼接,得到输入文本;对所述输入文本进行向量化,得到输入向量,将所述输入向量输入许可证风险分析对话模型,得到第一许可证风险应答语句;其中,所述许可证风险分析对话模型是采用所述组件数据集和所述许可证数据集训练预先建立的大模型而得到的;所述许可证风险分析对话模型用于:根据所述输入向量得到输入信息矩阵、内容信息矩阵和信息本身矩阵;所述输入信息矩阵表示所述输入向量所携带的信息和关注的内容特征,所述内容信息矩阵用于索引所述输入向量的每个词的信息来源,所述信息本身矩阵表示所述输入向量的每个词实际需要被传递到后续处理阶段的信息内容;对所述输入信息矩阵和所述内容信息矩阵进行点积计算,得到注意力权重矩阵;根据所述注意力权重矩阵对所述信息本身矩阵进行加权求和,得到向量序列;将所述向量序列转换为文本,得到所述第一许可证风险应答语句。
9.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现根据权利要求1至7任一项所述的基于LLM的SCA许可证风险分析方法。
CN202410451607.5A 2024-04-16 2024-04-16 基于llm的sca许可证风险分析方法、装置及设备 Active CN118051889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410451607.5A CN118051889B (zh) 2024-04-16 2024-04-16 基于llm的sca许可证风险分析方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410451607.5A CN118051889B (zh) 2024-04-16 2024-04-16 基于llm的sca许可证风险分析方法、装置及设备

Publications (2)

Publication Number Publication Date
CN118051889A CN118051889A (zh) 2024-05-17
CN118051889B true CN118051889B (zh) 2024-08-02

Family

ID=91048836

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410451607.5A Active CN118051889B (zh) 2024-04-16 2024-04-16 基于llm的sca许可证风险分析方法、装置及设备

Country Status (1)

Country Link
CN (1) CN118051889B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106934254A (zh) * 2017-02-15 2017-07-07 中国银联股份有限公司 一种开源许可证的分析方法及装置
CN113826094A (zh) * 2019-05-21 2021-12-21 安捷伦科技有限公司 软件许可管理和认证

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11288343B2 (en) * 2019-08-19 2022-03-29 Jpmorgan Chase Bank, N.A. Systems and methods for software license management using a distributed ledger
US11941378B1 (en) * 2023-10-19 2024-03-26 Hud Software Platforms Ltd. System and method for utilizing production insights in generative AI models
CN117648677A (zh) * 2023-10-31 2024-03-05 深圳开源互联网安全技术有限公司 识别项目开源组件许可风险方法、装置、设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106934254A (zh) * 2017-02-15 2017-07-07 中国银联股份有限公司 一种开源许可证的分析方法及装置
CN113826094A (zh) * 2019-05-21 2021-12-21 安捷伦科技有限公司 软件许可管理和认证

Also Published As

Publication number Publication date
CN118051889A (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN111027327B (zh) 机器阅读理解方法、设备、存储介质及装置
CN110569353B (zh) 一种基于注意力机制的Bi-LSTM的标签推荐方法
CN109522557B (zh) 文本关系抽取模型的训练方法、装置及可读存储介质
CN110020424B (zh) 合同信息的提取方法、装置和文本信息的提取方法
US20200372088A1 (en) Recommending web api's and associated endpoints
CN104462057A (zh) 用于产生语言分析的词汇资源的方法和系统
CN107391682B (zh) 知识验证方法、知识验证设备以及存储介质
CN112100401B (zh) 面向科技服务的知识图谱构建方法、装置、设备及存储介质
CA3207902A1 (en) Auditing citations in a textual document
CN111198939A (zh) 语句相似度的分析方法、装置及计算机设备
WO2020063524A1 (zh) 一种法律文书的确定方法及系统
CN115687647A (zh) 公证文书生成方法、装置、电子设备及存储介质
US20210117305A1 (en) System and method to improve results of a static code analysis based on the probability of a true error
WO2008094970A2 (en) Method and apparatus for creating a tool for generating an index for a document
CN117520503A (zh) 基于llm模型的金融客服对话生成方法、装置、设备及介质
KR20240020166A (ko) Esg 보조 툴을 이용하여 정형화된 esg 데이터로 기계학습 모델을 학습하는 방법 및 기계학습 모델로 자동완성된 esg 문서를 생성하는 서비스 서버
CN111401034A (zh) 文本的语义分析方法、语义分析装置及终端
CN118051889B (zh) 基于llm的sca许可证风险分析方法、装置及设备
CN117193823A (zh) 一种软件需求变更的代码工作量评估方法、系统及设备
CN111881294A (zh) 一种语料标注系统、方法及存储介质
CN116306676A (zh) 在线业务应用的信息处理方法及人工智能服务系统
CN116340989A (zh) 一种数据脱敏方法、装置、电子设备及存储介质
Khan et al. Non Functional Requirements Identification and Classification Using Transfer Learning Model
CN114936326A (zh) 基于人工智能的信息推荐方法、装置、设备及存储介质
Dyvak et al. System for web resources content structuring and recognizing with the machine learning elements

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