RDF数据上基于图匹配的why‑not查询回答方法与流程

文档序号:11286434阅读:181来源:国知局
RDF数据上基于图匹配的why‑not查询回答方法与流程

本发明涉及计算机技术领域,尤其是一种rdf数据上基于图匹配的why-not查询回答方法。



背景技术:

近年来,大量的rdf数据开始以开放链接数据的形式被发布到互联网上,并且形成了很多开放链接知识库或者垂直领域知识库,比如freebase、yago、dbpedia、conceptnet等等。这些知识库逐渐被集成到一些现实生活中的应用场景里面,比如搜索引擎或者查询回答系统,从而更好的服务于用户。为了使得用户可以更直接、方便的去获取知识,基于知识库的查询回答系统开始扮演重要的角色。一些基于rdf数据的查询回答系统,比如auqlog、freya、nlp-reduce等,使得用户不需要了解底层知识库的词汇或者模式信息,也可以满足他们任意复杂的信息需求。

对于基于知识库的查询回答系统,其底层的数据通常是从web上进行信息抽取,然后将数据组织成rdf三元组或者其他形式的知识单元存放在知识库中。然而信息抽取通常不是完全精准的,在信息抽取的过程中,通常会因为信息源的不可靠或者抽取方法的局限性导致一些错误信息蔓延到数据库中,导致数据本身的准确性有所下降。因而当用户通过查询回答系统来获取问题的答案时,系统可能返回给用户不正确的结果,在用户好奇心的驱使下,用户会自然而然的产生为什么用户想要的答案没有出现在结果集中这种问题,这种问题被称作为why-not问题。通常情况下,用户要解决这种问题,需要不断的更改自己的查询条件来对比不同的结果集,并分析用户期望的数据的相关信息,才能得出为什么用户期望的结果没有出现在结果集中的原因。然而在数据量的规模很大的情况下,以及用户输入受限时,并不是每次用户都能如愿分析出原因。此时,由系统根据用户的反馈来为用户计算出比较合理的解释便成为一种提高数据库可用性的需求。

在解决rdf上的why-not问题方面,yao等人给出了一种解决方案,该方法通过一种简单的不断试错的方式来找到用户查询中导致答案缺失的关系或者概念,并且使用一些启发式规则进行泛化来修正查询。该方法对应的系统anna由于需要遍历各种情形进行试错,计算解释的效率不高,而且通过泛化得到的结果在大部分情况下并不能给出用户一种细粒度的解释。



技术实现要素:

本发明所要解决的技术问题在于,提供一种rdf数据上基于图匹配的why-not查询回答方法,为用户提供一种合理的解释,指导用户更好的完善和明确查询需求,更快的获取自己期望的结果。

为解决上述技术问题,本发明提供一种rdf数据上基于图匹配的why-not查询回答方法,包括如下步骤;

(1)离线数据结构处理;

该步骤对rdf数据进行数据结构上的预处理,包括三个方面:一是使用jena对rdf数据进行本地持久化存储,二是使用lucene对知识库中所有实体的标签建立倒排索引,三是训练一个word2vec模型为知识库中的每个实体和关系生成一个向量;

(2)将why-not问题中的关键字映射到rdf数据上的实体;

对于用户提出的why-not问题,得到用户所感兴趣的项的关键字,然后从步骤(1)所建立的索引库中检索该关键字对应的实体,从而将关键字映射到知识库上的实体上去,得到一个候选实体集合;

(3)从候选实体出发,构造一个局部图;

通过在步骤(1)中所建立的持久化数据库上查询候选实体所关联的边和实体以及属性和值信息,并对关联的实体进行扩展,得到一个从候选实体出发,深度为某个固定值的局部图;

(4)查询分解;

将用户查询分解成若干个具有星型结构的查询子模式;

(5)图匹配;

对于从步骤(4)得到的每一个查询子模式,从局部图中候选实体对应的顶点出发,生成若干个以候选实体为顶点,边数等于查询子模式的边数的星型结构的子实例图的集合,然后进行查询子模式和子实例图之间的匹配,计算其相似度;之后将匹配的子实例图中的叶子节点进行扩展,生成新的星形结构的子实例图并加入到子实例图集合中,用于后续查询子模式的匹配;最终为每一个查询子模式计算得到一个匹配的子实例图,将这些模式图进行合并生成一个与用户查询具有最高全局相似度的实例图;

(6)生成why-not问题的解释;

根据步骤(5)得到若干从候选实体出发且和用户查询相似的实例图,选取与用户查询最相似的实例图,并将其中的实体结点替换为查询中对应的变量结点;对比该实例图和用户查询中的每一个结点和边的标签信息,即可得到两个图的差异之处,这种差异即可用于解释用户的why-not问题。

优选的,步骤(4)中rdf数据上基于图匹配的why-not查询回答方法将用户查询分解成若干个具有星型结构的查询子模式的具体实现方法为:找到候选实体在查询模式图中对应的变量结点,从该结点出发,生成一个星型结构的模式子图;然后将根结点相连的结点压入队列,从队列中弹出一个结点,若该结点不是查询模式图的叶子结点,则生成一个星型结构的子模式,否则继续弹出下一个结点直到队列为空。

