一种知识图谱的构建方法及系统与流程

文档序号:18544985发布日期:2019-08-27 21:34阅读:439来源:国知局
一种知识图谱的构建方法及系统与流程

本发明涉及数据处理技术领域,特别涉及一种知识图谱的构建方法及系统。



背景技术:

大数据是指海量的、高增长率和多样化的信息资产。知识图谱(knowledgegraph)又称为科学知识图谱,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。大数据通常用知识图谱来展示。从数据的获取到图谱的构建,有种类繁多的技术实现方式,最终呈现的效果千差万别。其中的难点在于,如何提取全面而有价值的信息,并将其映射到图谱中,而图谱中的数据又如何能够方便、有效地被用户使用。传统方案是将数据存储在数据库中,建模复杂,数据实时性差,分析和开发的难度大、周期慢,因此这种方式已经逐渐被图库所取代。然而,目前市场上存在的许多图谱业务范围较窄,语义模糊,复用性差,需要为各个不同的场景创建图库,造成许多浪费。另外,由于图谱涵盖信息不全,使得能够提取的信息不够丰富。



技术实现要素:

本发明的目的在于提供一种知识图谱的构建方法及系统,以增强复用性。

为了实现上述发明目的,本发明实施例提供了以下技术方案:

一种知识图谱的构建方法,包括步骤:在完成图库集群配置后,实时接收数据;解析出所述数据中的id号及各个键值对,并判断数据的类型,若数据类型为具有时间属性的事件,则以所述id号创建新的事件节点,或者以所述键值对修改图库中原有的事件节点中相应的属性值。

上述方法中,是将除公司和自然人以外的实体抽象成事件,以事件节点存在于所述知识图谱中,实现了语义的一致性,语义清晰,且可以重复使用。

上述方法中,还包括步骤:以事件的发生时间和/或结束时间创建时间节点,并将时间节点与事件节点相连。将时间抽象成一类单独的节点,时间节点与事件节点相连,同时多个时间节点串联在一起组成一个时间轴,以此赋予图谱时间维度。

上述方法中,还包括步骤,若数据类型为公司的基本信息,则以公司所属地域创建地域节点,并将地域节点与公司节点相连。通过企业所属地域进行关系蔓延,赋予知识图谱空间维度。

另一方面,本发明实施例同时提供了一种知识图谱的构建系统,包括:配置模块,用于配置图库集群;数据接收模块,用于实时接收数据;解析模块,用于解析出所述数据中的id号及各个键值对;构建模块,用于判断数据的类型,且在数据类型为具有时间属性的事件时,以所述id号创建新的事件节点,或者以所述键值对修改图库中原有的事件节点中相应的属性值。

再一方面,本发明实施例同时提供了一种包括计算机可读指令的计算机可读存储介质,所述计算机可读指令在被执行时使处理器执行本发明实施例中所述方法中的操作。

再一方面,本发明实施例同时提供了一种电子设备,包括:存储器,存储程序指令;处理器,与所述存储器相连接,执行存储器中的程序指令,实现本发明实施例中所述方法中的步骤。

与现有技术相比,本发明所提供的系统或方法,构建的知识图谱具有以下特点:

(1)全事件:该知识图谱是以企业、自然人、事件为主体的实时属性图。人&企、企&企间的投资/管理关系不再是通过一条边来表示,而是将其抽象成一种事件,并以事件节点的形式存在于图中。事件节点的种类非常丰富,可以将具有时间属性的事情抽象成一个事件。例如:招聘事件,招投标事件,诉讼事件,借贷事件等等。同一事件可与多个企业发生关联。

(2)时空维度:将时间抽象成一类单独的节点,时间节点与事件节点相连,同时多个时间节点串联在一起组成一个时间轴,以此赋予图谱时间维度。除了时间外,地域也以节点的方式存在于图中,以此赋予图谱空间维度。通过事件发生时间以及企业所属地域进行关系的蔓延查询,可为数据分析提供一个新的视角。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为实施例中提供的知识图谱的构建方法的流程图。

图2为创建的一个知识图谱的示意图。

