【论文笔记】Semantic Parsing on Freebase from Question-Answer Pairs

来源:互联网 发布:国家信安全与网络 编辑:程序博客网 时间:2024/05/01 12:23

一、概要
  该文章发于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进行解析得到logical forms,在通过查询知识库得到答案y。
  其中E表示实体集(如:BarackObama),P表示属性集(如:PlaceOfBirth),知识库K是三元组(e1,p,e2)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.
  ②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
  ③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= {e1E:e2.(e1,e2)[b]Ke2[u]K}.
  ④Intersection: If u1andu2 are both unaries, then u1u2 (e.g:Profession.Scientist ⊓ PlaceOfBirth.Seattle) denotes set intersection: [u1u2]K= [u1]K[u2]K.
  Aggregation: If u is a unary, then count(u) denotes the cardinality: [count(u)]K= {|[u]K|}.
  一个例子:句子”number of dramas starring Tom Cruise“使用λ-DCS可以简单的表示为:count(Genre.DramaPerformance.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 R1 (e.g:“born in”[Person,Location]) 和 predicates R2(e.g., PlaceOfBirth),对于每一rR1R2,我们建立出现在r两端的实体对集合 F(r), (e.g:F(“born in”[Person,Location]) = {(BarackObama, Honolulu), … },之后词汇表的生成正是基于两集合的交集情况来判断是否建立映射,如下图。

这里写图片描述

  注意到“was also born in”可能映射到PlaceOfBirth或者DateOfBrith,所以我们需要对r1进一步扩展,根据实体的类型(type)进行划分,即对于实体对(e1,e2),如果e1(e2)的类型是t1(t2),那么划分集可以表示为F(r[t1,t2]),例如: (BarackObama, 1961) 加入到 F (“born in”[Person, Date])中,类似的,同样对知识库进行统计得到F(r2)
  在词汇映射这里本文提取的三个类型的特征用来训练前文提到的分类器,分别为:对齐特征(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.UniversityEducation.BarackObama),如下图:

这里写图片描述

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

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

pθ(d|x)=exp((x,d)Tθ)dD(x)exp((x,d)Tθ)

  其中x代表输入的自然语言问题,(x,di)是一个从语义解析结果di和x中提取出来的b维特征向量,θ是b维的参数向量。对于训练数据问题-答案对(xi,yi),最大化log-likelihood损失函数,通过AdaGrad算法(一种动态调整学习率的随机梯度下降算法)进行参数更新。

这里写图片描述

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

这里写图片描述

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

五、个人思考
  ①可以发现本文的方法涉及到了非常多的传统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

阅读全文
0 0