CN114035783A - 一种软件代码知识图谱构建方法及工具 - Google Patents
一种软件代码知识图谱构建方法及工具 Download PDFInfo
- Publication number
- CN114035783A CN114035783A CN202111327999.7A CN202111327999A CN114035783A CN 114035783 A CN114035783 A CN 114035783A CN 202111327999 A CN202111327999 A CN 202111327999A CN 114035783 A CN114035783 A CN 114035783A
- Authority
- CN
- China
- Prior art keywords
- code
- marking
- knowledge graph
- data
- software code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
Abstract
本发明公开了一种软件代码知识图谱构建方法及工具,方法包括:数据源配置;创建配置;选择数据源中的用于形成知识图谱的数据;对代码文件进行标注,初步形成关系和实体标签,对所有关系和实体标签进行校验,从而定义Schema,形成Guideline;标注训练,统一标注的认知;根据Guideline对代码文件进行标注,形成图谱的实体,并对实体进行连接形成实体与实体之间的关系;随机抽样检查代码的正式标注结果;根据代码的正式标注结果进行知识融合,形成最终的软件代码知识图谱。本发明实现高效、高质量多人协同在线的软件代码文件处理标准定义与校验,以科学的标准化流程,引导高质量软件代码知识图谱生成。
Description
技术领域
本发明涉及计算机编程领域,尤其涉及一种软件代码知识图谱构建方法及工具。
背景技术
知识图谱,是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论,能为学科研究提供切实的、有价值的参考。
智能化软件开发正在经历从简单的代码检索到语义赋能的代码自动生成的转变,传统的语义表达方式无法有效地支撑人、机器和代码之间的语义交互。基于知识图谱的认知智能是突破软件产业发展瓶颈的重大机遇。从2012年谷歌推出知识图谱以来,知识图谱技术发展迅速,产生了日益广泛的社会、经济效益,成为发展人工智能战略的重要内容。知识图谱是一种大规模语义网络,表达了实体/概念及其之间的各种语义关系。知识图谱为机器语言认知提供了丰富的背景知识,使得机器语言认知成为可能,进而使得文本自动化处理、智慧搜索、精准推荐、自然人机交互、深度解释等一系列智能化应用成为可能。因此,知识图谱是认知智能的核心,是软件行业智能化转型的使能器(enabler)。
人工开发软件程序是一个耗时费力的过程。因此,智能化软件开发引起了研究人员的高度关注。随着开源软件的快速发展,互联网上聚集了大量可以被程序员复用的代码和代码仓库。一方面,通过代码推荐和代码检索,代码文件和API接口等软件资源可以有效地应用于开发新项目;另一方面,这些软件资源可以用于训练代码生成模型,自动化地生成项目需要的代码文件甚至代码模块。因此,如何帮助程序员有效地搜索相关的代码文件和API接口、生成满足特定功能的代码模块,已成为软件工程领域的一个重要研究课题。针对软件行业服务对象及服务方式的多样性和复杂性,结合当前软件开发工具平台持续演进、团队协作不可或缺、软件复用日渐普遍的发展趋势,代码大数据在代码知识图谱建模、代码知识图谱管理和代码知识图谱应用等方面将面临的全新挑战。因此,需要一种能够实现高效、高质量的多人协同在线处理的标准化知识图谱构建方式。
发明内容
本发明的目的在于克服现有技术的不足,提供一种软件代码知识图谱构建方法及工具。
本发明的目的是通过以下技术方案来实现的:
一种软件代码知识图谱构建方法:包括以下步骤:
数据源配置:配置软件代码文件所在数据源的基本信息,并测试数据源能否正常连接;
任务配置:创建任务,填写任务信息并绑定配置好的数据源,再发布任务;
数据预处理:选择数据源中的用于形成知识图谱的数据;
定义Schema并生成Guideline:对代码文件进行标注,初步形成关系和实体标签,对所有关系和实体标签进行校验,从而定义所述代码属于领域的Schema,形成具有标注指导意义的Guideline;
标注训练:随机抽取部分已经筛选过的代码文件,多人根据Guideline对代码文件进行标注,标注完成后验证多人标注的一致性;即多人标注同样的文件,目的是统一标注的认知;
正式标注:根据Guideline对代码文件进行标注,形成图谱的实体,并对实体进行连接形成实体与实体之间的关系;
标注验收:随机抽样检查代码的正式标注结果;
图谱生成:根据代码的正式标注结果进行知识融合,形成最终的软件代码知识图谱。
进一步的,所述数据预处理具体为:
步骤301:在数据库中选择存储所述代码文件的相关表和字段,在文件系统中选择存储代码文件的目录;
步骤302:多人定义数据过滤规则,包括定义脏数据处理规则,定义代码语言类型,定义代码文件名过滤;
步骤303:对过滤规则进行校验。
进一步的,所述定义Schema并生成Guideline具体包括:
步骤401:根据过滤规则筛选需要标注的代码文件;
步骤402:多人对代码文件进行标注,先用反射获取属性、方法和构造函数,再通过在线的方式标注代码中更加细粒度的参数和引用关系,初步形成关系和实体标签;
步骤403:校验所有关系和实体标签,定义该代码所属领域的Schema,并整理成相关术语的定义和标注示例,形成具有标注指导意义的Guideline。
进一步的,所述标注训练具体包括:
步骤501:按总代码文件数的5%到10%随机抽取已经筛选过的代码文件用于进行标注训练;
步骤502:多人根据Guideline对步骤501中的代码文件进行类、接口、属性、方法及引用关系的标注;
步骤503:标注完成后使用IAA(Inter-annotator agreement,标注者间信度)检验多人的标注一致性,使用的计算公式为Fleiss' kappa,达标(结果在0.6~1之间)则进入正式标注阶段,然后针对剩下的大规模代码文件进行标注,不达标(结果小于0.6)则进入返回步骤501重新进行训练。
进一步的,所述任务信息包括任务名称、时间和参与人员。
进一步的,所述正式标注具体为:
步骤601:根据参与人员人数均分筛选的代码文件;
步骤602:多人根据Guideline对步骤601中的代码文件进行标注,标注能形成图谱的实体,实体包括类、接口、属性和方法,并对实体进行连接形成实体与实体之间的关系,如类和方法的关系,方法和参数的关系等;
进一步的,所述标注验收具体为:
步骤701:随机抽样检查代码的正式标注结果;
步骤702:若标注结果达标,则进行步骤8;若标注结果不达标,则退回步骤6进行修改。
一种软件代码知识图谱构建工具,包括系统总览模块、数据管理模块、任务管理模块、任务执行模块和图谱管理模块;
所述系统总览模块用于统计代码知识图谱的实体和关系数量;
所述数据管理模块用于对需要生成图谱的代码数据源进行管理,存储数据源的连接地址和认证方式,并提供在线连接测试功能;
所述任务管理模块用于对不同类型的任务进行管理,并对所有过程信息进行检验;由于不同语言代码构建规则不同,需要统一数据处理的规则和评判数据处理的结果,所以需要对所有过程信息进行检验;
所述任务执行模块用于多人协同执行具体的数据处理规则定义,即定义脏数据过滤规则,定义代码标注标准;随机选取代码数据进行标注训练,利用IAA(Inter-annotatoragreement)计算标注一致性,达标后进行知识抽取,即正式标注;
所述图谱管理模块用于对正式标注形成的数据进行图谱的融合和生成,并对生成的图谱进行管理。
本发明的有益效果:本发明实现高效、高质量多人协同在线的软件代码文件处理标准定义与校验,知识定义与校验,人工知识获取过程的一致性检测,以及知识获取结果的检查验收,以科学的标准化流程,引导高质量软件代码知识图谱生成。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1是本发明的方法流程图。
图2是本发明的系统功能模块图。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例中,如图1所示,一种软件代码知识图谱构建方法:包括以下步骤:
数据源配置:配置软件代码文件所在数据源的基本信息,并测试数据源能否正常连接;
任务配置:创建任务,填写任务信息并绑定配置好的数据源,再发布任务;
数据预处理:选择数据源中的用于形成知识图谱的数据;
定义Schema并生成Guideline:对代码文件进行标注,初步形成关系和实体标签,对所有关系和实体标签进行校验,从而定义所述代码属于领域的Schema,形成具有标注指导意义的Guideline;
标注训练:随机抽取部分已经筛选过的代码文件,多人根据Guideline对代码文件进行标注,标注完成后验证多人标注的一致性;即多人标注同样的文件,目的是统一标注的认知;
正式标注:根据Guideline对代码文件进行标注,形成图谱的实体,并对实体进行连接形成实体与实体之间的关系;
标注验收:随机抽样检查代码的正式标注结果;
图谱生成:根据代码的正式标注结果进行知识融合,形成最终的软件代码知识图谱。
在本实施例中,具体以构建Java代码知识图谱为例,数据预处理具体过程为:
步骤301:在数据库中选择存储java代码文件的相关表和字段,在文件系统中选择存储java代码文件的目录;
步骤302:多人定义数据过滤规则,包括定义脏数据处理规则,定义代码语言类型,定义代码文件名过滤;
步骤303:对过滤规则进行校验。
其中,定义Schema并生成Guideline具体包括:
步骤401:根据步骤303中的过滤规则筛选需要标注的java代码文件;此处首先过滤掉为空的文件,其次筛选.java结尾的文件,最后根据模糊匹配或者正则表达式进一步通过文件名筛选文件;
步骤402:多人对java代码文件进行标注,先用反射获取属性、方法和构造函数,再通过在线的方式标注代码中更加细粒度的参数和引用关系,初步形成关系和实体标签;
步骤403:校验所有关系和实体标签,定义java代码领域的Schema,如类、接口、属性、方法等,并整理对以上术语的定义和标注示例,形成具有标注指导意义的Guideline。
其中,标注训练具体包括:
步骤501:按总代码文件数的5%到10%随机抽取步骤401中已经筛选过的java代码文件用于进行标注训练;即多人标注同样的文件,目的是统一标注的认知;
步骤502:多人根据Guideline对步骤501中的java代码文件进行类、接口、属性、方法及引用关系的标注;
步骤503:标注完成后使用IAA(Inter-annotator agreement,标注者间信度)检验多人的标注一致性,使用的计算公式为Fleiss' kappa,达标(结果在0.6~1之间)则进入正式标注阶段,然后针对剩下的大规模java代码文件进行标注,不达标(结果小于0.6)则进入返回步骤501重新进行训练。
其中,任务信息包括任务名称、时间和参与人员。
其中,正式标注具体为:
步骤601:根据参与人员人数均分筛选的java代码文件;
步骤602:多人根据Guideline对步骤601中的java代码文件进行标注,即标注类、接口、属性、方法等能形成图谱的实体,并对实体进行连接形成实体与实体之间的关系,如类和方法的关系,方法和参数的关系等,标注完成后进入步骤701;
进一步的,所述标注验收具体为:
步骤701:随机抽样检查步骤602中java代码的标注结果;
步骤702:若标注结果达标,则进行步骤8;若标注结果不达标,则退回步骤6进行修改。
一种软件代码知识图谱构建工具,包括系统总览模块、数据管理模块、任务管理模块、任务执行模块和图谱管理模块;
所述系统总览模块用于统计代码知识图谱的实体和关系数量;
所述数据管理模块用于对需要生成图谱的代码数据源进行管理,存储数据源的连接地址和认证方式,并提供在线连接测试功能;
所述任务管理模块用于对不同类型的任务进行管理,并对所有过程信息进行检验;由于不同语言代码构建规则不同,需要统一数据处理的规则和评判数据处理的结果,所以需要对所有过程信息进行检验;
所述任务执行模块用于多人协同执行具体的数据处理规则定义,即定义脏数据过滤规则,定义代码标注标准;随机选取代码数据进行标注训练,利用IAA(Inter-annotatoragreement)计算标注一致性,达标后进行知识抽取,即正式标注;
所述图谱管理模块用于对正式标注形成的数据进行图谱的融合和生成,并对生成的图谱进行管理。
本发明通过用户友好的交互式软件代码知识图谱构建方式保证知识图谱生成效率,以科学的标准化流程,引导高质量知识图谱生成 ,改善图谱构建难、成本高、可信度低等核心问题。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、ROM、RAM等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (8)
1.一种软件代码知识图谱构建方法,其特征在于,包括以下步骤:
数据源配置:配置软件代码文件所在数据源的基本信息,并测试数据源能否正常连接;
任务配置:创建任务,填写任务信息并绑定配置好的数据源,再发布任务;
数据预处理:选择数据源中的用于形成知识图谱的数据;
定义Schema并生成Guideline:对代码文件进行标注,初步形成关系和实体标签,对所有关系和实体标签进行校验,从而定义所述代码属于领域的Schema,形成具有标注指导意义的Guideline;
标注训练:随机抽取部分已经筛选过的代码文件,多人根据Guideline对代码文件进行标注,标注完成后验证多人标注的一致性;即多人标注同样的文件,目的是统一标注的认知;
正式标注:根据Guideline对代码文件进行标注,形成图谱的实体,并对实体进行连接形成实体与实体之间的关系;
标注验收:随机抽样检查代码的正式标注结果;
图谱生成:根据代码的正式标注结果进行知识融合,形成最终的软件代码知识图谱。
2.根据权利要求1所述的一种软件代码知识图谱构建方法,其特征在于,所述数据预处理具体为:
步骤301:在数据库中选择存储所述代码文件的相关表和字段,在文件系统中选择存储代码文件的目录;
步骤302:多人定义数据过滤规则,包括定义脏数据处理规则,定义代码语言类型,定义代码文件名过滤;
步骤303:对过滤规则进行校验。
3.根据权利要求2所述的一种软件代码知识图谱构建方法,其特征在于,所述定义Schema并生成Guideline具体包括:
步骤401:根据过滤规则筛选需要标注的代码文件;
步骤402:多人对代码文件进行标注,先用反射获取属性、方法和构造函数,再通过在线的方式标注代码中更加细粒度的参数和引用关系,初步形成关系和实体标签;
步骤403:校验所有关系和实体标签,定义该代码所属领域的Schema,并整理成相关术语的定义和标注示例,形成具有标注指导意义的Guideline。
4.根据权利要求1所述的一种软件代码知识图谱构建方法,其特征在于,所述标注训练具体包括:
步骤501:按总代码文件数的5%到10%随机抽取已经筛选过的代码文件用于进行标注训练;
步骤502:多人根据Guideline对步骤501中的代码文件进行类、接口、属性、方法及引用关系的标注;
步骤503:标注完成后检验多人的标注一致性是否达标,达标则进入正式标注阶段,然后针对剩下的大规模代码文件进行标注,不达标则进入返回步骤501重新进行训练。
5.根据权利要求1所述的一种软件代码知识图谱构建方法,其特征在于,所述任务信息包括任务名称、时间和参与人员。
6.根据权利要求1或5所述的一种软件代码知识图谱构建方法,其特征在于,所述正式标注具体为:
步骤601:根据参与人员人数均分筛选的代码文件;
步骤602:多人根据Guideline对步骤601中的代码文件进行标注,标注能形成图谱的实体,实体包括类、接口、属性和方法,并对实体进行连接形成实体与实体之间的关系。
7.根据权利要求1所述的一种软件代码知识图谱构建方法,其特征在于,所述标注验收具体为:
步骤701:随机抽样检查代码的正式标注结果;
步骤702:若标注结果达标,则进行步骤8;若标注结果不达标,则退回步骤6进行修改。
8.一种软件代码知识图谱构建工具,其特征在于,包括系统总览模块、数据管理模块、任务管理模块、任务执行模块和图谱管理模块;
所述系统总览模块用于统计代码知识图谱的实体和关系数量;
所述数据管理模块用于对需要生成图谱的代码数据源进行管理,存储数据源的连接地址和认证方式,并提供在线连接测试功能;
所述任务管理模块用于对不同类型的任务进行管理,对所有过程信息进行检验;由于不同语言代码构建规则不同,需要统一数据处理的规则和评判数据处理的结果,所以需要对所有过程信息进行检验;
所述任务执行模块用于多人协同执行具体的数据处理规则定义,包括定义脏数据过滤规则和代码标注标准;随机选取代码数据进行标注训练,利用IAA计算标注一致性,达标后进行正式标注;
所述图谱管理模块用于对正式标注形成的数据进行图谱的融合和生成,并对生成的图谱进行管理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111327999.7A CN114035783A (zh) | 2021-11-10 | 2021-11-10 | 一种软件代码知识图谱构建方法及工具 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111327999.7A CN114035783A (zh) | 2021-11-10 | 2021-11-10 | 一种软件代码知识图谱构建方法及工具 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114035783A true CN114035783A (zh) | 2022-02-11 |
Family
ID=80137186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111327999.7A Pending CN114035783A (zh) | 2021-11-10 | 2021-11-10 | 一种软件代码知识图谱构建方法及工具 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114035783A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794196A (zh) * | 2023-02-13 | 2023-03-14 | 中科南京软件技术研究院 | EdgeX的关键软件识别方法、装置、设备及存储介质 |
-
2021
- 2021-11-10 CN CN202111327999.7A patent/CN114035783A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794196A (zh) * | 2023-02-13 | 2023-03-14 | 中科南京软件技术研究院 | EdgeX的关键软件识别方法、装置、设备及存储介质 |
CN115794196B (zh) * | 2023-02-13 | 2023-06-30 | 中科南京软件技术研究院 | EdgeX的关键软件识别方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
de Oca et al. | A systematic literature review of studies on business process modeling quality | |
Ould et al. | Testing in software development | |
Leopold et al. | Recognising activity labeling styles in business process models | |
Morkevičius et al. | Enterprise knowledge based software requirements elicitation | |
Vasilecas et al. | Analysis of using resources in business process modeling and simulation | |
CN114035783A (zh) | 一种软件代码知识图谱构建方法及工具 | |
Gill et al. | Semi-automation for ambiguity resolution in Open Source Software requirements | |
Rautenberg et al. | LODFlow: A workflow management system for linked data processing | |
Davidovsky et al. | Instance migration between ontologies having structural differences | |
Verma et al. | Simulation software evaluation and selection: a comprehensive framework | |
CN113190582A (zh) | 一种数据实时交互式挖掘流建模分析系统 | |
Cybulski | Patterns in software requirements reuse | |
Kitapci et al. | Using a hybrid method for formalizing informal stakeholder requirements inputs | |
Weber et al. | Detecting inconsistencies in multi-view uml models | |
Arnicane et al. | Building of Concept System to Improve Systematic Collection of Terminology. | |
Ladeinde et al. | Extracting Queryable Knowledge Graphs from User Stories: An Empirical Evaluation. | |
Osada et al. | The role of domain knowledge representation in requirements elicitation | |
Olszewska et al. | Dynamic OWL Ontology Design Using UML and BPMN. | |
Woll et al. | Semantic integration of product data models for the verification of product requirements | |
Gogoryan | Meta Model to support requirements specification creation | |
CN115392805B (zh) | 一种交易型合同合规风险诊断方法及系统 | |
Pereira et al. | Towards the conception of scientific workflows for in silico experiments in software engineering | |
Barlas et al. | Towards automated simulation input data | |
Fadhel et al. | Striffs: Architectural component diagrams for code reviews | |
Pedraza-Garcia et al. | An approach for software knowledge sharing based on architectural decisions |
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 |