热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于kbqa的复旦大学论文解释learningquestionansweringoverQAcorporaandknowledgebases(一)

由于我利用了大牛的论文复现了代码,但是很多同学都不太懂,由于本人代码规范不是太好,并且最近太忙所以一直没有整理这方面的,所以

        由于我利用了大牛的论文复现了代码,但是很多同学都不太懂,由于本人代码规范不是太好,并且最近太忙所以一直没有整理这方面的,所以抽出时间,准备再重新过一遍,然后看是否能够基于本篇论文做更多的贡献,然后把代码从头梳理一遍。

       那么从论文开始进行编辑。


1. abstract 摘要

        问答已经变成一个比较流行的方式,人类从billion数据集中获取知识的方式。与网页搜索不同的是基于知识库的QA更加精准并且答案简洁,并且提供了一个自然语言的理解,映射为一个从知识库结构化查询。最大的挑战在于,同一种意思,用户可以有十几种不同的问法,之前的方法由于他们的表示方法有一定的限制:

        基于规则的方法知识能够理解小部分数据集, 虽然基于关键字或基于同义词的方法不能完全理解这些问题。在这篇文章,我们提供了一个新的问题表示方法:template(其实并不是新的方法),通过a billion 知识库和a million scale QA 语料(非常重要)。例如:针对一个有关城市的人口问题,我们学习一个模板what's the population of $city ?(这可以理解为一个问题的模板。)how many people are there in $city ,在这篇论文中,一共对2785个意图学习了27 million 模板(可见非常多的问题模板对应了一个意图)基于这些模板,我们的系统能够有效的回答二元事实性问题,针对于一系列复杂的问题,由一系列的二元事实问题组成也能够很好的回答(本次代码也只针对二元事实问题做了实验,也只对二元事实问题作解释,原因是这篇论文对于实际应用,不太现实)。


2.introduction介绍

         QA有大量研究,一个QA一般被设计为回答一些特定的问题[5].其中最重要的一种类型问题就是事实性问题,问的是一些基于实体的,问一些有关实体的一个属性。例如:how many people are there in Honolulu,如果我们能够回答BFQs,那么我们能够一些其他类型问题,例如 :which city has the 3rd largest population;

         基于知识库的QA有一个长的历史,近些年,一些非常大的知识库变得可用例如:google 的graph,freebase,YAGO2,大大增加了QA  system的重要性以及商业价值。这些知识库大部分采用的RDF的数据格式,他们包含了billion 的SPO(subject,predict,objects).

figure1: 一个简单的知识库(这里dob pob分别代表date of birth 和place of birth),sponse of 意图是由多个边表示:name-》marriage-person-name。


