基于SPO数据的搜索方法、装置、设备和存储介质与流程

文档序号:16263783发布日期:2018-12-14 21:47阅读:646来源:国知局
基于SPO数据的搜索方法、装置、设备和存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种基于spo数据的搜索方法、装置、设备和存储介质。

背景技术

随着信息技术的飞速发展,当今社会进入了信息爆炸时代,人们越来越多地借助网络来寻找自己需要的信息,因此,检索成为人们工作、生活不可或缺的一部分。人们通常使用搜索引擎来进行检索,搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将与用户检索相关的信息展示给用户的系统。

用户在使用搜索引擎时,通过搜索查询条件(例如刘德华)识别到用户需求的实体,然后展现实体的基本信息以及一些跳转链接,如果用户想看更多的该实体的属性信息,则需要点击链接跳转,然后去跳转之后的页面去查找,操作繁琐,用户体验较差。



技术实现要素:

本发明提供一种基于spo数据的搜索方法、装置、设备和存储介质,以解决现有的搜索过程中操作繁琐,用户体验较差的问题。

第一方面,本发明提供一种基于spo数据的搜索方法,包括:

接收用户的搜索请求;所述搜索请求包括实体名称;

根据预先存储的知识图谱的spo数据,获取所述实体名称对应的属性名和属性值;所述spo数据包括主语s、谓语p、宾语o三元组信息;所述s元组用于存储实体名称;所述p元组用于存储与所述实体名称对应的属性名;所述o元组用于存储与所述实体名称对应的属性值;

向所述用户显示所述实体名称对应的属性名和属性值

第二方面,本发明提供一种基于spo数据的搜索装置,包括:

接收模块,用于接收用户的搜索请求;所述搜索请求包括实体名称;

处理模块,用于根据预先存储的知识图谱的spo数据,获取所述实体名称对应的属性名和属性值;所述spo数据包括主语s、谓语p、宾语o三元组信息;所述s元组用于存储实体名称;所述p元组用于存储与所述实体名称对应的属性名;所述o元组用于存储与所述实体名称对应的属性值;

显示模块,用于向所述用户显示所述实体名称对应的属性名和属性值。

第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法。

第四方面,本发明提供一种电子设备,包括:

处理器;以及

存储器,用于存储所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行第一方面中任一项所述的方法。

本发明实施例提供的基于spo数据的搜索方法、装置、设备和存储介质,接收用户的搜索请求,根据知识图谱的spo数据,获取到与搜索请求中实体名称对应的属性名和属性值,并将属性名和属性值向用户显示,能够直观、精准地将属性名和属性值作为搜索结果提供给用户,从而提高搜索效率,提升用户搜索体验。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本发明提供的搜索方法一实施例的流程示意图;

图2是本发明提供的搜索方法另一实施例的流程示意图;

图3是本发明提供的搜索方法一实施例的id分配原理示意图;

图4是本发明提供的搜索方法另一实施例的id分配原理示意图;

图5是本发明提供的搜索装置一实施例的结构示意图;

图6是本发明提供的电子设备一实施例的结构示意图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本发明的说明书和权利要求书及所述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先对本发明所涉及的名词和场景进行介绍:

知识图谱旨在描述真实世界中存在的各种实体(如人物、汉字、视频、音乐、影视、小说等)或概念,每个实体或概念用一个全局唯一确定的id(identity,身份标识)来标识。每个属性名-属性值对用来刻画实体的内在特性,而关系用来连接两个实体,刻画它们之间的关联。知识图谱亦可被看作是一张巨大的网状图,网状图中的节点表示实体或概念,而网状图中的边则由属性或关系构成。知识图谱主要就是构建和维护上述的实体和关系,为搜索中的推荐系统、语义理解、问题回答等提供支持。

本发明可以从互联网海量数据(例如结构化数据、网页源数据、用户生成数据等)利用数据挖掘方法整理组织,构建知识图谱。知识图谱中的spo数据包括主语s、谓语p、宾语o三元组信息;所述s用于存储实体名称;所述p用于存储与所述实体名称对应的属性名;所述o用于存储与所述实体名称对应的属性值,进而通过特有的查询条件查询知识图谱中相关的知识信息。

