一、概要
  该文章发于EMNLP 2013,作者提出训练一个语义解析器(semantic parser),基于该语义解析器进行KBQA(knowledge base question answering),具体步骤是语义解析器把输入问题解析为logical forms,再基于这种结构化的表达从知识库(knowledge base)中寻找答案。其中面临的困难的怎么从问题句子中降低可能的logical predicates,作者提出了mapping from phrases to predicates和bridging operation两种方法进行解决。

二、模型方法

2.1 任务介绍
  在给定的知识库K和训练集question-answer pairs{(xi,yi)ni=1(x_{i} , y_{i} )^{n}_{i=1}}下,训练出一个语义解析器,然后对新问题x进行解析得到logical forms,在通过查询知识库得到答案y。
  其中E表示实体集(如:BarackObama),P表示属性集(如:PlaceOfBirth),知识库K是三元组(e1,p,e2)∈E×P×E(e_{1}, p, e_{2})∈ E × P × E集合(如:BarackObama, PlaceOfBirth, Honolulu))。

2.2 Logical forms
  Logical forms是在知识库中的一种查询语句,其中Lambda Dependency-Based Compositional Semantics ( Lambda-DCS)是一种经典的逻辑语言,它用于处理逻辑形式(在实际操作中,逻辑形式会转化SPARQL query,可以在Virtuoso engine上对Freebase进行查询)。
  逻辑形式分为一元形式(unary)和二元形式(binary)。比如对于一个一元实体e,可以查询出对应知识库中的实体,给定一个二元实体关系p,可以查到它在知识库中所有与该实体关系p相关的三元组中的实体对。除此之外,还可以跟数据库语言一样,进行连接Join,求交集Intersection和聚合Aggregate(如计数,求最大值等等)操作。具体来说,逻辑形式(符号为z)有以下形式和操作:
  ① Unary base case: If e ∈ E is an entity (e.g:Seattle), then e is a unary logical form with [z]K=e [z]_{K} = {e}.
  ②Binary base case: If p ∈ P is a property (e.g:PlaceOfBirth), then p is a binary logical form with [p]K=(e1,e2):(e1,p,e2)∈K.2[p]_{K} = {(e_{1}, e_{2}) : (e_{1}, p, e_{2}) ∈ K}.^{2}
  ③Join: If b is a binary and u is a unary,then b.u (e.g:PlaceOfBirth.Seattle) is a unary denoting a join and project: [b.u]K[b.u]_{K} = {e1∈E:∃e2.(e1,e2)∈[b]K∧e2∈[u]Ke_{1} ∈ E : ∃e_{2}.(e_{1}, e_{2}) ∈ [b]_{K} ∧ e_{2} ∈ [u]_{K}}.
  ④Intersection: If u1andu2u_{1} and u_{2} are both unaries, then u1⊓u2u_{1} ⊓ u_{2} (e.g:Profession.Scientist ⊓ PlaceOfBirth.Seattle) denotes set intersection: [u1⊓u2]K[u_{1}⊓u_{2}]_{K}= [u1]K[u_{1}]_{K} ∩ [u2]K[u_{2}]_{ K}.
  Aggregation: If u is a unary, then count(u) denotes the cardinality: [count(u)]Kcount(u)]_{K} = {|[u]K||[u]_{K}|}.
  一个例子:句子”number of dramas starring Tom Cruise“使用λ-DCS可以简单的表示为:count(Genre.Drama⊓Performance.Actor.TomCruise)count(Genre.Drama ⊓ Performance.Actor.TomCruise).

