赞
踩
我不是问题的生产者,只是问题的搬运工。看了一下午问答相关,我打算做一个总结,为了让自己脑中有一个清晰的认识,也为与我一样同为小白的你提供一个参考。
系统定义
一句话来说,问答系统就是一个能够对给定的问题做出回答的系统。下面是繁琐的书面定义。
智能问答(Question Answer,QA)智能问答系统就是基于大量语料数据,通过数学模型,通过相关编程语言实现的一个能够和人类进行对话,解决问题的一个软件系统。
研究的基本问题
将自然语言问题大致分为七类,事实类(factoid)问题、是非类(yes/no)问题、定义类(definition)问题、列表类(list)问题,比较类(comparison)问题、意见类(opinion)问题和指导类(how-to)问题.
(1) 事实类问题对应的答案是现实世界中的一个或多个实体。 例如,问题Where was Barack Obama born?对应的答案是地点类型实体 Honolulu。事实类问题通常比较客观,适合基于知识图谱或文本生成问题对应的答案。
事实类问答:详情见博客:https://mp.weixin.qq.com/s/OsTKG21D0RYKgI25RlKfPg
(2) 是非类问题对应的答案只能是yes或者no。例如,问题Is sky blue?对应的答案是Yes;问题Is sky green?对应的答案是No。 是非类问题在搜索引擎查询日志中的占比较高,适合基于知识图谱或常识知识库进行推理并生成问题对应的答案。
(3) 定义类问题对应的答案是关于问题中提到的某个实体的术语解释。 例如,问题 What does AI mean?对应的答案是AI这个术语的解释。 定义类问题的提问模式通常较为固定,适合基于知识图谱、词典或文本生成问题对应的答案。
(4) 列表类问题对应的答案通常是一个集合。例如,问题 List of highest mountains on earth 对应的答案是一组山峰的名字。 和事实类问题类似,列表类问题可以基于知识图谱生成列表类问题对应的答案。 此外,由于网络表格经常包含对某类信息的总结和整理,因此也很适合用来生成列表类问题的答案。
(5) 比较类、意见类和指导类问题对应的答案通常较为主观。 这三类问题适合基于来自问答社区网站的《问题,答案》对进行解答。
智能问答的分类:任务型、检索式、问答式
任务型问答:
任务型问答就是指在特定场景下,具有比较稳定流程的问答,机器人通过在多轮对话的过程中逐渐完善自己想要获取的信息,通过逐渐完成的信息来给予用户回答。简单讲就是对于一个问句的,你需要知道一些其他答案才能给予准确回复,对于需要的信息设计一个流程,通过这个流程逐渐获取需要的信息,然后给出答案就行了。
任务型问答一般包含3个核心模块。1、自然语言理解模块。2、对话管理模块。3、自然语言生成模块。
检索式问答:
检索式问答中没有自然语言的生成,有一个特定的回答集,和一个使用问句和问句上下文,合适回答训练出来的模型,模型训练好后,当一个问句输入,模型会对回答集中的回答做个评分,选出评分最高的那个作为答案输出。
问答式:
这个应该说最简单的又或许是最难的,为什么这么说呢?因为这种问答希望是让机器人达到和正常人沟通的无障碍情况。最简单是因为很多公司都将这种接口免费公开,最难的原因聊天的语料集难以获取,还有一点是智能化程度很难提高。
对于问答系统的处理流程是:1、分析问题;2、检索包含答案的数据;3、 提取答案
对应流程中的三个过程有三个研究的基本问题:
1、问题分析:如何去分析问题;
2、信息检索:如何根据问题的分析结果去缩小答案 可能存在的范围;
3、答案抽取:如何从可能存在答案的信息块中抽取答案。
在问答系统的不同发展阶段, 对于这三个基本问题的解决方法随着数据类型的变化在不断变化, 从而形成了不同类型的问答系统。
发展历程
1993年第一个基于互联网的智能问答系统START由MIT开发上线。该系统使用结构化知识库和非结构化文档作为问答知识库。对于能够被结构化知识库回答的问题,系统直接返回问题对应的精准答案。否则START首先对输入问题进行句法分析,并根据分析结果抽取关键词,然后基于抽取出来的关键词从非结构化文档集合中找到与之相关的文档集合,最后采用答案抽取技术,从相关文档中抽取可能的答案候选进行打分,并选择得分最高的句子作为答案输出。
1999年,TREC举办第一届开放领域智能问答评测任务TREC-8,目标是从大规模文档集合中找到输入问题对应的相关文档,该任务从信息检索角度开创了智能问答研究的一个崭新方向,TREC问答评测是世界范围上最受关注和最具影响力的问答评测任务之一。
2000年,CLEF提出跨语言问答评测任务,在该任务中问题和检索文档集合分别使用不同的语言,这就需要在问答中考虑并用机器翻译技术。此外,还引入了包括推理类和动机类在内的复杂问题,用于检验问答系统处理这类问题的水平。
Evi是2005年上线的问答型搜索引擎。和传统搜索引擎不同,Evi基于开放领域知识库,对用户提出了自然语言问题进行问题理解,并根据问题理解的结果,从知识库中查找出问题对应的精准答案,核心技术是基于知识图谱的智能问答技术。
Wolfram Aplha是2009年上线的计算知识引擎。支持计算机代数、符号和数值运算、可视化和统计等功能。它还提供基于结构化知识库的问答功能。
2011年,由IBM构建的智能问答系统Watson参加了美国电视问答比赛节目Jeopardy!,并在比赛中击败了人类冠军选手。Jeopardy!问答比赛涵盖了包括历史、语言、文学、艺术、科技、流行文化、体育、地理和文字游戏等多方面问题(开放/水平领域)。每个问题对应的线索在逐条展示给选手的过程中,选手需要根据已有的提示尽快猜出问题对应答案。IBM Watson系统框架图如下,主要由四个模块组成:
1)问题分析。该模块负责对输入问题进行包含命名实体识别(人名、地名、机构名等)、关系分类、句法解析、指代消歧在内的多种自然语言处理操作,并根据处理结果抽取问题焦点、词汇化答案类型和问题类型(事实类问题/非事实类问题).
2)候选生成。该模块负责从不同类型的数据源(包括结构化数据库和非结构化文档)中抽取答案候选。维基百科是Watson使用的主要数据源,这是由于Jeopardy!95%的问题对应的答案,都能在维基百科的标题中找到,除了维基百科外,知识图谱、词典、新闻文档和其他类型百科文档也被用于答案候选抽取。需要注意的是,问题分析模块预测得到的答案类型并不会作为答案候选抽取的硬性过滤条件,而是在答案候选排序中作为特征使用。
3)候选打分。该模块使用多种特征,从不同角度对每个答案候选进行置信度打分(每个答案有多个置信度打分)。
4)答案合并和排序。该模块基于每个答案候选对应的多个置信度打分,使用逻辑斯蒂回归计算每个答案候选对应的最终得分。答案候选集合可能包含同一个答案的不同表达形式(比如JF、John Frank表示同一个人),系统将会对不同表达形式的得分再进行合并。
从2015年起,TREC引入LiveQA评测任务。该任务在测试过程中,每隔一分钟向所有参赛系统发送一个雅虎Answer上尚未被回答的问题,并要求参赛系统在一分钟内返回问题对应的答案,答案质量由人工进行标注和评分。任务场景十分贴近真实的需求。
斯坦福在2016年发布了SQuAD数据集,该数据集针对智能问答中的机器阅读理解任务进行构建,要求问答系统从给定自然语言文本中找到输入问题对应的精准答案。该数据集提供了10万量级的高质量标注数据.截止到2018年1月初,由微软亚洲研究院和阿里巴巴提出的方法几乎同时在精准匹配(exact match,EM)这一指标上超过了Amazon Mechanical Turk标注者的平均水平。在中文方面,百度发布的中文机器阅读理解数据集DuReader,并在2018年3月联合CCF共同举办了2018机器阅读理解技术竞赛。哈工大讯飞联合实验室从2017年起举办讯飞杯中文机器阅读理解评测。
在现代搜索引擎中,智能问答技术所起的作用越来越重要。不同于以文档作为检索和结果展示基本单位的传统搜索引擎,必应搜索引擎中的智能问答模块能够基于知识图谱问答、表格问答和文本问答等问答知识库,直接生成问题对应的精准答案。
QA任务分类
可以将智能问答任务分为知识图谱问答(knowledge-based QA)、表格问答(table-based QA)、文本问答(text-based QA)和社区问答(community QA)四大类。
文本问答(text-based QA),基于给定文本生成问题对应的答案,按照答案颗粒度的不同,文本问答任务又可以进一步分为答案句子选择和机器阅读理解两大类。
**答案句子选择(answer sentence selection)**任务从文本中寻找能够作为问题答案的句子。 由于文本所包含的句子集合能够通过断句的方式直接得到,该任务可以通过对句子集合进行打分和排序,并选择得分最高的句子作为最终的答案。 这里,打分的准则是每个句子能够作为当前问题答案的可能性。
**机器阅读理解(machine reading comprehension)**任务从文本中寻找能够作为问题答案的短语。 该任务的解决思路有两种:1)对文本中全部可能的答案短语候选进行抽取和排序,这样机器阅读理解可以看成对答案短语候选集合的一个排序任务;2)对文本中每个单词是否属于答案进行0/1标注,这样机器阅读理解可以看成一个序列标注任务。
机器阅读理解的研究之路始终充满着许多困难和挑战。 与许多数据驱动的问题一样,机器阅读理解面对的问题首先是数据问题。 为了研究机器阅读理解问题,研究人员使用不同的手段,构造了许多不同的数据集。 我们可以按照答案来源和形式的不同,将目前的机器阅读理解数据集分为四类:
(1)答案填空任务,给定一段文本,首先从中选择一个句子,去掉该句子中的某个单词或短语,并将剩余部分看作是一个问题。 该类阅读理解任务是根据文本内容预测问题中缺失的单词或短语。
(2)答案选择任务,该类任务给定问题对应的若干答案候选,阅读理解的过程就是对这些答案候选进行排序并选出可能性最大的答案候选。
(3)答案抽取任务,该类任务是根据给定的问题从文本中抽取答案。 注意,这里的答案可能是文本中的任意片段。
(4)答案摘要任务,该类任务是根据给定问题和文本,生成一段可以回答问题的摘要。 注意,这里的答案片段可能并没有出现在对应的文本中。
相关数据集
1. 知识图谱问答相关
在知识图谱问答任务中,最常用的英文问答数据集包括 WebQuestions 数据集和SimpleQuestions 数据集.WebQuestions[1]由斯坦福在2013年发布,包含5,810个来自Google搜索日志的自然语言问题,每个问题对应的答案由 Amazon Mechanical Turk上的标注人员基于 Freebase知识图谱进行标注。SimpleQuestions[2]由Facebook在2015年发布,包含108,442个《问题,答案》对。和WebQuestions 的标注方式不同,该数据集从Freebase 中选取知识图谱三元组<Subject Entity,Predicate,Object Entity>,由Amazon Mechanical Turk上的标注人员基于每个知识图谱三元组中的Subject Entity 和Predicate写下一个自然语言问题,并保证该问题对应的答案是Object Entity.SimpleQuestions 中的绝大多数问题都是单关系(single-relation)问题。在中文方面,NLPCC-KQA[3]由微软亚洲研究院在2016年发布,包含24,479个《问题,答案》对。该数据的标注方法和SimpleQuestions类似,使用的中文知识库包含47,943,429个知识库三元组。
除了直接针对知识图谱问答任务标注的数据集外,针对语义分析任务的标注数据集也可以用于知识图谱问答的研究,例如 Free917资源1-6)[4]和Geoguery[5-8]这类数据集针对问题标注对应的语义表示,用于训练语义分析器。
2. 表格问答
WikiTableQuestions[9]由斯坦福在2015年发布,主要针对表格问答任务。该数据集总共包含22033条人工标注的《问题,表格,答案》三元组,任务的目标是基于给定表格和问题,生成问题对应的答案。 该数据集中的表格来自英文维基百科,Amazon Mechanical Turk上的标注人员针对每个表格编写问题,并基于该表格标注问题对应的答案。下图给出该数据集中一个《问题,表格,答案》三元组示例。
WikiTableQuestions 数据集假设每个问题对应的表格已经存在,但真实场景中,如何为每个问题找到相关的表格,本身就是一个值得研究的问题。 针对该问题,微软亚洲研究院在2017年提出NLPCC-TBQA 数据集[10],用于表格检索任务。给定一个表格集合,该任务的目标是从表格集合中找到和输人问题在内容上最相关的表格子集。
3. 文本问答
TREC-8是由TREC在1999年提出的智能问答评测任务,它要求参加评测的问答系统为每个问题返回一个答案文档编号(Answer Doc ID),并保证该答案文档包含问题对应的答案短语或句子。该任务从信息检索角度开创了智能问答研究的一个崭新方向。下表给出TREC-8评测集中的一个问题对例子。
TREC-9在标注答案文档编号外,同时注明了问题对应的答案短语(Answer Phrase)。这类标注能够衡量智能问答系统从文档中抽取精准答案的能力,即机器阅读理解能力。下表给出TREC-9评测集中的一个问题-答案对例子。
随后两届 TREC问答评测任务TREC 2001和TREC 2002与TREC-9保持一致。2003年TREC 问答评测提出基于段落的问答任务(passages task),用于考察问答系统对段落的检索能力。 该任务中每个问题的答案是一个包含答案短语的长度为250个字节的字符串。 TREC问答评测是问答领域中最具影响力的评测任务,最后一届在2007年举办。
WikiQA[11]由微软雷德蒙研究院在2015年发布,主要针对英文领域的答案句子选择任务。该数据集包括3,047个问题,每个问题从微软必应搜索引擎的查询日志中采样获得,并保证该问题以疑问词开头、以问号结尾、并且点击过至少一个维基百科页面。给定每个问题,Amazon Mechanical Turk上的标注人员对该问题点击过的维基百科网页中包含的句子进行标注,将能够回答该问题的句子标注为1,将其他句子标注为0。
NLPCC-DBQA[3]由微软亚洲研究院在2016年发布,主要针对中文领域的答案句子选择任务。和WikiQA数据集不同,NLPCC-DBQA 将采样得到的维基百科文本直接提供给标注人员,由标注人员自主选择其中一个或若干个句子作为答案,并人工书写一个和该答案相关的问题。该数据集总共包含14,551个《问题,文本》标注对,并被用于由NLPCC举办的中文开放领域智能问答评测中,下图给出该数据集中的一个例子,其中,第一列是问题,第二列是问题对应的文本句子集合,第三列是标注答案,0表示当前句子不能作为问题对应的答案,1表示当前句子能够作为问题对应的答案。
SQuAD[12]由斯坦福在2016年发布,该数据集可以说是目前最热门的机器阅读理解数据集。 给定一个问题和一段文本,该任务的目的是从文本中抽取出问题对应的答案短语。 该数据集包含超过10万个《问题,文本,答案短语》标注对,目前对外开放了训练集和开发集,测试集暂时没有公开,参赛队伍可以验证其系统在测试集上的性能。 典型的机器阅读理解方法我们之后会详细介绍。
除 SQuAD 外,MS MARCO[13]和CNN/DailyMail[14]也是近年来出现的阅读理解数据集。 在中文方面,哈尔滨工业大学讯飞联合实验室在2017年举办了第一届“讯飞杯”中文机器阅读理解评测(CMRC2017)。百度也在2017年推出了中文机器阅读理解数据集 Du-Reader,并在2018年3月举办了“2018机器阅读理解技术竞赛”。
4. 社区问答
Community Question Answering[15]是近年来较受关注的社区问答评测任务。该任务是SemEval的一个子任务,从2015年开始每年举办一次。2015年第一届CQA的评测内容是基于给定问题,判断某条来自社区问答网站的答案是否能够回答该问题。 该任务的核心是计算问题和答案之间的相关性,这和答案句子选择任务非常类似。2016年第二届CQA在提供答案的同时,还提供每个答案对应的问题。 这样,该任务在计算问题和答案相关度的基础上,进一步引人问题和问题相似度的计算。2017年举办的第三届 CQA继续沿用第二届的评测任务。
Quora Question Pairs由Quora公司在2017年发布。该数据集对超过400000条Quora中的问题-问题对进行语义一致性的标注,非常适合用于训练社区问答系统中的问题-问题匹配模型和问题改写模型。
总结
以上是我了解到的QA的综述。请多多指正。
参考博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。