本发明实施例基于知识图谱,提供了一种搜索方法,即对用户的搜索请求进行解析,得到实体名称,根据知识图谱的spo数据,获取到与实体名称对应的属性名和属性值,并将属性名和属性值向用户显示,能够直观、精准地将属性名和属性值作为搜索结果提供给用户,解决了相关技术中在搜索结果中无法直接地展示这些信息,而需要用户花费较多时间从相关网页中筛选出这部分信息的问题,从而提高搜索效率,提升用户搜索体验。而且,本发明基于spo数据构建知识图谱,知识图谱中的数据项包括s、p、o三元组信息,基于知识图的spo数据对用户提供搜索服务时,能够为用户提供准确的搜索结果。

基于spo构建知识图谱,需要建设spo数据,一方面对于不同的产品可以根据需求建设需要的spo数据,另一方面可以在知识图谱的核心集中获取spo数据,但是前者对于相同的spo数据存在重复建设的问题,从整体成本看,存在人力浪费,而且不同的产品之间的spo数据无法互用,数据利用率低;后者,一方面由于模式schema的约束条件导致核心集上收录的spo数据必须是在schema上定义的属性。如果spo数据对应的属性未在schema上定义,那么spo数据则无法收录进核心集,因此会导致有大量的spo数据,无法收录进核心集;另一方面,核心集是存在择优策略的,将多源的数据进行择优,然后一个属性上只保留择优后的属性值。无法满足产品端有个性化的择优策略的需求,比如通用卡片,对于某个属性或者某个实体名称,只需要来源百科的属性。本发明实施例中的方法通过建立统一的spo库可以避免上述两个方面的问题。

图1是本发明提供的搜索方法一实施例的流程示意图。如图1所示,本实施例提供的方法,包括:

步骤101、接收用户的搜索请求;搜索请求包括实体名称。

具体的,用户的搜索请求,例如包括:刘德华,刘德华为实体名称。

步骤102、根据预先存储的知识图谱的spo数据,获取实体名称对应的属性名和属性值;spo数据包括主语s、谓语p、宾语o三元组信息;s元组用于存储实体名称;p元组用于存储与实体名称对应的属性名;o元组用于存储与所述实体名称对应的属性值。

具体的,知识图谱的spo数据中包括s、p、o三元组信息,分别存储了实体名称,以及与实体名称对应的属性名和属性值;

可以根据知识图谱的spo数据,获取所述实体名称对应的属性名和属性值。

示例性的,实体名称为刘德华,则获取对应的属性名和属性值,例如生日-1961年9月27日;代表作品-无间道、天若有情、旺角卡门。

实体名称为第二梦,对应的属性名和属性值,例如出处-风云;配偶-聂风。

步骤103、向用户显示实体名称对应的属性名和属性值。

在获取到实体名称对应的属性名和属性值后,向用户显示该实体名称对应的属性名和属性值,能够直观、精准地将属性名和属性值作为搜索结果提供给用户,提升了搜索体验。

本实施例的方法,接收用户的搜索请求,根据知识图谱的spo数据,获取到与搜索请求中实体名称对应的属性名和属性值,并将属性名和属性值向用户显示,能够直观、精准地将属性名和属性值作为搜索结果提供给用户,从而提高搜索效率,提升用户搜索体验。

在上述实施例的基础上,可选的,如图2所示,步骤102之前可以进行如下操作:

将获取到的源数据进行转化处理,得到spo数据;

将所述spo数据作为所述知识图谱的数据项收录在spo库中;

步骤103,具体可以通过如下方式实现:

根据所述spo库中存储的spo数据,获取所述实体名称对应的属性名和属性值。

具体的,在为搜索提供spo数据之前,需要建设spo数据,即将获取到的源数据进行转化处理,得到spo数据,并将spo数据作为知识图谱的数据项收录在spo库(即spo数据库)中,在接收到用户的搜索请求后,根据spo库中存储的spo数据,获取与搜索请求中包括的实体名称对应的属性名和属性值。

图2中产品端策略指的是不同的产品可以根据需求,对spo库中的数据进行处理,得到该产品需求的spo数据,进行产品应用,产品例如百科的通用卡片。

