Skip to content

Constructing knowledge graph for software projects.

License

Notifications You must be signed in to change notification settings

PKUliwp/SnowGraph

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

什么是SnowGraph?

SnowGraph,是一个软件项目知识图谱的自动构造框架。

输入一个软件项目的数据(如源代码、邮件记录、版本历史记录、缺陷记录、用户讨论记录等),SnowGraph能够对它们进行信息解析和知识提炼,自动为该软件项目生成知识图谱,并以图数据库的形式给出。

用户(软件项目的管理者、软件工程领域的研究者)可以对该知识图谱进行查询,从而方便地实现数据分析。

什么是软件项目知识图谱?

假设我们要对一个软件项目进行数据分析(例如:项目中的每个程序员的贡献度有多高,每个模块出错的风险有多大,等等)。这个项目有如下数据:

  • 用java语言编写的源代码;
  • xml格式的版本历史纪录;
  • json格式的缺陷记录;
  • mbox格式的邮件记录;
  • xml格式的用户讨论记录;
  • html, pdf, docx格式的用户手册、需求文档、设计文档、测试文档等;
  • ...

对于这些原始数据,我们希望:

  • 数据中的信息需要被解析出来,例如:我们需要知道源代码里有哪些类和哪些方法,它们之间的继承与调用等关系是什么样子的;我们也需要知道邮件记录中有哪些邮件,它们的发件人、收件人、标题、正文是什么,它们之间的回复与转发关系又是什么样子的;等等。
  • 数据中的很多关联关系需要被建立起来。例如:我们需要知道一封邮件中提到了哪些类和方法,一次代码版本变动涉及到了哪些类和方法,一个缺陷是在哪次版本变动中被修复了,等等。
  • 需要在一定程度上理解数据的语义。例如,对于用户讨论记录中的一大段话,其中哪一部分是背景描述,哪一部分是核心问题,哪一部分是代码片段,哪一部分是无意义的客套话,等等。
  • 需要从数据中提炼出更高级的知识。例如,对于一个类,我们希望从数据中抽取出它的功能描述、性能描述、使用场景、使用约束、使用示例、算法原理解释等各方面的知识;对于一个程序员,我们希望能抽取出他的贡献度、擅长方面等知识。

这些解析出来的信息和提炼出来的知识,以软件知识图谱的形式进行统一表示与存储管理。

About

Constructing knowledge graph for software projects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%