基于PRMATC算法的知识库补全方法与流程

文档序号:20577114发布日期:2020-04-29 01:12阅读:258来源:国知局
基于PRMATC算法的知识库补全方法与流程

本发明涉及所属知识图谱下的海量数据存储与推理领域,具体涉及一种基于prmatc算法的知识库补全方法。



背景技术:

从大规模语义网络知识库中挖掘horn规则,进而利用这些规则帮助推断和添加知识库中缺少的知识是实现知识库动态增长极其有效的手段之一。关联规则挖掘算法是数据挖掘领域中的重要算法之一,其目的是挖掘事务之间存在的隐含关系。传统的算法包括apriori算法[1]和fp-growth算法[2]。传统的关联规则挖掘算法,在小规模数据集中取得了不错的效果,但近年来随着互联网技术的快速发展,网络数据呈现爆炸性增长,传统的关联规则挖掘算法存在单一节点无法计算以及运行内存不足等问题,从而无法满足网络大数据的需求。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于prmatc算法的知识库补全方法,能高效地挖掘出一组可表示知识库语义信息的horn逻辑规则并更好的补全知识库。

为实现上述目的,本发明采用如下技术方案:

一种基于prmatc算法的知识库补全方法,包括以下步骤:

步骤s1:将大规模语义网络知识库kb中的所有事实三元组以及实体导入、存储到分布式集群neo4j图数据库中;

步骤s2:构建bilstm-crf模型,并训练;

步骤s3:通过训练好的bilstm-crf模型对关系两侧的实体进行识别与分类,进而转换得到关系的定义域和值域;

步骤s4:在fp-growth算法的基础上,优化数据均衡分组以及fp树构建和挖掘,得到改进后的fp-growth算法;

步骤s5:根据改进后的fp-growth算法,挖掘出事务间隐含的强关联规则;

步骤s6:根据得到的关系的定义域和强关联规则转换成horn逻辑规则;

步骤s7:根据得到horn逻辑规则,获取新的知识,并添加至知识库kb中。

进一步的,所述bilstm-crf模型由双向lstm和crf两部分组成。

进一步的,所述双向lstm由前向的lstm与后向的lstm构成;

lstm计算过程就是通过对细胞状态中信息的遗忘和记忆,其中遗忘、记忆与输出是由上一刻的隐层状态ht-1和当前输入xt所决定的,具体计算公式4所示。

式(4)中,xt、ct、ht、ft、it、ot分别对应模型t时刻的输入、细胞状态、隐藏层状态、忘记门以及输出门;词向量作为bilstm层的输入,然后输出值是一句话中每个单词对应的每个标签的预测分数,这些分数便是crf层的输入。

进一步的,所述crf层采用线性条件随机场p(y|x),如下式所示:

式(5)中λk和μl为权重系数,tk和sl为特征函数,z(x)是规范化因子

bilstm层的输出作为crf层的输入,经过crf层特征函数运算以及归一化操作之后,输出每个单词的合法预测标签。

进一步的,所述步骤s3具体为:

步骤s31:将每个输入三元组x=(x1,x2,...xi,...xn)经过bilstm层和crf层,得到所有可能的预测序列y=(y1,y2,...,yi,...yn);

每个预测序列y的得分s(x|y),如下式所示:

式(7)中为第i个位置输出为yi的概率,a为转移概率矩阵

步骤s32:计算序列最大得分y*,如下式所示:

y*=argmaxy∈ys(x|y)

步骤s33:通过关系类型约束转换函数进行转换,得到知识库中每个关系的定义域和值域,关系类型约束转换函数f,如下所示:

f({t1,t2,...ti,...,tn})=(pd,p,pr)

式中ti=(si,pi,oi)、tj=(sj,pj,oj)表示关系p的事实三元组,

通过下式,根据关系两侧的实体类别转换得到该关系的定义域和值域

sisubclassofelsi,oisubclassofeloi,sjsubclassofelsj,ojsubclassofeloj,elsi,eloi,elsj,

其中elsi、eloi、elsj、eloj分别表示实体si、oi、sj、oj所属子类类别,分别表示实体si、oi、sj、oj所属大类类别。

进一步的,所述优化数据均衡分组通过聚类算法自动发现高度相关的关系,随后将与该类关系相关的关系路径划分到同一分区,实现数据均衡且独立分组。

所述步骤s4具体为:

步骤s41;逐条遍历事务ti,将ti从前往后遍历,

步骤s42:根据项a1确定是否存在以该项为根节点的分块,若存在返回分块编号,否则添加以该项为根节点的分块信息并返回;

步骤s44:根据分块编号以及项ai先查找是否存在与该项相同且祖先节点相同的项,若存在该项计数加1,否则添加该项到指定分块。