优选的,步骤(5)中rdf数据上基于图匹配的why-not查询回答方法采用一种综合考虑语义信息和结构信息的相似度计算方法,计算方法如下:

在考虑语义信息方面,对于两个结点或者两条边之间的相似,若结点是知识库中的一对实例或者边是知识库中的一对关系,则通过计算其对应的向量之间的余弦距离来表征语义相似度,否则采用编辑距离计算相似度;

在考虑结构信息方面,如果节点是一个类结点,或者边的标签是type信息,则采用最小公共父结点lca方法来计算其结构上的相似度,否则,采用jaccard距离计算公式计算图之间的结构相似度。

优选的,步骤(6)中rdf数据上基于图匹配的why-not查询回答方法在选取与用户查询最相似的实例图的时候,通过为每一个候选实体生成若干和用户查询匹配的实例图,并选取和用户查询具有最高全局相似度的实例图完成。

本发明的有益效果为:anna是一个基于dbpedia知识库的查询回答系统,该系统提供了对用户提出的why-not问题的解释功能。该系统在回答用户why-not问题时采用了一种试错的方法,即通过遍历用户查询中的每一个条件,判断去除该条件之后,查询的结果集中是否包含用户感兴趣的结果,从而确定是哪个条件导致把用户感兴趣的项排除在结果集外面,然后采用一种启发式规则将该条件中的成分替换成变量,使得替换之后的查询的结果集里面可以包含用户感兴趣的项。这种方法的思想比较直观简单,但是给出的解释通常粒度比较粗,只能表明是查询中哪个条件出错了,无法给出修改意见,不能够很好的满足用户的信息需求,而且由于不断的试错,当用户查询比较复杂的时候,系统的效率比较低下。相对于该方法,我们采用的方法可以更好,更高效的确定导致用户感兴趣的项被筛选掉的原因,并且给出相应的比较具体的修改意见,方便用户更好的去探索用户期望得到的结果,通常可以让用户更加满意。

附图说明

图1是本发明实施例中所涉及的rdf数据。

图2是本发明实施例中用户查询的sparql形式及对应的查询图。

图3是本发明实施例中从索引库中检索某个关键字对应的实体。

图4是从图1的rdf数据中生成的某个实例的局部图。

图5是本发明一个查询分解的实例。

图6是本发明从局部图中的实例出发生成子实例图。

图7是本发明图匹配和相似度计算的过程图。

图8是本发明根据匹配得到的子实例图合并生成和相似查询。

具体实施方式

一种rdf数据上基于图匹配的why-not查询回答方法,其特征在于该方法充分利用了用户查询以及rdf数据的图结构性质,采用一种图匹配的方法来近似求解why-not问题。其次,在图匹配的过程中,采用一种充分考虑了查询所包含的语义信息以及结构信息的相似度计算方法。该方法包括以下几个步骤:

步骤1)离线数据结构处理

该步骤对rdf数据进行数据结构上的预处理,为后续进行rdf数据上的查询以及计算实体之间和关系之间的相似度提供相关数据,主要包括三个方面:一是使用jena对rdf数据进行本地持久化存储,二是使用lucene对知识库中所有实体的标签建立倒排索引,三是训练一个word2vec模型为知识库中的每个实体和关系生成一个向量。

考虑图1所示的rdf数据,数据以三元组形式存储在特定格式的文件里面,首先使用jena读取数据文件,将数据进行本地持久化存储,从而可以方便快速的执行用户查询。比如当用户提交一个查询请求,问研究员tran发表过的刊物有哪些?便可以使用jena在持久化数据库上执行该问题的sparql查询语句,得到该问题的答案为sihjoin。该查询的sparql形式的查询语句和对应的查询图如图2所示。

其次,为方便从一个关键字可以迅速得到该关键字在知识库中对应的实体,需要对知识库中所有的实体的标签建立倒排索引。根据图一可以看出知识库中中存在一个三元组(pub3,name,sumo),描述的实体pub3具有一个name属性,值为sumo。根据传统搜索引擎对网页简历倒排索引的原理,我们将描述同一个实体的所有三元组看作一个页面,实体对应了网页的标题信息,属性对应网页的某个域,值对应了该域的内容,从而建立从内容到标题的倒排索引。

最后,为了方便计算实体之间和关系之间的语义相似度,可通过使用知识库中的所有三元组作为语料训练一个word2vec模型,从而为每一个实体和关系生成一个向量。之所以使用word2vec来对实体和关系进行向量化表示可以体现实体或者关系之间的语义关系,是因为word2vec训练的模型可以使得相似的实体或者关系在向量空间中距离比较近,而不相似的实体或者关系在向量空间中比较远。

步骤2)将why-not问题中的关键字映射到rdf数据上的实体

