ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《Learning to Answer Complex Questions over Knowledge Bases with Query Composition》论文笔记

2022-02-06 09:04:46  阅读:252  来源: 互联网

标签:partial computation join over Bases Learning Query query Gi


Learning to Answer Complex Questions over Knowledge Bases with Query Composition

这是一篇密歇根安娜堡发表在CIKM上的文章,主题为KBQA,依然是SP-based。

Overview

这篇文章处理的是复杂问题,主题方法还是通过SP生成query graph,然后使用神经网络的方法进行语义匹配找到最佳的查询图,最后在KB中执行。但是本文的最大创新点在于:作者假设complex question可以被分解为多个simple question。其实这个假设是很合理的,之前的几篇文章曾经总结过复杂问题的主要特点,无外乎就是entity、relation、constraint变多了,需要多跳推理,这也会使得每个问题的search space呈指数级增长。因此本文在所做的就是把多跳推理转化为多个单跳推理,这样一来,search space能大大减小,并且query graph的生成也变得简单。于是,本文的主要问题就转化为了怎么找partial question和怎么根据partial question得到原问题的答案(或者说怎么对partial questions进行composition操作)。

本文的contribution如下:

  1. 设计出了TextRay,一个end-to-end的KBQA系统,可以将问题翻译为可在KB中执行的query
  2. 提出了decomposition-join-execute的方法来通过partial questions构建complex query
  3. 使用了神经网络的semantic matching模型对候选的partial question进行筛选

Approach

首先来看一下整个系统的结构图

在这里插入图片描述

总的概括一下,这个系统有两大核心组件:

  • Query Composition:给定一个问题 Q Q Q,我们希望得到对应的query graph G G G,那么本文的做法是根据computation plan生成一系列的partial query { G i } i = 1 L \{G_{i}\}_{i=1}^{L} {Gi​}i=1L​,我们后面会说什么是computation plan,这里可以暂时理解为partial query的执行步骤。而在每一步,我们都会生成top-k的candidate,因此表示为 G i ( k ) G_{i}^{(k)} Gi(k)​。然后最优的 M M M个会被执行得到相应答案,这些答案会被用来生成第 i + 1 i+1 i+1步的partial query。
  • Semantic Matching:这一部分就是使用神经网络去求 S s e m ( Q , G i ( k ) ) S_{sem}(Q,G^{(k)}_{i}) Ssem​(Q,Gi(k)​),得到每一步的最优的candidate。

Query Composition

首先来看之前留下的概念:computation plan,包含两个操作: s i m Q A simQA simQA和 j o i n join join。 s i m Q A simQA simQA就是生成子问题,而 j o i n join join可以理解为一个条件,代表两个子问题之间互相独立。对于每个问题 Q Q Q,作者使用argumented pointer network来生成computation plan z   =   z 1 z 2 … z n z\ =\ z_{1}z_{2}\dots z_{n} z = z1​z2​…zn​, z i ∈ { s i m Q A ,   j o i n } z_{i} \in \{simQA,\ join\} zi​∈{simQA, join}。这样一来computation plan其实有两种结构

在这里插入图片描述

一种是(a)这样的并列式,另一种就是(b)这样的递进式。

Partial Query Generation

定义两个集合:

  • 状态集合 S S S: { ϕ ,   S e ,   S r ,   S c ,   S t } \{\phi,\ S_{e},\ S_{r},\ S_{c},\ S_{t}\} {ϕ, Se​, Sr​, Sc​, St​},分别代表空问题、单个实体、单条关系路径、单个限制、终止状态。当达到终止状态 S t S_{t} St​,模型就会去查询computation plan来决定如何生成下一步的 G i + 1 G_{i+1} Gi+1​。
  • 指令集和 A A A: { A e ,   A r ,   A c ,   A t } \{A_{e},\ A_{r},\ A_{c},\ A_{t}\} {Ae​, Ar​, Ac​, At​},分别代表找出seed entity(也就是topic entity)、添加一条关系路径、调价一条限制、终止并转移到终止状态。

至于 A e 、 A r 、 A c A_{e}、A_{r}、A_{c} Ae​、Ar​、Ac​具体怎么操作就不赘述了。而 A t A_{t} At​是终止操作,达到 S t S_{t} St​之后回去查询computation plan,这事就有两种情况:

  1. 如果是join,那么代表 G i + 1 G_{i+1} Gi+1​不依赖于 G i + 1 G_{i+1} Gi+1​的答案,可以直接进行下一步的生成

  2. 如果是simQA,那么代表 G i + 1 G_{i+1} Gi+1​需要 G i G_{i} Gi​的答案,这时就要先执行 G i G_{i} Gi​得到答案,把答案加入 G i + 1 G_{i+1} Gi+1​的候选实体中。

    在这里插入图片描述

Query Composition and Execution

作者管每一步通过beam search得到的候选 G i ( k ) G_{i}^{(k)} Gi(k)​叫derivations,得到derivations之后作者训练了一个log-linear model来对这些derivations打分,选出最好的那一个作为当前这一步的partial query。

Semantic Matching Model

本文的semantic matching model和《Knowledge Base Question Answering via Encoding of Complex Query Graphs》这篇文章的基本一样,就是在question encoding的地方加了一个attention,其他没什么区别。

在这里插入图片描述

这里做的任务是判断一个partial query是不是争正确的,因此可以看作二分类,损失函数就是交叉熵

在这里插入图片描述

但是这样就有一个问题,没有标签。如果要人工再去构建一个数据集肯定是不行的,因此作者用了implict supervision的方法。

Experiment

在这里插入图片描述

这篇文章把之前那篇CompQA在CompQWeb数据集上的表现亮出来以后确实让我很惊讶,这样看来那篇文章的方法应该有很严重的过拟合。

标签:partial,computation,join,over,Bases,Learning,Query,query,Gi
来源: https://blog.csdn.net/qq_42791848/article/details/122795641

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有