一种三元组知识库的构建方法及装置与流程

文档序号:17601894发布日期:2019-05-07 20:24阅读:542来源:国知局
一种三元组知识库的构建方法及装置与流程

本申请涉及自然语言处理技术领域,尤其涉及一种三元组知识库的构建方法及装置。



背景技术:

三元组是指由(实体、属性、值)或者(实体、关系、实体)组成的一种简洁的、形式化的知识表示方式。例如,在(刘德华,性别,男)和(刘德华,配偶,朱丽倩)这两个三元组中,第一个三元组的实体为“刘德华”,其属性“性别”的值为“男”,第二个三元组的两个实体分别为“刘德华”和“朱丽倩”,他们之前的关系为“配偶”。在三元组数据的基础上,可以实现知识存储、知识问答、智能检索、智能客服及知识图谱等应用,而实际中,三元组的数量庞大,将三元组数据合理地组织在一起,形成支持快速查找及可扩展的知识库是三元组应用的关键。

现有的三元组数据的存储方法,一般采用数据库的形式进行存储。对于三元组数据存在的实体同名及实体包含别名等情况,如果采用现有的方法进行存储,将会导致数据存储的冗余度高,从而导致占用存储内存多的问题。



技术实现要素:

本申请实施例的主要目的在于提供一种三元组知识库的构建方法及装置,能够节省三元组数据的存储空间。

本申请实施例提供了一种三元组知识库的构建方法,包括:

构建三元组集合对应的知识库,所述三元组集合中的每一三元组依次包括第一元素、第二元素和第三元素,所述知识库包括以下数据结构:

第一数据结构,用于存储各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识;

第二数据结构,用于存储各个三元组中的各个不同第二元素;

第三数据结构,用于存储各个三元组中的每一第三元素;

第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置;

第五数据结构,用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。

可选的,所述第一数据结构存储的各个不同第一元素中包括:对应于同一对象的不同第一元素、和/或对应于不同对象的相同第一元素。

可选的,所述第一数据结构中存储的各个不同第一元素为所述三元组集合中第一次出现的各个不同第一元素。

可选的,所述第五数据结构,具体用于存储每一目标元素对应的各个元素组合的相关信息在第四数据结构中的第二存储位置;

其中,所述目标元素是所述三元组集合中第一次出现的第一元素或所述第一次出现的第一元素的再现元素,所述第一次出现的第一元素与对应的再现元素相同且对应不同的对象,所述元素组合包括属于同一三元组的第二元素和第三元素;

则,所述第五数据结构,还用于存储所述第一次出现的第一元素对应的连接值,所述连接值为所述第一次出现的第一元素的再现元素的标识。

可选的,所述各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置,包括:

各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的索引。

可选的,所述各个三元组中的每一第三元素在第三数据结构中的第一存储位置,包括:

各个三元组中的每一第三元素在第三数据结构中的起始位置和大小。

可选的,所述第四数据结构还用于存储各个三元组中每一第一元素的搜索热度。

可选的,所述方法还包括:

当接收到搜索数据时,将所述搜索数据与第一数据结构中的各个不同第一元素进行匹配;

将匹配到的第一元素定义为匹配元素;

查询所述知识库中的其它数据结构,得到所述匹配元素对应的每一第二元素以及该每一第二元素对应的第三元素。

可选的,所述查询所述知识库中的其它数据结构,得到所述匹配元素对应的每一第二元素以及该每一第二元素对应的第三元素,包括:

从第五数据结构中,获取所述匹配元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置;

根据获取的第二存储位置,从第四数据结构中,获取所述匹配元素的每一第二元素在第二数据结构中的索引、以及所述匹配元素的每一第三元素在第三数据结构中的第一存储位置;

根据获取的索引在第二数据结构中获取所述匹配元素的每一第二元素,并根据获取的第一存储位置在第三数据结构中获取该每一第二元素对应的第三元素。

本申请实施例还提供了一种三元组知识库的构建装置,包括:

知识库构建单元,用于构建三元组集合对应的知识库,所述三元组集合中的每一三元组依次包括第一元素、第二元素和第三元素,所述知识库包括以下数据结构:

第一数据结构,用于存储各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识;

第二数据结构,用于存储各个三元组中的各个不同第二元素;

第三数据结构,用于存储各个三元组中的每一第三元素;

第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置;

