参与:Nurhachu Null 这篇博文是斯坦福大学计算机科学在读博士 Abigail See 对最近自己和其他研究者们共同发表的论文《Get To The Point: Summarization with Pointer-Generator Networks》的解读,这篇论文即将出现在今年 7 月底在温哥华举行的 ACL 2017 大会上。相关工作的源代码将在近期发布。 如果我们有时间去读,互联网时代已经让数十亿用户对无法预计的大量信息触手可及。尽管我们的生活已经被可获取的有限数据所改变,但是我们仍然被信息过载的问题困扰着。所以,自动文本摘要变得越来越重要,自动文本摘要就是自动地把一段文字压缩为它对应的较短的版本的任务。 论文地址:https://arxiv.org/pdf/1704.04368.pdf 两种类型的概括 一般而言,有两种自动文本摘要的方法:抽取式的的抽象式的。 抽取式的的方法会从源文本中选择一些段落,然后重新组织它们,以形成一段概括。你可以将这种方法想象成一支荧光笔。 抽象式的方法利用自然语言生成技术来写出原创的句子。用类似的比喻,这种方法就像一支钢笔。 现存的文本摘要的方法中,大部分都是抽取式的,主要是因为选择文本要比从零开始生成文本来得更加容易。例如,如果你用到的抽取式的方法涉及到了从源文本所有的句子中选择和重新组织,那么,你可以保证,生成的摘要是符合语法的、完全可读的,并且是和源文本相关的。被应用到中等长度的事实性文本中时,这些系统会比较成功,如新闻文章和技术性文档。 几个可以在线使用的抽取式文本摘要系统的链接如下:
然而,另一方面,抽取式摘要的方法过于局限,它不能产生像人一样的文本总结,尤其是面对更长、更复杂的文本时。想象你试图仅仅通过选择和重新组织句子来为一部小说写出具有维基百科的风格的剧情简介,例如狄更斯的《远大前程》。这是不可能的。首先,《远大前程》是以第一人称写的,而剧情简介应该以第三人称来写。更重要的是,将一整章的内容压缩为一句话需要强大释义,这只在一个很抽象的框架下才是有可能的,例如「iPip 拜访了 Havisham 小姐,并且爱上了她的养女 Estella」。 简言之,抽象式摘要可能比较困难,但是它是很必要的! 了解循环神经网络 如果你不熟悉循环神经网络和注意力(attention)机制,请查看 WildML(), Andrej Karpathy()以及 Distill()的优秀教程。 近年来,循环神经网络(RNN)这种能够执行序列数据的计算(例如单词序列)的神经网络已经成为了许多自然语言处理任务的标准方法。特别地,如下图所示的具有 attention 的序列到序列(sequence-to-sequence)模型在文本摘要中已经变得流行。下面我们看着结构图逐步了解! 在这个例子中,我们的源文本是一片以「Germany emerge victorious in 2-0 win against Argentina on Saturday」开始的新闻文章,我们正在生成这样的摘要——「Germany beat Argentina 2-0」。首先,编码 RNN 逐词读取源文本,生成一个编码器隐藏状态的序列(因为我们的编码器是双向的,所以图中的序列有两个方向的箭头。不过,在这里并不重要)。 当编码器读取整个源文本之后,解码 RNN 开始输出应该形成文本摘要的单词序列。在每一步,解码器将摘要中之前的单词作为输入(在第一步,特定的<START>标志作为写作开始的信号),并用它们来更新解码器的隐藏状态。解码器隐藏状态被用来计算注意力分布,注意力分布是源文本中所有单词的概率分布。直观地说,注意力分布告诉网络「应该看哪里」,以帮助网络生成下一个单词。在上图中,解码器目前生成了第一个单词Germany,并且专注于源文本中的 win 和 victorious,以生成下一个单词 beat。 然后,注意力分布被用来生成一个编码器隐藏状态的加权和,它被称作语境向量 (context vector)。语境向量可以被视为解码器在这一步骤中「从源文本中看到的东西」。最后,语境向量和解码器隐藏状态被用来计算出词汇分布,它就是在一个通常为成千上百这么大的固定词汇集合中的概率分布。最大概率的单词将会被选为输出(在这一步中,被选中的是 beat),然后,解码器开始下一个步骤。 (责任编辑:本港台直播) |