图3为实施例中提供的知识图谱的构建系统的组成框图。

图4为实施例中所述的电子设备的组成框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本实施例中提供了一种知识图谱的构建方法,该知识图谱包含7大类节点:企业、自然人、角色、事件、地域、行业、时间。将除公司和自然人以外的实体抽象成事件,以事件节点存在于知识图谱中,且事件节点与公司节点和/或自然人节点相连。例如,自然人与企业、企业与企业间的投资/管理关系被抽象成角色节点,使其成为一种事件,结构上与其他事件一致。地域、行业、时间这几个节点从多个维度描述这些企业、自然人和事件,使全量信息都能保存在一个知识图谱中。事件节点大部分都与企业的某一属性相对应,是实时更新且自洽的,这有利于构建实时指标。比如:与某公司相关的招聘节点个数等于该公司的招聘属性值,同时可根据招聘的学历、发布时间、需求岗位等信息做进一步计算分析。

本实施例中,知识图谱的更新由flink实时流的写入来实现,这是目前最快速稳定的大数据实时计算框架,可在毫秒级将最新数据写入知识图谱。知识图谱支持快速对外发布api,可用于olap工具或可视化平台,高效利用数据平台的全量数据。

具体地,请参阅图1,本实施例中提供的知识图谱的构建方法包括以下步骤:

步骤1,初始化图库,为各类节点建立索引,完成图库集群的配置。

在构建知识图谱之前,先在五个节点上配置好图库集群,其中一个节点为主节点,主要用于写入,另外四个节点为从节点,主要用于读取。在初始化时必须保证五个节点的图库是一致的。在向主节点写入时,主节点会向从节点同步数据,因而整个集群最终是一致的。

本步骤中,具体的,将离线数据加载好,初始化图库,再为各类节点建立索引。这里的离线数据是指初始化图库时准备的数据文件,包括node(节点)文件和relation(关系)文件。为各类节点建立索引,以一个企业的相关大数据为例,例如,企业节点以企业id作为索引,事件节点以时间id作为索引,自然人节点以自然人id作为索引,角色节点以角色id作为索引,地域节点以地域id作为索引,行业节点以行业id作为索引,时间节点以时间id作为索引。成功启动图库集群后,便可以接收实时数据。

步骤2,实时接收数据。以一个企业的相关大数据为例,实时接收的数据包括企业工商数据和企业相关信息。企业工商数据主要包括企业的基本信息、股东信息、备案信息等,企业相关信息主要包括各类事件信息(例如招聘事件信息、诉讼事件信息等)、经纬度信息等。

本实施例中,数据来源于kafka系统,作为举例,一条企业的基本信息数据格式如下:

{"data":{"qyxx_basic":[{"esdate":"2011-04-18","regno":"410005000127109","company_companytype":"1100","realcap_amount":1000000.0,"frname_compid":1,"address":"重庆市江北区000号","regcap_currency":"人民币","regcap_amount":1000153.69048,"frname_id":"183223a6527d510c8b30b0b6b75956a0","company_county":"520000","company_enterprise_status":"存续","company_industry":"f","bbd_qyxx_id":"4bdfb1063a9d4d5f9bcd87601f911856","group_id":"3a184aca91a595bd","regcap":"100.01536904808万元(币种:人民币)","company_name":"abc测试建材有限公司1","ctime":1536904809248,"frname":"张三","realcap_currency":"人民币"}]},"bbd_qyxx_id":"4bdfb1063a9d4d5f9bcd87601f911856","company_name":"abc测试建材有限公司1","tn":"qyxx_basic"}。

一条企业的相关信息数据格式如下:

{"data":{"qyxg_debet":[{"bbd_xgxx_id":"3cf989211f43760d0709c7be47cfc0bc","start_date":"2016-11-09","bbd_dotime":"2018-11-09"}]},"bbd_qyxx_id":"2de6ae74edb54b5cafecf8b202686739","company_name":"xyz有限公司","tn":"qyxg_debet"}。

需要说明的是,上述给出两条数据格式仅是作为举例,构建图谱对输入的数据格式没有要求,只要能够解析出需要的信息并转换成cypher语句即可。但在开发过程中提前约定好数据格式,可以提升开发效率和容错率。

