• 一、语义解析
  • 二、逻辑形式
  • 三、语义解析KB-QA的方法框架
    • 训练分类器
    • 构建词汇表
    • 桥接操作
  • 实验结果
  • 该方法的缺陷

以一个经典的语义解析baseline方法为例,介绍语义解析如何进行KB-QA。该方法来自斯坦福Berant J, Chou A, Frostig R, et al. 的Semantic Parsing on Freebase from Question-Answer Pairs,文章发表于2013年的EMNLP会议。

一、语义解析

语义解析KB-QA的思路是通过对自然语言进行语义上的分析,转化成为一种能够让知识库“看懂”的语义表示,进而通过知识库中的知识,进行推理(Inference)查询(Query),得出最终的答案。

简而言之,语义解析要做的事情,就是将自然语言的问题,转化为一种能够让知识库“看懂”的语义表示,这种语义表示即逻辑形式(Logic Form)。

二、逻辑形式

为了能够对知识库进行查询,我们需要一种能够“访问”知识库的逻辑语言,Lambda Dependency-Based Compositional Semantics ==( Lambda-DCS)==是一种经典的逻辑语言,它用于处理逻辑形式(在实际操作中,逻辑形式会转化SPARQL query,可以在Virtuoso engine上对Freebase进行查询)。如果我们把知识库看作是一个数据库,那么逻辑形式(Logic Form)则可以看作是查询语句的表示。

我们用 z 表示一个逻辑形式,用 k 表示知识库,e 表示实体,p 表示实体关系(有的也称谓语或属性)。简单而言,逻辑形式分为一元形式(unary)和二元形式(binary)。对于一个一元实体 e ,我们可以查询出对应知识库中的实体,给定一个二元实体关系 p ,可以查到它在知识库中所有与该实体关系 p 相关的三元组中的实体对。并且,我们可以像数据库语言一样,进行连接Join,求交集Intersection和聚合Aggregate(如计数,求最大值等等)操作。具体来说,逻辑形式有以下形式和操作:


有了上面的定义,就可以把一个自然语言问题表示为一个可以在知识库中进行查询的逻辑形式。

当自然语言问题转化为逻辑形式之后,通过相应的逻辑语言(转化为SPARQL query)查询知识库就可以得到答案。

三、语义解析KB-QA的方法框架

语法解析的过程可以看作是自底向上构造语法树的过程,树的根节点,就是该自然语言问题最终的逻辑形式表达。整个流程可以分为两个步骤:

  • 词汇映射:即构造底层的语法树节点。将单个自然语言短语或单词映射到知识库实体或知识库实体关系所对应的逻辑形式。我们可以通过构造一个==词汇表(Lexicon)==来完成这样的映射。
  • 构建(Composition):即自底向上对树的节点进行两两合并,最后生成根节点,完成语法树的构建。这一步有很多种方法,诸如构造大量手工规则,组合范畴语法(Combinatory Categorical Grammars,CCG)等等,而我们今天要讲的这篇论文,采用了最暴力的方法,即对于两个节点都可以执行上面所谈到的连接Join,求交Intersection,聚合Aggregate三种操作,以及这篇文章独创的桥接Bridging操作(桥接操作的具体方式稍后会提到)进行结点合并。显然,这种合并方式复杂度是指数级的,最终会生成很多棵语法树,我们需要通过对训练数据进行训练,训练一个分类器,对语法树进行筛选。

自然语言转化为逻辑形式的流程如下图所示:


上图红色部分即逻辑形式,绿色部分where was Obama born 为自然语言问题,蓝色部分为==词汇映射(Lexicon)和构建(Composition)==使用的操作,最终形成的语义解析树的根节点即语义解析结果。

训练分类器

分类器的任务是计算每一种语义解析结果d(Derivation)的概率,作者通过discriminative log-linear model进行modeling,使用Softmax进行概率归一化,公式如下:

