[book Reading] Question Answering 段楠 周明

Posted by DecstionBack on November 26, 2018

第1章 概述

历史沿革

智能问答(Question Answering, QA)旨在为用户提出的自然语言问题自动提供答案。 应用场景有搜索引擎、智能语音助手等。

受限领域问答

早期智能问答系统大都针对特定领域构建,并且需要领域专家撰写大量领域相关的规则用于问题理解和答案生成,这极大地限制了该类智能问答系统地规模和通用性。此外,受限于自然语言处理水平和计算机的运算能力,这类系统的准确度也差强人意。

代表:BASEBALL系统检索结构化数据库,NASA系统获取土壤信息,SHRDLU系统和QUALM系统用于阅读理解任务,MYCIN系统用于病毒等信息查询,UNIX Consultant系统机遇撰写的规则完成自然语言理解和回复任务。

开放领域问答

代表:IBM Waston

主要模块:问题分析、候选生成、候选打分、答案合并和排序。

  • 问题分析:对问题做命名实体识别、关系分类、句法解析、指代消歧、词汇化答案类型和问题类型(事实类问题/非事实类问题)等常规操作;
  • 候选生成:从不同类型的数据源(结构化和非结构化)中抽取答案候选。用了维基百科、知识图谱、词典、新闻文档等;
  • 候选打分:使用多种特征,对每个答案候选项进行打分;
  • 答案合并和排序:基于每个答案候选·对应的多个置信度得分,使用Logistic回归计算每个答案候选对应的最终得分。

简单就是两步走:选取候选答案,对候选答案进行排序选取得分高的。

2015年Trec LiveQA任务:实时QA,每隔一段时间给系统发送一个任务,然后返回的结果由人工评判。

2016年SQuAD数据集:给定任务,从文本中找到输入问题对应的精确答案。

任务分类

智能问答系统大致分为七类:事实类问题、是非类问题、定义类问题、列表类问题、比较类问题、意见类问题、指导类问题。

  • 事实类问题:答案是一个或多个实体;
  • 是非类问题:答案是Yes/No;
  • 定义类问题:答案是对某个实体的术语解释;
  • 列表类问题:答案通常是一个集合;
  • 比较类、意见类和指导类问题:答案比较主观,适合基于来自问答社区网站的<问题,答案>对进行解答。

根据上述七类问题的特点以及适合采用的知识库:分为知识图谱问题(knowledge-based QA)、表格问答(table-based QA)、文本问答(text-based QA)和社区问答(community QA)

各类问答的输入都是自然语言表示的问题,输出是根据各种知识库得到的输出结果,重点在于如何由问题得到的答案的过程上。

知识图谱问答

事实在知识图谱中的存储方式:

  • 三元组事实:$<e_{sbj}, relation, e_{obj}>$
  • CVT事实:一个主语对应多个宾语,$e_{CVT}$称为复合值类型节点,该节点通过连接$e_{sbj}$与$e_{obj_1}, e_{obj_2}, …, e, e_{obj_n}$表示一个复杂事实,见P9 图1-9.

知识图谱问答的流程(给定问题):

  1. 采用实体链接技术识别出问题实体;
  2. 采用关系分类技术识别出问题所表达的谓词关系;
  3. 根据实体链接和关系分类的结果生成问题对应的语义表示,该过程可以看做是简单的语义分析(semantic parsing)的过程;
  4. 根据语义分析结果从知识图谱中推理得到问题对应的答案实体。

P10 1-10是一个很好的图,可以回头多看看。当然这里只是单个实体,后面有多个的话会有额外的章节做解释。

表格问答

表格问答主要分为表格检索答案生成两步:

  1. 表格检索:负责从表格集合中找到与输入问题最相关的表格;
  2. 答案生成:负责基于检索回来的相关表格生成问题对应的答案。
文本问答

根据给定文本生成问题对应的答案。