步骤s41:找到拥有的项的集合中存在项m的分块编号,然后在对应的分块中,查找项m的所有祖先节点,即为m的条件模式基

步骤s45:m的条件模式基为<(f:2),(c:2),(a:2)>和<(f:1),(c:1),(a:1),(b:1)>,同理p的条件模式基为<(f:2),(c:2),(a:2),(m:2)>和<(c:1),(b:1)>,将每个项的条件模式基作为该项的mapper阶段的输入,创建条件fp树,挖掘该项的频繁项集。

进一步的,所述步骤s6具体为:

步骤s61:通过步骤s3和s4得到的,挖掘出的强关联规则和关系的定义域和值域elid,elir,rjdomaineljd,rirangeeljr,rzdomainelzd,rzrangeelzr;

步骤s62:根据下式将强关联规则转换成horn规则

其中elid、elir分别表示关系ri的定义域和值域,eljd、eljr表示关系rj的定义域和值域,elzd、elzr表示关系rz的定义域和值域。

本发明与现有技术相比具有以下有益效果:

本发明能够高效地找到代表知识库horn规则的同时,挖掘规则的数量和准确率方面也更优于其他规则挖掘系统,能更好的补全知识库。

附图说明

图1是本发明一实施例中方法流程图;

图2是本发明一实施例中应用horn逻辑规则实现知识库补全示例图;

图3是本发明一实施例中prmatc算法框架图;

图4是本发明一实施例中bilstm-crf模型原理图;

图5是本发明一实施例中簇间重叠度;

图6是本发明一实施例中优化链头表结构原理图

图7是发明一实施例中修改的频繁模式树。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

请参照图1,本发明提供一种基于prmatc算法的知识库补全方法,包括以下步骤:

步骤s1:将大规模语义网络知识库kb中的所有事实三元组以及实体导入、存储到分布式集群neo4j图数据库中;

步骤s2:构建bilstm-crf模型,并训练;

步骤s3:通过训练好的bilstm-crf模型对关系两侧的实体进行识别与分类,进而转换得到关系的定义域和值域;

步骤s4:在fp-growth算法的基础上,优化数据均衡分组以及fp树构建和挖掘,得到改进后的fp-growth算法;

步骤s5:根据改进后的fp-growth算法,挖掘出事务间隐含的强关联规则;

步骤s6:根据得到的关系的定义域和强关联规则转换成horn逻辑规则;

步骤s7:根据得到horn逻辑规则,获取新的知识,并添加至知识库kb中。

在本实施例中,设定t=<s,p,o>表示实例三元组。其中s表示主语(subject),p表示谓语(predicate),o表示宾语(object)。一个rdf数据图由多个实例三元组构成。

由一系列rdf实例三元组相互连接构成的有向图我们称为rdf数据图rg,rg={t1,t2,...,ti,...,tn},ti中的节点si,oi为图中的顶点,pi为图中一条有向边,它的起始节点为si,终止节点为oi。

给定三元组ti(si,pi,oi)和tj(sj,pj,oj),如果(si=sj&&oi≠oj)或者(si=oj&&oi≠sj)或者(oi=sj&&si≠oj)或者(oi=oj&&si≠sj),则称ti与tj相邻,可以进行三元组连接。

知识库kb=<e,r,f,p,v>,其中e表示entity(实体)的集合,r表示relation(关系)的集合,f代表知识库中事实的集合,p表示property(属性)的集合,v表示value(属性值)的集合。

实体集e={e1,e2,...,en}=∏subject(kb)∪∏object(kb),它描述了语义网络知识库数据层中的所有实体,并且对应rdf中的实例集合。

关系集r={r1,r2,...,rn}=∏relation(kb),它表示实体与实体之间的关系。

事实集它表示知识库中所有实例三元组的集合。

属性集p表示全体属性的集合p={p1,p2,...,pn},它将e与属性值v关联起来。

属性值集v表示全体属性值的集v={v1,v2,...,vn},它表示文本等节点。

设实体标签集el={el1,el2,...,eln},它表示可代表知识库中所有实体类别的标签集合。针对yago、dbpedia等常用数据集,本实施例对per、loc、org分别进行扩展,定义了39种类型作为本文的实体标签集,表示为el,其中cf={per|org|loc}表示三大类的集合。如表1所示。

表1实体标签集

本实施例中,采用较为常用的序列标注模式bio,其中b表示开始(begin),i表示中间(intermediate),o表示其他(other)用于标记无关字符。

在本实施例中,redis分布式内存数据库集群来存储知识库中每个关系的定义域和值域以及该算法所挖掘出的horn逻辑规则。具体的表及存储内容如表2所示。

表2redis表设计及存储内容说明

在本实施例中bilstm-crf模型由双向lstm和crf两部分组成,所述双向lstm由前向的lstm与后向的lstm构成;

