热门标签 | 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(二)

 

      

 

        

 

.

 

     


 



 


推荐阅读
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 探讨如何修复Visual Studio Code中JavaScript的智能感知和自动完成功能在特定场景下无法正常工作的问题,包括配置检查、语言模式选择以及类型注释的使用。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文探讨了在Django项目中,如何在对象详情页面添加前后导航链接,以提升用户体验。文章详细描述了遇到的问题及解决方案。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
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社区 版权所有