可选的,源数据可以包括结构化数据;所述结构化数据包括:实体名称以及与所述实体名称对应的属性名和属性值;相应的,如图2所示,转化处理具体可以通过如下方式实现:

将结构化数据中的实体名称存储在spo数据的s中;

建立结构化数据中的属性名与知识图谱的schema上定义的属性名pid的对应关系,并将对应关系存储在spo数据的p中;

将结构化数据中的属性值根据schema的约束条件进行处理,得到处理后的属性值,并将属性值存储在spo数据的o中。

具体的,源数据可以包括结构化数据,结构化数据可以通过对网页的抓取得到,或者可以从合作网站(如爱奇艺)的数据推送中得到。

spo数据包括s、p、o三元组信息,s元组的数据结构用于存储实体名称,即将结构化数据的实体名称存储在spo数据的s元组的数据结构中;p元组的数据结构用于存储与所述实体名称对应的属性名,即将结构化数据的属性名存储在spo数据的p元组的数据结构中,由于知识图谱的schema上定义的属性名pid与结构化数据中的属性名不同,因此需要建立结构化数据中的属性名与知识图谱的schema上定义的属性名pid的对应关系,并将结构化数据中的属性名与知识图谱的schema上定义的属性名pid存储在spo数据的p元组的数据结构中;o元组的数据结构用于存储与所述实体名称对应的属性值,该属性值与p元组中的属性名对应,在生成spo数据过程中,可以将结构化数据中的属性值根据schema的约束条件进行处理,得到处理后的属性值,并将属性值存储在所述spo数据的o元组中,例如对于生日的属性值,schema的约束条件为写成年月日格式,如1961年9月27日。

图2中pid化策略指的是结构化数据的转化处理过程中。

s元组如下:

其中,@value字段为实体名称。

p元组如下:

其中,@value字段为属性名。localid字段表示schema上定义的属性名pid。例如,属性名为生日,pid为birthday。

o元组如下:

其中,@value字段为属性值。

上述具体实施方式中,将源数据转化为spo数据收录在spo库中,根据所述spo库中存储的spo数据,获取所述实体名称对应的属性名和属性值,能够实现数据复用,节省人力成本,避免数据重复建设的人力成本的浪费,spo库实现对spo数据的无损收录,能够实现原始信息的无损保留。

在上述实施例的基础上,对spo数据收录在spo库中之前,还需要进行如下操作:

对所述spo数据分配来源标识id;

根据所述spo数据的s、p、o三元组信息、所述来源标识id和来源方式利用md5算法计算所述spo数据的第一标识id。

具体的,对每份收录进spo库的spo数据,会人工分配来源标识id,即sourceid,确保sourceid的唯一,且可以根据sourceid,对spo数据进行整体的上线和下线,例如对于某些sourceid的spo数据进行产品上线或下线。

在产品使用的时候,可以根据产品需求,选择不同的sourceid的spo数据进行处理和上线。

进一步的,可以为spo数据分配第一标识id,通过md5算法进行签名产生。

第一标识id=md5(s,p,o,sourceid,fromurl,fromsentence,fromtype,extractfrom)

其中,s,p,o,分别为spo数据的s、p、o三元组信息,sourceid表示来源标识id,fromurl,fromsentence,fromtype,extractfrom表示来源方式。

来源方式分为fromurl,fromsentence,fromtype,extractfrom,用来区分不同的数据源和不同的处理方式。其中,fromurl指的是网页来源,fromsentence指的是来源句子,fromtype指的是来源类型(例如ie、manual等),extractfrom指的是抽取解析方法。

进一步的,为了保证id的稳定性,因此在收录spo数据到spo库之前,还需要进行如下操作:

对所述spo数据分配第二标识id;

建立所述第一标识id和所述第二标识id的对应关系。

具体的,spo库的第一标识id是由md5算法进行签名产生的。当签名算法发生变化,那生成的第一标识id也会随之发生变化,这样对于产品会存在一些影响(比如基于id干预的数据,则该干预在线上就会失效,还原成原来的旧数据或者错数据)。

因此本发明实施例中可以采用双层id:第一标识id作为内部id由签名算法生成,对外发布的第二标识id随机分配,跟第一标识id存在一一对应关系,如图3所示。

