基于知识图谱的子图检索——KBQA的一种实现

基于知识图谱的子图检索——KBQA的一种实现

本文是对论文《Answering Natural Language Questions by Subgraph Matching over Knowledge Graphs》的一些个人解读,如有错误,多谢指正。

介绍

  • KBQA

    即基于知识图谱的问答系统,一般的实现为:

    1. 将已有的知识转化为结构化的数据,一般为RDF格式的数据,即三元组<subject, predicate, object>, 形成知识图谱,如下图:
      在这里插入图片描述
    2. 将需要理解的query转化为SPARQL语言,使用SPARQL语言来检索知识图谱,SPARQL使用起来类似于sql语言,但是更加复杂,这里不对其做过多讲解。如下图:
      在这里插入图片描述

那么这里就有两个和很明显的问题需要解决:

  1. 如何将query转化为SPARQL?
  2. 转化后的SPARQL检索出多个结果后,哪个才是最好的?

对于第二个问题很好解决,取匹配度最高的即可,所以此篇论文讨论的重点套路的问题在于第一个问题。
从query到SPARQL的过程,涉及到了query理解,就很容易出现歧义问题,主要包含两个方面:

  1. 短语链接,如何将query中不同的短语链接到正确的实体/关系/属性上
  2. 组合问题,提取出的实体/关系/属性,不同的组合方式,会产生不同的理解,这就是歧义问题。

正是因为歧义问题的存在,所以大多数的query到SPARQL的实现,是采用模板匹配的方式,事先写好不同query的模板和SPQRQL,用来匹配用于话术,但是这一工作是很繁琐的。
因此,这篇论文提出了子图检索的方法,来实现知识图谱的检索见下图:
在这里插入图片描述

这种方法不需要事先建立模板,首先通过语义依存关系建立query图,然后将query图到图谱中的图中去检索,来找到最佳的匹配,即是答案。同时解决了歧义问题和评分问题,本方法对复杂问题分析非常有效。

方法

对于query图的建立,论文提出了两种方法:

  1. 关系优先方法
  2. 节点优先方法

关系优先方法(Relation-First FRAMEWORK,RFF)

在这里插入图片描述
离线工作:

建立关系词典,即关系-关系指称的词典,类似于:
在这里插入图片描述
其实就是一个大词典

在线工作:

- 建立关系语法图(Semantic Query Graph)

首先通过Stanford Parser 构建query的依存关系树Y

因为已经建立了关系词典,所以在语法树Y中的每一个节点(词)wi,找到包含wi的关系指称,然后使用深度优先遍历,遍历Y中所有以wi为根的子树,如果该子树和关系指称词典中的所有的字都匹配,即认为找到了一个关系指称。

找到关系指称后,就需要寻找与该关系对应的主语和宾语,论文根据统计分析,基于依存关系树中边的词性,统计出了subject-like边和object-like边:
在这里插入图片描述
然后分析关系指称与句法依存树,若在依存子树y中有点w是可以被匹配为类/实体,则认为这个w是关系指称的一个主语;否则,观察w与它的子节点中,是否被 subject-like 的边相连,若是的话,这个子节点就是这个关系指称的主语。同理,若 w 与子节点被 object-like 的边相连,那么关系指称的宾语就是这个子节点。如果经过这种规则处理,找不到对应的主语/宾语,那么就需要应用一些高阶规则。如下图:
在这里插入图片描述

已知的关系指称为“budget of”与“direct by”,由于“file”是匹配于实体或类,且“of”与子节点“film”之间以object-like的边pobj相连,所以“film”是关系指称“budget of”的宾语。此外,虽然“is”与“budget”由subject-like的边相连,但是“is”并不是一个可以匹配到实体/类的节点,所以“is”不是“budget of”的主语。根据前面所述,与“budget of”最相近的wh-词是“what”,那么它就是“budget of”的主语。

- 子图检索

