构建知识图谱技术:产品视角下的知识图谱构建流程与技术理解
构建知识图谱技术:产品视角下的知识图谱构建流程与技术理解本文主要想以产品的视角,展示知识图谱的What,Why和How,即知识图谱是什么(定义和构成,组成元素和组织规则),知识图谱的价值(有什么应用场景,应用的效果如何) 以及如何构建一个知识图谱(技术流程和各个流程的关键技术)。构建知识图谱这个过程的本质,就是让机器形成认知能力,理解这个世界。可以说,知识图谱已经成了人工智能时代的基础设施。以下是我在查阅资料时看到的一句话,觉得很贴切,在此应用:知识对于人工智能的价值就在于,让机器具备认知能力和理解能力。
编辑导语:随着人工智能的发展,知识图谱也变得越来越重要。知识图谱是一种特殊类型的图,强调上下文的理解。本文在产品视角下,带大家一起看看知识图谱的构建流程与技术理解。感兴趣朋友快来看看吧。
一、引言伴随着人工智能的逐渐落地,知识图谱也越来越进入大众的视野。
或许你并没有留意,但不论是谷歌搜索人物得到的关联图谱,购物网站越来越精确的商品推荐,还是常见的sIRI,小爱同学等语音助手,或者是金融放贷时的风险控制,智慧医疗的治疗方案推荐;所有这些智能应用,背后都少不了知识图谱的支撑。
如果打个比方的话,知识图谱就是人工智能的记忆系统,让机器感知世界,认识世界,并且通过规模庞大的知识图谱的融合、推理、深度学习等,将这些记忆链接、应用、产生智慧。
可以说,知识图谱已经成了人工智能时代的基础设施。
以下是我在查阅资料时看到的一句话,觉得很贴切,在此应用:
知识对于人工智能的价值就在于,让机器具备认知能力和理解能力。
构建知识图谱这个过程的本质,就是让机器形成认知能力,理解这个世界。
本文主要想以产品的视角,展示知识图谱的What,Why和How,即知识图谱是什么(定义和构成,组成元素和组织规则),知识图谱的价值(有什么应用场景,应用的效果如何) 以及如何构建一个知识图谱(技术流程和各个流程的关键技术)。
二、知识图谱是什么目前学术界对于知识图谱还没有较为统一的定义,赵军老师的《知识图谱》中做出了如下定义:
知识图谱是一种比较通用的语义知识的形式化描述框架,用节点表示语义符号,用边表示符号之间的语义关系。
或者再通俗一点,知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法,我个人对知识图谱的理解如下:
知识图谱基本的组成元素,是图节点和边。从生活中的经验来看,图节点可以是实例和某个实体,比如建材、水泥等等。
而节点与节点之间的边,则表示了两种节点之间的关系,比如建材水泥之间画出一条边,标注水泥是建材的子类。
当然,这样说是不严谨的。
为了让计算机能够理解和使用,需要一套计算机科学的规范定义,节点对应的是本体(Ontology)和实例,节点和节点间相互的关系可以用图结构或者相对简化的三元组来表示。
通过这样的数据结构,可以完备的表示信息。
有了信息还需要使用,比如查询、推理等。
要使计算机理解数据,就要按照一定的规则存储和组织语言,通过各种关键字标明每一处信息的含义是什么。
在知识图谱中,有RDF(Resource Description Frame 资源描述框架)和Owl语言(Ontology Web Language 网络本体语言)来对本体进行描述,让计算机理解图谱中的信息。
会有专门的结构化查询语言对图谱进行查询,比如针对RDF的查询语言SPARQL或者针对图结构的查询语言Cypher(开源图数据库Neo4J中实现的图查询语言)。
具体怎样定义与描述,会在知识图谱构建部分有限的展开。
知识图谱是一种图结构,因此可以摆脱传统关系型数据库的严格限制,在字段和实例的增加、修改等方面都更加随意和自由,可以加入新的实例,新的节点,新的关系。
还可以把不同的实体建立联系,把多个图谱的同一实体建立联系(实体对齐),这和人类认知世界的方式是类似的。
这也是知识图谱的优势,容易建模,有很大的灵活性;结构化的数据和图结构的组织,使得机器可读的同时人类也易于理解,这和人脑的神经元及记忆系统很像,也更容易产生人工智能。
三、知识图谱可以做什么这个问题的答案是非常宽泛的,如果从一个知识库或者数据库的角度来看,知识图谱可以是任何系统的基础工程,涉及到存储、记忆、分析和智能的东西,都可以应用知识图谱。
直接思考的话,知识图谱首先是一个规模庞大的数据库(或者说知识库),百万级、亿级的数据相互关联,可以从更多维度对事物进行更精确的分析。
举个例子,金融知识图谱可以通过关联来查找异常、找出团伙、推荐目标客户等,以往这些关联业务需要结构化数据库进行查找,而大部分行业存在着许多非结构化数据,比如表格,文本、图片等,知识图谱可以从这些非结构化数据,半结构化数据中提取信息,完成分析,相当于大大扩展了应用的维度和广度。
这一类对数据的直接应用,就是图结构消费场景,包括图数据搜索,路径分析,关联分析,图谱可视化等等,其核心就是对庞大的图谱数据快速查找、关联、分析和展现。
除了对数据的直接查找和分析,还可以从自然语言的角度应用知识图谱。知识图谱天然的适合人类自然语言的处理,可以用人的思维提出问题,利用图谱庞大的数据规模,通过算法、推理规则、机器学习和深度学习等产人工智能,实现一些问答和分析。
举个例子,知识图谱中存在<砂石,组成,水泥>和<水泥,组成,混凝土>两个三元组,通过知识推理,可以得到<砂石,组成,混凝土>,即通过一定的知识推理得到未知的事实与关系。
这一类数据应用,就是语义消费场景,包括自然语言检索、智能分析、知识推理等等,其核心是把图谱中的知识通过规则或深度学习,形成一定的人工智能。
以上是从技术应用的角度分析知识图谱的应用,但所有的知识图谱最终都是要形成产品,提供服务的。
从我们接触到的各种产品来说,可以分为通用知识图谱,垂直领域知识图谱,还有针对企业提供服务的,专门构建知识图谱的组件和标准化、流程化、自动化工具。
通用的知识图谱,就是我们常见的搜索引擎,问答系统,或者各种百科。
自2012年谷歌发布知识图谱项目,并宣布以此为基础构建下一代智能化搜索引擎后,知识图谱的应用逐渐深入。
现在使用谷歌,百度等进行搜索,不再仅仅是关键字匹配,而是关键词增强检索,即以检索词在图谱中的的同义词、上下位词等词集合共同搜索,用来拓展或约束搜索。
同时还可以关联更多的本体及实例,直接找到答案或者展示与检索词有关的所有关系。
例如搜索某一个电影,可以看到以图谱形式展现的电影的所有主要演员,导演,上映日期等信息。
关于关系搜索和结构化展示,更加直观的例子是天眼查,可以通过搜索一家公司,找到其所有关联的子公司与法人等,同样是以图谱的方式展现的。
问答系统中,用户直接输入问题或通过语音识别,将问题转化为文本,再由自然语言处理找到关键信息以及应当采取的操作,将用户问题转变为知识图谱可识别的查询语句,然后在知识图谱中检索得到候选实体集合,通过对不同候选实体进行打分及排序,得到问题的答案。
知识图谱对于事实类、是非类、定义类等问答效果较好。
百科产品中,知识图谱也越来越重要。
百科本身就具有庞大且多维度的信息,如果把百科的数据转化为图谱,就可以在保证图谱数据质量的情况下,极大的拓展图谱规模,其中一个代表就是维基百科的子项目Wikidata。
Wikidata的目标是构建一个免费开放、多语言、任何人或机器都可以编辑修改的大规模链接知识库。Wikidata支持以三元组为基础的知识条目的自由编辑。
一个三元组代表一个关于该条目的陈述(Statement)。
例如,可以给“土木工程”的条目增加“<土木工程,涉及,工程施工>”的三元组陈述。自2012年启动到现在,Wikidata已经有多于5000万条目了。
垂直领域的知识图谱是相对通用知识图谱而言的,面向特定领域的知识图谱,如电商、金融、医疗等。垂直领域的知识图谱不一定是从互联网等开放数据抓取,而更可能是企业内部的专业数据。
同时知识表示也不止是三元组等事实性知识,通常由更为复杂的本体知识和规则型知识。
知识抽取的质量也要求更高,往往需要人工校验,保障质量。
更重要的是,垂直领域的知识图谱应用形式更全面,除了搜索问答,通常还有决策分析,业务管理等,这些业务对推理的要求更高,并要求更强的可解释性。
以金融知识图谱为例,Kensho采用知识图谱辅助投资顾问和投资研究,图谱的主要知识来源是于机构已有的结构化数据和公开的公报,研报和新闻的联合抽取等。
金融概念复杂性较高,并较多的依赖规则型知识进行投资因素的关联分析。此外,金融知识图谱还具有高度的时效性,需要对金融知识进行时间维度的建模。
最后一部分是知识图谱的组件和标准化,这些都是面向B端企业,为了企业更高效高质量的构建知识图谱所做的工作。
知识图谱组件是指围绕知识图谱的构建一些相关组件产品,比如本体编辑器、关系抽取器、垂直搜索等等,具体工具如斯坦福大学开源的本体编辑工具Protégé,斯坦福大学 InfoLab 实验室开源的知识抽取的系统Deepdive。
同时,知识图谱构建的标准化,流程化工作也在进行,如中国电子技术标准化研究院2019年发布的《知识图谱标准化白皮书》。
综上,知识图谱具有广泛的应用,既是一个规模庞大,查询灵活的知识库,也可以通过数据挖掘,深度学习等产生一定程度的人工智能,在可以预见的未来,知识图谱作为一种重要的人工智能基础设施,将会持续发展,带来更多变化。
四、怎么样构建一个知识图谱知识图谱有广泛的应用和巨大的应用价值,越来越多的企业也在着手进行知识图谱的构建。
按流程来说,知识图谱具有知识表示与建模、知识抽取、知识融合、知识图谱推理、知识统计与图挖掘、知识检索与知识分析等主要的几步。
以下为知识图谱技术路线图。
五、知识表示与建模要想实现人工智能,首先要做的就是让人和机器建立起对这个世界的统一认识,即如何把现实世界变成机器能理解,可解释的知识库,而答案也正藏在知识图谱这个名称中:将知识图谱化。
这一步也就是对知识的表示与建模。
数据本身是有价值的,但其价值是需要组织和挖掘而产生的,杂乱无章的数据是不能被识别的,也无法产生价值。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储、组织数据的方式。对应到知识图谱中,主要是图结构和三元组。
图结构是很好理解的,图谱本身就是以图的结构来存储和展现的。
我们对现实世界的理解也是如此,先认识到某一个具体的事物或实例,即建立节点,再通过建立节点间的关系完成对事物的认识。
这里需要引入一些概念,首先是本体(Ontology)和实例,本体原本是一个哲学概念,知识图谱中本体实际上就是对特定领域之中某套概念及其相互之间关系的形式化表达,实例就是本体的具体例子,这就像JAVA中的类和对象,类是本体,new一个对象是实例。
不同对象之间可能存在关系,而这就是一条边。
实体是本体、实例及关系的整合,比如“手机”是本体框中的一个概念,概念中也规定了相关属性比如“处理器”,苹果手机是一个具体的手机,叫做实例,所以苹果手机也有处理器,苹果手机以及体现苹果手机的本体概念“手机”以及相关属性,叫做一个实体。
大量实体的集合形成了知识库,例如DBpedia。这些实体通过语义相互连接,就形成了语义网络,而这也即是知识图谱的前身。
大部分情况下,人们将实体和概念统称为实体,将关系和属性统称为关系,对知识图谱进行了简化,这样知识图谱就变成了描述实体以及实体之间的关系的图结构。