第五数据结构,用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。

可选的,所述第一数据结构存储的各个不同第一元素中包括:对应于同一对象的不同第一元素、和/或对应于不同对象的相同第一元素。

可选的,所述第一数据结构中存储的各个不同第一元素为所述三元组集合中第一次出现的各个不同第一元素。

可选的,所述第五数据结构,具体用于存储每一目标元素对应的各个元素组合的相关信息在第四数据结构中的第二存储位置;

其中,所述目标元素是所述三元组集合中第一次出现的第一元素或所述第一次出现的第一元素的再现元素,所述第一次出现的第一元素与对应的再现元素相同且对应不同的对象,所述元素组合包括属于同一三元组的第二元素和第三元素;

则,所述第五数据结构,还用于存储所述第一次出现的第一元素对应的连接值,所述连接值为所述第一次出现的第一元素的再现元素的标识。

可选的,所述各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置,包括:

各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的索引。

可选的,所述各个三元组中的每一第三元素在第三数据结构中的第一存储位置,包括:

各个三元组中的每一第三元素在第三数据结构中的起始位置和大小。

可选的,所述第四数据结构还用于存储各个三元组中每一第一元素的搜索热度。

可选的,所述装置还包括:

元素匹配单元,用于当接收到搜索数据时,将所述搜索数据与第一数据结构中的各个不同第一元素进行匹配,并将匹配到的第一元素定义为匹配元素;

元素查询单元,用于查询所述知识库中的其它数据结构,得到所述匹配元素对应的每一第二元素以及该每一第二元素对应的第三元素。

可选的,所述元素查询单元包括:

存储位置获取子单元,用于从第五数据结构中,获取所述匹配元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置;

索引位置获取子单元,用于,根据获取的第二存储位置,从第四数据结构中,获取所述匹配元素的每一第二元素在第二数据结构中的索引、以及所述匹配元素的每一第三元素在第三数据结构中的第一存储位置;

查询元素获取子单元,用于根据获取的索引在第二数据结构中获取所述匹配元素的每一第二元素,并根据获取的第一存储位置在第三数据结构中获取该每一第二元素对应的第三元素。

本申请实施例还提供了一种三元组知识库的构建设备,包括:处理器、存储器、系统总线;

所述处理器以及所述存储器通过所述系统总线相连;

所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行上述三元组知识库的构建方法的任一种实现方式。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述三元组知识库的构建方法的任一种实现方式。

本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述三元组知识库的构建方法的任一种实现方式。

本申请实施例提供的一种三元组知识库的构建方法及装置,为知识库构建了五个数据结构,第一数据结构,用于存储了三元组集合中各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识;第二数据结构,用于存储各个三元组中的各个不同第二元素;第三数据结构,用于存储各个三元组中的每一第三元素;第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置;第五数据结构,用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。可见,由于第一数据结构和第二数据结构中只存储了三元组集合中的不同第一元素和不同第二元素,可以减少对存储内存的占用。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的三元组知识库的构建方法的流程示意图;

图2为本申请实施例提供的第一数据结构的存储结果示意图;

图3为本申请实施例提供的第二数据结构的存储结果示意图;

图4为本申请实施例提供的第三数据结构的存储结果示意图;

图5为本申请实施例提供的第四数据结构的存储结果示意图;

图6为本申请实施例提供的第五数据结构的存储结果示意图;

图7为本申请实施例提供的二进制文件的结构示意图;

图8为本申请实施例提供的三元组信息的查询方法的流程示意图;

图9为本申请实施例提供的三元组知识库的构建装置的组成示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

第一实施例

参见图1,为本实施例提供的三元组知识库的构建方法的流程示意图,该方法包括:

s101:构建三元组集合对应的知识库,该三元组集合中的每一三元组依次包括第一元素、第二元素和第三元素,该三元组集合对应的知识库包括第一数据结构、第二数据结构、第三数据结构、第四数据结构和第五数据结构。

在本实施例中,该三元组集合可以仅包括各个不同的(实体、属性、值)这类的三元组,或者仅包括各个不同的(实体、关系、实体)这类的三元组,或者既包括各个不同的(实体、属性、值)这类的三元组、也包括各个不同的(实体、关系、实体)这类的三元组。

