本文探讨用 abstractive 的方式来解决 sentence-level 的文本摘要问题
本文转载自微信公众号:ResysChina,作者张俊 ,极客公园已获得授权。
引
文本摘要是自然语言处理中比较难的一个任务,别说是用机器来做文摘了,就连人类做文摘的时候都需要具备很强的语言阅读理解能力和归纳总结能力。新闻的摘要要求编辑能够从新闻事件中提取出最关键的信息点,重新组织语言来写摘要;paper 的摘要需要作者从全文中提取出最核心的工作,然后用更加精炼的语言写成摘要;综述性的 paper 需要作者通读 N 篇相关 topic 的 paper 之后,用最概括的语言将每篇文章的贡献、创新点写出来,并且对比每篇文章的方法各有什么优缺点。自动文摘本质上做的一件事情是信息过滤,从某种意义上来说,和推荐系统的功能有一点像,都是为了让大家更快地找到感兴趣的东西,只是用了不同的手段而已。
问题描述
文本摘要问题按照文档数量可以分为单文档摘要和多文档摘要问题,按照实现方式可以分为提取式(extractive)和摘要式(abstractive)。摘要问题的特点是输出的文本要比输入的文本少很多很多,但却蕴藏着非常多的有效信息在内。有一点点感觉像是主成分分析(PCA),作用也与推荐系统有一点像,都是为了解决信息过载的问题。现在绝大多数应用的系统都是 extractive 的,这个方法比较简单但存在很多的问题,简单是因为只需要从原文中找出相对来说重要的句子来组成输出即可,系统只需要用模型来选择出信息量大的句子然后按照自然序组合起来就是摘要了。但是摘要的连贯性、一致性很难保证,比如遇到了句子中包含了代词,简单的连起来根本无法获知代词指的是什么,从而导致效果不佳。研究中随着 deep learning 技术在 nlp 中的深入,尤其是 seq2seq+attention 模型的「横行」,大家将 abstractive 式的摘要研究提高了一个 level,并且提出了 copy mechanism 等机制来解决 seq2seq 模型中的 OOV 问题。
本文探讨的是用 abstractive 的方式来解决 sentence-level 的文本摘要问题,问题的定义比较简单,输入是一个长度为 M 的文本序列,输出是一个长度为 N 的文本序列,这里 M>>N,并且输出文本的意思和输入文本的意思基本一致,输入可能是一句话,也可能是多句话,而输出都是一句话,也可能是多句话。
语料
这里的语料分为两种,一种是用来训练深度学习模型的大型语料,一种是用来参加评测的小型语料。
1、DUC http://duc.nist.gov/
这个网站提供了文本摘要的比赛,2001-2007 年在这个网站,2008 年开始换到这个网站 TAC http://www.nist.gov/tac/。很官方的比赛,各大文本摘要系统都会在这里较量一番,一决高下。这里提供的数据集都是小型数据集,用来评测模型的。
2、Gigaword https://catalog.ldc.upenn.edu/LDC2003T05
该语料非常大,大概有 950w 篇新闻文章,数据集用 headline 来做 summary,即输出文本,用 first sentence 来做 input,即输入文本,属于单句摘要的数据集。
3、CNN/Daily Mail
该语料就是我们在机器阅读理解中用到的语料,该数据集属于多句摘要。
4、Large Scale Chinese Short Text Summarization Dataset(LCSTS http://icrc.hitsz.edu.cn/Article/show/139.html)[6]
这是一个中文短文本摘要数据集,数据采集自新浪微博,给研究中文摘要的童鞋们带来了福利。
模型
本文所说的模型都是 abstractive 式的 seq2seq 模型。nlp 中最早使用 seq2seq+attention 模型来解决问题的是 machine translation 领域,现如今该方法已经横扫了诸多领域的排行榜。
seq2seq 的模型一般都是如下的结构 [1]:
encoder 部分用单层或者多层 rnn/lstm/gru 将输入进行编码,decoder 部分是一个语言模型,用来生成摘要。这种生成式的问题都可以归结为求解一个条件概率问题 p(word|context),在 context 条件下,将词表中每一个词的概率值都算出来,用概率最大的那个词作为生成的词,依次生成摘要中的所有词。这里的关键在于如何表示 context,每种模型最大的不同点都在于 context 的不同,这里的 context 可能只是 encoder 的表示,也可能是 attention 和 encoder 的表示。decoder 部分通常采用 beam search 算法来做生成。
1、Complex Attention Model [1]
模型中的 attention weights 是用 encoder 中每个词最后一层 hidden layer 的表示与当前 decoder 最新一个词最后一层 hidden layer 的表示做点乘,然后归一化来表示的。
2、Simple Attention Model [1]
模型将 encoder 部分在每个词最后一层 hidden layer 的表示分为两块,一小块用来计算 attention weights 的,另一大块用来作为 encoder 的表示。这个模型将最后一层 hidden layer 细分了不同的作用。
3、Attention-Based Summarization(ABS) [2]
这个模型用了三种不同的 encoder,包括:Bag-of-Words Encoder、Convolutional Encoder 和 Attention-Based Encoder。Rush 是 HarvardNLP 组的,这个组的特点是非常喜欢用 CNN 来做 nlp 的任务。这个模型中,让我们看到了不同的 encoder,从非常简单的词袋模型到 CNN,再到 attention-based 模型,而不是千篇一律的 rnn、lstm 和 gru。而 decoder 部分用了一个非常简单的 NNLM,就是 Bengio[10] 于 2003 年提出来的前馈神经网络语言模型,这一模型是后续神经网络语言模型研究的基石,也是后续对于 word embedding 的研究奠定了基础。可以说,这个模型用了最简单的 encoder 和 decoder 来做 seq2seq,是一次非常不错的尝试。
4、ABS+ [2]
Rush 提出了一个纯数据驱动的模型 ABS 之后,又提出了一个 abstractive 与 extractive 融合的模型,在 ABS 模型的基础上增加了 feature function,修改了 score function,得到了这个效果更佳的 ABS+模型。
5、Recurrent Attentive Summarizer(RAS) [3]
这个模型是 Rush 的学生提出来的,输入中每个词最终的 embedding 是各词的 embedding 与各词位置的 embedding 之和,经过一层卷积处理得到 aggregate vector:
根据 aggregate vector 计算 context(encoder 的输出):
其中权重由下式计算:
decoder 部分用 RNNLM 来做生成,RNNLM 是在 Bengio 提出的 NNLM 基础上提出的改进模型,也是一个主流的语言模型。
6、big-words-lvt2k-1sent 模型 [4]
这个模型引入了 large vocabulary trick(LVT) 技术到文本摘要问题上。本方法中,每个 mini batch 中 decoder 的词汇表受制于 encoder 的词汇表,decoder 词汇表中的词由一定数量的高频词构成。这个模型的思路重点解决的是由于 decoder 词汇表过大而造成 softmax 层的计算瓶颈。本模型非常适合解决文本摘要问题,因为摘要中的很多词都是来自于原文之中。
7、words-lvt2k-2sent-hieratt 模型 [4]
文本摘要中经常遇到这样的问题,一些关键词出现很少但却很重要,由于模型基于 word embedding,对低频词的处理并不友好,所以本文提出了一种 decoder/pointer 机制来解决这个问题。模型中 decoder 带有一个开关,如果开关状态是打开 generator,则生成一个单词;如果是关闭,decoder 则生成一个原文单词位置的指针,然后拷贝到摘要中。pointer 机制在解决低频词时鲁棒性比较强,因为使用了 encoder 中低频词的隐藏层表示作为输入,是一个上下文相关的表示,而仅仅是一个词向量。这个 pointer 机制和后面有一篇中的 copy 机制思路非常类似。
8、feats-lvt2k-2sent-ptr 模型 [4]
数据集中的原文一般都会很长,原文中的关键词和关键句子对于形成摘要都很重要,这个模型使用两个双向 RNN 来捕捉这两个层次的重要性,一个是 word-level,一个是 sentence-level,并且该模型在两个层次上都使用 attention,权重如下:
9、COPYNET [8]
encoder 采用了一个双向 RNN 模型,输出一个隐藏层表示的矩阵 M 作为 decoder 的输入。decoder 部分与传统的 Seq2Seq 不同之处在于以下三部分:
预测:在生成词时存在两种模式,一种是生成模式,一种是拷贝模式,生成模型是一个结合两种模式的概率模型。
状态更新:用 t-1 时刻的预测出的词来更新 t 时刻的状态,COPYNET 不仅仅词向量,而且使用 M 矩阵中特定位置的 hidden state。
读取 M:COPYNET 也会选择性地读取 M 矩阵,来获取混合了内容和位置的信息。
这个模型与第 7 个模型思想非常的类似,因为很好地处理了 OOV 的问题,所以结果都非常好。
10、MRT+NHG [7]
这个模型的特别之处在于用了 Minimum Risk Training 训练数据,而不是传统的 MLE(最大似然估计),将评价指标包含在优化目标内,更加直接地对评价指标做优化,得到了不错的结果。
结果
评价指标是否科学可行对于一个研究领域的研究水平有着直接的影响,目前在文本摘要任务中最常用的评价方法是 ROUGE(Recall-Oriented Understudy for Gisting Evaluation)。ROUGE 受到了机器翻译自动评价方法 BLEU 的启发,不同之处在于,采用召回率来作为指标。基本思想是将模型生成的摘要与参考摘要的 n 元组贡献统计量作为评判依据。
在英文数据集 DUC-2004 上进行评测,结果如下:
在中文数据集 LCSTS 上进行评测,结果如下:
不管是中文数据集还是英文数据集上,最好的结果都是来自于模型 10[7], 并且该模型只是采用最普通的 seq2seq+attention 模型,都没有用到效果更好的 copy 机制或者 pointer 机制。
思考
自动文摘是我关注的第一个 nlp 领域,早期了很多相关的 paper,从方方面面都有所了解,也有一些比较浅薄的想法,现在总结一下。
1、为什么 MRT 那篇文章的结果会比其他各种各样的模型都要好呢?因为他直接将 ROUGE 指标包含在了待优化的目标中,而不是与其他模型一样,采用传统的 MLE 来做,传统的目标评价的是你的生成质量如何,但与我们最终评价的指标 ROUGE 并无直接关系。所以说,换了一种优化目标,直接定位于评价指标上做优化,效果一定会很好。这点不仅仅在自动文摘中出现过,我记得在 bot 相关的 paper 中还有机器阅读理解相关的 paper 中都有出现,只是具体的评价指标不同而已。这一点很有启发性,如果在文章 [7] 中采用 copy 机制来解决 OOV 问题,会不会有更加惊人的效果呢?我们拭目以待。
2、OOV(out of vocabulary) 的问题。因为文本摘要说到底,都是一个语言生成的问题,只要是涉及到生成的问题,必然会遇到 OOV 问题,因为不可能将所有词都放到词表中来计算概率,可行的方法是用选择 topn 个高频词来组成词表。文章 [4] 和 [8] 都采用了相似的思路,从 input 中拷贝原文到 output 中,而不仅仅是生成,这里需要设置一个 gate 来决定这个词是 copy 来还是 generate 出来。显然,增加了 copy 机制的模型会在很大程度上解决了 OOV 的问题,就会显著地提升评价结果。这种思路不仅仅在文摘问题上适用,在一切生成问题上都适用,比如 bot。
3、关于评价指标的问题。一个评价指标是否科学直接影响了这个领域的发展水平,人工评价我们就不提了,只说自动评价。ROUGE 指标在 2003 年就被 Lin 提出了 [9],13 年过去了,仍然没有一个更加合适的评价体系来代替它。ROUGE 评价太过死板,只能评价出 output 和 target 之间的一些表面信息,并不涉及到语义层面上的东西,是否可以提出一种更加高层次的评价体系,从语义这个层面来评价摘要的效果。其实技术上问题不大,因为计算两个文本序列之间的相似度有无数种解决方案,有监督、无监督、半监督等等等等。很期待有一种新的体系来评价摘要效果,相信新的评价体系一定会推动自动文摘领域的发展。
4、关于数据集的问题。LCSTS 数据集的构建给中文文本摘要的研究奠定了基础,将会很大程度地推动自动文摘在中文领域的发展。现在的互联网最不缺少的就是数据,大量的非结构化数据。但如何构建一个高质量的语料是一个难题,如何尽量避免用过多的人工手段来保证质量,如何用自动的方法来提升语料的质量都是难题。所以,如果能够提出一种全新的思路来构建自动文摘语料的话,将会非常有意义。
参考文献:
[1] http://cn.arxiv.org/pdf/1512.01712
[2] http://cn.arxiv.org/pdf/1509.00685.pdf
[3] http://harvardnlp.github.io/papers/naacl16_summary.pdf
[4] http://cn.arxiv.org/pdf/1602.06023
[5] http://cn.arxiv.org/pdf/1604.00125v1.pdf
[6] http://cn.arxiv.org/pdf/1506.05865
[7] http://cn.arxiv.org/pdf/1604.01904.pdf
[8] http://cn.arxiv.org/pdf/1603.06393v2.pdf
[9] http://research.microsoft.com/en-us/people/cyl/naacl2003.pdf
[10] http://jmlr.org/papers/volume3/bengio03a/bengio03a.pdf