基于HugeGraph构建法律知识图谱(一)
基于HugeGraph构建法律文件知识图谱(一)
本项目主要是基于HugeGraph图数据库,解析法律、行政法规、司法解释、地方法规构文件,从而构建
法律与条款
、法律与法律
、条款与条款
、条款与法律
之间的知识图谱。
一、结构化法律条款
将PDF、Docx、Doc文件通过技术手段按照法律定义的条款一条一条解析出来。如下图所示:
二、顶点和边的定义
(1)定义点和边:
顶点:主要定义了法律名称
、条款名称
两个顶点;
边:主要定义了三种关系(后续会继续增加):
-
包含:是指自身法律与自身条款之间的关系;
-
引用:是指法律和法律、条款和法律之间的关系;
-
援引:知识条款与条款之间的关系;
//laws:法律 ; term : 条款CONTAINS("包含", "laws->term", VertexEnum.LAWS.getName(), VertexEnum.TERM.getName(), new String[]{"termId"}),CITES("引用", "laws->laws,term->law", VertexEnum.TERM.getName(), VertexEnum.LAWS.getName(), new String[]{"endId"}),REFERENCES("援引", "term->term", VertexEnum.TERM.getName(), VertexEnum.TERM.getName(), new String[]{"endTermId"});
(2)定义顶点属性
描述 | 归属 | |
---|---|---|
lawsId | 法律ID(唯一) | 法律顶点 |
lawsName | 法律名称 | 法律顶点 |
releaseDate | 发布日期 | 法律顶点 |
effectiveDate | 生效日期 | 法律顶点 |
releaseDepart | 发布机构 | 法律顶点 |
lawType | 类型(法律、行政法规、司法解释、地方法规) | 法律顶点 |
effective | 生效情况(生效中、已废止、已修改、尚未生效) | 法律顶点 |
termId | 条款ID(全局唯一) | 条款顶点 |
termName | 条款名称 | 条款顶点 |
content | 条款内容 | 条款顶点 |
然后基于点和边构建一个图谱模型,如下图所示:
三、解析关系
在解析过程中,法律文件条款中引用其他法律或者法律条款都是标准化的,具有一定的结构,通常是以《
来标记;但在一些行政法规、司法解释中,对法律名称并没有标准格式,存在使用缩写或者与自然语言混在一起的情况。所以需要采用不同的手段来解析法律条款之间的关系。
四、构建知识图谱
以下展示主要以《中华人民共和国证券法》
发布日期为2019-12-28法律文件为例:
4.1 展示《中华人民共和国证券法》内部条款之间的关联
本法律一共包含226条条款。
(1)图一展示了法律节点的主要属性。
(2)图二展示了条款节点内部之间的援引关系。
4.2 局部展示法律条款之间的引用和援引关系
(1)下面三张图详细展示了《中华人民共和国证券法》
第二百零二条条款之间的援引关系。从图左侧可以根据条款内容进行验证。
4.3 展示了以《中华人民共和国证券法》为顶点,下边所有条款的关系
(1)在4.2展示的第二张图中,《中华人民共和国证券法》
第一百二十条引用了《中华人民共和国证券投资基金法》
,所以本张图展示了《中华人民共和国证券法》
第一百二十条完整的援引和引用关系。
(2)本图展示当前《中华人民共和国证券法》
与《中华人民共和国证券投资基金法》
之间所有条款所有援引和引用关系。
五、最后:
这个项目当前处于初期阶段,还有很多不完善的地方,后续一方面会继续优化对条款中引用关系的解析,另一方面会定义更多的顶点和边,做一个有深度的项目,感兴趣的小伙伴可以私信联系。