摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020 KBQA 基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读,并对相关实验进行了复现。

1、摘要

1.1 复杂问题

1)带约束的问题

2)多跳关系问题

1.2 提出一种改进的阶段式查询图生成方法

1.3 三份数据集上达到SOTA:CWQ、WQSP、CQ

2、介绍

2.1 复杂问题

(1)单跳关系带约束的问题

  • Who was the first president of the U.S.?
  • 单跳关系:“president_of”
  • 已知实体:“U.S.”
  • 约束词:“first”

(2)多跳关系问题

  • Who is the wife of the founder of Facebook?
  • 两跳关系:“wife_of”、“founder_of”

2.2 解决方法:考虑更长的关系路径,但是搜索空间会随着路径的变长呈指数性增长

2.3 挑战:如何限制搜索空间?以前也有一些方法,提出的只考虑匹配的最佳关系,而不是所有关系。但是没有同时处理两种类型的复杂问题。

2.4 方案:束搜索(beam search)

2.5改进:路径扩展 + 合并约束,串行 → 并行,有效地减少了搜索空间

3、方法

3.1、预备工作

(1)KB

    • K={(h,r,t)}
    • h,t 来自实体集合 E
    • r 来自关系集合 R

(2)KBQA:给定一个问题Q,从KB中找到一个答案a

3.2、阶段查询图方法

(1)四种类型的节点,如下图所示

  • A grounded entity 接地实体/对齐实体:KB中已存在的一个实体,至少有一个(阴影矩形)
  • An existential variable 未接地实体/存在变量/中间变量:0个或者多个(无阴影矩形)
  • A lambda variable 未接地实体/未知变量:表示答案,有且只有一个(圆形)
  • An aggregation funciton 聚合函数:最大/最小/求和等操作,0个或者多个(菱形)

(2)查询图的边是KB中的 r

(3)查询图的生成过程就是SPARQL查询语句生成的过程,如下图所示。注:与上图例子不完全符合。

其中,ns:m.0k2kfpc 是接地实体的MID(Freebase),?name3 是未知变量,?e1、?e2、?e3、?e4 等是中间变量。

3.3、阶段查询图生成的一般过程

1)从问句中的一个接地实体(topic entity)开始,识别一条核心关系路径(core relation path),将主题实体连接到一个lambda变量;

2)给核心关系路径添加一个或多个约束,这个约束包含一个接地实体或者一个带关系的聚合函数;

3)生成候选查询图,度量和问句的相似度,排序(CNN等神经网络);

4)取top1,在知识图谱上执行查询图,获得答案。

注:核心关系路径,在其他论文里叫核心推理链,或者叫基本查询图

3.4、动机

(1)问题:

    • 已有方法只考虑单个关系或两个关系的核心路径,无法解决多关系约束问题;
    • 如果允许核心关系路径变长,搜索空间会剧增;
    • CWQ数据集上,每个问题三跳情况下会有10000条路径。

(2)束搜索(beam search)

    • 在生成 t+1 跳关系路径时,只保留 top-K 个 t 跳关系路径,即每次路径只生成 K 个;
    • 已有方法忽视了约束这个条件,只考虑通过路径减少搜索空间;
    • 问题中的约束也可以帮助减少搜索空间,引导核心路径朝正确的方法生成。

(3)改进的阶段式查询图生成方法

    • 在附加约束前,不需要生成所有的核心关系路径;
    • 束搜索和语义匹配结合,得到一个更小的搜索空间。
    • 给定一个部分核心路径 (The Jeff Probst Show, nominated for, y1, nominee, y2),如果在y2上扩展一个关系,需要考虑KB中连接y2的所有关系,但是如果先加一个约束(is a, TV producer),将只考虑电视制片人被提名为xx show的人。

3.5、查询图生成

(1)束搜索生成查询图

  • 假设第 t 次迭代生成了 K 个查询图,表示为 G_t;
  • 第 t+1 次迭代,对于每个图 g∈G_t,使用三个操作 {extend, connect, aggregate} 增加一条边和一个节点,如下图所示;
  • 所有生成的图集合表示为 G′_(t+1) ,使用得分函数排序,取 top-K 个 ,得到候选查询图 G_(t+1);
  • 继续迭代,直到没有 g∈G_(t+1) 得分比 g∈G_t 高。