2.1` challenges 挑战

     给定一个问题,和一个知识库,我们面临这两个挑战:第一个是问题的表示(表示设计),第二个是怎么把表示映射到结构化查询中(语意匹配);


   2.11representation designment(表示设计)

       

        一般问题描述了上千种意图,一种意图有上千种问题的模板,例如表1的a和b问的都是有关于Honolulu的人口数量,但是它们表达的方式确实不同,那么QA系统需要对不同的questions表示成不同的representation。(1)那么这样的表示必须能够鉴别问题有相同的语义.(2)能够区别不同的意图。在QA语料,我们利用了27M问题模板,2782个意图,所以处理这些意图是一个非常大的挑战。


     2.12semantic matching(语义匹配)

        弄清楚问题表示之后,我们需要把表示映射为结构化的查询。对于FBQ结构画的查询主要依赖与知识库的predicate,由于predicate与representation之间的gap,找到这样的mapping非常重要,对于表1的例子a的语义与population相同。更有甚者,二元关系并不是单边关系,例如spouse of 用路径表达marriage-->person-->name对于知识库,会发现超过98%的意图对应这复杂的结构关系。

        因此关键的问题通过一个合适的问题表示方式,构建一个知识库的predicate与自然语言问题之间的映射。


2.2Previous Works

       根据之前的基于QA系统表示问题的,分为三类:基于规则的、基于关键词的、synonym based(同义词的)。


      1.基于规则 

         基于规则的是通过用人工的结构话规则吧问题映射为predicate。虽然能够获得非常搞得准确率,但是有着非常低的召回率。人为对大量问题创建规则不可行的。


      2.基于关键词

        关键词匹配是利用问题中的关键词与predicate进行匹配,这样的模型可能能够回答简单的问题,例如在table1中的b在问题中鉴别出来population映射到知识库中的predicate的population。但是一般情况很难用这种方式找到类似的mapping,在知识库中的一个predicate不能够匹配多个自然语言的表示,例如我们不能够匹配a或者c


     3.基于语法

         基于语法的通过考虑谓词的同义词来扩展关键词,他们首先对每一个predicate生成同义词,然后从questions与同义词之间找到mapping,DEANNA是一个典型的基于同义词的-+QA问答系统。主要的思想是把QA降低到评估谓语predicate与与候选同义词之间的相似性。例如question  C,可以得到答案通过在问题中number of people与population是同义词,很显然可以通过Wikipedi-
a.来计算他们之间的语义相似性。gAnser能够获取更高的精度通过学习复杂的结构,但是所有的这些方法不能够回答问题a,很显然没有一个how many people are there 与population相关,how many people在不同的场景下有不同的意思。在how many people live in Honolulu ,它表示population,在how many people visit New Yoker each year ,他表示旅客的数量。

          一般的上述方法并不能解决以上挑战,基于规则的方法,需要付出人类难以达到的标记努力,基于关键词和基于同义词的方法,一个单词或者一个短语并不能完整的表示问题的语义,我们需要完整的理解整个句子的意思。如果一个问题是一个复杂的问题或者映射到一个复杂的结构知识库,对于之前的方法是非常困难的。例如e和f。


2.3 overview of our approach

   

如图所示,为了回答一个问题,首先represent问题,为了表示一个问题,首先应该吧自然语言的questions转换威意图representation,这个表示能够获取语义以及问题的意图,然后对于每一个表示,怎么映射到RDF查询基于一个知识库。因此我me们关键的工作在即internal representation,表示为templates。

        REpresenting questions by templates 有关于同义词在a中的缺陷激励我们用templates进行表示,例如how many people are there in $city? 是a的一个模板。不管$city是Honolulu 还是其他的城市。这个模板总是有关于population的问题。

        那么问题的关键在于怎么把一个问题映射到已经存在的templates心中。为了得到这个我们把问题中的entity替换成对应的concepts,例如图2,Honolulu将会用$city替代,这个方法虽然不算抬起眼,但是是通过一个概念化的机制来获得[25,17],会自动的对输入进行消岐,(所以例如apple的项将会被company替代在what is the headquarter of apple这个句子中)。这个概念化的机制是基于一个大的语义网络(Probase[32]),这个女网络涵盖了millions of 概念。所以我们有足够的granularity来表示所有类型的问题。

          the templates 对于复杂的问题也非常有效,用模板我们能够吧复杂的问题分解威一系列的简单问题,每一个简单的问题对应了一个predicate,对问题f进行分享,我们把问题分解为Barack Obama's wife 和 when was Michele Obama born?对应了marriage-->person-->name 和 dob,第一个问题嵌套在第二个问题中,we know dob modifies marriage → person → name,
and marriage → person → name modifies Barack Obama.

        Mapping  template to predicates   我们学习模板和映射到对应的predicates用的是Yahoo! Answers.这个问题很像语义解析。大部分语义解析是通过同义词。为了构造谓语与predicate之间的关系模型。SEMPRE [2] uses一个二分图,概率组合分类语法。他们仍然是基于同义词的方法,mapping`从template到predicate是n:1的关系,每一个predicate有多个对应关系。在我们的工作,我们一共学习了27126355个模板针对2782个predicate。大量保证了基于模板的QA的广泛覆盖。

          学一个模板的predicate的过程如下,首先对于训练问答对的每一个,我们提取出来对应的实体和对应的value。通过查找连接实体与value的predicate从知识库中。我们的基本思想是,如果most的模板映射到同一个predicate,那么就用这些predicate来映射这一个predicate,能够利用一定方法计算template到predicate之间的特定概率。映射到复杂知识库结构的学习模板采用类似的过程,唯一不同的是我们发现了扩展predicate对应了多个边,映射了一个实体到一个特定的value。


      2.4Paper Oraganization

         在第2章介绍KBQA的基本综述,这篇论文的主要贡献在于从QA语料中学习templates,所有的先关技术都是围绕着它,第3章展示了在线回答问题基于template,第4章详细说明了利用模板对predicate的推断,其中关键步骤就是利用模板。第五章是扩展了我们的方法回答复杂的问题。第6章是扩展了模板推断复杂的问题。提出的实验在第7章,2