在三元组集合中,对于类型为(实体、属性、值)的三元组,将左侧的“实体”定义为第一元素、将中间的“属性”定义为第二元素、将右侧的“值”定义为第三元素,对于类型为(实体、关系、实体)的三元组,则将左侧的“实体”定义为第一元素、将中间的“关系”定义为第二元素、将右侧的“实体”定义为第三元素。

需要说明的是,本实施例可以实时地更新三元组集合,比如在三元组集合中增加三元组、删除三元组等更新操作,并基于三元组集合中的更新内容对知识库进行更新。

下面,将对知识库中的第一数据结构、第二数据结构、第三数据结构、第四数据结构和第五数据结构分别进行介绍。

(1)、关于本实施例中的第一数据结构,其用于存储各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识。

在本实施例中,第一数据结构可以是ac自动机(aho-corasickautomaton)中用于存储数据的数据存储空间。

在本实施例的一种实现方式中,第一数据结构中存储的各个不同第一元素可以为三元组集合中第一次出现的各个不同第一元素。在本实现方式中,对于三元组集合中的各个三元组,可以将这些三元组进行排序,并按照三元组的顺序,将每一三元组的第一元素依次存储在第一数据结构中,如果已经存储的第一元素在后续的三元组中重复出现,则只存储一次即可,不必重复存储。

同时,可以为第一数据结构中存储的每一不同的第一元素设置不同的标识,通过该标识可以在第五数据结构中,找到该标识所标识的第一元素的相关信息,具体地,对于第一数据结构中每一第一元素,可使该第一元素的标识与其在第五数据结构中的索引相同,这样,就可以基于该第一元素的标识,在第五数据机构中找到该第一元素对应的相关信息。其中,本实施例不限制标识和索引的类型,比如,可以是数字形式的、也可以是字母形式的。

实际中,一个实体可能还存在别名,本实施例将该实体及其别名均视为实体,并且,将该实体及其别名作为不同的第一元素存储在第一数据结构中。因此,在本实施例的一种实现方式中,第一数据结构存储的各个不同第一元素中可以包括:对应于同一对象的不同第一元素,其中的对象可以是具体的事物。例如,假设这里的同一对象是一个人,可以将其原名和别名视为不同的实体,即,视为不同的第一元素。

此外,实际中,不同实体可能具有相同的别名,因此,在本实施例的一种实现方式中,第一数据结构存储的各个不同第一元素中可以包括:对应于不同对象的同一第一元素,其中的对象可以是具体的事物。例如,假设这里的不同对象是两个不同的人,这两个人的原名不同但其别名相同,可以将这两个原名及二者的同一别名视为不同的实体,即,视为不同的第一元素。

当然,在第一数据结构中存储的各个不同第一元素中,既可以包括对应于同一对象的不同第一元素、也可以包括对应于不同对象的同一第一元素。

为了便于理解第一数据结构,下面举例说明,且后续的第二数据结构、第三数据结构、第四数据结构和第五数据结构也将基于下面举例进行说明。

例如:下面给出了三元组集合中的类型为(实体、属性、值)的四组三元组数据,并依次排序如下:

三元组1:{"id":280677,"entity":"阿诺德施瓦辛格","alias":"施瓦辛格","property":"性别","value":"男","hot":11525770}

三元组2:{"id":280677,"entity":"阿诺德施瓦辛格","alias":"施瓦辛格","property":"前妻","value":"玛丽娅·施瑞弗尔","hot":11525770}

三元组3:{"id":12722034,"entity":"帕特里克施瓦辛格","alias":"施瓦辛格","property":"国籍","value":"美国","hot":976045}

三元组4:{"id":12722037,"entity":"刘德华","property":"性别","value":"男","hot":36604570}

在上述四组三元组数据中,前三组三元组的实体都对应一个别名,比如三元组1中的实体“阿诺德施瓦辛格”,其别名为“施瓦辛格”。可以按照三元组的排序,在第一数据结构中依次存储先后出现的每一不同的实体和别名,由于上述四组三元组依次出现的实体和别名为“阿诺德施瓦辛格”、“施瓦辛格”、“阿诺德施瓦辛格”、“施瓦辛格”、“帕特里克施瓦辛格”、“施瓦辛格”、“刘德华”,其中存在重复出现的“阿诺德施瓦辛格”和“施瓦辛格”,所以只将第一次出现的“阿诺德施瓦辛格”、“施瓦辛格”、“帕特里克施瓦辛格”和“刘德华”存储在第一数据结构中,并为这4个不同的第一元素设置标识。

