知识图谱概述(下)
本系列参考了市面上已知的,几乎全部“知识图谱”相关文章,并总结提炼出一套适合初学者入门的“知识图谱”的知识体系,希望大家能有所收获。
六,知识图谱的构建流程:以结构化数据为例,数据存储在MySQL中。
1,定义本节讨论的内容:
不讨论,自然语言处理:如何完成非结构化或半结构化文本的抽取;
不讨论,机器学习:如何使用机器学习或深度学习的方法完成图谱隐含的语义推理。
讨论,知识工程:如何根据业务需求,完成概念实体,对象关系属性和数据值属性的定义;
讨论,数据库:如何根据业务流量,完成结构化数据到知识图谱的存储和应用。
2,知识工程简介:
2.1,本体构建:知识工程,重要的工作就是”本体构建“。
希望达到的效果是,对于不同来源、不同内容的数据,在接入知识图谱时都会按照预定义的schema对数据进行转换和清洗,无缝使用已有元数据和资源。
即,根据具体的业务需求,抽象出对应的概念(实体:公司,人物),对象属性(关系: 融资,任职),数据属性(值: 融资金额,担任职位)等要素。
本体构建,常用的工具是斯坦福大学的开源工具Protege。它实现了全套OWL本体文件的定义,但是它只能以序列化(N-Triples,Turtles)后的文件存储,并不支持多人协同编辑。
在工程实践中,可以按照Protege的基本功能,实现Web端管理平台编辑。
2.2,业务场景:
在不同的业务场景下,对同一份结构化数据,构建的本体会有很大差异,所以,在初始化知识图谱项目中,可使用“二八原则”,找准一个落地应用场景,快速开始。比如,企业基本信息图谱,企业舆情事件图谱等。
3,数据转换:使用开源工具包(D2RQ),将存储在MySQL中的结构化数据,转换为RDF的三元组数据。
3.1,D2RQ转换流程:
D2RQ,自定义了一套关系型数据库至OWL文件的“映射语言”,可以通过人工定义并编辑,将不同MySQL连接实例的不同字段,依照"映射语言"中的语法规则,与OWL文件中定义的本体字段互相关联,从而实现转换。工程上,可以将该功能做在管理平台上,让业务人员配置。
The D2RQ Mapping Language当然,如果图谱的构建是一次性的工作,可以将MySQL中的数据拆表。即,(1),所有Class概念和Data Property拆成独立表,以实体ID为主键,允许存在外键;(2),不同Class概念间的关联Object Property拆成独立表,表内包含2个ID字段,同时它们是对应Class表的主键。
4,数据操作:使用Apache Jena Frame,实现RDF数据的操作和处理。
Jena是一整套开源的语义网技术栈操作API,包含本体推理,规则推理和自带数据库。工程上,可以使用它,完成W3C定义的全部语义网功能。
Apache Jena相关文章