2 SYSTEM OVERVIEW

           在这一章,我们介绍知识库的背景和KBQA的综述,如表2:列出了文章的符号

           

         Binary factoid QA 我们主要集中在的是二元事实性问答,意思就是问题问的是一个针对一个实体的制定属性。例如咋表1中的问题除了问题f。

        RDF knowledge base      给定一个问题,我们寻找答案在一个RDF知识库中,一个RDF知识库是一个有三元组构成的(s,p,o),其中s,p,o代表主语,谓语,宾语。图1展示了一个简单的RDF通过一个有向图展示的知识库。每一个(s,p,o)被表示成从s到o的有向边用p进行标记。例如,一条边从a到1961用dob表示了一个三元组(a,dob,1961),代表了奥巴马的出生日期。

            QA corpora   我们学习问题模板从Yahoo! Answer中,包含了41millionQA对,QA语料表示为,其中,并且提取的answer在回复中包含,表3展示了其中几个例子,.

             Templates    通过从问题中替换实体e变成实体e的类别c,得到问题的模板,表示模板为,一个问题可能包含多个实体,每一个实体可能包含多个类别,我们获取实体的概率分布通过基于上下文的概念化[32],其实论文就是利用了这篇论文的结果,在微软的网站上,并没有啥技术含量。例如在表3的问题q1包含一个实体a,由于a含有两个类别$person  $politicain,那么可以获取两个template,When was $person born?   When was $politician born?

System Architecture .   图3展示QA系统的流程,主要包含两个过程


   • Online procedure

          在线过程,当一个问题进来时,首先解析并且分解成一系列二元事实问题,分解过程在第5章解释,对于你每一个二元事实问题,我们采用概率推断的方法来寻找他的答案,,在第三章介绍,推断依赖于谓词的模板分布,例如:p(p|t),这个学习在线学习。


  • Offline procedure:  

          离线的任务就是学习template到predicate之间的映射,用P(p|t)进行表示,在第4章进行讲解,扩展predicate在第6章进行解释,所以我们可以学习更加复杂的predicate的模板(eg,marriage-->person-->name在图1)


3.OUR APPROACH: KBQA

        在这一章,用概率的方式格式化我们的问题在3.1章,在3.2章将详细介绍大部分的概率估计,剩下的p(p|t)将在第4章进行介绍

我们在3.3详细介绍在线处理过程。


 3.1  Problem Model

         KBQA学习问答是基于QA语料和一个知识库,我们强调了从问题的意图到知识库的谓语的不确定性[18]。例如问题"where was  Brack from" 至少与FReabase 的两个predicate相关,1:place of birth,2:place lived location。在DBpedia 中who founded $organization ? 与两个谓语先关founder 和father

         问题定义1 :给定一个问题q。我们的目标就是寻找一个最大概率的答案v(v 是一个简单的value):

                                                                                                                                              (1)

   

        为了阐述给定一个问题,怎么能够占到答案,我们提出了一个生成模型,开始与给定一个问题q,首先通过P(e|q)概率分布鉴别出实体,然后根据问题和实体我们产生的template分布概率P(t|q,e),谓语p仅仅依赖与t,所以我们可以根据P(p|t) 来推断p,最后根据实体e和p产生答案v根据P(v|e,p),v可以直接返回也可以    ,展示这些变量之间的依赖在图4,基于生成模型我们计算P(q,e,t,p,v)基于公式2,那么公式1就减少为公式3

                                                                                             (2)

                                                                                                                                                      (3)

                                                           

        例子1来解释这样的计算答案的过程,考虑生成过程()在表格3,由于在问题仅有一个实体“Honolulu”,我们产生实体节点通过=1,把Honolulu概念话为city,我们产生了一个模板how many people are there in $city?.注意到模板对应的谓语总是population,不管指定哪个城市,所以我们通过P(p|t)预测出是population,然后通过“Honolulu”和“population”,则值是390k可以非常容易的从知识库中找到。

       Outline of the following subsections   

        给定上边的目标函数,我们的问题就减小为计算公式(2)的每一项的概率,P(p|t)通过离线在第四章进行讲解,可以通过现成的解决方案直接计算其他概率项,(例如命名实体识别(这个是错误的,实体识别决定了这个系统的好坏),和概念化),我们将在3.2章阐述这些概率,在3.3章阐述在线过程。