假设用户在执行完图2所示的查询之后得到一个结果集,里面只包含了sihjoin这一项,并且提出了一个why-not问题:为什么sumo没有出现在结果集中?根据用户提出的why-not问题,可以得到用户感兴趣的项为sumo。可以利用步骤1)中预处理阶段为实体建立的倒排索引查出sumo映射到知识库上的候选实体为pub3。从索引库检索关键字sumo对应的候选实体的过程如图3所示。

步骤3)从候选实体出发,构造一个局部图

由于整个rdf数据通常包含上百万个实体或者关系,如果直接在整个rdf图上进行匹配,则会非常耗时。然而,在实际情况下,和查询模式图进行匹配的信息只与候选实体相关联的局部图包含的信息相关,而数据集中其他的信息都是无关紧要的。因此在实际运行过程中只需要保留和候选实体相关的数据即可。在该实施例中,从步骤2)得到的候选实体为pub3,通过jena可以在步骤1)中所建立的持久化数据库上查到与pub3相关联的边和实体以及属性和值信息,并对关联的实体进行扩展。每次扩展是对当前实体在rdf数据上进行一次查询,得到与该实体关联的信息的过程。图4是从实体pub3出发进行探索,扩展k次(k=2)后得到的局部图。

步骤4)查询分解

查询分解的过程为:从查询图的根节点出发,生成一个星形结构的查询子模式,一个星型结构的查询子模式由一个顶点和若干条想连的边组成。然后将根结点相连的节点压入队列,从队列中弹出一个结点,若该结点不是叶子结点,则生成一个星形结构的子模式,否则继续弹出下一个结点直到队列为空。

通过查询分解,可以将查询模式图分解成若干查询子模式,避免了在匹配过程中对整个查询模式图进行匹配,从而简化了问题的复杂度。对于图2所示的用户查询,其分解过程如图5所示。分解过后可以得到两个星型结构的查询子模式。

步骤5)图匹配

对于从步骤4)得到的每一个查询子模式,从局部图中候选实体sumo对应的顶点出发,生成若干个以候选实体为顶点,边数等于查询子模式的边数的星型结构的子实例图的集合,然后进行查询子模式和子实例图之间的匹配,计算其相似度。相似度的计算综合考虑了语义信息和结构信息两方面。计算方法如下:

语义信息方面,对于两个结点或者两条边之间的相似,若结点是知识库中的一对实例或者边是知识库中的一对关系,则通过计算其对应的向量之间的余弦距离来表征语义相似度;若结点不是知识库中的一对实例或者边不是知识库中的一对关系,则采用编辑距离计算相似度。

结构信息方面,如果节点是一个类结点,或者边的标签是type信息,则可采用最小公共父结点(lca)方法来计算其结构上的相似度,计算公式为:

其中,depth(c)表示类结点c在知识库的模式层的深度,lca(c1,c2)表示类结点c1和类结点c2的最近的公共父类型结点。

如果节点不是一个类结点,并且边的标签也不是type信息,则采用jaccard距离计算公式计算图之间的结构相似度,计算公式为:

其中,|g1|,|g2|分别表示图g1和图g2包含的边数,common(g1,g2)表示图g1和图g2中相同的边数。

之后将匹配的子实例图中的叶子节点进行扩展,生成新的星形结构的子实例图并加入到子实例图集合中,用于后续查询子模式的匹配。最终为每一个查询子模式计算得到一个匹配的子实例图,将这些模式图进行合并生成一个与用户查询具有最高全局相似度的实例图。该步骤中从候选实体sumo出发探索局部图生成子实例图集合的过程如图6所示,匹配的过程如图7所示。

步骤6)生成why-not问题的解释

根据步骤5)可得到若干从候选实体sumo出发且和用户查询相似的实例图,选取与用户查询具有最高相似度的实例图,并将其中的实体结点替换为查询中对应的变量结点。通过选取和查询具有最高全局相似度的实例图,在一定程度上也同时完成了对步骤2)中生成的候选实体的消歧工作。根据匹配结果生成相似查询的过程如图8所示。可以看出,在上述步骤的匹配过程中,以?x和?y为顶点的星型结构的查询子模式分别与以v1和v3为顶点的星型结构的子实例图相匹配,将两个匹配的子实例图进行合并,并且将实例顶点替换为对应的变量可生成一个最相似于用户查询的新的查询,对比两个查询图中的每一个结点和边的标签信息,即可发现不同之处在v5结点的标签,因而可以给出一种解释为:sumo的作者是philippcimiano,而不是tran。

经过实例分析证明,利用本发明提出的rdf数据上基于图匹配的why-not查询回答方法,可以在大规模知识库查询回答系统中针对用户提出的why-not问题,并且能在用户可接受的时间范围内给出用户一种比较可靠合理的解释。此外,这种方法不明显依赖于用户查询的复杂程度,并且相比已有的方法拥有更高的效率和带给用户更高的满意程度。

尽管本发明就优选实施方式进行了示意和描述,但本领域的技术人员应当理解,只要不超出本发明的权利要求所限定的范围,可以对本发明进行各种变化和修改。

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