步骤3,获取到实时数据后,以json字符串的方式提取出需要的信息,构造cypher语句,写入到图库中,创建新节点,或者修改原节点中的相应属性值。此处,所述需要的信息是指id号以及数据中的键值对。

具体的,接收实时数据后,首先解析出数据中的id号和各个键值对,以json字符串的方式提取出需要的信息,然后根据json数据中的tn字段判断数据的类型,构造相应的cypher语句,传输给图库。若数据类型为具有时间属性的事件,则以所述id号创建新的事件节点,或者以所述键值对修改图库中原有的事件节点中相应的属性值。

以上述一条企业的相关信息数据为例,首先会获取到bbd_xgxx_id(id号),然后根据tn字段(vent)判断出该条数据为事件数据,于是构造cypher语句为:merge(a:entity:event:qyxg_debet{bbd_event_id:"3cf989211f43760d0709c7be47cfc0bc"}),这里的merge关键字的意思是,如果图库中没有这个节点,则创建,如果有,则匹配到相应节点。此举例中,图库中不存在该事件节点,因此在图库中创建这个事件节点。然后将这个事件节点与企业节点连接起来,cpyher语句为:merge(a:entity:company{bbd_qyxx_id:"2de6ae74edb54b5cafecf8b202686739"})withamerge(b:entity:event:qyxg_debet{bbd_event_id:"3cf989211f43760d0709c7be47cfc0bc"})witha,bmerge(a)-[e1:qyxg_debet]->(b),这样就构建了上述实体及其关系,以“事件节点—公司节点”的方式将该事件与公司相连。

另外,还可以解析出事件发生的时间创建时间节点,将它与事件节点相连。将时间抽象成一类单独的节点,时间节点与事件节点相连,同时多个时间节点串联在一起组成一个时间轴,以此赋予图谱时间维度。

又例如,上述的企业基本信息到来时,flink会解析出各个键值对,企业id(bbd_qyxx_id)为4bdfb1063a9d4d5f9bcd87601f911856,然后根据tn字段(basic)判断出该条数据为企业基本信息数据,于是构造的cypher语句为:merge(a:entity:company{bbd_qyxx_id:"4bdfb1063a9d4d5f9bcd87601f911856"})。此举例中,图库中已经存在该公司节点,因此,将该节点的属性值修改为json中的数据。

如果图库中不存在该公司节点,在创建该公司节点的同时,还可以以该公司所属地域创建地域节点,通过企业所属地域进行关系蔓延,赋予知识图谱空间维度。还可以以该公司所属行业创建行业节点,并将行业节点与所述公司节点相连。

如果是股东信息,那么会解析出企业id,即股东属于哪个公司,并且提取每个股东的信息。在图库中,创建股东节点与它对应的角色节点,设置它的属性,并以“自然人节点—角色节点—公司节点”的方式将它与公司相连。

其他类型的数据都以相同的方式解析及构造cypher语句,并存储在图库中。

通过上述方法,所有类型的节点都能够通过实时接收的数据通过关系连接在一起。如图2所示,图2仅示出了知识图谱中的一部分,位于中心的实体节点为企业节点,自然人杨宏连接一个role(角色)节点,这个role节点再与企业节点相连。这里的role节点表示自然人与企业的关系,被抽象成了一个事件节点。

数据已经存储在了neo4j中,就可以用各种api来读取数据,在应用层开发想要实现的逻辑。比如,想要获取一家企业的法人名称,用户就可以输入企业id,将包含企业唯一id的请求发送给应用层,应用层利用这个id构造cypher语句,网络连接图库并查找对应的节点,读取其中的法人名称属性,然后将这个值返回给用户。

通过上述方法构建的知识图谱具有以下特点:

(1)全事件:该知识图谱是以企业、自然人、事件为主体的实时属性图。人&企、企&企间的投资/管理关系不再是通过一条边来表示,而是将其抽象成一种事件,并以事件节点的形式存在于图中。例如公司与其股东的连接,则可用“股东→投资→公司”这一模式,把“投资”抽象成一个事件实体而不是一种关系,即股东做出了“投资”这一事件,而“被投资”这一事件发生在了公司实体上,这样一来就保证了语义的一致性,语义清楚,复用性强,无需为不同的场景创建图库,可将更多的信息用这种连接方式构建在图谱中。

事件节点的种类非常丰富,可以将具有时间属性的事情抽象成一个事件。例如:招聘事件,招投标事件,诉讼事件,借贷事件等等。同一事件可与多个企业发生关联。

(2)时空维度:将时间抽象成一类单独的节点,时间节点与事件节点相连,同时多个时间节点串联在一起组成一个时间轴,以此赋予图谱时间维度。除了时间外,地域也以节点的方式存在于图中,以此赋予图谱空间维度。通过事件发生时间以及企业所属地域进行关系的蔓延查询,可为数据分析提供一个新的视角。

(3)实时计算:可对外提供数据api服务,理论上可以满足任何涉及关联方的指标计算需求。图谱中各类节点都带有基础属性(如创建时间、更新时间、公司的董监高个数、自然人的对外投资数等),这些数据为指标计算、数据探索、数据挖掘提供了便利。

(4)实时数据流:图谱通过一个flinkstreaming完成数据的实时更新(包括所有节点的属性与关系)。

由于以上这些特点,知识图谱中可以涵盖所有信息,扩展性强,且极大方便了数据分析人员和接口开发人员。同时,利用流式处理(即上述通过kafka推送数据并由flinkstreaming来解析生成cypher语句写入图库的整个流程)的优势,知识图谱可以保证实时性,还可以进一步将历史信息也保存于图谱中,这样就可以查询历史上任意时刻的数据。

请参阅图3,基于相同的发明构思,本实施例中同时提出了一种知识图谱的构建系统,包括配置模块、数据接收模块、解析模块和构建模块,其中,

配置模块用于配置图库集群;

数据接收模块用于实时接收数据;

解析模块用于解析出所述数据中的id号及各个键值对;

构建模块用于判断数据的类型,并根据数据的类型创建新节点,或者在图库中原有的节点中相应的属性值。例如,在数据类型为具有时间属性的事件时,以所述id号创建新的事件节点,或者以所述键值对修改图库中原有的事件节点中相应的属性值。又例如,在数据类型为公司的基本信息时,以公司所属地域创建地域节点,并将地域节点与公司节点相连。

由于本知识图谱的构建系统是基于与前述方法相同的发明构思而提出的,因此,对于此处未描述之处,可以参见上述方法中的描述。

如图4所示,本实施例同时提供了一种电子设备,该电子设备可以包括处理器51和存储器52,其中存储器52耦合至处理器51。值得注意的是,该图是示例性的,还可以使用其他类型的结构来补充或替代该结构,实现数据提取、报告生成、通信或其他功能。

如图4所示,该电子设备还可以包括:输入单元53、显示单元54和电源55。值得注意的是,该电子设备也并不是必须要包括图4中显示的所有部件。此外,电子设备还可以包括图4中没有示出的部件,可以参考现有技术。

处理器51有时也称控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器51接收输入并控制电子设备的各个部件的操作。

其中,存储器52例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其他合适装置中的一种或多种,可存储上述处理器51的配置信息、处理器51执行的指令、记录的表格数据等信息。处理器51可以执行存储器52存储的程序,以实现信息存储或处理等。在一个实施例中,存储器52中还包括缓冲存储器,即缓冲器,以存储中间信息。

输入单元53例如用于向处理器51提供各个用户的基础信息。显示单元54用于显示处理过程中的各种结果,例如各项指标数据、评估结果等,该显示单元例如可以为lcd显示器,但本发明并不限于此。电源55用于为电子设备提供电力。

本发明实施例还提供一种计算机可读指令,其中当在电子设备中执行所述指令时,所述程序使得电子设备执行本发明方法所包含的操作步骤。

本发明实施例还提供一种存储有计算机可读指令的存储介质,其中所述计算机可读指令使得电子设备执行本发明方法所包含的操作步骤。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成模块及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1