知识图谱基础(三)-schema的构建

在前面一篇文章《知识图谱基础(二)-知识表达系统》中介绍了知识图谱的基础知识表达系统,什么是entity,什么是relation,什么是domain,什么是type等等。本篇文章主要从应用角度来聊一聊如何构建schema以及shcema构建中需要考虑的问题。以下所讲的schema构建主要是基于common sense进行构建的,弱关系图谱构建会在应用中讲到。

知识图谱构建过程_知识图谱构建过程中依据的标准是知识图谱构建过程_知识图谱构建过程中依据的标准是


知识图谱构建过程_知识图谱构建过程中依据的标准是


知识图谱构建过程_知识图谱构建过程中依据的标准是


简单来说,一个知识图谱的schema就是相当于一个领域内的数据模型,包含了这个领域里面有意义的概念类型以及这些类型的属性。任何一个域的schema主要由类型(type)和属性(property)来表达。图1是plantdata内的创投schema,主要是为了发掘一级市场的投资和融资构建的schema。该schema主要是去定义需求,哪些数据对创投有用,才往上构建,例如:人物都有身高 体重,但是这些数据对创投来说意义不大,在schema中就不用构建了。关注创投的人会关注这些基金与人物投资了哪些公司,投资的公司所属行业,投资的公司属于哪一类企业,在该schema中就需要详细构建。

1.如何构建域(domain)

域(domain)的概念是凌驾于所有类型之上,对于域的定义应该尽量的抽象,不应该具体,同时域与域之间应尽量做到相互,不交叉。例如,省份就不应该是一个域的概念,在思考是否应该把一个概念当做域时,需要考虑到该概念是否能够继续向上抽象,例如:省份;城市;;县等等,他们同属于地理位置域。在明确域的概念时,应该定义好域的边界,这样比较容易区分不同域之间的区域划分。

2.如何确定一个域的类型(type)

这里需要产品去思考,构建这个schema的核心需求是什么,到底需要解决用户什么问题。为了满足这些核心需求,我们需要创造出哪些概念?

举个例子,在汽车领域,用户主要关心什么问题,例如:汽车的品牌、车系、发动机。

在NBA领域,用户主要关心球队、所属联盟、教练、球员等等。

针对不同的需求,需要在域下面构建不同的类型来满足用户的需求。

3.如何确定属性(property)

思考的角度如下:

1.以用户需求为出发点

2.以数据统计为证据

比如在构建完足球领域中的球队类型后,该类型了所有的球队实体,站在用户角度触发,用户会关注球队的哪些关系?

图2是我简单的针对足球领域构建的一个图谱,上面包含了梅西(球队的球员), 埃内斯托·巴尔韦德 (球队的教练),西甲(球队的所属联赛),其中梅西、西甲、埃内斯托.巴尔韦德又分属于不同的类型:足球球员,足球联赛,足球教练,这些所有的类型构成了足球域。

从上图的common sense配合图查询和自然语言处理技术已经可以支持基础的问答了,例如,梅西是哪个球队的?埃内斯托巴尔韦德是哪些球员的教练?西甲有哪些球队在踢球?等等

schema的应用是产品需要重点考虑的内容,因为产品需求决定了schema应该怎么构建,构建的是否完备。而产品的具体应用则主导了schema的整体构建方式,如果不仔细考虑产品应用的话,惨的情况可能构建了很久的schema会因为一个逻辑坑而报废掉,由于知识图谱又是一个牵一发而动全身的工程,根据实际经验来说,如果图谱构建和应用有部分脱节,可能修改图谱schema比重新构建图谱schema的成本还要高。所以,首先确认好具体的应用场景对于一个schema构建的成功与否是至关重要的。

笔者写一套曾经用过的确认schema的流程

先将应用根据需求的强弱划分,分为基础核心需求,schema特色需求,锦上添花需求,未来扩展性需求。

基础核心需求:是经过需求分析后,构建这个schema需要完成核心的需求,该需求优先级

schema特色需求:构建图谱时可能会经常遇到图谱可以实现而其他方法实现比较困难的特色需求,这类需求可能需求强度不是很高,但是由于能够实现一定的异性,经常会有意想不到的效果。

锦上添花需求:非基础核心需求,做了更好,不做也可以接受

未来扩展性的需求:确认schema的时候要充分考虑到未来的扩展性,因为这类需求有可能会大改图谱的schema结构

在构建schema的时候,根据上述分类,需要去考虑该schema一期需要满足哪些具体的功能,将功能一一列下来,哪些功能是需要放在第二期、第三期完成的,未来的扩展性需求需要在构建的哪一块区域留下可扩展的内容。