(2)扩展操作(extend)

    • 增加一个关系;
    • 如果当前查询图只有一个主题实体 e,扩展操作就增加 e 的一个关系 r ,另一端作为lambda变量 x ;
    • 如果当前查询图含有一个lambda变量 x ,扩展操作就将 x 转成一个existential变量 y ,找到 y 的关系 r ,生成新的lambda变量 x 。

(3)连接操作(connect)

    • 除了主题实体外,问题中经常会出现一些其他的接地实体 e ;
    • 连接操作将这个接地实体 e 链接到 lambda 变量 x 或者与 x 连接的existential变量。

(4)聚合操作(aggregate)

    • 预定义一个关键词集合,检测约束词;
    • 聚合操作将约束词作为一个节点连接 lambda 变量 x 或者与 x 连接的existential变量。

(5)方法的创新性:扩展操作可以应用在连接或者聚合操作后面,以前的方法不行。

    • 以前:扩展 → 扩展 →......→ 扩展 → 连接或聚合
    • 现在:扩展、连接、聚合 → 扩展、连接、聚合 →......→ 扩展、连接、聚合

3.6、查询图排序

(1)方法:第 t 次迭代,排序候选查询图 G′_t,通过生成一个7维的特征向量,输入到全连接层,计算分数。

(2)特征

