一、 知识图谱技术体系
知识图谱的构建主要涉及到知识建模、知识抽取、知识融合、知识存储、知识计算以及知识应用,具体可以归纳如下:
二、 知识图谱实施方法
- 使用现有的套装工具(如LOD2、Stardog)
- 在现有套装工具的基础上进行扩充
- 针对知识图谱生命周期的各种工具进行组合
- 有针对性的开发某种工具
- 从零开始构建
三、 技术架构
知识图谱架构如下图,这其中主要包括如下几个部分:
3.1 数据采集
主要涉及到爬虫技术
3.2 建立本体
可以采用如下两种方式
自顶向下:由专家创建
自底向上:
- 从现有的行业标准转化;
- 从现有高质量数据源(如百科)转化
3.3 本体编辑
有很多现有的工具:如Protégé、Semantic Turkey、Swoop、OBO-Edit等,存在的缺点是需要个人编辑,不能多人并行编辑
3.4 知识抽取
针对不同的目标数据类型,可以提供文件导入、ETL、Wrapper、Extractor三种方式:
- 结构化数据, 如RDB中的数据,直接ETL或文件上传
- 半结构化数据, 如百科,配置Wrapper解析逻辑
- 文档、文本类数据, 如一般的web数据,利用文本抽取引擎的自然语言处理技术(NLP)、机器学习,利用Extractor抽取成结构化的知识数据
3.5 知识融合
把结构化数据、半结构化数据、非结构化数据的知识表达形式都统一成RDF的形式,便于存储和查询。具体的知识融合主要包括如下两种类型:
- 合并外部知识库: 数据层的融合、模式层的融合
开放数据集成框架:LDIF
- 合并关系型数据库:将关系型数据转换成RDF的格式,现有工具Triplify、 d2rServer 、OpenLink、 Virtuoso 、SparqlMap等
3.6 知识存储
知识存储的主流存储方式是图数据库,但具体实施时需要根据具体的业务需求来选择存储方式,下表总结了各种存储方式的特点:
- 关系型数据库存储三元组表(S,P,O): 类似RDF存储结构,以元组为单元进行存储。语义较为明确
问题:大量自连接操作的开销巨大
- 关系型数据库存储属性表: 属性相似的主语聚为一张表,类似关系型数据结构,每一条数据代表一个实体,每一列代表一个属性
问题:
(1)、 RDF灵活性(高于一阶的关系查询很复杂)
(2)、 查询时必须指定属性,无法做不确定属性的查询
- 关系型数据库存储垂直分割: 以谓语划分三元组表,根据属性的不同建立数据表,数据结构较为清晰
问题:
(1)、大量数据表
(2)、删除属性代价大
- 关系型数据库存储RDF存储: 专为存储三元组形式的数据而设计的专用数据库,通过六重索引(SPO、SOP、PSO、POS、OSP、OPS)的方式解决了三元组搜索的效率问题
优点:
(1)、三元组模式查询(triple pattern)的高效执行
(2)、任意两个三元组模式的高效归并连接(merge-join)
缺点:
(1)、六重索引意味着6倍空间开销
(2)、更新维护代价大
- 图数据库存储: 图数据库的结构定义相比RDF数据库更为通用,实现了图结构中的节点,边以及属性来进行图数据的存储,典型的开源图数据库就是Neo4j。
优点:数据库本身提供完善的图查询语言、支持各种图挖掘算法,缺点:图数据库的分布式存储实现代价高,数据更新速度慢,大节点的处理开销很高。
- 时态数据存储: 知识图谱中的时态信息包含以下四个方面:
事实的生成时间
某事实的有效时间段
某一对象在特定历史时刻的状态
知识图谱在过去特定时间的版本
- 存储原则
关系型数据:使用图形数据存储
关联型数据:作为记录型数据存入合适的存储中,通过实体链接与图谱中实体关联。
属性型数据:作为实体的数值属性存入知识图谱
时态型数据:使用基础存储上的时态处理中间件进行存储与查询
3.7 知识表现
知识表现主要涉及语义网的知识,其中与知识图谱相关紧密的是RDF、 OWL、SPARQL几种,具体的特征和用处如下表:
3.8 知识推理
- jena是一个java 的API,用来支持语义网的有关应用,学习jena需要了解XML 、RDF、 Ontology、OWL等方面的知识。
- RDFox是一个高度可扩展的内存RDF三重存储,支持共享内存并行数据推理。它是一个用C ++编写的跨平台软件,带有一个Java包装器,可以与任何基于Java的解决方案轻松集成
3.9 知识检索
索引系统的构建,并对查询的结果进行排序
3.10 人机交互
集成现有的可视化工具,实现知识图谱的可视化。常见的可视化工具如3D.js、Echarts等。
网友评论