常用的方法可以使用excel去列出一、二、三期所需要的功能点。

列出上述的功能点后,针对每一个功能点在后面备注好该功能的构建要点(注:这个非常重要),通常需求只需要将产品需求转化成一定的查询结构即可,笔者原来用的是cypher查询语法。以图2为例,我要支持某个教练教了哪些球员?转化成查询语言就是(a:足球教练)<-{b:教练}-(c:球队)-{d:球员}-(e:足球球员) return e。将a变成参数,输入a即可返回所有的e,即输入埃内斯托巴尔韦德,返回就是梅西。

流程如下:query:埃内斯托巴尔韦德带了哪些球员?→语义解析→转化成上述查询,将埃内斯托巴尔韦德作为参数a代入查询→返回结果→前端包装展示

注:上面在每个功能点后面备注了构建要点,当大部分功能点的构建要点都写完的时候,需要集中查看构建要点,因为如果需求本身比较大的话,不同的需求很容易造成schema的构建冲突,正如前面所讲,schema尽量要保证少出错。这个时候由于备注了构建要点,可以全局的来审视这个schema中间有没有逻辑黑洞。常出现的问题主要是在属性的设计,以及知识融合上。

拿着上述文件去找开发,确认一下哪些是比较好实现的,一般来说做到这种程度大多数需求开发都是会接的。如果开发同学足够专业的话,他会从他的视角去给你提出他的宝贵意见。通常产品在思考schema这一块更倾向于思考这个schema的作用,而开发同学会思考工程实现、实现效率、运行效率、计算量等问题。

大规模构建schema的时候需要认真考虑数据源的情况,由于不同公司掌握的数据不同,所应用的对策也不同。

通常笔者会将数据源分为如下几种:

1.已经清洗好的结构化数据:这部分数据一般是公司的核心数据,或者其他公司的核心数据,构建的时候应该优先考虑这类数据。这部分数据通常只需要改变数据格式即可入图谱。

2.清洗好的结构化数据,但数据残缺:这部分数据通常需要数据挖掘,知识融合。清洗难度是由残缺比例决定的。

3.无数据:没有这部分数据,但是又需要这部分数据,通常只能去选择让BD去购买数据,或者让爬虫组去专业网站爬取,例如:企业数据可以去企查查,电影的数据可以去猫眼,产业的数据可以去产业信息网等等。

设需要构建的图谱entity数量在千万级别,开发力量不够强大的时候,慎用纯数据挖掘方案,有条件的话笔者建议直接去买结构化数据,因为可能挖掘和知识融合在经济上的成本比直接买数据要高,而且时间周期也会很长。

个人认为,大规模构建schema难的地方就在于挖掘数据的知识融合上,举个例子:全国有10000个叫的人,爬虫从A网站挖下来5000个“”,从B网站挖下来7000个“”,那么这5000个和那7000个到底是不是一个人?在没有号码的情况下如何确定哪些是一个人呢?常规的做法是去挖掘出“”的其他信息,例如出生年月,任职信息,籍贯等等,然后通过一定的算法进行知识融合。通常,网站的数据不一定全面,即使经过知识融合后,挖掘的数据中一定会有大量的噪音,不同的需求对噪音的承受能力是不同的,构建schema的时候需要充分考虑数据出现噪音的可能性,去评价这部分需求对噪音的承受能力。

如果知识融合完成了话,大规模构建其实就是一个导数据的过程,由于图谱数据结构的关系,一般存2张表(点、边)或者使用RDFs存储,在entity数量上千万以后,图谱的查询压力会比较大,单机查询可能会直接跪掉,开发一般会采用graphX的分布式的存储,不过由于点和边的切割方式的问题,会有一定的副作用。

ArcGIS 创建知识图谱实践

文接上篇,本次讲述下在Pro中怎么创建和使用知识图谱功能,以口罩为例进行说明。

在这里面我们将人群分为:确诊、密接

在这里关系可以理解为传播途径:家庭、交通、时空伴随等等。

这里所有用到的数据都是随机点点自己做的数据

在内容或者目录窗口中右键 打开,然后就可以显示新建实体和关系类型面板,如下所示。

这里面显示我们已经创建好的实体和关系类型

在新建按钮中选择新实体类型

同样的方式可以创建关系类型,这里面的关系就是两个实体互相之间的各种连接

以口罩为例我们可以将在地图面板里面添加确诊人位置等数据。在实体中右键添加到地图

然后在地图面板中可以编辑一些空间数据了,如下所示。

