《Knowledge Base Question Answering via Encoding of Complex Query Graphs》论文笔记
Knowledge Base Question Answering via Encoding of Complex Query Graphs
这篇文章是上交和阿里于2018年发表在ACL上,主题依然是与query graph相关,属于SP + DL的范畴。
Overview
作者提到之前的KBQA做法处理的多是简单问题,不能很好地解决复杂问题。对于复杂的问题或者说复杂的query graph,如何进行embedding是一大挑战。最近一段时间,SP + NN的做法在简单的问答上取得了非常好的效果,因此本文也采用了深度学习的方法(作者认为他们在当时是首个采用神经网络对CQG进行embedding的)。
基于semantic parsing的KBQA做法需要对query graph和问题进行相似度匹配以选取出最优的query graph,之前的做法是将query graph分成几个不同的semantic components(以下均称为SC),然后计算问题和每个SC之间的相似度。但是作者认为这样做有两个局限性:
- SC和问题不能直接比较,因为SC传递的只是partial信息
- 独立地计算各个SC与问题的相似度会缺少全局的信息
下图每个虚线框内就是一个SC
因此,为了解决以上的问题,本文又提出一种基于神经网络的语义相似度匹配方法,对问题和SC都进行embedding,映射到embedding space,然后再计算相似度。另外,为了更好的使SC与问题对齐,作者在对问题embedding时加入了dependency parsing的信息,这能使模型捕捉到局部信息。
本文的contributions如下:
- 设计了一种end-to-end的深度学习模型来解决KBQA问题
- 在对问题embedding的时候加入dependency信息,丰富了问题的向量化表示
- 对当时的entity linking SOTA进行集成增强
Method
下面来看方法,主要分为四个部分:
- Query Graph Generation
- NN-based Semantic Matching Model
- Entity Linking Enrichment
- Training
Query Graph Generation
首先,基于SP的方法需要生成一张query graph,本文和之前的做法比较相似,考虑四个方面的限制:entity、type、time、ordinal.以下均以问题“Who is youngest president of United State after 2002”为例。
Focus Linking:这一步大概的意思就是从原问题中提取出上述的四个方面对应的所有candidates,作者把这些候选词统称为focus mentions。对于entity,作者使用了S-MART,但是经过了他们的ensemble enrichment;对于type,他们遍历所有的type和问题中所有的uni、bi、tri-gram进行相似度匹配,选前10的作为候选;对于时间,直接使用正则匹配;对于序数,他们用predefined的词表进行匹配。
Main-Path Constraint:通过连接从答案结点到不同focus mentions的1-hop或2-hop路径来得到不同的main-path
Entity Constraint:在Main-Path中加入实体的限制,直接看例子比较好理解,就比如下图中的v1v_{1}v1结点对应是实体是president,于是就加上相应限制
Type Constraint:这一步是对答案加上类型的限制,用的是IsA谓词
Time and Ordinal Constraint:把时间和顺序都变成2-hop的谓词序列。
下图是包含了所有constrains之后的完整query graph,看图再对应以上的说法能理解的更容易一些
NN-based Semantic Matching Model
生成了许多candidate query graph之后,下一步就是计算每一个query graph与问题之间的相似度然后选取出最好的一个。这一部分作者分为三个部分:
- Semantic Component Representation
- Question Representation
- Semantic Similarity Calculation
Semantic Component Representation
先来看怎么对SC进行embedding。首先,构建出SC的方式是:我们先把答案中的focus nodes用<E><E><E>或者<Tm><Tm><Tm>来代替,分别表示实体或时间。然后连接答案和每个focus node,就得到了不同的SC,也就是第一张图中的每个虚线框。
接下来,作者将每个SC的两个方面分别进行embedding,这一部分感觉没有说清楚,文中说的是predicate ids和predicate names两个方面,这在文章前面都没有提及。但我的理解是predicate ids就是这个SC中有几种predicate,predicate names就是这个SC中的文本信息。
对于SC的word序列{p1w,…,pnw}\{p^{w}_{1},\dots,p^{w}_{n}\}{p1w,…,pnw},直接用一个embedding矩阵Ew∈Rd×VwE_{w} \in R^{d \times V_{w}}Ew∈Rd×Vw得到每个词的embedding,然后取平均p(w)=1∣n∣∑i=1npiwp^{(w)}\ =\ \frac{1}{|n|}\sum_{i=1}^{n}p^{w}_{i}p(w)=∣n∣1∑i=1npiw。对于predicate ids序列{p1id,…,pmid}\{p^{id}_{1},\dots,p^{id}_{m}\}{p1id,…,pmid},同样的方法,使用一个embedding矩阵Eid∈Rd×VpE_{id} \in R^{d \times V_{p}}Eid∈Rd×Vp,VpV_{p}Vp表示predicate sequences的数量,得到p(id)p^{(id)}p(id)。最终将这两者相加得到SC的表示:p=p(w)+p(id)p\ =\ p^{(w)}+p^{(id)}p=p(w)+p(id)。
Question Representation
下面是问题的表示学习。首先是语义的学习,作者使用双层GRU,然后把两个方向的最后一个hidden vector拼接起来作为token级别的embedding: q(tok)=[hn→;h1←]q^{(tok)}\ =\ [\overrightarrow{h_{n}};\overleftarrow{h_{1}}]q(tok)=[hn
Semantic Similarity Calculation
相似度计算采用的是余弦相似度,但是在计算之前作者进行了一个max pooling
Ssem(q,G)=cos(maxip(i),maxiqp(i))S_{sem}(q,G)\ =\ \cos(max_{i}p^{(i)},\ max_{i}q_{p}^{(i)}) Ssem(q,G)=cos(maxip(i),maxiqp(i))
但是这里作者没有说为什么qpq_{p}qp会有多个,ppp有多个是因为不同的SC。
Entity Linking Enrichment
这一部分感觉就是本文的一个小trick,对现有的entity linking算法用集成的方法进行了强化,就不多叙述了。
Training
最终的query graph与问题之间的相似度是考虑了多个特征,具体如下:
根据这些特征得到了S(q,G)S(q,G)S(q,G)。然后本文也是采用的negative sampling + hinge loss
Experiment
数据集:ComplexQuestions、WebQuestions、SimpleQuestions
知识库:Freebase、FB2M
Analysis
首先,作者对比了他们的semantic matching与之前的做法,用的是SimpQ数据集
可以看到比其中两个做法略低,作者的解释也很有意思:“since answering simple questions is not the main goal of this paper”,但是能处理复杂问题不应该对简单问题更加手到擒来么?
消融实验,主要针对的是query graph的embedding
最后作者又比较了不同的semantic相似度计算做法来证明他们的semantic composition更好,baseline是question embedding不加dependency信息,对余弦相似度进行summation,Ssem=∑icos(qp(i),p(i))S_{sem}\ =\ \sum_{i} \cos(q_{p}^{(i)},p^{(i)})Ssem=∑icos(qp(i),p(i))。
Reflection
这篇文章值得学习的地方在于采用深度学习的做法对CQG进行编码,但是感觉存在很多没说清楚的地方:
- pooling的地方不同的qp(i)q_{p}^{(i)}qp(i)代表什么?
- S(q,G)S(q,G)S(q,G)是怎么考虑表中的特征进行计算的?
《Knowledge Base Question Answering via Encoding of Complex Query Graphs》论文笔记相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- SQL-23 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列...
- 3.1.2 内存管理的概念
- Windows下及Mac下的IntelliJ IDEA快捷键
- DM365 u-boot启动分析
- 使用Maven配置JBoss / Wildfly数据源
- Python 数据结构之栈的实现
- 那个男人 ,他带着Vue3来了~
- idea如何修改配置的Tomcat版本
- matlab不能radon变换,Radon变换的理解
- HTTP协议-报文解析
- Visio保存为网页出错
- rethinkdb_如何在Node.js应用程序中使用RethinkDB
- 学校的计算机是作文,未来的电脑学校作文
- 协方差及协方差矩阵的理解
- 运维老师傅:问题排查经验总结
- CRC (Cyclic redundancy check) java 实现
- 深度学习和机器学习之间的区别
- 论文笔记 EMNLP 2020|Event Extraction by Answering (Almost) Natural Questions
- web开发之实现网页在线录音并进行相关搜索
- 微信小程序 超市购物页面
热门文章
- 怎么学习Java编程,Java初学者指南
- 7-16 公路村村通
- 练习3-5 输出闰年
- html5 xmlhttprequest,HTML5 XMLHttpRequest使用
- python中tk表格控件的属性_[python] tkinter简介以及各类属性参数总结
- ironpython使用numpy_为IronPython安装numpy
- JFreeChart初学
- 【数据恢复方法】误删了Word文档如何恢复?
- JavaWeb传统商城(MVC三层架构)的评价模块增删改查(CURD)的详细开发过程以及原理详解
- C++ 学习之查找算法adjacent_find(相邻重复查找)、binary_search(二分法查找)