需要说明的是,本实施例可以为不同三元组中的相同实体设置相同的标识,同样地,为不同三元组中的相同实体对应的相同别名设置相同的标识,但是,当不同三元组具有不同的实体但对应相同的别名时,需要为不同实体的相同别名设置不同的标识,并且,在设置标识时,可以按照实体和别名的出现顺序进行顺序设置。

例如,如图2所示的第一数据结构的存储结果示意图,为上述三元组1和三元组2中的相同实体“阿诺德施瓦辛格”设置标识1;为上述三元组1和三元组2中的相同实体的相同别名“施瓦辛格”设置标识2;为上述三元组3中的实体“帕特里克施瓦辛格”设置标识3;为上述三元组1(或三元组2)、三元组3中的不同实体的相同别名“施瓦辛格”设置标识4,但是,标识为2的“施瓦辛格”已经存储在第一数据结构中,因此,标识为4的“施瓦辛格”不再重复存储在第一数据结构中,但其标识4可以存储在第五数据结构中,相关内容会在介绍第五数据结构时进行介绍;然后,为上述三元组4中的实体“刘德华”设置标识5。

(2)、关于本实施例中的第二数据结构,其用于存储各个三元组中的各个不同第二元素。

在本实施例中,对于三元组集合中的各个三元组,按照三元组的顺序,将每一三元组的第二元素依次存储在第二数据结构中,如果已经存储的第二元素在后续的三元组中重复出现,则只存储一次即可,不必重复存储。

例如,如图3所示的第二数据结构的存储结果示意图,基于上述例子中给出的四组三元组,依次出现的属性数据为“性别”、“前妻”、“国籍”和“性别”,由于“性别”重复出现,只存储一次即可,因此,将“性别”、“前妻”、“国籍”依次存储在第二数据结构中。

此外,本实施例还可以为第二数据结构中的各个第二元素,按照存储顺序依次为其设置索引,比如“性别”、“前妻”、“国籍”的索引依次为1、2、3。

(3)、关于本实施例中的第三数据结构,其用于存储各个三元组中的每一第三元素。

在本实施例中,对于三元组集合中的各个三元组,按照三元组的顺序,将每一三元组的第三元素依次存储在第三数据结构中,如果已经存储的第三元素在后续的三元组中重复出现,则重复存储。

例如,如图4所示的第三数据结构的存储结果示意图,基于上述例子中给出的四组三元组,将依次出现的属性值“男”、“玛丽娅·施瑞弗尔”、“美国”和“男”存储在第三数据结构中。

由于第三元素的长度千差万别,因此,可以采用非对齐结构进行存储,在存储过程中,可以记录每一第三元素的起始位置和大小。具体地,可以采用utf-8编码方式进行存储,那么,一个中文占用3个字节,可以将每一字节按照顺序进行编号,比如字节0、字节1、……,此时,每一第三元素的起始位置为该第三元素的起始字节的编号和所占字节的个数。例如,如图4所示,第一个属性值“男”的起始位置为0,大小为3个字节,第二个属性值“玛丽娅·施瑞弗尔”的起始位置为3,大小为22个字节,第三个属性值“美国”的起始位置为25,大小为6个字节,第四个属性值“男”的起始位置为31,大小为3个字节。

(4)、关于本实施例中的第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置。

在本实施例中,由于在第二数据结构中为每一不同的第二元素设置了索引,对于三元组集合中的各个三元组,可以按照三元组的顺序,依次存储每一三元组中的第二元素在第二数据结构中的索引。

例如,如图5所示的第四数据结构的存储结果示意图,基于上述例子中给出的四组三元组,在图5的第一列中,从上到下依次存储了四组三元组中的四个第二元素“性别”、“前妻”、“国籍”和“性别”在第二数据结构中的索引,分别为索引1、索引2、索引3和索引1。

在本实施例中,对于第四数据结构中每一索引对应的第二元素,可以在第四数据结构中对应存储该每一第二元素对应的第三元素在第三数据结构中的存储位置,这里,将该存储位置定义为第一存储位置。由于在构建第三数据结构时,记录了每一三元组中的第三元素在第三数据结构中的起始位置和大小,因此,在本实施例的一种实现方式中,上述“各个三元组中的每一第三元素在第三数据结构中的第一存储位置”可以包括:各个三元组中的每一第三元素在第三数据结构中的起始位置和大小。