pθ(di∣x)=exp⁡{∅(x,di)Tθ}/∑dexp⁡{∅(x,d)Tθ}p_{\theta}\left(d_{i} \mid x\right)=\exp \left\{\emptyset\left(x, d_{i}\right)^{T} \theta\right\} / \sum_{d} \exp \left\{\emptyset(x, d)^{T} \theta\right\} pθ​(di​∣x)=exp{∅(x,di​)Tθ}/d∑​exp{∅(x,d)Tθ}
其中 x 代表自然语言问题,ϕ(x,di)\phi\left(x, d_{i}\right)ϕ(x,di​)是一个从语义解析结果 did_{i}di​ 和 xxx 中提取出来的b维特征向量(该特征向量包含了构造该语法树所有操作的对应特征,每种操作的具体特征之后会提到),θ\thetaθ 是b维的参数向量。

对于训练数据问题-答案对(xi,yi)\left(x_{i}, y_{i}\right)(xi​,yi​),最大化log-likelihood损失函数,通过AdaGrad算法(一种动态调整学习率的随机梯度下降算法)进行参数更新。
O(θ)=∑i=1nlog⁡∑d∈D(x):⟦d.z⟧K=yipθ(d∣xi)\mathcal{O}(\theta)=\sum_{i=1}^{n} \log \sum_{d \in D(x): \llbracket d . z \rrbracket_{\mathcal{K}}=y_{i}} p_{\theta}\left(d \mid x_{i}\right) O(θ)=i=1∑n​logd∈D(x):[[d.z]]K​=yi​∑​pθ​(d∣xi​)

可以看出特征向量的训练实际上是一种弱监督训练(准确的说是一种远程监督,Distant Supervison)。

构建词汇表

词汇表即自然语言与知识库实体或知识库实体关系的单点映射,这一操作也被称为对齐(Alignment)。我们知道自然语言实体到知识库实体映射相对比较简单,比如将“Obama was also born in Honolulu.”中的实体Obama映射为知识库中的实体BarackObama,可以使用一些简单的字符串匹配方式进行映射。

但是要将自然语言短语如“was also born in”映射到相应的知识库实体关系,如PlaceOfBirth, 则较难通过字符串匹配的方式建立映射,这时可以进行统计。直觉上来说,在文档中,如果有较多的实体对(entity1,entity2)作为主语和宾语出现在was also born in的两侧,并且,在知识库中,这些实体对也同时出现在包含PlaceOfBirth的三元组中,那么可以认为“was also born in”这个短语可以和PlaceOfBirth建立映射。

利用ReVerbopen IE system在ClueWeb09(注:该数据集由卡耐基梅隆学校在09年构建,还有一个12年的版本,ClueWeb12)上抽取15millions个三元组构成一个数据集,如(“Obama”, “was also born in”, “August 1961”),可以看出三元组的实体和关系都是自然语言的形式,取出其中的一个三元组子集,对里面的每一个三元组的主语实体和宾语实体通过字符匹配的方式替换为知识库的实体,并使用SUTime对数据进行归一化。

如(“Obama”, “was also born in”, “August 1961”) 经过预处理后转化为 (BarackObama, “was also born in”, 1961-08)。

接着对每一个三元组中的自然语言短语 r1 两边的实体对(entity1,entity2)进行统计,注意,由于自然语言短语 r1 和知识库实体关系 r2 的对应关系是多对多的,比如“was also born in”可能对应PlaceOfBirth,也可能对应DateOfBrith,我们需要对每一个 r1 进行区分,可以通过知识库查询到每一个实体的类型(type),比如1961-08的类型是date而honolulu的类型是place,我们对 r1 两边的实体类型进行查询可以得到主语实体的类型 t1 和宾语实体的类型 t2 ,因此 r1 可以进一步表示为r[t1,t2]r\left[t_{1}, t_{2}\right]r[t1​,t2​],我们对其所在三元组两边的实体进行统计,得到实体对集合F(r[t1,t2])F\left(r\left[t_{1}, t_{2}\right]\right)F(r[t1​,t2​])。

同样的,通过对知识库进行统计,对每一个知识库三元组中的实体关系 r2 也统计其两边的实体,可以得到实体对集合F(r2)F\left(r_{2}\right)F(r2​),通过比较集合F(r[t1,t2])F\left(r\left[t_{1}, t_{2}\right]\right)F(r[t1​,t2​])和集合F(r2)F\left(r_{2}\right)F(r2​)类似Jaccard距离(集合交集元素数目比集合并集元素个数)这样的特征来确定是否建立词汇映射。