lstm计算过程就是通过对细胞状态中信息的遗忘和记忆,其中遗忘、记忆与输出是由上一刻的隐层状态ht-1和当前输入xt所决定的,具体计算式1所示。

ft=σ(wf·[ht-1,xt]+bf)

it=σ(wi·[ht-1,xt]+bi)

ot=σ(wo·[ht-1,xt]+bo)

ht=ot*tanh(ct)

式中,xt、ct、ht、ft、it、ot分别对应模型t时刻的输入、细胞状态、隐藏层状态、忘记门以及输出门;词向量作为bilstm层的输入,然后输出值是一句话中每个单词对应的每个标签的预测分数,这些分数便是crf层的输入。本实施例采用bio标注模式,因此每个单词对应79个标签分数。

双向lstm能有效结合词语的上下文语境,能够更好地识别实体以及预测实体所对应的类型标签。举例说明,例如,我们对“姚明国籍中国”进行编码,前向lstm依次输入“姚明”,“国籍”,“中国”得到三个向量分别为hl0,hl1,hl2,同理后向lstm依次输入“中国”,“国籍”,“姚明”也分别得到三个向量hr0,hr1,hr2,最后的向量是由前向向量与后向向量拼接得到的,因此每个单词向量包含更加丰富的语料信息,使得识别实体准确率更高。

crf层:条件随机场(conditionalrandomfield简称crf)[9]是给定一组输入序列条件下另一组输出序列的条件概率分布模型。其实不难发现,即使没有crf层,仅仅通过bilstm模型也能完成命名实体识别及预测,因为bilstm层的输出是每个单词对应的每个标签的预测分数,可以选择每个单词得分最高的标签组合成最佳预测标签。然而,很多情况下得分最高的序列并不合法,例如,“b-peri-per”有效,但“b-peri-org”无效,crf层的作用可以为最后预测的标签添加一些约束来保证预测的标签的合法性。对于命名实体识别序列标注问题,通常采用线性条件随机场(linear-crf)。

所述线性条件随机场p(y|x),如下式所示:

式中λk和μl为权重系数,tk和sl为特征函数,z(x)是规范化因子

bilstm层的输出作为crf层的输入,经过crf层特征函数运算以及归一化操作之后,输出每个单词的合法预测标签。

在本实施例中,当模型训练完毕后,即可进行预测。知识库中每个rdf三元组<s,p,o>作为输入,例如“姚明国籍中国”。预测的时候,根据训练好的模型参数求得输入语句中所有可能的预测序列得分,取最大值。所述步骤s3具体为:

步骤s31:将每个输入三元组x=(x1,x2,...xi,...xn)经过bilstm层和crf层,得到所有可能的预测序列y=(y1,y2,...,yi,...yn);

每个预测序列y的得分s(x|y),如下式所示:

式中为第i个位置输出为yi的概率,a为转移概率矩阵

步骤s32:计算序列最大得分y*,如下式所示:

y*=argmaxy∈ys(x|y)

步骤s33:通过关系类型约束转换函数进行转换,得到知识库中每个关系的定义域和值域,关系类型约束转换函数f,如下所示:

f({t1,t2,...ti,...,tn})=(pd,p,pr)

式中ti=(si,pi,oi)、tj=(sj,pj,oj)表示关系p的事实三元组,

通过下式,根据关系两侧的实体类别转换得到该关系的定义域和值域

sisubclassofelsi,oisubclassofeloi,sjsubclassofelsj,ojsubclassofeloj,elsi,eloi,elsj,

其中elsi、eloi、elsj、eloj分别表示实体si、oi、sj、oj所属子类类别,分别表示实体si、oi、sj、oj所属大类类别。

在本实施例中,所述优化数据均衡分组通过聚类算法自动发现高度相关的关系,随后将与该类关系相关的关系路径划分到同一分区,实现数据均衡且独立分组。

本实施例中,通过综合考虑时间复杂度和空间复杂度,得出均衡分组策略,即通过聚类算法自动发现高度相关的关系,随后将与该类关系相关的关系路径(事务)划分到同一分区,真正实现数据均衡且独立分组。共享更多公共相似路径的关系更应该耦合,具体来说,我们从关系簇|r|开始,每个簇代表一个关系r∈r,簇内每个点表示与该关系相关的关系路径,然后迭代的计算每个簇与其余各个簇之间的距离d。它本质上是度量两个簇之间的重叠度,重叠越大,相似度越高。因此共享大量公共相似路径的关系将被划分到同一分区。本文通过计算两个簇之间的圆心距离d来衡量关系的相似度,d越小,相似度越高。具体如图5所示。

二维空间两个簇之间的圆心距离d计算公式,如下式所示:

如图5所示,若d满足图5中(a)或图5中(b),则认为两个关系在一定程度上是相似的,d越小,相似度越高,否则是离散的、独立的。聚类算法的具体步骤如下所示。

第3行通过word2vec将每条关系路径转换为100维向量;第4-5行通过tsne对高维数据进行降维,维度为2;第6行返回每个关系r以及对应的关系路径集合p;第7-11行首先对每个关系的关系路径集合进行离群点检测,然后通过距离函数确定该关系所代表的簇的圆心坐标o以及半径m。

fp-growth算法挖掘频繁项集的基本过程分为两部分:构建fp树和从fp树中挖掘频繁项集。

(1)构建fp树

现有的fp-growth算法在构建一棵频繁模式树时,在任意一条事务执行完插入操作后,都需要对事务数据集采取排序的方法进行更新,而排序依据即事务的项在链头表内的具体位置。为了降低时间复杂度,本文提出了一种优化构建频繁模式树的算法。该算法用到的存储结构定义如下所示:

linklist={<rooti,blocki,itemseti>},

bloacki={<itemij,{(frequencyitemijk,ancestornodeijk)}>}

rooti=itemi1

itemseti={itemi1,...,itemij}

本实施例以事务数据集d为例进行阐述,数据集详细信息如表4所示。

表4事务数据d

将数据集的最小支持度设置为3,采取从大到小的原则,对支持度进行排序得到结果:f:4,c:3,a:3,b:3,m:3,p:3,并根据该结果将原数据集按照支持度递减方式进行排序,结果如表4最右侧一列所示。sfp算法用到两种数据结构:链头表和频繁模式树。下面给出优化链头表结构的原理,如图6所示。

构建频繁模式树的具体步骤伪代码如下所示:

代码第3行开始逐条遍历事务ti,将ti从前往后遍历,第4-7行进行判断,根据项a1确定是否存在以该项为根节点的分块,若存在返回分块编号,否则添加以该项为根节点的分块信息并返回(对应图5中的①),第8行根据分块编号以及项ai先查找是否存在与该项相同且祖先节点相同的项,若存在该项计数加1,否则添加该项到指定分块(对应图5中的②)。

从时间复杂度来看,假设事务数据库中每条事务中包含k个项,频繁一项集中元素的个数是m,事务总条数为n,那么按照原来的项头表结构,将每条事务插入到频繁模式树中的时间复杂度为o(m2),构建整棵频繁模式树的时间复杂度为o(m2*n);改进后的链表结构,将每条事务插入到频繁模式树中的时间复杂度为o(k),构建整棵频繁模式树的时间复杂度为o(k*n)。如图5所示,左图为修改前的频繁模式树,右图为修改后的频繁模式树。

在改进频繁模式树之前,查找子节点的时间复杂度为o(m),本文改进后的链头表结构,时间复杂度降低为o(1)。

尽管递归算法使代码更加易于理解且简洁,但其带来的时间与空间的开销使得算法执行效率低下,所以减少递归运算可以提高频繁项集的挖掘效率。

(2)挖掘频繁项集

以表4中事务数据库d构建的频繁模式树为例,假设要找出项m的条件模式基。首先,找到拥有的项的集合中存在项m的分块编号,然后在对应的分块中,查找项m的所有祖先节点,即为m的条件模式基。如图4所示,m的条件模式基为<(f:2),(c:2),(a:2)>和<(f:1),(c:1),(a:1),(b:1)>,同理p的条件模式基为<(f:2),(c:2),(a:2),(m:2)>和<(c:1),(b:1)>。然后,将每个项的条件模式基作为该项的mapper阶段的输入,创建条件fp树,挖掘该项的频繁项集。

进一步的,所述步骤s6具体为:

步骤s61:通过步骤s3和s4得到的,挖掘出的强关联规则和关系的定义域和值域elid,elir,rjdomaineljd,rirangeeljr,rzdomainelzd,rzrangeelzr;

步骤s62:根据下式将强关联规则转换成horn规则

其中elid、elir分别表示关系ri的定义域和值域,eljd、eljr表示关系rj的定义域和值域,elzd、elzr表示关系rz的定义域和值域。

在本实施例中,以sfp算法挖掘出的两条强关联规则为例,比较说明通过关系类型约束将强关联规则转换成horn逻辑规则的优势。

(1)产生的horn逻辑规则如下所示:。

(2)产生的horn逻辑规则如下所示:

我们不难发现,式(15)中虽然有无利用关系类型约束都产生合理的horn逻辑规则,但是,很多情况下关系的方向不总是一致的,大多情形与式(16)类似。利用关系类型约束可以为关系指明方向,因为共享变量的连接实体应属于同一标签类型,这使得转换成的horn逻辑规则更加完整。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

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