如果实体和关系类型都已经编辑好了,在这里就需要配置实体直接的相互关系。在实体面板里面有“关系类型”,可以添加关系。这里需要选择关系类型、关系指向、实体类型、 具体的实体(这里要特别注意这是个搜索输入框不是下拉列表框,只有输入实体名称才能选择) 。如下所示。

如果上面数据都建立好之后,就可以建立连接图表来进行知识图谱展现。

还可以进行更多的配置内容。

可以将知识图谱数据添加到地图当中,并增加一个垂直选项卡,保证有地图和图表两个窗口。

然后启用“动态”按钮,实现地图和图表联动。在地图上选择图表直接定位。

使用知识图谱不仅可以实现地图和图表的可视化,还可以做一些分析的内容,有兴趣的话仔细看下帮助文档。

知识图谱功能目前刚出来不久,感觉对中文的内容支持有限,所有实体、关系都只能是ASCII,这点有点别扭,导致显示的效果一般般。作的友好型方面也点,容易找不到相关按钮啥的,因为现在这种数据驱动功能方式,选不中的话可能就找不到了,需要习惯下。如果和后期Enterprise和API结合起来就更完美了,从无到有,从步履蹒跚到健步如飞需要一个过程,我们慢慢来见证!!!

如何通过遥感影像识别构建某方向地理环境知识图谱

建立地理环境知识图谱通常需要从以下几个方面入手:

收集遥感影像数据:可以使用遥感卫星或飞机拍摄的影像数据,也可以使用已有的遥感影像数据库。

对遥感影像进行处理:需要对遥感影像进行预处理,包括去噪、校正、分类等作。

建立地理知识模型:需要建立一个地理知识模型,描述地理环境中的实体(如地形、土壤、植被等)和它们之间的关系。

建立地理知识图谱:使用地理知识模型建立地理知识图谱,并使用遥感影像为图谱中的实体进行标注。

使用地理知识图谱:地理知识图谱可以用于各种地理环境应用,如地形分析、土地利用规划、资源管理等。

需要注意的是,建立地理知识图谱的过程需要结合遥感影像的特点,进行相应的调整。

知识图谱技术的技术流程

知识图谱技术的技术流程内容如下:

一般流程为:首先确定知识表示模型,然后根据数据来源选择不同的知识获取手段导入知识,接着综合利用知识推理、知识融合、知识挖掘等技术对构建的知识图谱进行质量提升,根据场景需求设计不同的知识访问与呈现方法,如语义搜索、问答交互、图谱可视化分析等。

1.知识来源

可以从多种来源获取知识图谱数据,包括文本、结构化数据库、多媒体数据、传感器数据和人工众包等。

每一种数据源的知识化都需要综合各种不同的技术手段。例如,对于文本数据源,需要综合实体识别、实体链接、关系抽取、抽取等各种自然语言处理技术,实现从文本中抽取知识。

2.知识表示与Schema工程

知识表示是指用计算机符号描述和表示人脑中的知识,以支持机器模拟人的心智进行推理的方法与技术。知识表示决定了图谱构建的产出目标,即知识图谱的语义描述框架(Description Framework)、Schema 与本体(Ontology)、知识交换语法(Syntax)、实体命名及ID体系。

3.知识抽取

知识抽取按任务可以分为概念抽取、实体识别、关系抽取、抽取和规则抽取等。传统专家系统时代的知识主要依靠专家手工录入,难以扩大规模。

现代知识图谱的构建通常大多依靠已有的结构化数据资源进行转化,形成基础数据集,再依靠自动化知识抽取和知识图谱补全技术,从多种数据来源进一步扩展知识图谱,并通过人工众包进一步提升知识图谱的质量。

4.知识融合

在构建知识图谱时,可以从第三方知识库产品或已有结构化数据中获取知识输入。例如,关联开放数据项目(Linked Open Data)会定期发布其经过积累和整理的语义知识数据,其中既包括前文介绍过的通用知识库 DBpedia 和 Yago,也包括面向特定领域的知识库产品。

5.知识图谱补全与推理

常用的知识图谱补全方法包括:基于本体推理的补全方法,如基于描述逻辑的推理[67-69],以及相关的推理机实现,如 RDFox、Pellet、RACER、HermiT、TrOWL 等。这类推理主要针对TBox,即概念层进行推理,也可以用来对实体级的关系进行补全。

6.知识检索与知识分析