作者定义了词汇映射操作的三种特征(用于训练分类器):对齐特征(Alignment features),文本相似度特征(Text similarity features),和词汇化特征(Lexicalized features),具体内容如下表所示:

其中文本相似度特征中的 s2 指 r2 的freebase name。

实际使用中,可以通过词性标注(POS) 和命名实体识别(NER) 来确定哪些短语和单词需要被词汇映射(Lexicon),从而忽略对一些skipped words进行词汇映射。并且,作者还建立了18种手工规则,对问题词(question words)进行逻辑形式的直接映射,如“where,how many”映射为Type.Location 和 Count。

桥接操作

完成词汇表的构建后,仍然存在一些问题。比如,对于go,have,do这样的轻动词(light verb)难以直接映射到一个知识库实体关系上,其次,有些知识库实体关系极少出现,不容易通过统计的方式找到映射方式,还有一些词比如actress实际上是两个知识库实体关系进行组合操作后的结果(actor ∩\cap∩ gender. female)(作者最后提到这个问题有希望通过在知识库上进行随机游走Random walk或者使用马尔科夫逻辑Markov logic解决),因此我们需要一个补丁,需要找到一个额外的二元关系来将当前的逻辑形式连接起来,那就是桥接。

比如 “Which college did Obama go to?”

假设“Obama” 和 “college” 可被词汇映射映射为 BarackObama 和 Type.University, 这里"go to" 却难以找到一个映射,事实上,这里我们需要去寻找一个中间二元关系 b(即Education)使得上面的句子可以被解析为(Type. University ∩\cap∩ Education. BarackObama),如下图所示:

具体来说,给定两个类型(type)分别为 t1 和 t2 的一元逻辑形式 z1 和 z2 ,我们需要找到一个 二元逻辑形式 b ,在 b 对应的实体对类型满足(t1,t2)的条件下生成逻辑形式(z1∩b.z2)\left(z_{1} \cap b . z_{2}\right)(z1​∩b.z2​),这就是桥接,由于这里有类型的限制,所以我们可以在知识库中相邻的逻辑关系中暴力搜索符合条件的二元关系 b 。

作者也为桥接操作定义了相应的特征(为了分类器的训练),定义如下表所示:


对于构建(composition)的其他三种操作,连接Join,求交集Intersection和聚合Aggregate,作者也定义了相应的特征(为了分类器的训练),如下表所示:

实验结果

由于语义解析树的构建方式是指数级的,因此,在训练和测试的时候,作者执行了标准的自底向上的集束分析器(Beam-based bottom-up parser)。在这篇论文之前,KB-QA流行的数据集是由Cai and Yates (2013)构建的Free917,该数据集只包含了917组问题答案对,因此,作者构建了一个更大的benchmark数据集WebQuestion,包含了5810组问题答案对。

作者测试了仅使用Alignment和Bridging以及都使用下的正确率,如下表所示:


作者该论文的语义解析器Sempre进行了开源:https://nlp.stanford.edu/software/sempre/

该方法的缺陷

  • 词汇映射是整个算法有效(work)的基点,然而这里采用的词汇映射(尤其是关系映射)是基于比较简单的统计方式,对数据有较大依赖性。最重要的是,这种方式无法完成自然语言短语到复杂知识库关系组合的映射(如actress 映射为(actor ∩\cap∩ gender. female))。
  • 在答案获取的过程中,通过远程监督学习训练分类器对语义树进行评分,注意,这里的语义树实际的组合方式是很多的,要训练这样一个强大的语义解析分类器,需要大量的训练数据。无论是Free917还是WebQuestion,这两个数据集的问题-答案对都比较少。

参考文献
揭开知识库问答KB-QA的面纱2·语义解析篇

