基于大数据的软件项目知识图谱构造及问答方法

本文提出基于大数据的软件项目知识图谱构造及问答方法,设计了以代码结构为核心的软件知识图谱模型,通过“知识抽取-知识融合”框架实现自动构造。方法支持自然语言问答,解决了软件复用中理解与效率问题。已应用于Apache开源社区和多家软件企业,提升软件开发效率与质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方蓝字关注我们

基于大数据的软件项目知识图谱构造及问答方法

邹艳珍1,2, 王敏1,2, 谢冰1,2, 林泽琦3

1 北京大学信息科学技术学院,北京 100871

2 高可信软件技术教育部重点实验室(北京大学),北京 100871

3 微软亚洲研究院,北京 100080

摘要随着软件规模的不断扩大、软件演化周期的不断延长,构建软件项目知识图谱对软件维护、软件开发的意义越来越重大。如何基于软件项目开发过程中产生的源代码、邮件列表、缺陷报告等多源异构大数据,快速构建语义关联丰富的软件知识图谱,是软件工程领域亟待解决的关键问题。提出了以代码结构为核心的软件知识图谱模型,建立了“知识抽取-知识融合”两层软件知识图谱构造框架,该框架支持软件项目知识图谱的自动构造以及基于知识图谱的软件项目智能问答,有效提高了软件项目理解和软件复用的效率。目前,软件项目知识图谱已经在Apache开源社区以及国内著名软件企业成功展开应用实践。

关键词软件复用 ; 软件知识图谱 ; 软件知识抽取 ; 知识问答

论文引用格式:

邹艳珍, 王敏, 谢冰,  等. 基于大数据的软件项目知识图谱构造及问答方法[J]. 大数据, 2021, 7(1): 22-36.

ZOU Y Z, WANG M, XIE B, et al. Software knowledge graph construction and Q&A technology based on big data[J]. Big Data Research, 2021, 7(1): 22-36.


1 引言

软件复用可以提高软件开发的效率和质量。但随着现代软件规模的不断扩大和复杂度的日益提高,复用一个软件项目越来越难。软件项目在其整个生命周期中形成并积累了大量的数据,如源代码、邮件列表、缺陷报告和问答文档等。这些数据中蕴含了规模庞大、结构复杂、语义关联丰富的软件知识,能够帮助软件开发人员理解软件功能,进行软件复用。然而,组织、利用这些知识面临着以下挑战。

● 软件规模扩大引发的软件知识爆炸问题。随着软件规模的扩大和软件复杂度的提高,在软件开发与复用中需要理解与掌握的知识越来越多,开发者的学习成本越来越高。

● 软件数据中蕴含的信息在多源异构数据中呈碎片化分散的形态。在一个软件项目中,有助于复用者学习与理解这个软件项目的信息通常以相对独立的形态碎片化地分散在多源异构的数据之中,缺乏全局、统一的组织整理,彼此之间也缺乏关联。

● 大量信息是以无结构文本的形式表示的,如代码标识符、代码注释、邮件、用户手册、缺陷描述。文本信息具有很高的随意性和模糊性,对于同一件事情,不同的人可能会使用完全不同的单词对其进行描述。因此,即使复用者可以通过关键词来对无结构文本进行检索,其效果也不尽如人意。

为了有效地组织和利用多源异构软件大数据,更好地进行软件理解和复用,本文提出了基于大数据的软件项目知识图谱构造及问答方法。这里,软件项目知识图谱是指由不同类型软件数据的软件知识图有机融合构成的用于描述某一软件的知识体系。软件知识图是指由同一类型软件数据的软件知识实体及其之间的关联关系构成的图。具体地,本文提出了以代码结构为核心的软件项目知识图谱模型,以及“知识抽取-知识融合”两层插件框架,从而实现基于多源异构软件大数据的软件项目知识图谱自动构造;提出了基于知识图谱的软件智能问答方法和系统,从而有效地支持面向软件项目知识图谱的自然语言查询以及面向多源异构软件大数据的智能问答。在此基础上,本文设计并实现了软件项目知识图谱构造及智能问答平台SnowGraph,并为Apache开源社区中的192个软件项目和5家软件企业(浪潮通用软件有限公司、神州数码信息系统有限公司、东软集团股份有限公司、中创软件工程股份有限公司、金蝶软件(中国)有限公司)中的10个技术领域自动构造出软件项目知识图谱,并提供问答服务。

2 软件项目知识图谱模型设计

针对一个软件项目,本文的目标是基于多源异构软件数据自动构造出一个软件知识图谱。软件知识图谱是一个有向图G=(V,E),G中的点集V={v_(1),v_(2),…, v_(|V|)}代表软件项目中的概念和实体,G中的边集E={e_(1),e_(2),…,e_(|E|)}代表这些实体之间的关系。本文将软件复用中的知识模型简单地记为T=(A,R),其中,A是所有实体类型的集合,存在一个从实体到实体类型的映射函数τ:V→A,使得知识图谱中的每个实体v∈V都具有一个特定的实体类型τ(v)∈A;R是所有关系类型的集合,存在一个从关系到关系类型的映射函数∅:E→R,使得知识图谱中的每条关系e∈E都具有一个特定的关系类型∅(e)∈R。因此,在构造知识图谱之前,首先需要分析软件大数据,并进行软件知识图谱模型的设计。

2.1 多源异构软件大数据

对于一个软件项目来说,常见的数据来源和类型包括源代码及其版本控制记录、需求与设计文档、用户手册、开发者邮件列表、用户论坛等。不同来源的数据有不同的存储格式,且其中包含的信息类型也各不相同。本节总结软件项目中有助于软件复用的几类代表性数据,分析并讨论其中包含的信息类型,这是实现知识建模以及知识图谱自动构造的基础。

(1)代码库

源代码是软件项目中最核心的资产。代码库中包含丰富的有助于复用者学习与理解该软件项目的信息,代码库信息大致可以分为以下3个部分

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值