基于知识图谱的知识检索的实现形式主要包括语义检索和智能问答。传统搜索引擎依靠网页之间的超链接实现网页的搜索,而语义搜索直接对事物进行搜索,如人物、机构、地点等。这些事物可能来自文本、、视频、音频、IoT 设备等各种信息资源。

基础知识-知识图谱

知识图谱的构建形式:

自顶向下:先为知识图谱定义好本体与数据模式,再将实体加入到知识库。

自底向上(常用) :从一些开放链接数据中提取出实体,选择其中置信度较高的加入到知识库,再构建顶层的本体模式。

(1)语义信息抽取; (2)多元数据集成与验证(知识融合); (3)知识图谱补全

知识库分类:

开放链接知识库:Freebase、Wikidata、DBpedia、YAGO。包含大量半结构化、非结构化数据。

垂直行业知识库(特定领域):IMDB(影视)、MusicBrainz(音乐)、ConceptNet(概念)等。

基于规则与词典的方法(为目标实体编写模板,然后进行匹配):编写大量规则或模板,覆盖领域有限,难以适应新需求

基于统计机器学习的方法(机器学习,训练模型,识别实体):监督学习算法受训练集限制,准确率和召回率不够理想

( 召回率:真阳性 / 真阳性 + 阳性;准确率:真阳性 + 真阴性 / 真阳性 + 阳性 + 真阴性 + 阴性 )

面向开放域的抽取方法(面向海量的Web语料):通过少量实体实例建立特征模型,再通过它应用于新的数据集,给新实体做分类与聚类。(迭代扩展)

早期:人工构造语义规则以及模板的方式;

实体间的关系模型代替了早期的人工构造;

面向开放域的信息抽取框架(OIE):对隐含关系抽取性能低下。

( 隐含关系抽取:基于马尔科夫逻辑网、基于本体推理的深层隐含关系抽取方法 )

可以将实体属性的抽取问题转换为关系抽取问题

分布式表示 目的在于用 一个综合的向量来表示实体对象的语义信息 ,这种形式在知识图谱的计算、 补全 、推理等方面起到重要的作用:

1、语义相似度计算:实体间的语义关联程度,为自然语言处理(NLP)等提供了极大的便利

2、

消除异构数据中实体冲突、指向不明等不一致性问题。

(1)待对齐数据分区索引;

(2)利用相似度函数或相似性算法查找匹配实例;

(3)对齐算法(成对实体对齐、全局(局部)实体对齐)进行实例融合。

经过实体对齐后得到一系列的基本事实表达,然后事实并不等于知识,它只是知识的基本单位。

本体相当于知识库的模具,使其具有较强的层次结构和较小的冗余程度。

可分为人工构建和数据驱动自动构建。

数据驱动的本体自动构建:

①纵向概念间的并列关系计算:计算两个实体间并列关系的相似度,辨析他们在语义层面是否属于同一个概念。

②实体上下位关系抽取。

③本体生成:对各层次得到的概念进行聚类,并为每一类的实体指定1个或多个公共上位词。

通常是与实体对齐任务一起进行:对知识可信度进行量化,保留置信度较高的,舍弃置信度较低的。

主要包括模式层的更新与数据层的更新。

一阶谓词逻辑、描述逻辑以及规则等

(1)一阶谓词逻辑:以命题为基本,命题包含个体(实体)和谓词(属性或关系)。

(2)基于描述逻辑的规则推理:在(1)的基础上发展而来,目的是在知识表示能力与推理复杂度之间追求一种平衡。

(3)通过本体的概念层次推理。

一些算法主要是 利用了关系路径 中的蕴涵信息:

通过图中两个实体间的多步路径来预测它们之间的语义关系,即从源开始,在图上根据路径建模算法进行游走,如果能够到达目标,则推测源和目标间存在联系。

( 关系路径的建模研究仍处于初期阶段,需要进一步探索完成 )

参考文献:

[1]徐增林,盛泳潘,贺丽荣,王雅芳.知识图谱技术综述[J].电子科技大学学报,2016,45(04):589-606.

行业知识图谱如何构建?

首先了解某个行业知识图谱的相关概念以及在行业知识库建设中的应用情况和地位,然后结合典型算法介绍了机器学习常见的模型,为提高行业知识库中知识的关联性并降低冗余性,引入了行业知识图谱及其构建相关的新技术方法,进而引出了对于行业知识库构建方法的研究,结合智能知识库展示了知识图谱的创新性应用,即利用知识图谱为知识库的搜索和功能提供技术支持,同时通过知识图谱对领域知识进行更加直观地展示。,结合行业知识库的建设工作对机器学习和知识图谱在其中的作用发挥进行了更深一步的阐述和总结。