知识库问答KB-QA——语义解析相关推荐

  1. 论文浅尝 | CoRR - 面向复杂知识问答的框架语义解析方法

    论文笔记整理:谭亦鸣,东南大学博士. 来源:CoRR abs/2003.13956 (2020) 链接:https://arxiv.org/pdf/2003.13956.pdf KBQA任务中的语义解 ...

  2. 揭开知识库问答KB-QA的面纱2·语义解析篇

    内容速览 什么是语义解析(Semantic Parsing) 什么是逻辑形式(Logic Form) 语义解析KB-QA的方法框架 实验结果 本期我们从传统方法之一的语义解析(有时也被称为语义分析)开 ...

  3. 语义解析KB-QA的方法框架

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 什么是语义解析(Semantic Parsing) 什么是逻辑形式(Logic Form) 语 ...

  4. 论文浅尝 | AMUSE: 基于 RDF 数据的多语言问答语义解析方法

    来源:ISWC 2017 链接:https://link.springer.com/content/pdf/10.1007%2F978-3-319-68288-4.pdf 本文主要关注基于RDF数据的 ...

  5. 知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍

    什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB)是一个结构化数据库,其中包含形式<主题,关系,对象>的事实集合,每个事实都可以随附所谓的 ...

  6. 5分钟NLP-知识问答(KBQA)两种主流方法:基于语义解析和基于信息检索的方法介绍...

    来源:DeepHub IMBA 本文约1200字,建议阅读5分钟本文介绍了知识问答的两种主流方法. 什么是知识问答 基于知识的问答是以知识库为认知源,在知识库的基础上回答自然语言问题. 知识库(KB) ...

  7. 揭开知识库问答KB-QA的面纱4·向量建模篇

    内容速览 向量建模的核心思想 如何用分布式表达表示答案和问题 如何训练分布式表达 论文实验与总结 本期我们将介绍KB-QA传统方法之一的向量建模(Vector Modeling),我们以一个该方法的经 ...

  8. 揭开知识库问答KB-QA的面纱1·简介篇

    内容速览 什么是知识库(knowledge base, KB) 什么是知识库问答(knowledge base question answering, KB-QA) 知识库问答的主流方法 知识库问答的 ...

  9. 复杂知识库问答最新综述:方法、挑战与解决方案

    ©PaperWeekly 原创 · 作者 | 刘兴贤 学校 | 北京邮电大学硕士生 研究方向 | 自然语言处理 本文是一篇有关复杂知识库问答(Complex KBQA)的综述,主要围绕 Complex ...

最新文章

  1. CentOS下安装JDK7 转载
  2. Excel批量转csv格式
  3. # iOS 一窥并发编程底层(一)
  4. Linux /dev目录详解和Linux系统各个目录的作用
  5. 【渝粤教育】 国家开放大学2020年春季 1107传感器与测试技术 参考试题
  6. 的文件夹结构_小白指南:WordPress文件及目录结构解析
  7. iOS开发--添加定位功能
  8. Android单元测试 - 如何开始?
  9. 计算机英语作文初中,初中关于电脑的英语作文
  10. Mapbox简易入门教程
  11. guid主分区表损坏如何处理_什么是GPT或GUID分区表
  12. jQuery入门(一)--jQuery中的选择器
  13. 工作流系统之四十 抄送功能的实现
  14. 深入理解卷积网络的卷积
  15. Fortran中输出Tecplot格式
  16. 目标检测的国内外研究现状
  17. Java—泛型、内部类、多继承
  18. 读此一席话,胜读十年书:最牛情场职场语录大全
  19. intel realsense 深度相机深度图像处理API总结
  20. 生信常用分析图形绘制03 -- 富集分析圈图

热门文章

  1. 【2019-游记】中山纪念中学暑期游Day3
  2. 深度剖析CMOS、FinFET、SOI和GaN工艺技术
  3. 波特率、比特、字、千字节、兆、G之间转换
  4. 七夕节·烈火英雄·观后感
  5. 英雄联盟怎么解除小窗口_英雄联盟手游亚索怎么操作-英雄联盟手游亚索操作攻略...
  6. 豆豆趣事[2013年06月]
  7. JAVA面向对象(2)
  8. shader编程-三维场景下SDF建模,平滑交集、平滑并集、平滑差集(WebGL-Shader开发基础11)
  9. 算法与数据结构07:前缀树,计数排序与桶排序
  10. 新品周刊 | LINE FRIENDS李宁推出联名系列;FILA推出全新高级运动羽绒系列