当签名算法变化之后,重新生成的只是内部id,即第一标识id,保存原本第一标识id与到第二标识id的映射表,刷新对应关系,即建立新的第一标识id与到第二标识id的映射表,从而使对外发布的第二标识id保持不变,如图4所示。

上述具体实施方式中,对spo数据分配双层标识id,实现了对外发布id的稳定性。

在上述实施例的基础上,将spo数据收录在spo库中,具体可以通过如下两种方式实现:

将spo数据流式收录到所述spo库中;和/或,

将spo数据批量收录到所述spo库中。

具体的,可以通过流式和/或批量的方式收录spo数据,对于时效性要求比较高的spo数据可以采用流式收录的方式进行收录。

可选的,对所述spo数据分配第二标识id,具体通过如下方式实现:

利用redis的原子setnx操作对spo数据分配第二标识id。

可选的,将spo数据收录在spo库中具体可以通过如下方式实现:

根据spo数据的版本号,将spo数据收录在spo库中。

具体的,在流式和批量同时进行时,需要解决如下问题:

第一、可能存在并发分配第二标识id的情况:批量和流式可能同时对一条新的spo数据分配第二标识id。该并发第二标识id分配的问题,是流式方式实现的关键问题。可以采用redis的原子setnx操作,底层控制并发的分配成功or分配失败。如果同时通过流式或批量对一条spo数据进行spo库的写操作,则只会对其中一个spo分配成功,分配成功后会存储在redis中,分配失败的,再去redis读取一次第二标识id的结果即可。

redis是一个开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。

第二、流式和批量同时将spo数据收录在spo库,即同时对spo库进行写操作,则增加版本pk的操作,根据版本pk的结果,保留最高版本号的数据。

上述具体实施方式中,对于流式收录来说,可以在时效性上支持产品,可以将原来的数据的天级更新频率,提升到分钟级别的更新频率。

在上述实施例的基础上,本实施例的方法中,步骤102之前还可以进行如下操作:

根据预设的筛选策略从所述spo库中获取spo数据,并将获取到的spo数据根据核心集的schema约束条件进行处理,收录到所述核心集中;

相应的,步骤102具体可以通过如下方式实现:

根据所述知识图谱的核心集中存储的spo数据,获取所述实体名称对应的属性名和属性值。

具体的,如图2所示,在spo库的基础上,根据预设的筛选策略,获取spo数据收录在实体库中;对实体库中的数据,根据核心集的schema约束条件进行处理,得到满足核心集收录的实体,收录在不同的订阅源中,然后将多个订阅源库中的数据收录到核心集中,收录过程中需要对多源的数据进行消岐、融合和择优等处理。

然后,在产品应用时,从核心集中获取spo数据,即可以根据核心集中的spo数据,获取实体名称对应的属性名和属性值,并向用户显示。

进一步的,本实施例的方法,还包括:

建立spo库中的spo数据与核心集的spo数据的关联关系。

具体的,spo库中的spo数据的s元组跟核心集的实体进行关联,将核心集的实体的id(localid)存储在"subject"数据结构的@kbid字段中。

若核心集的spo数据中缺少某些属性名,可以从spo库中得到。

进一步的,本实施例的方法,还包括:

建立spo数据的实体名称对应的属性值与其他实体名称的关联关系。

具体的,根据知识图谱的边关系,建立连通的知识图谱,即建立spo数据的实体名称对应的属性值与其他实体名称的关联关系。

例如,第二梦的属性名为丈夫,属性值为聂风,此时边关系为丈夫,聂风也是一个实体名称,因此建立该属性值与该实体名称的关联关系,即建立该属性值与该实体名称的id的关联关系,将该实体名称的id(localid)存储在"object"数据结构的@kbid字段中。

进一步的,本实施例的方法,还包括:

计算所述spo数据的置信度,所述置信度用于衡量所述spo数据的准确性。

具体的,对于一条spo数据,利用算法和策略,计算所述spo数据的置信度,即给spo数据的准确度进行打分,所述置信度为衡量这条spo数据的准确性的指标。

