今天分享一篇关于构造自动文摘数据集的paper,数据集的质量、内容和规模都是直接影响deep learning效果的最直接因素,作用非常重要。题目是LCSTS: A Large Scale Chinese Short Text Summarization Dataset。
本文最大的贡献在于构建了一个大规模、高质量中文短文本摘要数据集,弥补了这个空缺。并且在数据集的基础上用了最简单seq2seq给出了一个baseline,为后人的研究提供了基础。从本文的模型中可以看出,unk问题在文本摘要任务中的重要性,如何解决unk问题是提升摘要系统性能的一个重要方向。本文给出了一个思路,用character-based model来绕过这个问题,看过的paper中还有其他的解决思路,后面的博客将会专门介绍unk这个问题。
Abstract
自动文本摘要是一个非常难的问题,部分原因是因为缺乏大规模的高质量数据集。本文将会介绍一个取自于新浪微博的大规模中文短文本摘要数据集,数据集中包含了200万真实的中文短文本数据和每个文本作者给出的摘要。同时我们也手动标注了10666份文本的摘要。基于本数据集,我们测试了用RNN来生成摘要得到了不错的效果,不仅仅亚验证了数据集的有效性,而且为今后的研究提供了基准。
数据集一直都是困扰deep learning技术更好地应用在各大领域的一大瓶颈,尤其是中文数据集的匮乏,本文工作的意义在于给研究中文自动文摘的学者提供了数据支持。
Introduction
本文中的数据类似于上图中的形式。
传统研究abstractive summarization的方法将摘要过程分类两步,第一步是使用无监督方法或者语言知识将关键文本提取出来;第二步是用语言规则或者文本生成技术将第一步的结果转述(paraphrase
)。近期研究表明深度学习技术有很强地表示学习能力和语言生成能力,尤其是用GPU在大规模数据集上进行计算,许多学者将该技术应用在abstractive summarization任务中。
然而,公开的高质量大规模文本摘要数据集还是少之又少,DUC、TAC、TREC的数据仅仅包括几百条英文人工摘要数据,这种情况在中文环境中更加糟糕。所以本文构建了一个大规模中文短文本摘要数据集。
以下是本文的贡献:
1、构建了目前最大的一个中文短文本摘要数据集。
2、提供了数据集分割的标准方法。
3、研究了数据集的特性,采样10666条样本,并进行数据集的质量评价。
4、利用了基于encoder-decoder rnn技术来生成摘要,作为该任务的基准。
大规模数据集的构建往往来自于网络爬虫,获取到了大量的raw data之后,如何处理得到高质量的内容是关键。本文通过抽样选出样本对数据集质量进行评价,并且用当下最流行的seq2seq技术给出了本数据集的benchmark,以供后人研究超越。
Data Collection
为了保证质量,我们仅抓取通过认证组织的微博,这些微博更加清楚、规范和有信息。流程具体如下图:
1、首先收集50个流行的官方组织用户作为种子。分别来自政治、经济、军事、电影、游戏等领域,比如人民日报。
2、然后从种子用户中抓取他们关注的用户,并且将不是大V,且粉丝少于100万的用户过滤掉。
3、然后抓取候选用户的微博内容。
4、最后通过过滤,清洗,提取等工作得到最后的数据集。
这个环节涉及到的技术是爬虫技术,整体的思路比较简单,先选择一些高质量的用户作为起点,从他们关注的用户中过滤出类似的大V用户,然后再爬取所有候选用户的微博内容,清洗、过滤和提取有效数据。
Data Properties
数据集主要分为三个部分,如下表:
1、第一部分是本数据集的主要部分,包含了2400591对(短文本,摘要),这部分数据用来训练生成摘要的模型。
2、第二部分包括了10666对人工标注的(短文本,摘要),每个样本都打了1-5分,分数是用来评判短文本与摘要的相关程度,1代表最不相关,5代表最相关。这部分数据是从第一部分数据中随机采样出来的,用来分析第一部分数据的分布情况。其中,标注为3、4、5分的样本原文与摘要相关性更好一些,从中也可以看出很多摘要中会包含一些没有出现在原文中的词,这也说明与句子压缩任务不同。标注为1、2分的相关性差一些,更像是标题或者是评论而不是摘要。统计表明,1、2分的数据少于两成,可以用监督学习的方法过滤掉。
3、第三部分包括了1106对,三个人对2000对进行了评判,这里的数据独立于第一部分和第二部分。选择3分以上的数据作为短文本摘要任务的测试数据集。
数据集的构造是一个非常大的工作,因为涉及到大量的人工标注工作,如何保证所用的训练集、测试集都有很高的质量是一个问题。本文对第一部分的数据做了采样分析,用第二部分数据作为训练高质量数据的样本,提取出了更高质量的训练集,第三部分提供了测试集。到此,数据集比较完整了。
Experiment
本文用了当下流行的seq2seq技术来做验证实验,用第一部分的数据作为训练集,第三部分的3分以上数据作为测试集。一共用了两种方法来处理数据:
1、基于汉字的方法(character-based),将词汇表降维到了4000。
2、基于词的方法(word-based),本文用jieba做分词,词汇表维度为50000。
两种网络架构:
1、RNN作为Encoder,用最后一个hidden state作为Decoder的输入。
2、Encoder中的所有hidden state的组合作为Decoder的输入。
RNN隐藏层用GRU,生成摘要时用beam search,beam size设置为10。对比结果如下:
评测方法采用ROUGE-1,ROUGE-2,ROUGE-L,由于标准的ROUGE包是用来评测英文的,所以这里将中文汉字转换成id。结果中基于汉字的RNN context模型有更好的效果。简单分析下原因,基于词的模型由于词汇表的限制,非常容易遇到unknown words,而基于字则不同,可以轻松解决unk的问题。
本文的两种模型搭配两种网络架构,涵盖了简单的seq2seq和seq2seq+attention,很明显地可以看到基于字的模型效果更加好,因为成功地避免了unk的问题。最近有的文章在解决unk的问题,比如用了Pointer/Copy Mechanism来解决。下一次要好好总结一下unk问题的解决方案和ROUGE评测方法。
Conclusion and Future Work
未来工作:
1、多层次RNN。
2、unk的改进。
本文的数据集中输入部分并非只有一句话,而是一段话,简单的rnn并不能准确捕捉其意思。unk是一个很棘手的问题,接下来的博客会单独介绍unk的问题。
来源:paperweekly