按照答案颗粒度的不同,又可以分为答案句子选择(answer sentence selection)机器阅读理解(machine reading comprehension)两大类。

  • 答案句子选择从文本中寻找能够作为问题答案的句子,对各个句子进行打分,选择得分最高的句子作为答案;
  • 机器阅读理解从文本中选择全部可能的答案短语,解决思路有两种
    • 对文本中全部可能的答案短语候选进行抽取和排序,这样机器阅读理解可以看成对答案短语候选集合的一个排序任务;(显然候选集合会超大)
    • 对文本中每个单词是否属于答案进行0/1标注,这样机器阅读理解可以看成一个序列标注任务。
社区问答

问答对(question-answer pair), 是指问答社区网站上提供的<问题,答案>对数据集合。

数据生成方式:提问者通过网站发布问题,问答社区网站的其他用户如果对该问题感兴趣,可以直接进行回复,这样就生成一个问答对。而且可以通过点赞等标记来对答案进行过滤。

由于问答对数据是人们对经验的高度总结,这类内容很难从文本中自动抽取获得,因此这类数据对于构建主观类型问答系统而言非常重要。

社区问答分为两步:

  1. 给定输入问题,检索与输入问题语义最为匹配的已有问题;
  2. 采用已有问题的答案作为当前问题的答案。

最重要的一步是计算问题和已有问题之间的语义相似度。

问答评测

主要是各种评测数据集。

知识图谱问答

WebQuestions, SimpleQuestions, Free917, Geoquery.

中文:NLPCC-KBQA

表格问答

WikiTableQuestions.

文本问答

TREC-8, TREC-9, WikiQA, SQuAD, MS MARCO, CNN/Daily Mail

中文:DuReader, NLPCC-DBQA

社区问答

SemEval CQA, Quora Question Pairs(NLI也可以使用).

第2章 机器学习基础

第3章 实体连接

实体链接是指将自言语言文本中出现的实体提及(entity mention)关联到对应知识图谱实体上去的任务。(输入和输出要明确)

根据处理的文本长短不同,可以分为长文本(收入是一篇文档)实体链接和短文本(输入是一个句子)实体链接,传统实体大都围绕长文本实体链接去做。

大致步骤分为三步:

  • 候选实体生成:从输入文本中检测出实体提及集合$M$,并从给定知识图谱中找到每个实体体积$m \in M$ 可能对应的候选实体集合$E_m$。常用方法有词典匹配方法、表层形式扩展发和统计模型;
  • 候选实体排序:对候选实体集合$E_m$中多个候选实体打分和排序,并输出得分最高的候选实体作为$m$的实体链接结果。常用方法有监督学习的方法和非监督学习的方法。
  • 无链接指代预测:预测输入文本中哪些实体提及是无法被链接到知识图谱中去的。这种情况通常是由知识图谱本身的不完备性导致的。

简单来说,输入是从文本中识别出来的实体,输出是链接到知识图谱中的实体。那么就需要做:先识别出来实体,再去知识图谱中找候选集合,然后选择最相关的。

候选实体生成

词典匹配方法

使用预先抽取的词典完成候选实体生成任务。如果词典有了,我就只需要从文本中找到包含词典关键词的实体,然后把对应的知识图谱实体给拿过来即可,所以关键步骤在于如何构建词典。

构建的方法参见P43表格的各种方法。

具体匹配的时候也可以是完全匹配和模糊匹配,完全匹配就是$<key, value>$直接取结果,模糊匹配就是近似匹配,某些方面相似就可以取过来结果,具体的这儿就不写了,没什么内容。

不管是完全匹配还是模糊匹配,你都需要文本中的词语在词典中出现过才可以。

统计学习方法

统计学习方法在NLP中有一个专有名词:命名实体识别(named entity recognition, NER)。

该类模型通过从标注数据上抽取特征学习统计模型,可以用来检测之前并未见过的实体,这是词典没法办到的。

早期NER基于词典和规则,现在大多数是基于统计的方法,比如CRF。现在有很多方法基于深度学习做的,比如LSTM+CRF。这是首先抽取实体,后面怎么链接到知识库的呢??感觉书中并没有过多提及,应该也是前面构建词典类似的方法。