通过上面的步骤,即得到了query图 Qs,然后通过Qs到知识图谱的图中去匹配就完事了。
Qs中每一条边都有匹配的候选谓词,每一个节点都有对应的候选实体,通过已经建立的词典,可以得到匹配的分数,全部匹配完成后,取分数最高的即可。

节点优先方法

在这里插入图片描述
离线工作:

建立节点词典

在线工作:

节点的识别

通过已经建立的节点词典,在query中识别节点,节点的识别很简单,trie树,或者AC自动机,都可以。

比如对于例句“What is thebudget of the film directed by Paul Anderson and starred by a Chinese actor?”可以识别出“what”、“film”、“Paul Anderson”、“Chinese”、“actor”

关系的填充(即节点的组合)

有了节点之后,一对节点之间肯定有不同的路径相连,所以这里形成的图是一个超级语义查询图Qu(super semantic query graph),而 Qs 是其一个子图,虽然也是通过依存关系来建立这个图,但是这个图比RFF鲁棒性更高。

在依存关系图中,如果两个节点之间有边相连并且没有其他节点,则这两个节点之间的边就被认为是关系
在这里插入图片描述

如上图:点“film”与点“Paul Anderson”、“actor”之间都没有其余节点存在,所以“film”与“Paul Anderson”存在关系,关系指称为“directed by”;“film”与“actor”存在关系,关系指称为“directedstarred by”,由此得到了节点间的关系指称。当两个节点之间的指称没有label时,如“Chinese”和“actor”,那么若两个节点都为实体/类,那么在知识图谱中将这两个节点间的关系填入;若其中一个节点为通配符,则在知识图谱中定位另外一个节点,取与其连接频数最高的那些谓词作为候选关系填入。

子图检索

有了Qu,Qu中包含所有的节点,而不同的节点组合,即出现了不同的Qs,将Qs与图谱去匹配,寻找最优匹配。可以采用动态规划的方法。

首先,选择候选集最小的节点作为开始节点,然后将Qu中与该节点相连的边加入形成Q,判断Q是否能够和图谱匹配,如果匹配,则继续加入边和节点,如果不匹配,则删掉这个边进行回溯,直到 Q 是 Qu 的包含了 Qu 所有节点的子图,则找到了一个查询子图。

实验

CFF比RFF要好,而且总体效果也还不错,此处不再赘述。具体实验结果可以参看参考文档2

参考文档

  1. 《Answering Natural Language Questions by Subgraph Matching over Knowledge Graphs》
  2. https://blog.csdn.net/TgqDT3gGaMdkHasLZv/article/details/80823385
  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于知识图谱的问答系统(KBQA)是一种利用知识图谱来回答用户提出的自然语言问题的技术。知识图谱一种用于表达和存储实体、属性和实体之间关系的数据结构,能够将海量的结构化和半结构化数据进行组织和展示。KBQA系统通过将用户的问题解析为知识图谱中的查询操作,从而能够高效地从知识图谱中获取和推理出正确的答案。 在KBQA系统的实现过程中,首先需要将海量的结构化和半结构化数据转化为知识图谱的表示形式。这可以通过自动抽取和构建知识库来实现,也可以借助人工标注和知识工程师的专业知识来构建。知识图谱的构建通常包括实体识别、属性提取和关系抽取等步骤。 当用户提出一个问题时,KBQA系统会首先对问题进行语义解析,提取出问题的关键词和实体信息。然后,系统根据问题的语义和知识图谱的结构,利用查询语言(如SPARQL)将问题转化为对知识图谱的查询操作。通过在知识图谱中查找符合查询条件的实体和关系,系统能够找到与用户问题相关的知识,并生成相应的答案。 KBQA系统的优势在于能够从结构化的知识图谱中获取精确和全面的答案,同时还能够支持复杂的查询操作和多跳推理。它可以广泛应用于各个领域,如智能搜索、智能助理和智能客服等。然而,知识图谱的构建和维护需要耗费大量的人力和时间,并且对领域知识的要求较高,这是KBQA系统应用中的挑战之一。未来,随着知识图谱技术的不断发展和完善,KBQA系统有望在实际应用中的效果得到进一步提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值