例如,如图5所示,基于上述例子中给出的四组三元组,在图5的第2列和第3列中,三元组1的属性值“男”的起始字节为字节0且占用3个字节,三元组2的属性值“玛丽娅·施瑞弗尔”的起始字节为字节3且占用22个字节,三元组3的属性值“美国”的起始字节为字节25且占用6个字节,三元组4的属性值“男”的起始字节为字节31且占用3个字节。

在本实施例的一种实现方式中,第四数据结构还用于存储各个三元组中每一第一元素的搜索热度。例如,如图5所示的第4列,依次存储了三元组1的热度值11525770、三元组2的热度值11525770、三元组3的热度值976045、以及三元组4的热度值36604570。

可见,在第四数据结构中,可以在每一存储位置对应存储每一三元组的相关信息,该相关信息包括该三元组的第二元素在第二数据结构中的索引、以及该三元组的第三元素在第三数据结构中的存储位置,进一步还可以包括该三元组的第一元素的搜索热度。比如图5中的每一行即为一个存储位置,可以按照存储顺序依次为每一存储位置进行编号,比如第一行的编号为0、第二行的编号为1、第三行的编号为2、第四行的编号为3。

(5)、关于本实施例中的第五数据结构,其用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。

在本实施例中,对于三元组集合中的每一三元组,通过第五数据结构均能在第四数据结构中找到该三元组的第二元素在第二数据结构中的索引、以及找到该三元组的第三元素在第三数据结构中的第一存储位置。

实际中,不同三元组可能具有一个相同的第一元素(即实体)且对应相同的对象,比如上述例子中三元组1和三元组2中的相同第一元素“阿诺德施瓦辛格”、且这两个三元组中的“阿诺德施瓦辛格”对应同一个人。由于在本申请知识库的各个数据结构中,可以按照三元组的排序进行顺序存储,为便于区分,这里将第一出现的该类第一元素定义为目标元素。

此外,实际中,不同三元组可能具有一个相同的第一元素(即实体)且对应不同的对象,比如上述例子中三元组2和三元组3中的相同第一元素“施瓦辛格”、且这两个三元组中的“施瓦辛格”对应不同的人,因此,将第一次出现在三元组2“施瓦辛格”以及再现在三元组3中的“施瓦辛格”分别定义为目标元素,以便后续第二实施例进行三元组搜索时,可以搜索出具有同一实体名称但属于不同对象的三元组信息,以提高搜索结果的全面性。

基于此,在本实施例的一种实现方式中,所述第五数据结构,具体用于存储每一目标元素对应的各个元素组合的相关信息在第四数据结构中的第二存储位置;其中,如上所述,所述目标元素是三元组集合中第一次出现的第一元素或该第一次出现的第一元素的再现元素,该第一次出现的第一元素与对应的再现元素相同且对应不同的对象;而所述元素组合包括属于同一三元组的第二元素和第三元素,并且,与该元素组合对应的目标元素也属于该三元组。

在本实现方式中,由于同一目标元素(即某第一元素),其在三元组集合中可能属于其中的一个或多个三元组,比如目标元素“阿诺德施瓦辛格”属于三元组1和三元组2,即一个目标元素属于一组或多组三元组。而第四数据结构中存储了三元组集合中每个三元组的相关信息(即每一三元组中的第二元素在第二数据结构中的索引、以及每一三元组中的第三元素在第三数据结构中的第一存储位置),因此,通过第五数据机构中存储的目标元素对应的组合元素(包括第二元素和第三元素)的相关信息在第四数据结构中的第二存储位置,可以找到该目标元素所属的一组或多组三元组中的第二元素和第三元素的相关信息。

基于(1)中的具体实现方式,即第一数据结构中存储的各个不同第一元素为第一次出现的不同第一元素,因而,也同时存储了第一次出现的不同第一元素的标识,由于该标识是用于在第五数据结构中找到对应第一元素的相关信息的,但其不存储其再现元素(如上所述,第一次出现的第一元素与对应的再现元素相同且对应不同的对象)以及该再现元素的标识,因此,在本实施例的一种实现方式中,第五数据结构,还可以用于存储第一次出现的第一元素对应的连接值,该连接值为该第一次出现的第一元素的再现元素的标识。