第1维:

    • 基于BERT的语义匹配模型;(Pytorch版:https://github.com/huggingface/transformers)
    • 将查询图 g∈G′_t 转成一个词序列,按照图的生成顺序
    • 忽视中间变量和未知变量
    • 下图的查询图生成的序列:(the, jeff, probst, show, nominated, for, nominee).

第2维:所有接地实体的实体链接得分累加和;(谷歌的实体链接工具:https://developers.google.com/knowledge-graph)

第3维:接地实体的数量;

第4维:实体类型的数量;

第5维:时间表达式的数量;

第6维:最高级表达式的数量;

第7维:答案实体的数量。

(3)强化学习方法,学习决策函数。

4、实验

(1)数据

    • ComplexWebQuestons (CWQ) 数据量:34689
    • WebQuestionsSP (WQSP) 数据量:4737
    • ComplexQuestions (CQ) 数据量:2100

(2)结果

(3)消融实验

模型性能的提升,不仅仅与BERT有关。

论文:Lan Y, Jiang J. Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases[C]//Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics. 2020: 969-974.

链接:https://www.aclweb.org/anthology/2020.acl-main.91/

代码:https://github.com/lanyunshi/Multi-hopComplexKBQA

点击关注,第一时间了解华为云新鲜技术~

实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题的更多相关文章

  1. 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类

    概述 MobileNetsV2是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网,此模型基于 MobileNetV2: Inverted Residuals and Linear ...

  2. 实践案例丨基于 Raft 协议的分布式数据库系统应用

    摘要:简单介绍Raft协议的原理.以及存储节点(Pinetree)如何应用 Raft实现复制的一些工程实践经验. 1.引言 在华为分布式数据库的工程实践过程中,我们实现了一个计算存储分离. 底层存储基 ...

  3. 实践案例丨教你一键构建部署发布前端和Node.js服务

    如何使用华为云服务一键构建部署发布前端和Node.js服务 构建部署,一直是一个很繁琐的过程 作为开发,最害怕遇到版本发布,特别是前.后端一起上线发布,项目又特别多的时候. 例如你有10个项目,前后端 ...

  4. 实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值

    摘要:一文带你用小熊派开发板动手做土壤湿度传感器. 一.实验准备 1.实验环境 一块stm32开发板(推荐使用小熊派),以及数据线 已经安装STM32CubeMX 已经安装KeilMDK,并导入stm ...

  5. 微服务实战(四):服务发现的可行方案以及实践案例 - DockOne.io

    原文:微服务实战(四):服务发现的可行方案以及实践案例 - DockOne.io 这是关于使用微服务架构创建应用系列的第四篇文章.第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点.第二和第三 ...

  6. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己 ...

  7. 《SaltStack技术入门与实践》—— 实践案例 <中小型Web架构>3 Memcached配置管理

    实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Me ...

  8. 实践案例:平安健康的 Dubbo3 迁移历程总结

    本篇是 Apache Dubbo 的实践案例.感兴趣的朋友可以访问官网了解更多详情,或搜索关注官方微信公众号 Apache Dubbo 跟进最新动态. 1 背景 我们公司从15年开始就使⽤dubbo作 ...

  9. 实践案例:同程艺龙网的 Dubbo 升级经验总结

    本篇为同程艺龙旅行网 Apache Dubbo 的实践案例总结.感兴趣的朋友可以访问官网了解更多详情,或搜索关注官方微信公众号 Apache Dubbo 跟进最新动态. 作者信息: 严浩:同程艺龙高级 ...

  10. Hibernate一级缓存(基于查询分析)

    首先我们应该弄清什么是hibernate缓存:hibernate缓存是指为了降低应用程序对物理数据源的访问频次,从而提高应用程序的运行性能的一种策略.我们要将这个跟计算机内存或者cpu的缓存区分开. ...

随机推荐

  1. 《数据结构》王卓老师 p48-p62学习反馈

    跟着青岛大学-王卓老师的视频进行到链队列时,运行链队列代码的时候遇到了两个问题: 1.)Program received signal SIGSEGV Segmentation fault 附代码: ...

  2. CF1333A [Little Artem]

    Problem 题目简述 给你一个 \(n \times m\) 的方格,构造一个方案,使得方案中 \(B = W + 1\). \(B\):相邻的格子有至少一个白色格子的黑色格子的个数. \(W\) ...

  3. VLAN通信之单臂路由与三层交换

    VLAN之间通信 再次提及,vlan是虚拟局域网,用于分隔广播域,解决广播风暴.但是vlan之间无法直接通信.所有我们要用三层交换.单臂路由来实现vlan之间的通信. 单臂路由 使用场景:规划错误,只 ...

  4. 牛客多校第一场 A. Alice and Bob (暴力SG)

    题目大概 有两堆石子,有两个人拿,一个人从一堆中拿\(k\)个,那么就必须从另一堆中拿\(s*k\)个,Alice先拿,问是否必赢. 解题: 数据不大,看到前\(20\)名队伍没有推结论做的..除了打 ...

  5. Reflect API:每个 JavaScript 开发人员都需要的瑞士军刀

    前言 您是否曾经希望拥有一个神奇的工具包,可以让您像超级英雄一样控制 JavaScript 对象?向ReflectAPI 打个招呼吧,它是 ES6 中引入的一个新的全局对象 ,它能够处理简单的代码操作 ...

  6. JavaWeb项目中web.xml配置文件<servlet-class>…</servlet-class>中的路径出现问题以及服务器错误的解决办法

    问题如图 原因: 1.改变了 WEB-INF 文件夹下 lib 文件夹下 servlet-api.jar 的路径2.缺失lib文件夹下的 servlet-api.jar,没有添加到库中 解决办法: 不 ...

  7. i-MES生产制造管理系统-总览

    前言 说起 MES 就不得不说 ERP,但是 ERP 大家基本上都知道,MES 就不一定了,常见的 ERP 系统包括 SAP.金蝶.用友等,ERP的流程相对来说也比较统一:MES就不同了,基本上熟悉业 ...

  8. Codeforces Round #691 (Div. 2) D - Glass Half Spilled(DP)

    题目 补下因实验漏掉的CF(还以为是晚上,没想到是下午开始).前三题过的很顺利,到D题时想了会发现数据很小爆搜貌似能过,就以为是道水题,交了一发T了,胡乱加了点剪枝还是T.逐渐意识到事情的严重性.考虑 ...

  9. [GDOIpj221B] 数列游戏

    第二题 数列游戏 提交文件: sequence.cpp 输入文件: sequence.in 输出文件: sequence.out 时间空间限制: 1 秒, 256 MB 有一个长度为 \(n\) 的序 ...

  10. net8获取泛微token以及访问api示例

    工作中涉及到调用泛微的场景,官方的示例又臭又长,抽空用NET8简化了写法,为了简化http访问,用了Flurl.Http这个库.在座各位大佬,我们直接就看代码了   using System.Secu ...