下面是收录在spo库中的spo数据,包括s、p、o三元组的存储信息,还包括来源方式的信息,即"meta"数据结构中。

本发明实施例中的方法,能够节省人力成本,例如达到一份数据源只有一个研发工程师rd负责建设,避免重复建设的人力成本的浪费;能够实现数据复用,例如一份数据可以在少量变动的基础上,同时支持多个产品应用;能够实现数据原始信息无损保留,即spo库不对数据进行择优,择优策略各个产品端完全可以自定义,满足各个产品端不同的择优需求;spo库能够有更多数据支持线上,即更多的spo数据可以发挥数据的价值,直接支持线上产品的需求。以百科数据为例,入核心集的spo数据量只有1000w,入spo库的数据量是6000w,相当于新增了5000w的数据给线上产品使用。

图5为本发明提供的搜索装置一实施例的结构图,如图5所示,本实施例的搜索装置,包括:

接收模块501,用于接收用户的搜索请求;所述搜索请求包括实体名称;

处理模块502,用于根据预先存储的知识图谱的spo数据,获取所述实体名称对应的属性名和属性值;所述spo数据包括主语s、谓语p、宾语o三元组信息;所述s元组用于存储实体名称;所述p元组用于存储与所述实体名称对应的属性名;所述o元组用于存储与所述实体名称对应的属性值;

显示模块503,用于向所述用户显示所述实体名称对应的属性名和属性值。

可选的,还包括:

预处理模块,用于将获取到的源数据进行转化处理,得到spo数据;

将所述spo数据作为所述知识图谱的数据项收录在spo库中;

所述处理模块502,具体用于:

根据所述spo库中存储的spo数据,获取所述实体名称对应的属性名和属性值。

可选的,所述源数据包括结构化数据;所述结构化数据包括:实体名称以及与所述实体名称对应的属性名和属性值;所述预处理模块,具体用于:

将所述结构化数据中的实体名称存储在所述spo数据的s元组中;

建立所述结构化数据中的属性名与所述知识图谱的模式schema上定义的属性名pid的对应关系,并将所述对应关系存储在所述spo数据的p元组中;

将所述结构化数据中的属性值根据所述schema的约束条件进行处理,得到处理后的属性值,并将所述属性值存储在所述spo数据的o元组中。

可选的,所述预处理模块,还用于:

对所述spo数据分配来源标识id;

根据所述spo数据的s、p、o三元组信息、所述来源标识id和来源方式计算所述spo数据的第一标识id。

可选的,所述预处理模块,还用于:

对所述spo数据分配第二标识id;

建立所述第一标识id和所述第二标识id的对应关系。

可选的,所述预处理模块,还用于:

将所述spo数据流式收录到所述spo库中;和/或,

将所述spo数据批量收录到所述spo库中。

可选的,所述预处理模块,具体用于:

利用redis的原子setnx操作对所述spo数据分配所述第二标识id。

可选的,所述预处理模块,具体用于:

根据所述spo数据的版本号,将所述spo数据收录在所述spo库中。

可选的,所述预处理模块,还用于:

建立所述spo数据的实体名称对应的属性值与其他实体名称的关联关系。

可选的,所述预处理模块,还用于:

计算所述spo数据的置信度,所述置信度用于衡量所述spo数据的准确性。

可选的,所述预处理模块,还用于:

根据预设的筛选策略从所述spo库中获取spo数据,并将获取到的spo数据根据核心集的schema约束条件进行处理,收录到所述核心集中;

可选的,所述处理模块502,具体用于:

根据所述知识图谱的核心集中存储的spo数据,获取所述实体名称对应的属性名和属性值。

可选的,所述处理模块,还用于:

建立所述spo库中的spo数据与所述核心集的spo数据的关联关系。

本实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明提供的电子设备实施例的结构图,如图6所示,该电子设备包括:

处理器601,以及,用于存储处理器601的可执行指令的存储器602。

可选的,还可以包括显示屏幕603用于向用户显示数据信息;

其中,处理器601配置为经由执行所述可执行指令来执行前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,此处不再赘述。

本发明实施例中还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法实施例中对应的方法,其具体实施过程可以参见前述方法实施例,其实现原理和技术效果类似,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。

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