在本实现方式中,对于某第一次出现的第一元素,可以将该第一元素的再现元素的标识存储在该第一元素的相关信息的对应存储位置处,用于后续第二实施例进行三元组查询时,可以查询到该再现元素的三元组数据。

在本实施例的一种实现方式中,第五数据结构中所存储的各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置,可以包括:各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的索引,更具体地,可以包括起始索引和个数。

如图6所示的第五数据结构的存储结果示意图,下面基于上述例子中的四组三元组,举例说明第五数据结构。

关于标识为1的目标元素“阿诺德施瓦辛格”,该目标元素对应的各个元素组合的相关信息在第四数据结构中的起始索引为索引0(参见图5),索引个数为2,即图5所示的存储位置0和1,因此,可以基于存储位置0对应的行信息找到三元组1中的第二元素和第三元素、基于存储位置1对应的行信息找到三元组2中的第二元素和第三元素。此外,标识为1的目标元素“阿诺德施瓦辛格”不存在与之相同但对于不同对象的再现元素,因此,在标识为1的“阿诺德施瓦辛格”对应的连接值处存储标识0。

关于标识为2的目标元素“施瓦辛格”,该目标元素对应的各个元素组合的相关信息在第四数据结构中的起始索引为索引0(参见图5),索引个数为2,即图5所示的存储位置0和1,因此,可以基于存储位置0对应的行信息找到三元组1中的第二元素和第三元素、基于存储位置1对应的行信息找到三元组2中的第二元素和第三元素。此外,标识为2的目标元素“施瓦辛格”还存在与之相同但对于不同对象的再现元素,即该再现元素时标识为4的目标元素“施瓦辛格”,因此,在标识为2的“施瓦辛格”对应的连接值处存储标识4。

关于标识为3的目标元素“帕特里克施瓦辛格”,该目标元素对应的各个元素组合的相关信息在第四数据结构中的起始索引为索引2(参见图5),索引个数为1,即图5所示的存储位置2,因此,可以基于存储位置2对应的行信息找到三元组3中的第二元素和第三元素。此外,标识为3的目标元素“帕特里克施瓦辛格”不存在与之相同但对于不同对象的再现元素,因此,在标识为1的“帕特里克施瓦辛格”对应的连接值处存储标识0。

关于标识为4的目标元素“施瓦辛格”,该目标元素对应的各个元素组合的相关信息在第四数据结构中的起始索引为索引2(参见图5),索引个数为1,即图5所示的存储位置2,因此,可以基于存储位置2对应的行信息找到三元组3中的第二元素和第三元素。此外,标识为4的目标元素“施瓦辛格”不是第一次出现的第一元素,因此,在标识为4的“帕特里克施瓦辛格”对应的连接值处存储标识0。

关于标识为5的目标元素“刘德华”,该目标元素对应的各个元素组合的相关信息在第四数据结构中的起始索引为索引3(参见图5),索引个数为1,即图5所示的存储位置3,因此,可以基于存储位置3对应的行信息找到三元组4中的第二元素和第三元素。此外,标识为5的目标元素“刘德华”不存在与之相同但对于不同对象的再现元素,因此,在标识为1的“刘德华”对应的连接值处存储标识0。

综上,本实施例提供的一种三元组知识库的构建方法及装置,为知识库构建了五个数据结构,第一数据结构,用于存储了三元组集合中各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识;第二数据结构,用于存储各个三元组中的各个不同第二元素;第三数据结构,用于存储各个三元组中的每一第三元素;第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置;第五数据结构,用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。可见,由于第一数据结构和第二数据结构中只存储了三元组集合中的不同第一元素和不同第二元素,可以减少对存储内存的占用。

第二实施例

目前,现有的三元组数据存储方式,基于其存储形式的原因,还存在检索效率低下的问题,例如,当使用关系型数据库存储三元组数据时,每一次查询都要进行大量的连表查询,这在高并发的场景下会导致检索速度缓慢,因此,对于知识问答、智能客服等对系统实时性要求较高的场景中,现有的数据库将无法满足需求。然而,本实施例因无需如现有技术那样进行连表查询,故而提高了检索速度。

在本实施例中,可以将上述各个数据机构存储于二进制文件中,在需要查询三元组信息时,将二进制文件加载到内存中,即可进行高效检索。