3.2 Probability Computation

        这一章我们计算公式(2)的每一个概率,除了p(p|t).

        Entity distribution

        P(e|q)是从问题中鉴别实体,我们鉴别实体包含两个条件,实体在问题中;并且他在知识库中,他们用的是斯坦福的命名实体识别,很明显具有一定的局限性,因为命名实体识别是整个系统的关键,但是斯坦福只能识别有限的实体类型,然后我们检查实体名称是否在知识库中,如果有多个实体,仅仅简单的给定一个均匀概率,很明显有事不合乎情理的。

        在4.1章我们已经提取出来了,对于问题和答案,其中values是从答案中获取,其实并不需要解释了,这里作者就是用的斯坦付的命名实体方法,没啥技术含量。

         Template distribution

         P(t|q,e) 一个模板类似于When was $person born?.换句话说,就是用问题中的实体的类别替代实体,用表示用实体e的类别c替代实体因此我们有:

                                                                                                                                                   (5)

其中,表示基于q的上下文的实体e的类别分布,在这篇文章中利用的是概念化方法[25]来计算P(c|q,e),其实文章是直接调用的微软的api接口,应为微软这个是利用大量数据获得概念化概率,所以文章这几个概率,比较水。

        Value (answer) distribution

           p(v|e,p) 对于实体e和一个实体的谓语,基本上已经找到了答案,所以这里说的都是废话,基本上。


3.3     Online Procedure

      在在线过程,给定一个问题q,可以根据公式7,返回最大的答案

                                                   (7)

右上可知,本论文的基本核心就在第四章,其他的概率有点扯。


4.PREDICATE INFERENCE

         这一章将会介绍怎么利用template推断出谓语来评估,我们把作为参数,用最大似然估计(ML)来估计,首先我们构造观察数据的最大似然,(例如QA对语料)在4.1,然后评估参数在4.2,以及算法实现在4.3.


4.1 Likelihood Formulation

       我们并不是直接构造观察数据的最大似然估计,首先构造一个简单的案例,question-entity-value的三元组的似然是从QA对中提取而来,然后构建两个似然之间关系,间接之间的关系很好goujian,在QA中的答案是一个包含确切答案和其他单词的复杂的自然语言句子。大部分单词对于表示谓语以及对于观察带来噪声。另外一方面在生成模型中构建一个完整的答案是困难的,尽管在生成模型中构建一个答案非常容易。

         首先我们从QA语料中抽取出来entity-value对,在4.1,允许构建一个question-entity-value三元组的似然函数(X),然后构建QA语料与X的似然关系,在E-q(13)4.1.2章。


4.1.1   Entity-Value Extraction

        我们的原则是从answer中提取values,以至于entity&value在知识库中有对应的关系。基于这样的原则我们从来鉴别entity-value对如下:

                                                                                                (8)

其中是子串,阐述例子2.

        example 2 在表3的,一些词并没有用例如(the ,was,in ),我们提取有效数值1961,注意到Brack Obama和1961是由pob进行连接在图1可以看出来,我们也提取出来噪声politician,接下来就会如何在下面的过程进行细化过滤的过程

       Refinement of ,我们需要过滤噪声对,例如:e.g. (Barack Obama, politician)在例子2中直觉就是,正确的答案和问题应该有same 类别。在这里一个答案的类别意味着回答问题类型的期望,这已经作为问题分类的问题[22],We use the UIUC taxonomy [20].对于我们使用的方法在文献[22]中提到,对于value的类别我们参考他的谓语的类别,罪域谓语的类别一般是手工标记的,由于谓语一般只有几千个,所以是可行的。


4.1.2 likelihood function

      经过entity&value从q,a中提取,每一个QA对()转移成一个问题,和一个entity-value的集合,假设这些实体value对的独立性,QA对的观察概率如公式9所示,因此我们计算语料QA对的似然函数如公式10.

                                                                 (9)

                                                                                 (10)

假定每一个问题的生成有相同的概率,例如

               

                                                                                       (11)

其中可以认为是一个常数,由于训练数据集是一定的,所以应该可以作为常数,等式11意味着与question-entity-value三元组成比例,利用X表示为从QA语料中提取的三元组:

                                                                (12)

 

通过假设每一个位图有一个等价的概率产生,例如,我们有如下:

 

请看基于kbqa 的复旦大学论文解释 learning question answering over QA corpora and knowledge bases(二)

 

      

 

        

 

.

 

     


 



 


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
author-avatar
小遥2502881765
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有