2.3 模型框架
  假设给出一个句子x,那么解析器将会自底向上地构造语法树,构建出所有可能的derivations D(x),对于每个derivation d ∈ D(x) 都是一棵树,并且每棵树的根节点就是我们想要的logical form d.z,如下图:

  其中“Where was Obama born?”是输入问句,蓝色部分为词汇映射(Lexicon)和构建(Composition),并且这里的直接跳过了was和?两个词,整个过程可以分为两部分:
  ①词汇映射(lexicon mapping):将单词或者是自然语言短语映射到知识库中的实体或知识库实体关系所对应的逻辑形式,用来构造底层的语法树节点,该过程可以通过构造一个词汇表(Lexicon)来完成这样的映射。
  ②构建(Composition):这个过程就是开始自底向上对树的节点进行两两合并,最后生成根节点,即:logical form。这一步有很多种方法,诸如构造大量手工规则,组合范畴语法(Combinatory Categorical Grammars,CCG)等等,本文采用的是即对于两个节点都可以执行上面所谈到的连接(Join),求交(Intersection),聚合(Aggregate)三种操作,以及Bridging操作进行结点合并。所以最终会生成很多棵语法树,最后我们训练一个分类器,在构建的语法树选出最佳的语法树。
  由于在知识库中存在大量的property,所以怎样使输入问题映射生成的predicates集合是可管理的,简而言之就是尽量简单又少的,作者提出了两个策略,分别为构建词汇表和bridging operation。