具体地,二进制文件的结构如下图7所示,在二进制文件中,版本号表示该二进制文件的唯一标识,第一数据结构可以存储在ac自动机中,然后存储第二数据结构的大小(比如图3的行数)和第二数据结构本身、存储第三数据结构的大小(比如图4的列数)和第三数据结构本身、存储第四数据结构的大小(比如图5中存储位置的行数)和第四数据结构本身、以及存储第五数据结构的大小(比如图6中目标元素对应的行数)和第五数据结构本身。

在本实施例中,可以基于上述各个数据结构,按照下述方式在三元组集合中查询三元组信息。

参见图8,为本实施例提供的三元组信息的查询方法的流程示意图,该方法包括以下步骤:

s801:当接收到搜索数据时,将该搜索数据与第一数据结构中的各个不同第一元素进行匹配,并将匹配到的第一元素定义为匹配元素。

在本实施例中,该搜索数据可以是用户输入的数据、也可以是在某些应用运行过程中自动输入的数据。

然后,将该搜索数据与第一数据结构中的各个不同第一元素进行匹配;如果第一数据结构中存储了与搜索数据相同的第一元素,则将该第一元素作为匹配元素;如果第一数据结构中没有存储与搜索数据相同的第一元素,则可以向用户反馈类似“未查询到”的通知消息,或者将第一数据结构中与搜索数据语义相近的第一元素,作为匹配元素。其中,在进行匹配查询时,可以利用ac自动机来查找。

例如,假设搜索数据为“施瓦辛格”,可以将“施瓦辛格”与第一数据结构中的各个不同第一元素进行匹配,以匹配出“施瓦辛格”及其标识,如图2所示,“施瓦辛格”的标识为2。

s802:查询知识库中的其它数据结构,得到该匹配元素对应的每一第二元素以及该每一第二元素对应的第三元素。

在本实施例中,该匹配元素作为第一元素,其在三元组集合中可能对应有一个或多个不同的第二元素,而对于其中的每一第二元素,其可能对应一个或多个不同的第三元素,通过查询第二数据结构、第三数据结构、第四数据结构和第五数据结构,可以得到包括该匹配元素的一个或多个三元组信息。

具体地,在本实施例的一种实现方式中,本步骤s802可以包括:

步骤a:从第五数据结构中,获取该匹配元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。

例如,继续s801中的例子,在查找到“施瓦辛格”的标识为2之后,如图6所示,其对应于第五数据结构中第二个位置存储的数据,即起始位置=0、个数=2、连接值=4。

关于起始位置=0、个数=2,其表示“施瓦辛格”对应的第二元素和第三元素的相关信息,存储在图5所示第四数据结构中的存储位置0和存储位置1。由于连接值=4,因此,移动到第五数据结构的第4个位置,该位置存储的信息为起始位置=2、个数=1、连接值=0,由于此位置的连接值为0,停止检索,而关于起始位置=2、个数=1,其表示“施瓦辛格”对应的第二元素和第三元素的相关信息,存储在图5所示第四数据结构中的存储位置2。

步骤b:根据获取的第二存储位置,从第四数据结构中,获取该匹配元素的每一第二元素在第二数据结构中的索引、以及该匹配元素的每一第三元素在第三数据结构中的第一存储位置。

例如,继续步骤a中的例子,由于匹配元素“施瓦辛格”的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置分别为存储位置0、存储位置1和存储位置2。其中,在存储位置0中,“施瓦辛格”对应的第二元素在第二数据结构中的索引为1,该第二元素对应的第三元素在第三数据结构中的起始位置为0、大小为3;在存储位置1中,“施瓦辛格”对应的第二元素在第二数据结构中的索引为2,该第二元素对应的第三元素在第三数据结构中的起始位置为3、大小为22;在存储位置3中,“施瓦辛格”对应的第二元素在第二数据结构中的索引为3,该第二元素对应的第三元素在第三数据结构中的起始位置为25、大小为36。

步骤c:根据获取的索引在第二数据结构中获取该匹配元素的每一第二元素,并根据获取的第一存储位置在第三数据结构中获取该每一第二元素对应的第三元素。

