知识图谱由谷歌最早提出提升其搜索质量,在当前的人工智能大数据时代,知识图谱作为重要的知识表示方式之一,为机器语言认知提供了丰富的背景知识,使得机器对人类自然语言的理解更加精确。知识图谱本质上是语义网络(semantic network)的知识库,从应用的角度可以说知识图谱是一种多关系图谱(multi-relational graph)。
知识图谱中的节点代表的是实体,边代表了实体之间的某种关系,实体来源于现实生活中的事件、物体等,关系则描述了这些事物之间的关联,知识图谱中的这些知识常常以三元组形式存在,例如:(张三,出生于,上海),(张三,朋友,李四)等。
知识图谱是服务于智能系统的,例如推荐系统、问答系统、搜索等上层应用都可以基于知识图谱作为底层支撑提供给用户更好的服务。那么知识图谱的应用前提就是已经构建好了所需要的知识图谱,这也是为什么它可以用来回答一些搜索相关问题的原因,比如在Google搜索引擎里输入“Who is the wife of Bill Gates?”,我们直接可以得到答案-“Melinda Gates”。这是因为我们在系统层面上已经创建好了一个包含“Bill Gates”和“Melinda Gates”的实体以及他俩之间关系的知识库。所以,当我们执行搜索的时候,就可以通过关键词提取("Bill Gates", "Melinda Gates", "wife")以及知识库上的匹配可以直接获得最终的答案。这种搜索方式跟传统的搜索引擎是不一样的,一个传统的搜索引擎它返回的是网页、而不是最终的答案,所以就多了一层用户自己筛选并过滤过程。
知识图谱是结构化的知识库,通过将数据从文本level降到data level,将物理世界中的概念及其关系形式化地表示出来,有助于后续快速地进行知识推理等工作。在逻辑上,我们将知识图谱的数据分为模式层和数据层。
模式层:在数据层之上,是知识图谱的核心,存储经过提炼的知识数据,通常用本体库来管理。
数据层:存储真实的数据,也可以理解为我们俗称的具体实体—关系—实体(例如:特朗普-总统-美国)
那么怎样从海量的非结构化、半结构化、结构化的数据中来构建我们需要的知识图谱呢。知识抽取相关的技术在这个数据处理步骤中显得不可或缺。这一步主要是通过一些自动化或者半自动化的技术手段,从原始数据中提取出知识要素,并将其存入知识库的模式层和数据层。
而在知识抽取的过程中,最大的困难便是处理非结构化文本数据,所以在处理的过程中,会涉及到很多NLP相关技术,例如:分词、命名实体识别、关系抽取、消歧等等。分词现在有很多表现不错的开源工具,结巴、LTP等等;命名实体识别就是从文本中提取实体并对其做分类/打标签,这个技术也是很成熟的,有一些现成的工具可以做,Stanford NLP;关系抽取一直是表现不尽人意的一个地方,目前基本都只能针对文本抽取特定的关系,像deep dive,如果要抽取不定关系,需要设计很多规则和相应的算法,在学术上现在也是有很多的深度学习技术应用于此,当然如果人力资源足够的话,可以人工构造足够的语法和语义规则来做匹配估计效果还不错;消歧的相关工作表现一般,还需要进一步探索,个人觉得在处理这一部分数据的时候将常识知识库考虑进来做消歧可能效果不错(这应该就是通常说的实体链接吧)。
经过上一步得到我们需要的数据过后,应该对这些数据进行加工处理,主要包括本体构建、知识推理等
本体(ontology)是指工人的概念集合、概念框架,如“人”、“事”、“物”等。本体的构建主要是人工编辑(借助本体构建工具Protege)。当然也可以以数据驱动的自动化方式构建本体,现在很多都是从一些特定领域的现有本体库的基础上,采用自动化构建技术逐步扩展。
自动化本体构建过程主要包括:实体并列关系相似度计算,实体上下位关系抽取,本体的生成
例如:谷歌,百度,手机三个实体,在计算相似度后,会发现谷歌和百度相似度比其与手机相似度更大,然后经过上下位关系抽取,会得到的是谷歌和百度是属于一个互联网公司这个实体下的细分实体,手机和他们并不属于同一类。
当完成上一步工作后,知识图谱便有了一个基本的雏形,但是可能很多实体之间的关系都是不完整的,这里也会涉及到一个很火的研究方向(知识图谱补全),所以知识推理的技术在这里就有很大的作用,个人对这一块不算熟悉,就简单说一下。应该会涉及基于规则的知识推理,前提是设计了较好的规则,之前看到的相关研究中涉及到基于逻辑规则的推理,基于图的推理和基于深度学习的推理。
然后就是知识存储了,王昊奋老师在知识图谱第一期的课程中提到,知识图谱主要有两种存储方式,一种是基于RDF的存储,一种是基于图数据库的存储。RDF一个重要的设计原则是数据的易发步以及共享,图数据库则把重点放在了高效的图查询和搜索。我主要采用的是neo4j的图数据库存储方式,当然也可以采用关系型数据库做为存储,但是在大规模数据的基础上进行查询时,图数据库的优势很明显。如果选择RDF的存储系统,Jena是一个不错的选择。
最后说一下知识图谱能服务的上层应用吧,要不然很多人都不明白知识图谱到底能做什么。
首先,肯定是智能搜索,这是谷歌提出知识图谱的初衷,提高其搜索引擎的搜索质量。
智能问答、推荐系统等,在很多垂直领域(像金融、医疗)已经有了不错的应用,作为才学习研究知识图谱一年的新生,我认为在未来几年,知识图谱的应用会涉及到更多的领域,而且现在的相关技术还不够成熟,也希望有更多的学者和工业界的研究者加入其中。