2.4 Alignment
  词汇表即自然语言与知识库中的实体或实体关系的单点映射,这一操作也被称为Alignment,直觉上如果 一个phrase和知识库中的predicate同时多次出现在两个实体的中间,那么我们可以 认为这个phrase可以映射为该predicate。
  为此我们构建了两个集合,分别为phrases R1R_{1} (e.g:“born in”[Person,Location]) 和 predicates R2R_{2}(e.g., PlaceOfBirth),对于每一r∈R1∪R2r ∈ R_{1} ∪ R_{2},我们建立出现在r两端的实体对集合 F(r), (e.g:F(“born in”[Person,Location]) = {(BarackObama, Honolulu), … },之后词汇表的生成正是基于两集合的交集情况来判断是否建立映射,如下图。

  注意到“was also born in”可能映射到PlaceOfBirth或者DateOfBrith,所以我们需要对r1r_{1}进一步扩展,根据实体的类型(type)进行划分,即对于实体对(e1,e2)(e_{1},e_{2}),如果e1(e2)e_{1}(e_{2})的类型是t1(t2)t_{1}(t_{2}),那么划分集可以表示为F(r[t1,t2])F(r[t_{1},t_{2}]),例如: (BarackObama, 1961) 加入到 F (“born in”[Person, Date])中,类似的,同样对知识库进行统计得到F(r2)F(r_{2})。
  在词汇映射这里本文提取的三个类型的特征用来训练前文提到的分类器,分别为:对齐特征(Alignment features),文本相似度特征(Text similarity features),和词汇化特征(Lexicalized features),如下:

2.5 Bridging
  虽然Alignment可以覆盖到大多数的predicates,对于很多表达比较弱或者含蓄的词难以达到做到,比如“What govern- ment does Chile have?”中的have这样的light verb问题,以及有些知识库实体关系极少出现,不容易通过统计的方式找到映射方式,还有一些词比如actress实际上是两个知识库实体关系进行组合操作后的结果(actor ∩∩ gender.female)。这就需要找到一个额外的二元关系来将当前的逻辑形式连接起来,那就是桥接(Bridging)。
一个例子:加入存在句子“Which college did Obama go to?”,假设“Obama” 和 “college” 可被词汇映射映射为 BarackObama 和 Type.University, 这里”go to” 却难以找到一个映射,事实上,这里我们需要去寻找一个中间二元关系b(即Education)使得上面的句子可以被解析为(Type.University∩∩Education.BarackObama),如下图:

  通俗的说,Bridging就是给定两个类型(type)分别为t1t_{1}和t2t_{2}的一元逻辑形式z1z_{1}和z2z_{2},我们需要找到一个二元逻辑形式b,在b对应的实体对类型满足(t1t_{1},t2t_{2})的条件下生成逻辑形式(z1z_{1}∩∩b.z2b.z_{2}) ,这就是桥接,由于这里有类型的限制,所以我们可以在知识库中相邻的逻辑关系中暴力搜索符合条件的二元关系b。
  本文在Bridging和composition的其他三种操作,Join,Intersection以及Aggregate,作者也定义了相应的特征,如上图所示。

2.6 Modeling
  基于以上提取的特征,本文使用discriminative log-linear model来计算每一种语义解析结果d(Derivation)的概率,最后选出概率最大结果。

pθ(d|x)=exp(∅(x,d)Tθ)∑d′∈D(x)exp(∅(x,d)Tθ)pθ(d | x)=\frac{exp{( \varnothing(x,d)^{T}}\theta)}{\sum_{d^{'}∈D(x)}exp({\varnothing(x,d)^{T}}\theta)}
  其中x代表输入的自然语言问题, ∅(x,di)\varnothing(x,d_{i})是一个从语义解析结果 did_{i}和x中提取出来的b维特征向量, θ\theta 是b维的参数向量。对于训练数据问题-答案对 (xi,yi)(x_{i},y_{i}),最大化log-likelihood损失函数,通过AdaGrad算法(一种动态调整学习率的随机梯度下降算法)进行参数更新。

三、实验结果
  在训练和测试的时候,本文使用了自底向上的集束分析器(Beam-based bottom-up parser),在这篇论文之前,KB-QA流行的数据集是由Cai and Yates (2013)构建的Free917,该数据集只包含了917组问题答案对,因此,作者构建了一个更大的benchmark数据集WebQuestion,包含了5810组问题答案对。实验结果如下:

四、结论与思考
  本文的工作主要涉及到两个方面的交叉,第一个是语义学习模型,第二个工作自然语言和开放域数据库之间的连接。最后作者认为尽管Freebase具有数千种特性,开放信息提取和相关的问答系统可以处理更大的开放性的一组属性,其中存在的缺点主要是噪声和规范化难度使得难以执行可靠的组合,从而消除了语义解析的一个主要优点,但是通过使用随机游走或马尔可夫逻辑来扩展谓词。这将允许我们将原子词(例如“wife)映射到复合谓词(例如,λx.Marriage.Spouse。(Gender.Female⊓x))λx.Marriage.Spouse。(Gender.Female⊓x))。学习这些复合谓词将大大增加逻辑形式的可能空间,本文提出的方法,通过远监督和桥接进行调整可以为这个问题提供一些牵引力。

五、个人思考
  ①可以发现本文的方法涉及到了非常多的传统NLP的做法,特别是在构建句法树的做法上,由于组合的方式很多,有可能导致最后的分类结果出现问题。

参考文献
①Jonathan,Berant Andrew,Chou Roy Frostig.Semantic Parsing on Freebase from Question-Answer Pairs
②https://zhuanlan.zhihu.com/p/25759682。
③代码链接: http://nlp.stanford.edu/software/sempre/。
④代码链接:https://github.com/ayoungprogrammer/nlquery

【论文笔记】Semantic Parsing on Freebase from Question-Answer Pairs相关推荐

  1. 语义分析(Semantic Parsing)调研

    semantic parsing 调研综述 任务说明 semantic parsing,语义解析,从名称上来说,是一种相对于语法分析级别上更为高层的分析.具体来说,通常指的是将自然语言转换成为机器可以 ...

  2. ACL2021论文笔记——Constructing Multi-Modal Dialog Dataset by Replacing Text with Semantically Relev Image

    论文链接: Constructing Multi-Modal Dialogue Dataset by Replacing Text with Semantically Relevant Images ...

  3. 论文笔记:HIE-SQL:History Information Enhanced Network for Context-Dependent Text-to-SQL Semantic Parsing

    论文笔记:HIE-SQL: History Information Enhanced Network for Context-Dependent Text-to-SQL Semantic Parsin ...

  4. 论文笔记:PICARD: Parsing Incrementally for Constrained Auto-Regressive Decoding from Language Models

    论文笔记:PICARD: Parsing Incrementally for Constrained Auto-Regressive Decoding from Language Models 目录 ...

  5. SParC: Cross-Domain Semantic Parsing in Context 论文解读

    前言:SParC是一个基于 Spider 数据集扩展的有上下文依赖的对话是 Text-to-SQL 数据集.不同于 Spider 一句话 对应一个最终 SQL,SParC 通常需要通过多轮对话来实现用 ...

  6. 论文笔记:CQR-SQL: Conversational Question Reformulation Enhanced Context-Dependent Text-to-SQL Parsers

    论文笔记:CQR-SQL: Conversational Question Reformulation Enhanced Context-Dependent Text-to-SQL Parsers 目 ...

  7. 《Knowledge Base Question Answering via Encoding of Complex Query Graphs》论文笔记

    Knowledge Base Question Answering via Encoding of Complex Query Graphs 这篇文章是上交和阿里于2018年发表在ACL上,主题依然是 ...

  8. 【论文笔记】PSEUDOSEG: DESIGNING PSEUDO LABELS FOR SEMANTIC SEGMENTATION

    论文笔记 1.论文题目 2.作者及研究单位 3.摘要 4.简介 (1)这篇论文针对什么问题展开的研究 (2)已有工作是如何解决这些问题的(已有工作存在什么不足) (3)这篇论文是如何做的(如何弥足已有 ...

  9. 论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance

    论文笔记:Straight to the Tree: Constituency Parsing with Neural Syntactic Distance 目录 论文笔记:Straight to t ...

  10. Check It Again: Progressive Visual Question Answering via Visual Entailment 论文笔记

    Check It Again: Progressive Visual Question Answering via Visual Entailment 论文笔记 一.Abstract 二.引言 三.R ...

最新文章

  1. 革命就是请客吃饭(案例分析吧)
  2. 性能测试应用领域分析
  3. 每天数十亿次请求的应用经验分享,值得参考!
  4. 情人节来了!没有50W彩礼,女朋友被强行拖走。。。
  5. yum安装odbc驱动linux,在CentOS上离线配置PostgreSQL ODBC数据源
  6. 前端学习(1607):跨域请求
  7. php 501解决办法,PHP 使用错误处理解析
  8. python判断正数负数_python判断正负数方式
  9. docker使用问题总结
  10. 变态的儿童国学教育与孔子真正的教育之道
  11. 字符串流 ostrstream 和 istrstream
  12. 使用ffmpeg转换webm格式到MP4格式
  13. 一生之书《悉达多》接受这个世界,爱它,属于它
  14. asp.net914-自驾游网站的设计与实现
  15. html 在线测试 鱼缸,新做的草缸教程,看1遍你也会做,鱼缸造景其实很简单
  16. PHP Yar - 学习/实践
  17. 【TensorFlow】DNNRegressor 的简单使用
  18. 3D风车动画CSS HTML代码
  19. [java]深入剖析Java性能监控调优视频教程
  20. STM32 MPU6050与匿名上位机通讯(V2.6版)

热门文章

  1. 2021-10-06 BGP错误配置导致脸书网络瘫痪
  2. 通过css布局实现去掉window.print()打印界面的页眉页脚
  3. 部署laravel项目报错:No input file specified.的解决办法
  4. 关于骨骼(Skeleton)、绑定(Rigging)、蒙皮(Skinning)、刷权重(Weight Painting)那些事儿(9月3日 更新)
  5. 人物拼图java_JAVA实现拼图游戏
  6. 算法注册机编写扫盲---第二课
  7. 算法注册机编写扫盲---第三课
  8. 工作流-Activiti7-基础讲解
  9. D - Plane 航空管制2 HYSBZ - 2535
  10. 国赛培训——规划论——线性规划