文本摘要是一种从一个或多个信息源中抽取关键信息的方法,它帮助用户节省了大量时间,用户可以从摘要获取到文本的所有关键信息点而无需阅读整个文档。
文本摘要按照输入类型可分为单文档摘要和多文档摘要。单文档摘要方法是指针对单个文档,对其内容进行抽取总结生成摘要;多文档摘要方法是指从包含多份文档的文档集合中生成一份能够概括这些文档中心内容的摘要
按照输出类型可分为抽取式摘要和生成式摘要。抽取式摘要从源文档中抽取关键句和关键词组成摘要,摘要全部来源于原文。生成式摘要根据原文,允许生成新的词语、短语来组成摘要。(更详细的解释 from 《文本摘要研究进展与趋势》)抽取式摘要方法通过抽取文档中的句子生成摘要,通过对文档中句子的得分进行计算,得分代表重要性程度,得分越高代表句子越重要,然后通过依次选取得分最高的若干个句子组成摘要,摘要的长度取决于压缩率。生成式摘要方法不是单纯地利用原文档中的单词或短语组成摘要,而是从原文档中获取主要思想后以不同的表达方式将其表达出来。生成式摘要方法为了传达原文档的主要观点,可以重复使用原文档中的短语和语句,但总体上来说,抽取式摘要需要用作者自己的话来概括表达。生成式摘要方法需要利用自然语言理解技术对原文档进行语法语义的分析,然后对信息进行融合,通过自然语言生成的技术生成新的文本摘要。
按照有无监督数据可以分为有监督摘要和无监督摘要。有监督方法需要从文件中选取主要内容作为训练数据,大量的注释和标签数据是学习所需要的。这些文本摘要的系统在句子层面被理解为一个二分类问题,其中,属于摘要的句子称为正样本,不属于摘要的句子称为负样本。无监督的文本摘要系统不需要任何训练数据,它们仅通过对文档进行检索即可生成摘要。
1、基于统计学
早期的文本摘要方式主要是抽取式文本摘要,其关键问题在于从原始的文档中抽取出重要性高的句子,这里实际上涉及到两个问题:1、如何给句子的重要性打分;2、如何抽取重要性高的句子并且抽取之后如何使用; 最早的时候人们主要是基于统计学进行抽取式文本摘要,需要计算统计特征,如词频、句子之间的相似性、句子位置、句子与标题(如有)的相似性、句子的相对长度等,首先使用“词频”这一简单的文本特征对文档的重要句子和词组进行抽取生成,根据经验可知,除去停用词以外,文中出现频率越高的单词,其重要性也就越高。根据单词的词频高低分别设置相应的词权重,词频越高,对应的权重也就越高;句子的权重是组成句子单词的权重之和。然后从文档中抽取权重高的单词和句子组成摘要,这就是简单的基于词频的文本摘要方法(这个思路也是很简单易懂)。其它的还有基于tf-idf的文本摘要算法以及其各种改良版这里就不赘述了,还是把重点放在主流的算法上比较好,这些作为了解即可。
2、基于外部语义资源
这话方法涉及到词汇链的概念,简单说就是借助外部的数据,例如wordnet(面向语义的英文词典)、词性标注工具等来辅助文本摘要,将原文档中与某个主题相关的词集合起来,比如happy、sad、angry等等都是属于情绪词,可能使用这种方式将这些词都集合为“情绪”的词汇链中,然后通过一些评价方法来给每一条词汇链计算其重要性,并且据此计算出每一个句子的代表重要性的权重,最后根据给定的摘要比例选择特定数量的句子生成摘要。这种方法通过考虑词的语义关系、全局性等改进了基于统计学的文本摘要的方法未充分利用词义关系、词间关系等的不足。当然,他还是属于抽取式文本摘要,因为它的输出仍旧都是从原文抽取出来的。
3、基于图排序的方法
基于图排序的文本摘要生成的主要方法是通过把文章分成若干个段落或句子的集合,每个集合对应一个图的顶点,集合之间的关系对应边,最后通过图排序的算法(如PageRank[30]、HITS[31]等)计算各个顶点最后的得分,然后依据得分高低生成文本摘要。其中Text rank排序算法以其简洁、高效的特点被工业界广泛运用。大体思想就是先去除文章中的一些停用词,之后对句子的相似度进行度量,计算每一句相对另一句的相似度得分,迭代传播,直到误差小于0.0001,再对上述方法得到的关键语句进行排序,即可获得摘要。抽取式摘要主要考虑单词词频,并没有过多的语义信息,像“猪八戒”、“孙悟空”这样的词汇都会被独立对待,无法建立文本段落中完整的语义信息。LexRank是一种类似于TextRank的无监督图形方法。LexRank使用IDF修改的余弦作为两个句子之间的相似性度量。该相似度用作两个句子之间的图形边缘的权重。LexRank还采用了智能的后处理步骤,确保为摘要选择的顶级句子彼此不太相似。基于 PageRank、HITS 以及 TextRank改进的图排序算法都是无监督的,它具有简单、语言弱相关及同时适合单文本和多文本等众多优点,无需手动标注数据集,相比有监督或半监督的深度学习的文本摘要方法,节省了一定的时间和人力。虽然它具有语言独立、不需要大量语料训练、节约时间等优点,但是由于无监督学习方法还没有充分挖掘和利用数据之间的关系,所以虽然文本摘要的效果和质量有所提升,但是对数据利用不够充分,存在局限性,之后的基于有监督、半监督学习的文本摘要方法对数据进行了合理利用,相比无监督方法有显著的性能提升。
4、基于统计机器学习的方法
有监督的机器学习的方法在自然语言处理领域也得到了极其广泛的利用。监督、半监督的机器学习方法通过对数据集的语料进行人工标注,人为地判定划分得到句子的文本特征以及句子重要性的关系模型,在此模型的基础上,对未被标注的语料进行训练,预测未被标注语料中句子的重要性排序,然后依据句子重要性排序,依次选取若干句子生成最后所需要的文本摘要。
这种方法类似于一个二分类问题,对于某一个句子,它只有 2 种可能性:要么是摘要句,要么是非摘要句。首先通过人工标注的方法,把重要句子手动标注出来,接着在此基础上提取这些重要句子间的特征,通过统计分析学习的方法,找到句子重要性与这些特征之间的关系,最后选择合适的分类器对其进行分类,然后对分类器参数进行调整和对模型加以改进得到最佳的分类器结构,但是这个过程中要防止过拟合的出现。对分类器输入一个句子,在分类器的输出端将得到该句子相应的重要性得分,依据重要性得分的高低抽取所需的句子生成摘要。
机器学习的方法很好地利用了计算机强大的计算性能,借助统计学的知识理论,对海量的文本信息进行高效合理的建模,能够挖掘出隐藏在海量文本信息中的隐藏属性。这些机器学习的方法中使用较为广泛的有朴素贝叶斯算法、隐马尔可夫算法、决策树算法等。Kupiec 等首次将统计机器学习的方法应用于文本摘要领域,他们选取了主题词特征、大写词特征、线索短语特征、句子长度特征、段落特征五大类特征,并认为这些特征之间是相互独立互不影响的。该方法在 21 种科技期刊中随机选择了188 篇文章进行人工撰写摘要作为训练所需的语料,使用贝叶斯分类的方法训练得到一个分类器用以给句子的重要性进行评分。Conroy 等[49]提出了隐马尔可夫模型的摘要算法,该算法通过使用文档中的一些特征(如句子位置、句内词数以及句子中词语与文档中词语的相似度等)来计算句子得分,然后依据句子得分生成文本摘要。Lin 等[50]假设用于生成摘要的文档的各种特征之间是相互的,他们提出了决策树的算法来替代之前提出的贝叶斯分类模型来对句子进行评分,从中依次选取评分最高的若干句子生成摘要。机器学习方法中特征选择的范围是相当广泛的,由于训练分类器特征的可供选择性非常广泛,在本文看来,任意能够表示句子重要性的特征都可以用来训练分类器。这里所提及的特征有前文中提到的词频、线索词、句子位置、TF-IDF 值等简单的特征。此外,研究者还尝试了一些开放性的特征,如标题词长,平均句子长度,平均词汇连接度,是否包含数词、时间等信息,是否包含代词、形词等词汇,是否包含命名实体等特征信息。基于这些开放性特征的机器学习的方法在提高生成摘要的可读性和准确度上起到了一定的效果。
总的来说,这也是很多公司的一个常见的思路,通过人工的方式来进行样本标签的标注,然后用机器学习算法来拟合特征与标注信息,希望通过这样的方式使得算法能够学习到人类的判别能力。不过这种方法在特征工程方面会比较麻烦,不知道有没有什么统一的特征提取的标准,后续代码实现的时候再查一查。
5、基于深度学习的方法
深度学习是利用多层感知器结构对非线性信息进行处理的一种学习方法。Hinton 等首先提出了深度置信网络和相应的高效学习算法,该算法具有无监督学习的能力,降低了对人工的依赖,可以较为高效地进行训练,之后深度学习发展都是在此基础上进行改进的。目前深度学习方法在对自然语言处理方面的基本方向是通过对文档上下文进行学习训练,对于中文文档,还需要先进行中文分词处理,然后将文档中的词语、句子分别用连续实值向量进行表示,形成的向量称为嵌入向量,这样做是为了方便处理文本语义特征,将词语、句子用向量表示,在处理文本语义特征时,对词向量、句向量直接进行向量上的计算即可表征它们之间的文本语义关系。
要将自然语言处理的问题转化成为一个机器学习的问题,首先需要让机器能够理解自然语言,所以第一步就是将自然语言转化为机器可以理解的语言,于是想到将它进行符号数学化,为了能表示多维特征,增强其泛化能力,想到用向量对其进行表示,因此也就引出了对词向量、句向量的研究。但是词向量和句向量的生成仍然具有一定的难度,将文本中不同单词、句子用词向量或句向量进行唯一的表示,这样可以方便其在自然语言处理过程中进行各种操作变换和计算。虽然现在看来将文本中的词、句转化成唯一对应的词、句向量还具有相当大的难度,但由于其在自然语言理解中是关键的一步,因此这将是今后研究中亟待解决的问题和重点研究的方向之一。
Seqence-to-Sequence 模型广泛应用于机器翻译、语音识别、视频图片处理、文本摘要等多个领域。现在最新的一些基于深度学习研究文本摘要生成方法的也都是基于这个模型进行的。基于Seqence-to-Sequence 模型的文本摘要需要解决的问题是从原文本到摘要文本的映射问题。摘要相对于原文具有大量的信息损失,而且摘要长度并不会依赖于原文本的长度,所以,如何用简短精炼的文字概括描述一段长文本是文本摘要需要解决的问题。最先是基于递归神经网络( RNN ) 的Seqence-to-Sequence 模型用于文本摘要起到了一定的效果,之后考虑到 RNN 具有长程依赖性,为了减小长程依赖性,提出了基于长短时记忆网络(LSTM)的 Seqence-to-Sequence 模型用于文本摘要的生成。考虑到句子中的某些特定词或特定词性的词更具有影响句子中心意思的作用,引入了广泛应用于机器翻译中的注意力机制(attention mechanism)对句子的不同部分赋予不同的偏重,即权重。Rush 等在这个基础上提出基于注意力模型的生成式文本摘要,在 DUC-2004 数据集上显示出了优良的性能提升。Rush 等首次将深度学习应用于文本摘要的生成,他们基于Seqence-to-Sequence 模型,将卷积模型应用于对原文档进行编码,然后利用上下文之间的注意力前馈神经网络生成摘要,在当时取得了很好的效果。Chopra 等同样利用卷积模型对原文档进行编码,但使用递归神经网络作为解码器解码输出,取得良好的改进效果,大大提高了文本摘要的质量。Ramesh 等将综合的 RNN和 attention 机制的Seqence-to-Sequence 模型用于生成文本摘要,在文本摘要的准确性和可读性上取得了很大的提高。See 等利用注意力模型相对分心机制来缓解重复出现的冗余词句的权重,降低注意力权值大小达到去除冗余信息的效果,从而大大提高了文本摘要的新颖性。
2016 年,谷歌也开源了基于 TensorFlow的一个自动摘要模块 Textsum,该模块也是利用Seqence-to-Sequence 模型,基于深度学习的方法自动生成新闻标题,在质量和准确度上都取得了良好的效果。Sutskever 等考虑到 RNN 具有长程依赖性,为了减轻长程依赖的影响,将 RNN 用 LSTM网络进行了替换,在此基础上取得了良好的改进。最近 Facebook 尝试把 CNN 引入自然语言处理中,由于 CNN 不能处理变长的序列,在这之前 CNN 都只应用于图片视频领域的处理,恰巧Seqence-to-Sequence 模型可以很好地处理变长序列问题,所以综合 CNN 与 Seqence-to-Sequence 模型,Gehring 等提出了基于 CNN 的 Seqence-to- Sequence 模型,成功应用于机器翻译领域,取得了比之前模型应用更优的结果,准确度超过了之前其他的所有模型。这同样也是一个启示,是否能够将基于 CNN 的 Seqence-to-Sequence 模型成功应用到文本摘要的领域取得最优的结果?这也是接下来要研究的一个问题。Liu 将广泛应用于图像领域的生成对抗网络(GAN, generative adversarial networks)借用于文本摘要领域取得了显著成效,提出了一种生成式文本摘要的生成对抗过程,在这个过程中,同时训练一个生成模型 G 和一个判别型D。生成器通过文本的输入来预测生成摘要,判别器则试图将机器生成的摘要与真实摘要进行区分。在这个博弈过程中,双方不断提高性能,最后利用训练得到的生成器生成与真实摘要基本吻合的机器摘要。最近,Tan 等提出了一个基于图的注意力神经模型的生成式文本摘要,该文在回顾了基于神经网络的生成式文本摘要难点的基础上,提出了一种新颖的基于图注意力机制的模型框架。这里仍然使用被广泛应用于机器翻译和对话系统中的编码器解码器的框架,需要特别说明的是,这里使用的是一个分层的编码器解码器结构,并引入了基于图的注意力模型。编码器结构由字编码器和句编码器组成,字编码器将句子中的单词编码成句子表示,句编码器将文档中的句子编码成文档表示。这里用 LSTM 结构的变体作为字编码器和句编码器的网络结构。不同于一般的解码器结构,这里使用的是带注意力机制的分层解码器结构。在原始解码器模型中,生成的代表文档整体的语义向量 c 对于所有的输出,字是相同的,这就需要语义向量 c 作为整个输入序列的充分表示。这里引入了注意力机制,对解码器不同发生状态下不同部分的输入赋予了不同的注意力,减轻了需要记忆整个输入序列的负担。分层解码器中还利用了波束搜索的策略对句子中的重复现象进行缓解。最后基于图的抽取式摘要模型的TextRank(Mihalcea 和 Tarau 于 2004 年提出)[68]和 LexRank(Erkan 和 Radev 于 2004 年提出)对文档中句子的重要性进行识别。基于这种改进的图注意力的神经模型的生成式文本摘要方法实现了相较先前神经摘要模型相当大的提升,效果甚至可以与最先进的抽取式摘要方法进行比较。总体来说,基于深度学习的自动摘要方法是目前效果最好的方法,但其研究深度和研究数量还远远不够,有待进一步深化。
抽取式摘要在语法、句法上有一定的保证,但是也面临了一定的问题,例如:内容选择错误、连贯性差、灵活性差等问题。生成式摘要允许摘要中包含新的词语或短语,灵活性高,随着近几年神经网络模型的发展,序列到序列(Seq2Seq)模型被广泛的用于生成式摘要任务,并取得一定的成果。
仅使用 Seq2Seq 来完成生成式摘要存在如下问题:(1)未登录词问题(OOV),(2)生成重复。现在被广泛应用于生成式摘要的框架由 See 等人[13]在 ACL17 中提出,在基于注意力机制的 Seq2Seq 基础上增加了 Copy 和 Coverage 机制,有效的缓解了上述问题。其模型 pointer-generator 网络如图 所示。
其模型基本部分为基于注意力机制的 Seq2Seq 模型,使用每一步解码的隐层状态与编码器的隐层状态计算权重,最终得到 context 向量,利用 context 向量和解码器隐层状态计算输出概率。
利用 Copy 机制,需要在解码的每一步计算拷贝或生成的概率,因为词表是固定的,该机制可以选择从原文中拷贝词语到摘要中,有效的缓解了未登录词(OOV)的问题。
利用 Coverage 机制,需要在解码的每一步考虑之前步的 attention 权重,结合 coverage 损失, 避免继续考虑已经获得高权重的部分。该机制可以有效缓解生成重复的问题。
基于该框架可以做出一些改进,在 ICLR18 中,Paulus 等人[12],在该框架的基础上又使用解码器注意力机制结合强化学习来完成生成式摘要。
基于上述 Coverage 机制,在 EMNLP18 中,Li 等人[8]基于句子级别的注意力机制,使用句子级别的 Coverage 来使得不同的摘要句可以关注不同的原文,缓解了生成信息重复的问题。
在 AAAI18 中,Liu 等人[9]利用 SeqGAN[14] 的思想,利用生成模型 G 来生成摘要,利用判别模型 D 来区分真实摘要与生成摘要。使用强化学习的方法,更新参数。
首先可以是人工评价,这种方式就是人工去看摘要的结果和实际文章的内容是否比较好的对应,很费时费力但是评测的准确度也是比较高的,之前做lda相关项目的时候也有用到这种方法,不过要应用到实际的业务中去成本太高了。
这里介绍另一种自动评价的方式。目前来说,自动评价指标采用的是ROUGE,R是recall的意思,换句话说,这个指标基于摘要系统生成的摘要与参考摘要的n元短语重叠度:
ROUGE-Nrecall=∑S∈{Ref}∑n-gram∈SCountmatch(n-gram)∑S∈{Ref}∑n-gram∈SCount(n-gram)ROUGE-Nrecall=∑S∈{Ref}∑n-gram∈SCountmatch(n-gram)∑S∈{Ref}∑n-gram∈SCount(n-gram)
摘要这个任务要求用短序列概括长序列,用召回率这样的计算思路可以反映出人工给出的参考摘要所列出的要点中有多少被包含在了机器生成的摘要中。这个指标用来应付抽取式摘要可能问题不大,但是由于其无法评价所生成摘要的语法和语义,而且倾向于长摘要,所以其实还应该继续探索更合理的指标来评价理解式摘要。此外,当然也可以计算基于precision的ROUGE,而且ROUGE还有ROUGE-L等多种版本;最常使用的是ROUGE-N的N取2的方式(也就是ROUGE-2)。评测工具的链接是这里。
文本摘要研究初期,以原文档中的词、句为基础,基于词频、句子位置等简单特征从文档中生成摘要。随后借助外部语义资源的方法(如词汇链、WordNet 语义字典)帮助选取关键词、关键句,从而生成相应摘要。接着出现图排序的方法,将文本单元中的各种关系映射到图论中的顶点与边的关系上,利用句子中词共现频率、句子相似度、语义关系等特征生成边权重,从而辅助判断找出句子重要性最高的若干个句子,较好地解决了结构较为松散且涉及主题较多的文本摘要生成的问题。之后,随着计算机性能的显著提升,基于统计机器学习的文本摘要方法兴起,朴素贝叶斯算法、隐马尔可夫算法、决策树算法等大量统计机器学习的算法接连应用于文本摘要领域,并在生成文本摘要方法的效果上取得一定的突破。当前最流行、效果最显著的是基于深度学习的生成文本摘要,基于深度学习的文本摘要方法很好地利用了计算机强大的性能对文档的局部以及上下文的多维特征同时学习,对特征进行编码向量化,使文档的上下文特征、句法特征、语义特征等多维特征转化为能够进行计算的向量特征,方便利用深层网络对其进行训练学习,在文本摘要质量上实现了许多最优的实验结果。
文本摘要的系统性学习(1) - 知乎
基于强化学习的生成式文本摘要方法 - 百度文库