候选实体排序

方法可以分为监督学习方法和无监督学习方法。监督学习包括二分类法、排序学习法、概率法和基于图的方法等;无监督学习包括向量空间模型和信息检索法等。

监督学习方法

分为上下文无关文法和上下文有关文法,嗯,包括提各种特征吧,P47页,感觉没什么特点。排序的时候可以先构造$<实体提及,候选实体>$对,然后对每个对进行打分,按照打分进行排序就可以了。

无监督学习模型

基于向量空间模型:首先将实体提及和候选实体都转换为向量,计算向量之间的相似度来打分;

基于信息检索的方法:将实体提及所在的句子集合进行去停用词等操作以后生成一个查询语句,然后从知识图谱中进行查询。这里就需要对知识图谱实体对应的维基百科文档作为该实体的表式,并建立索引。这就和信息检索方式基本一样了。

无链接提及预测

前面是建立在候选实体都有并且能够排序找到最好的知识图谱实体的基础上。但是由于知识图谱不完备,很可能找不到对应的实体,这时候使用$NIL$表式“空实体”。

  • 第一步生成的候选实体集合为空;
  • 第二部进行排序时,所有的得分都低于提前设置好的阈值;
  • 使用二分类对$<实体提及,候选实体>$进行排序,输出的结果都为0,表式都不是一对。

第4章 关系分类

给定一段自然语言文本以及该文本中出现的若干实体$(e_1, .., e_n)$, 关系分类(relation classification)的目的是识别这些实体$(e_1, …, e_n)$ 之间满足的语义关系. 由于全部可能的关系集合通常是预先制定好的(例如知识图谱中的全部谓词), 因此该任务可以采用分类方法完成. 最基本的分类任务是判断文本中同时出现的两个实体$e_1$ 和$e_2$的关系.

相应的评测比赛有1998 MUC, 1999 ACE, 2009 TAC (KBP), 2010 SemEval, 2012 Freebase公布以后构造的数据集等.

这一部分,除非需要具体去用到,否则就是了解一下即可.如果真需要后续继续去做的话,去多看看具体的论文比看书效果好得多,毕竟书上说不清楚.

模板匹配方法

使用一个模板库对输入文本中两个给定实体进行上下文匹配.

分为基于人工模板以及基于统计模板.

监督学习方法

基于特征,基于核函数,基于深度学习.

半监督学习方法

基于自举(bootstrapping)的方法和基于远监督的方法.

大致思想是先有一部分的标注数据,然后从无标注数据中抽取出来一部分作为标准,然后继续去抽取别的.

第5章 知识图谱问答

知识图谱和语义表示

基于语义分析的方法

基于答案排序的方法

第6章 表格问答

分为两步:表格检索和答案生成.

表格检索

表格检索又分为两步:表格候选检索和表格候选打分两步.

由于互联网上的表格数量巨大,所以检索到表格所在的文档需要借助搜索引擎的帮助,这一部分得到的文档中包含的表格都被称为候选检索表格,随后对这些表格进行处理打分得到最相关的表格.

进行打分时可以将表格扩展成一个字符串,然后利用查询相关的技术对其进行打分.

答案生成

问题的答案可能在表格中,也可能不在表格中.

可以分为: 基于答案排序的方法, 基于语义分析的方法, 基于神经网络的方法.

各种方法感觉看篇文章也就差不多知道了,书上感觉讲不明白…

基于答案排序的方法:假设结果一定在表格中.生成特征向量然后去选择…

基于语义分析的方法:第一步,基于表格对问题进行语义分析,将其转化为语义表示,第二步,将语义表示转为结构化查询,通过在表格上执行得到问题对应的答案.(唐2018ACL有相关工作)

基于神经网络的方法: Emmm… 看论文就好多了…Neural Programmer…

第7章 文本问答

文本问答整体框架

答案句子选择

机器阅读理解

第8章 社区问答

问答匹配

问题改写

第9章 问题生成

基于统计的方法

基于深度学习的方法

问题生成和智能问答的交互