例如,继续步骤b中的例子,基于步骤b中获取的索引信息和位置信息,可以查找第二数据结构和第三数据结构,从而查询得到三组三元组,分别为:(施瓦辛格,性别,男)、(施瓦辛格,前妻,玛丽娅·施瑞弗尔)、(施瓦辛格,国籍,美国)。可见,在三元组集合中找到了“施瓦辛格”这个实体的全部属性和值,不仅包括实体为“阿诺德施瓦辛格”的全部的属性和值,还包含实体为“帕特里克施瓦辛格”的全部的属性和值,查询结果很全面。

综上,本实施例提供的三元组信息的查询方法,可以基于上述各个数据结构进行查询,而无需如现有技术那样进行连表查询,故而提高了检索速度。

第三实施例

参见图9,为本实施例提供的一种三元组知识库的构建装置的组成示意图,该装置900包括:

知识库构建单元901,用于构建三元组集合对应的知识库,所述三元组集合中的每一三元组依次包括第一元素、第二元素和第三元素,所述知识库包括以下数据结构:

第一数据结构,用于存储各个三元组中的各个不同第一元素以及用于在第五数据结构中找到各个不同第一元素的相关信息的各个不同标识;

第二数据结构,用于存储各个三元组中的各个不同第二元素;

第三数据结构,用于存储各个三元组中的每一第三元素;

第四数据结构,用于存储各个三元组中的每一第二元素在第二数据结构中的索引、以及各个三元组中的每一第三元素在第三数据结构中的第一存储位置;

第五数据结构,用于存储各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置。

在本实施例的一种实现方式中,所述第一数据结构存储的各个不同第一元素中包括:对应于同一对象的不同第一元素、和/或对应于不同对象的相同第一元素。

在本实施例的一种实现方式中的,所述第一数据结构中存储的各个不同第一元素为所述三元组集合中第一次出现的各个不同第一元素。

在本实施例的一种实现方式中的,所述第五数据结构,具体用于存储每一目标元素对应的各个元素组合的相关信息在第四数据结构中的第二存储位置;

其中,所述目标元素是所述三元组集合中第一次出现的第一元素或所述第一次出现的第一元素的再现元素,所述第一次出现的第一元素与对应的再现元素相同且对应不同的对象,所述元素组合包括属于同一三元组的第二元素和第三元素;

则,所述第五数据结构,还用于存储所述第一次出现的第一元素对应的连接值,所述连接值为所述第一次出现的第一元素的再现元素的标识。

在本实施例的一种实现方式中,所述各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置,包括:

各个三元组中每一第一元素对应的第二元素和第三元素的相关信息在第四数据结构中的索引。

在本实施例的一种实现方式中,所述各个三元组中的每一第三元素在第三数据结构中的第一存储位置,包括:

各个三元组中的每一第三元素在第三数据结构中的起始位置和大小。

可选的,所述第四数据结构还用于存储各个三元组中每一第一元素的搜索热度。

在本实施例的一种实现方式中,所述装置还包括:

元素匹配单元,用于当接收到搜索数据时,将所述搜索数据与第一数据结构中的各个不同第一元素进行匹配,并将匹配到的第一元素定义为匹配元素;

元素查询单元,用于查询所述知识库中的其它数据结构,得到所述匹配元素对应的每一第二元素以及该每一第二元素对应的第三元素。

在本实施例的一种实现方式中,所述元素查询单元包括:

存储位置获取子单元,用于从第五数据结构中,获取所述匹配元素对应的第二元素和第三元素的相关信息在第四数据结构中的第二存储位置;

索引位置获取子单元,用于,根据获取的第二存储位置,从第四数据结构中,获取所述匹配元素的每一第二元素在第二数据结构中的索引、以及所述匹配元素的每一第三元素在第三数据结构中的第一存储位置;

查询元素获取子单元,用于根据获取的索引在第二数据结构中获取所述匹配元素的每一第二元素,并根据获取的第一存储位置在第三数据结构中获取该每一第二元素对应的第三元素。

进一步地,本申请实施例还提供了一种三元组知识库的构建设备,包括:处理器、存储器、系统总线;

所述处理器以及所述存储器通过所述系统总线相连;

所述存储器用于存储一个或多个程序,所述一个或多个程序包括指令,所述指令当被所述处理器执行时使所述处理器执行上述三元组知识库的构建方法的任一种实现方式。

进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述三元组知识库的构建方法的任一种实现方式。

进一步地,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行上述三元组知识库的构建方法的任一种实现方式。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本申请各个实施例或者实施例的某些部分所述的方法。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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