导图社区 文本摘要_问答系统
文本摘要和问答系统的简单梳理脉络图
编辑于2020-02-12 10:57:32IR
文本摘要
所谓摘要,就是对给定的单个或者多个文档进行梗概,即在保证能够反映原文档的重要内容的情况下,尽可能地保持简明扼要。质量良好的文摘能够在信息检索过程中发挥重要的作用,比如利用文摘代替原文档参与索引,可以有效缩短检索的时间,同时也能减少检索结果中的冗余信息,提高用户体验。随着信息爆炸时代的到来,自动文摘逐渐成为自然语言处理领域的一项重要的研究课题。
分类
按照文档类型分
单文档摘要
多文档摘要
按生成摘要的长度
长文摘要
短文摘要
按生成摘要的方式
抽取式摘要
抽取式的方法基于一个假设,一篇文档的核心思想可以用文档中的某一句或几句话来概括。那么摘要的任务就变成了找到文档中最重要的几句话,也就是一个排序的问题。
生成式摘要
Abstractive是一个True AI的方法,要求系统理解文档所表达的意思,然后用可读性强的人类语言将其简练地总结出来。
评价指标
Gambhir M, Gupta V. Recent automatic text summarization techniques: a survey[J]. Artificial Intelligence Review, 2017, 47(1): 1-66.
外在评价
外在评价Extrinsic就是从摘要所服务的下游任务的效果(如检索中的召回率,文本分类中的F1分数值)对摘要进行评价。
内在评价
内部评价Intrinsic,即从摘要本身进行评估,主要包括两个方面:摘要质量,如摘要的冗余性、可读性、流畅程度等等,一般是由专家进行打分,成本较高;摘要的信息性,一般是通过与标准摘要进行比对,通过计算得出,学术界常用的指标有ROUGE-N、ROUGE-L、BLUE、METEOR等等。
ROUGE
http://text-analytics101.rxnlp.com/2017/01/how-rouge-works-for-evaluation-of.htmlROUGE: A Package for Automatic Evaluation of Summaries
ROUGE-N
http://text-analytics101.rxnlp.com/2017/01/how-rouge-works-for-evaluation-of.html参考摘要的n-gram的召回率。
ROUGE-L
利用最长公共子序列LCS求R、P、F。
ROUGE-W
ROUGE-L的改进版,加权最长公共子序列,给摘要中连续匹配序列赋权。X:ABCDEFGY1:ABCDHIKY2:AHBKCID
ROUGE-S
使用skip-grams,在参考摘要和待评测摘要进行匹配时,不要求gram之间必须是连续的,可以“跳过”几个单词,比如skip-bigram,在产生grams时,允许最多跳过两个词。比如“cat in the hat”的 skip-bigrams 就是 “cat in, cat the, cat hat, in the, in hat, the hat”。
ROUGE-SU
避免生成摘要和参考摘要无共同词对的情况,添加单个字母共有的情况。
多参考摘要
在M篇参考摘要中产生M个包含M-1篇参考的集合,取每个集合中相似度最高的结果,求平均值。
数据集
Annotated English Gigaword
https://catalog.ldc.upenn.edu/LDC2012T21该数据集包括了六大主流媒体机构的新闻文章,包括纽约时报和美联社,每篇文章都有清晰的内容和标题,并且内容被划分为段落。
CNN/Daily Mail dataset
https://cs.nyu.edu/~kcho/DMQA/https://arxiv.org/abs/1506.03340该数据集是从美国有线新闻网(CNN)和每日邮报(DailyMail)中手机大约一百万条新闻数据作为机器阅读理解语料库并通过实体检测等方法将总结和解释性的句子转化为[背景, 问题, 答案]三元组。语料库剔除了单篇超过2000个字的文章和问题答案不在原文出现的文章。
DUC 2004
http://www.cis.upenn.edu/~nlp/corpora/sumrepo.html提供了多篇参考摘要。
CORNELL NEWSROOM
https://summari.es/康奈尔新闻编辑室是一个大型的数据集,用于培训和评估总结系统。它包含了作者和编辑在38个主要出版物的编辑室写的130万篇文章和摘要。摘要是从1998年到2017年的搜索和社会元数据中获得的,使用了多种提取和抽象相结合的总结策略。
Google Dataset
https://github.com/google-research-datasets/sentence-compression
抽取式摘要
传统方法
Lead-3
一般来说,作者常常会在标题和文章开始就表明主题,因此最简单的方法就是抽取文章中的前几句作为摘要。Lead-3即抽取文章的前三句作为文章的摘要。Lead-3 方法虽然简单直接,但却是非常有效的方法。
TextRank
https://gist.github.com/rsarxiv/11470a8d763b2845f671061c21230435TextRank 算法仿照 PageRank,将句子作为节点,使用句子间相似度,构造无向有权边。使用边上的权值迭代更新节点值,最后选取 N 个得分最高的节点,作为摘要。
TextTeaser
https://gist.github.com/rsarxiv/4e949264b3bda98828b84cf2991e57e4
聚类
将文章中的句子视为一个点,按照聚类的方式完成摘要。首先将句子转化为向量表示(这一过程不同的论文做法可能不同),再使用 K 均值聚类和 Mean-Shift 聚类进行句子聚类,得到 K个类别。最后从每个类别中,选择距离质心最近的句子,得到 K 个句子,作为最终摘要。
深度学习方法
抽取式摘要可以建模为序列标注任务进行处理,其核心想法是:为原文中的每一个句子打一个二分类标签(0 或 1),0 代表该句不属于摘要,1 代表该句属于摘要。最终摘要由所有标签为 1 的句子构成。将抽取式摘要建模成序列标注问题后,就可以应用序列标注中的方法来进行句子标注了。比如BiLSTM、BiLSTM+CRF等等。该模型的一个问题是,模型的训练需要监督数据,现有数据集往往没有对应的句子级别的标签,因此需要通过启发式规则进行获取。具体方法为:首先选取原文中与标准摘要计算 ROUGE 得分最高的一句话加入候选集合,接着继续从原文中进行选择,保证选出的摘要集合 ROUGE 得分增加,直至无法满足该条件。得到的候选摘要集合对应的句子设为 1 标签,其余为 0 标签。除此之外,当下最新的论文还有基于深度学习还有强化学习对句子进行打分的方法:1.SWAP-NET : Extractive Summarization with SWAP-NET: Sentences and Words from Alternating Pointer Networkshttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/P18-10142.NN-SE : [Neural summarization by extracting sentences and words3.BANDITSUM :BANDITSUM: Extractive Summarization as a Contextual Bandithttps://link.zhihu.com/?target=https%3A//arxiv.org/abs/1809.096724.SummaRuNNer: A recurrent neural network based sequence model for extractive summarization of documentshttps://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1611.04230.pdf5.Refrech: Ranking sentences for extractive summarization with reinforcement learninghttps://link.zhihu.com/?target=http%3A//www.aclweb.org/anthology/N18-11586.DQN: Deep reinforcement learning for extractive document summarizationhttps://link.zhihu.com/?target=https%3A//www.sciencedirect.com/science/article/pii/S09252312183003777.RNES w/o coherence :Learning to Extract Coherent Summary via Deep Reinforcement Learninghttps://link.zhihu.com/?target=https%3A//www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/16838/16118
生成式摘要
抽取式摘要在语法、句法上有一定的保证,但是也面临了一定的问题,例如:内容选择错误、连贯性差、灵活性差等问题。生成式摘要允许摘要中包含新的词语或短语,灵活性高,随着近几年神经网络模型的发展,序列到序列(Seq2Seq)模型被广泛的用于生成式摘要任务,并取得不错的效果。
难点
理解文档
所谓理解,和人类阅读一篇文章一样,可以说明白文档的中心思想,涉及到的话题等等。
可读性
可读性是指生成的摘要要能够连贯(Coherence)与衔接(Cohesion),通俗地讲就是人类读起来几乎感觉不出来是AI生成的(通过图灵测试)。
总结简练
在理解了文档意思的基础上,提炼出最核心的部分,用最短的话讲明白全文的意思。
Seq2Seq
问题
重复生成、信息冗余,无法处理未登录词,关键信息丢失,可读性差
改进
copy机制,在每一次解码的时候,计算一个概率,根据这个概率选择是否从原文中复制词语,有效解决未登录词的问题;coverage机制,让注意力机制避免多次在同一个地方赋予高权重,避免重复;Get To The Point: Summarization with Pointer-Generator Networkshttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/P17-1099针对长文档使用更复杂的encoder-decoder,实现更好地对信息编码,解码;Improving Neural Abstractive Document Summarization with Structural Regularizationhttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/D18-1441对注意力机制进行改进,融合文章的关键信息;Guiding Generation for Abstractive Text Summarization based on Key Information Guide Networkhttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/N18-2009结合抽取式的方法,比如先抽取多个重要的句子,然后结合这些句子进行改写;Fast Abstractive Summarization with Reinforce-Selected Sentence Rewritinghttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/P18-1061针对序列生成过程中的Exposure Bias还有训练损失和评价指标不一致的问题,加入强化学习的机制,用强化学习来训练网络;Generative Adversarial Network for Abstractive Text Summarizationhttps://link.zhihu.com/?target=https%3A//aaai.org/ocs/index.php/AAAI/AAAI18/paper/view/16238/16492Multi-Reward Reinforced Summarization with Saliency and Entailmenthttps://link.zhihu.com/?target=http%3A//aclweb.org/anthology/N18-2102受Bert启发,使用预训练语言模型,专门针对序列到序列的自然语言生成任务,比如2019年ICML上微软提出的MASS:MASS: Masked Sequence to Sequence Pre-training for Language Generationhttps://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1905.02450
总结
毫无疑问,文本摘要最核心的问题是确定关键信息,在生成摘要的时候,要将这些关键信息融入进去,同时要尽量避免出现重复、可读性差、这些问题。
能不能使用更少的数据进行学习,或者是研究一下无监督型的摘要;
现在的数据集大多集中在新闻领域,在这上面训练好的模型应用到其他领域的话效果并不好,即模型的适应性不够好;
能不能尝试设计新的评价指标,更好地自动评估摘要的质量。
问答系统
基本问题
问题分析
如何去分析问题。
信息检索
如何根据问题的分析结果去缩小答案 可能存在的范围。
答案抽取
如何从可能存在答案的信息块中抽取答案。
分类
按知识来源划分
基于知识库的问答
基于文档的问答
答案选择的问答
按数据格式划分
基于结构化数据的问答
基于结构化数据的问答系统的主要思想是通过分析问题, 把问题转化为一个查询(query), 然后在 结构化数据中进行查询, 返回的查询结果即为问题 的答案。从其基本思想可知, 这种方法一般只能用在限定领域。
基于自由文本的问答
基于自由文本(free-text based)的问答系统属于开放域问答系统, 它只能回答那些答案存在于这个 文档集合中的问题。
基于问题答案对的问答
基于问题答案对的问答系统研究主要有两个发展阶段:基于常问问题(FAQ)列表的问答系统 研究阶段;基于社区问答(CQA)的问答系统研究阶段。
按答案类型划分
事实型问题
列举型问题
定义型问题
交互型问题
按业务场景划分
闲聊
任务型
知识型
按获取答案方式划分
生成式
检索式
基于结构化数据的问答系统
处理流程
问题分析
根据问题特点来分析问题, 产生一个结构数据的查询语言格式的查询。
信息检索
将产生的查询提交给管理结构数据的系统 (如数据库等), 系统根据查询的限制条件筛选数据 (对应于问答系统的信息检索部分, 即缩小答案可能存在的范围)。
答案抽取
把匹配的数据作为答案返回给用户(对应 于问答系统的答案抽取部分, 由于数据库查询的精确匹配特性, “抽取”的动作不明显)。
重难点
需要构建一个特定领域的比较完备的结构数据库
准确、高效地把问题转化为查询语言形式的查询
基于自由文本的问答系统
处理流程
问题分析
问题分析部分主要是用于分析和理解问题, 从而协助后续的检索和答案提取, 一般具有问句分类、问句主题提取两个主要研究内容。
问句分类
问句分类是根据问句的答案类型对问句进行分类,问句分类的任务就是把一个问句分类到已有的分类结构中一个或几个类(软分类)。问句分类的方法主要包括模式匹配方法和机器学习方法两类。
支持向量机方法
Zhang 等人在<Question classification using support vector machines>中,使用表层 n-gram 特征, 在K最近邻算法、决策树、朴素贝叶斯等分类方法中, 支持向量 机(support vector machine, SVM)效果较好。
特征工程方法
Li 等人在<Learning question classifiers>中,采用更深层次的特征, 包括语法(词性、词组)和语义(解释、近义词)信息, 首先顶层分类器把问句归类在一个大类别中, 然后根据该大类内的分类器把它分到小类别中, 分类效果较好。
问句主题
信息检索部分需要选择问题中的一些关键词作为查询词, 很多时候会调整查询, 为了保证高相关性, 查询词都应该包含问题的主题。一般通过对问题进行句法分析, 获得问题的中心词, 然后选取中心词及其修饰词作为问题的主题。因此, 如何选取合适的中心词是该类方法的核心。
基于外部资源选取主题的方法
Cui 等人在<Unsupervised learning of soft patterns for generating definitions from online news>中,提出了一种基于外部资源选取主题的方法。它利用搜索引擎返回的结果去计算各种词组合的点互信息, 如果词组合的点互信息高于某个阈值就被认为是词组, 那么词组的序列就被认为是问题的主题。
信息检索
信息检索的主要目的是缩小答案的范围, 提高下一步答案抽取的效率和精度。信息检索一般分为两个步骤:(1) 文档检索, 即检索出可能包含答案的文档。(2) 段落检索, 即从候选文档中检索(抽取)出可能包含答案的段落。
文档检索
文档检索是给定一个由问题产生的查询, 通过某个检索模型去得到相关的文档。有两个问题需要处理:一、是检索模型的选取;二、是查询的生成。
检索模型
传统信息检索方法
布尔模型、向量空间模型、语言模型、概率模型等。
迭代式调整的布尔模型
Moldovan等人<The structure and performance of an open-domain question answering system>采用根据查询长度调整查询限制的迭代式调整技术,动态调整查询关键词的数量,以得到较好的检索效果。
查询生成
根据答案的模式生成查询
Agichtein等人<Learning to find answers to questions on the Web>对于特定类别的问题,从训练数据中学习得到这类问题的回答模型,根据得到的模式从问句生成包含答案关键词的查询。
段落检索
段落检索就是从候选文档集合中检索出最有可能含有答案的段落(自然段落或者文档片段),进一步缩小答案存在的范围。
基于密度的算法
基于密度的算法只考虑了独立的关键词及其位置信息, 没有考虑关键词在问句中的先后顺序, 也没有考虑语法和语义信息。
MultiText
question answering by passage selection
IBM
IBM's statistical question answering systemIBM's statistical question answering--TREC-10
SiteQ
SiteQ: engineering high performance QA system using lexico-semantic patttern matching and shallow NLP
基于模糊依赖关系匹配的算法
Cui 等人 在<Question answering passage retrieval using dependency relations>中提出了一 种基于模糊依赖关系匹配的算法。这种算法把问题和答案都解析成为语法树, 并且从中得到词与词之间的依赖关系, 然后通过依赖关系匹配的程度来进行排序。实验结果表明, 这种方法的检索效果比基于密度算法好。
富信息检索
传统检索方法一般只需要处理关键词, 而问答系统需要处理更多的语法、语义信息。因此,部分问答系统也把语法、语义等信息添加到索引中, 丰富了传统的索引, 以提高检索效果。Bilotti等人<Structured retrieval for question answering>把查询变成一个结构化的查询,表达查询词和段落中应该包含的某些词的属性。为了解决问句关键字的顺序问题,Katz等人<Selectively using relations to improve precision in question answering>把句子解析为<主,谓,宾>三元组的形式,然后加入索引。另外,Chu-Carroll<Semantic search via XML fragments: a high-precision approach to IR>等人还索引了句子中词和词组的语义关系。
答案抽取
答案抽取的主要目的是得到用户想要的答案,满足用户需求.为了提取答案, 一般有两个步骤:1. 生成候选答案集合。2. 提取答案。
生成候选答案集合
通过问题分析, 已经获得问句的类别。 目前问答系统能处理的问题类型一般都是事实类型的问题, 大多数的问题类型对应的答案比较短, 可能是实体名, 如人名、地点等, 可能是抽象名词, 如人类、学科、树木、植物等, 也可能是数字, 如距离、速度等。对于这类问题, 可以通过找到相应类型的词、词组或者片断来回答。
提取答案
在得到候选答案集合以后, 主要有四种方法获得问句的最佳答案:基于表层特征的答案提取。通过关系抽取答案。通过模式匹配抽取答案。利用统计模型抽取答案。
基于表层特征抽取答案
常用的表层特征是答案周围段落的一些特征,如段落和查询的相关程度、查询词之间的距离、查询子和候选答案的距离等。Lin等人<Question answering from the Web using knowledge annotation and knowledge minig techniques>采用候选答案出现的次数作为特征。
通过关系抽取答案
表层特征没有考虑语法、语义、词序等因素,性能有限。Katz等人<Selectively using relations to improve precision in question answering>把问句和文中的句子转换成三元组<主,谓,宾>,通过删除句子中的修饰成分来避免混淆。Moldovan等人<LCC tools for question answering>通过解析句法树获得问题到答案的逻辑表示。
通过模式匹配抽取答案
主流方法是在训练数据上自动学习得到模式。Cui等人<Unsupervised learning of soft patterns for generating definitions from online news>提出了一种软模式的方法来处理定义类问题答案的抽取。
利用统计模型抽取答案
Echihabi等人<A noisy-channel approach to question answering>建立噪声信道模型,把问句看成目标信息,把答案看成源信息,假设源信息需要通过一个包含噪音的信道,则转换概率可以通过一组训练数据训练得到。Ko等人<A probabilistic graphical model for joint answer ranking in question answering>采用无向图模型对答案提取过程进行建模。
基于问题答案对的问答系统
基于问题答案对的问答系统研究主要有两个发展阶段:1. 基于常问问题(FAQ)列表的问答系统研究阶段;2. 基于社区问答(CQA)的问答系统研究阶段。
处理流程
问题分析
和基于自由文本的问答系统的问题分析部分基本一样, 不过还多了几个不同的研究点。
问题主客观性判断
基于结构数据的问答系统和基于自由文本的问答系统一般都只能处理客观、事实类型(factoid)的问题。然而在 CQA 数据中有大量的主观类型的问题, 而对于主观类型的问题和客观类型的问题有不同的处理方式, 例如主观问题没有标准答案, 而且答案可以多个, 然而客观问题却只能有一个标准答案。
问题紧急性判断
在 CQA 数据中, 由于存在一个社区网络, 有用户的互动参与, 当问题的紧急程度不一样时, 系统应该有不一样的处理方式。因为有些问题很长时间 回答都没有影响, 但是有些问题需要尽快地得到回答。对于紧急性的问题, 系统应对它进行快速处理, 或者尽量把它放在明显的位置让其他用户进行回答; 对于紧急程度不高的问题, 就不用这样进行特别处理。对于问题的紧急性判断处理的好坏, 将直接影响到用户对一个 CQA 问答系统的评价, 因此非常重要。
信息检索
找到和问题类似的问题, 然后返回答案或者相似问题列表。
问题答案对的信息检索
在经过问题分析之后, 需要通过信息检索部分把相关的问题检索出来, 然后才能在答案抽取部分抽取合适的答案。
基于最小描述长度(MDL)的树剪切(tree cut)模型和语言模型
Duan 等人 <Searching questions by identifying question topic and question fo-cus> 采用基于最小描述长度(minimum description length, MDL)的树剪切(tree cut)模型去识 别问题的主题和焦点, 然后利用语言模型的方法去 匹配问题主题和焦点来缩小检索范围, 提高检索精度。
基于翻译模型和查询似然模型
Xue 等人在<Retrieval models for question and answer archives>中 ,首先构建一个相似问题的集合, 然后训练一个翻译模型, 对问题部分采用基于翻译模 型的语言模型, 对答案部分采用 Query Likelihood模型, 这两者合并在一起构成了一个检索模型。
基于半监督方法
Bian 等人在 <Finding the right facts in the crowd: factoid question answering over social media>中提出了对于事实类型问题的检索框架, 属于半监督的方法。实验发现, 其中的文本特征和社区特征对于检索效果的影响很大; 同时, 其他特征, 如用户的反馈, 也能提高训练排序函数的效 果。
基于类比推理技术
Wang 等人在<Ranking community answers by modeling question-answer relationships via analogical reasoning>中通过类比推理技术去建模问题与答案之间的关系, 提出了对于答案的排序方法。实验表明这种方法的平均排序倒数(mean reciprocal rank, MRR)值能达到 78%, 比采用朴素贝叶斯和 Cosine 的方法效果都好。
问题答案对的相似性判断
除了从传统的信息检索的角度来看待信息检索部分, 还可以从问题对相似性的角度来看这个问题。其实传统的信息检索角度, 其本质也是把相似的问题检索出来。首先把与给定问题相似的问题找到, 然后再在相似的问题中寻找最好的答案。
基于语法树
Wang 等人 在<A syntactic tree matching approach to finding similar questions in com-munity-based QA services>中,通过将每一个问题句子都生成其 syntactic tree 的形式, 然后比较问题的 syntactic tree 的相似性来判断问题的相似性。实验表明, 这种问题的syntactic tree 特征对于问题的相似性比较具有明显的价值。还有一些研究主要依据这样一个假设:“如果两个问题的答案相似, 那么这两个问题是相似的”, 因此作者把问题的所有答案作为单一文档, 然后用语言模型去计算答案之间的相似性, 从而去判断两个问题之间的相似性。
基于关键字
Akiyoshi 等人在 <A retrieval method for similar Q&A articles of Web bulletin board with relevance index derived from commercial Web search engine>中采用简单的基于关键字的检索方法去缩小搜索范围, 然后再利用 BBS 文章的结构特征(即 thread 结构, 一个 thread 包含一个问题网页和一组答案网页), 基于这种结构特征, 可以计算一篇问题文章和商业搜索引擎返回的词之间的相关性, 最后来判断其相似性。作者在一个BBS站点上进行了实验, 结果表明比基于 Cosine 的相似度方法提高了 30%的准确率。
答案抽取
在答案抽取部分,由于问题答案对已经有了答案,答案抽取最重要的工作就是判断答案的质量,研究怎么从问题的众多答案中选择一个最好的答案。
基于分类体系
Liu等人在<Understanding and summarizing answers in community-based question answering services>中提出了问题和答案的分类体系, 特别是对 open 和 opinion 类型的问题进行了研究, 以提高这两种类型问题的答案质量, 并通过实验得出这两种类型的问题占总问题数目的 56%~80%的结论。
基于特征提取
Jeon等人在<A framework to predict the quality of answers with non-textual features>中利用非文本特征来预测答案的质量, 主要用到的特征有答案的接受率、答案长度、提问者的自评、回答问题的人的积极程度、回答问题的人的回答问题偏好、用户打印答案的次数、用户拷贝答案到他们博客的次数、用户的推荐次数、服务提供商的推荐、是否是Sponsor 的答案、点击次数、答案的数目、用户的不推荐数目等。作者系统地分析了这些非文本特征对于预测答案质量的作用, 最后应用最大熵方法和核密度方法去预测答案的质量。
基于多文档摘要方法
Liu等人的<Understanding and summarizing answers in community-based question answering services>和 Tomasoni 等人的 <Metadata-aware measures for answer summarization in community question answering> 中,利用大多数 CQA问题都有多个答案的特性, 把答案抽取的问题转换为多文档摘要的问题, 从而达到较好的效果。