文本摘要生成方法-程序员宅基地

技术标签: 深度学习  人工智能  自然语言处理  

定义

随着大数据的来临,信息数据出现爆炸式增长,网络时代每天产生数以亿计的数据和信息,因此人类不可避免的面临信息过载这一问题。其中归因于自媒体等传播途径的普及,使得文本信息越来越多.如何从杂乱绵长的文本中摘要出简短的主旨,即自动文本摘要的研究,对于人们能够快速,准确地从海量文本数据中获取到有效信息有着重大的意义。文本摘要生成即是通过生成一段简练的文字来高度概括原文信息的技术。

分类

按摘要的生成方式

1.抽取式摘要:其模式主要是使用算法从源文档中提取现成的句子作为摘要句。在通顺度上,一般是比生成式摘要要好的。但是会引入过多的冗余信息,无法体现摘要本身的特点。

2.生成式摘要:此方法则是基于NLG技术,根据源文档内容,由算法模型自己生成自然语言描述,而非提取原文的句子。使用深度学习技术(主要在seq-to-seq模型中)像人类一样解释和缩短原始文档。由于抽象机器学习算法可以生成代表源文本中最重要信息的新短语和句子,因此它们可以帮助克服基于抽取技术的语法错误。最近在以bert为首的大量预训练模型出世后,也有很多工作集中在如何利用auto-regressive的预训练模型来做NLG任务,其中就包括生成式摘要。除此之外,由于现实环境中往往缺少标注好的摘要数据,因此还有很多工作聚焦在无监督的方式,使用自编码器或者其他思想来做无监督的生成式摘要。虽然生成式摘要在文本摘要方面表现得更好,但开发其算法需要复杂的深度学习技术和复杂的语言建模。因此,抽取式文本摘要方法仍然广泛流行。

3.压缩式摘要:其和生成式摘要在模式上有些相似,但是其目的却不同。压缩式摘要主要目标在于如何对源文档中的冗余信息进行过滤,将原文进行压缩后,得到对应的摘要内容。

按摘要的处理对象

单文档摘要和多文档摘要,从任务难度上来看,多文档摘要的难度显然更高。因为对于一个文档集合来说,文档越多,其包含的主题、噪声也越多,因此提取摘要的难度也越大。

根据输入和输出语言的不同划分


单语言摘要(monolingual summarization)——输入和输出都是同一种语言
跨语言摘要(cross-lingual summarization)——输入和输出是不同的语言
多语言摘要(multi-lingual summarization)——输入是多种语言,输出是其中的某一种语言

这个分类可能还不是非常完整,但是基本上概括了目前文本摘要的任务类型。

文本摘要任务评测方法

文本摘要任务属于文本生成的范畴,因此不能用简单的准召率来评测。当前比较常用的评测文本生成的方法大致就是BLEU,ROUGE等。这些方法的缺点在于评测质量还比不上人工,只是从基本语义单元的匹配上去评测候选摘要和标准摘要之间的相似性,缺少语义方面的维度。因此,如何设计一个合适的评测方法,也是目前文本摘要任务的一个研究方向。以ROUGE为例,其基本原理是:统计候选摘要句和标准摘要句重叠的基本语义单元(如n-gram),来评价摘要的质量。根据不同的计算重叠的方式,可以将ROUGE分为ROUGE-N等几类。

方法简介

抽取式摘要

抽取式摘要根据当前标注语料的条件、算力条件等有不同的做法。通常分为无监督和有监督的方法。

有监督的方法主要有:

  • 基于传统机器学习的方法,即提取各种特征,包括句子的位置,是否包含关键词,整合无监督方法得到的句子之间的相似性特征等等,使用分类模型进行有监督的训练。

  • 基于深度学习,使用序列模型如RNN来做。经典的有SummaRuNNer模型。最近几年也有利用预训练的language model来encode句子,然后做finetune,如fine-tune bert for extractive summarization.

有监督的方法有点在于抽取的效果通常来说都比较好,缺点也很明显,需要标注的语料。

无监督的方法主要有:

  1. 基于传统的统计学特征,对基本语素统计tfidf、熵特征等,间接得到句子的权重分数,根据权重分数为每个句子打分,最后选择比较重要的句子。

  2. 基于cluster的方法,根据每个句子的特征(可以是词级别的特征,也可以是直接对句子做embedding的特征),将句子进行聚类,然后从每个聚类中分别选择摘要句。基于聚类的思想还是很直观的,它认为一个篇文章的主题分布将句子大致进行了分类,而做摘要就是用尽可能少的篇幅概括文章主题,因此从每个主题聚类中选取句子就能在一定程度上达到目标。这种方法的缺点在于聚类的聚合度和纯净度,以及很多聚类算法都需要指定聚簇个数。即使有一些无参数贝叶斯的主题聚类方法,但是他们在训练和inference上的效率都不尽如人意。

  3. 基于图挖掘的各种Rank类算法。主要是将句子视作图的节点,然后通过一些图论的算法来构建句子之间的关系,最后计算得到每个句子的权重分数。常见的有TextRank,LexRank等。

  4. 一些以信息学或者其他数学理论为切入点,研究摘要本质的方法。其中,我看过的相关工作有以submodular函数的特性为切入点同时建模摘要的冗余度和相关性;以信息学为切入点,探讨信息熵、KL散度和摘要的冗余度和相关性以及重要性程度的关系;另外还有以information bottleNeck为切入点,对原文先做无监督的信息压缩,然后再做自监督的生成式摘要的工作。

抽取式研究进展:

1.基于submodular函数特性的文本摘要,该研究论文源自,A Class of Submodular Functions for Document Summarization 

2.基于信息理论对文本摘要的论证,这个研究来源于A Simple Theoretical Model of Importance for Summarization。是ACL2019上的一篇杰出论文。主要是从相关性,冗余度、informative和importance四个维度,以信息理论为支撑,对文本摘要做了一个研究。

3.TextRank是一种基于图算法的无监督抽取式摘要方法。它的思想来源于谷歌的pagerank。

4.MMR,全称为Maximal Marginal Relevance。它的核心思想同时考虑了内容相关性和多样性。

5.SummaRuNNer,基于RNN,将除了对词级别做RNN编码外,还在句子级别上做了RNN的编码,最后训练的target为每个句子是否属于摘要句子。

生成式摘要

生成式文本摘要以一种更接近于人的方式生成摘要,这就要求生成式模型有更强的表征、理解、生成文本的能力,传统方法很难实现这些能力,而近几年来快速发展的深度神经网络因其强大的表征(representation)能力,提供了更多的可能性,在图像分类、机器翻译等领域不断推进机器智能的极限。借助深度神经网络,生成式自动文本摘要也有了令人瞩目的发展,不少生成式神经网络模型(neural-network-based abstractive summarization model)在DUC-2004测试集上已经超越了最好的抽取式模型,其中大部分都是基于seq2seq框架。seq2seq(序列到序列)技术由 Google Brain 团队于 2014 年在《Sequence to Sequence Learning with Neural Networks》一文中提出。该技术突破了传统的固定大小输入问题框架,提出了一种全新的端到端的映射方法。技术的核心是 Encoder-Decoder 架构,Encoder 负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,称为编码。而 Decoder 则负责根据语义向量生成指定的序列,这个过程也称为解码。Seq2Seq 是输出的长度不确定时采用的模型,因此在机器翻译、对话系统、自动文摘等自然语言处理任务中被广泛运用。

也有一些学者研究如何利用深度无监督模型去做生成式摘要任务。如以自编码器为主体架构,对其进行不同程度的改造,从压缩或者生成两个角度去无监督生成摘要文本,同时为了提升效果,也会利用GPT,XLNET等预训练语言模型做finetune。

生成式式研究进展

  1. Google开源了Textsum机器摘要,但是大牛说目前,textsum算法已经在各方面都劣于基于BERT的Transformer结构的算法(2018)[3] 故pass。
  2. BERT的Transformer结构的算法 详解[4]自然语言处理中的Transformer和BERT - 知乎
  3. 滴滴KDD 2019 论文:基于深度学习自动生成客服对话摘要 [5]https://www.leiphone.com/news/201908/ONKkZHFyT52hLWdR.html
  4. 《A Deep Reinforced Model for Abstractive Summarization》Salesforce基于RNN的Seq2Seq生成式,使用了注意力机制(attention mechanism)和强化学习(reinforcement learning)在CNN/Daily Mail、New York Times数据集上达到了新的state-of-the-art(最佳性能)。针对长文本摘要,提出了内注意力机制(intra-attention mechanism)和新的训练方法。分别是1)经典的解码器-编码器注意力机制2)解码器内部的注意力机制。前者使解码器在生成结果时,能动态地、按需求地获得输入端的信息,后者则使模型能关注到已生成的词,帮助解决生成长句子时容易重复同一词句的问题。
  5. FAIR《Convolutional Sequence to Sequence Learning》Encoder、Decoder都采用CNN单元,引入了Multi-step Attention(多跳注意),相比之前只在最后一层生成翻译时往回看,多跳注意使得Decoder阶段生成每一层的语义向量时都往回看,进一步提升了准确度。同时还有一些其他的Trick:引入单词的位置信息,残差网络,计算Attention时候对高层语义信息和低层细节信息,兼收并取等。最后在生成翻译和摘要时,速度相比之前最快的网络,提升了近9倍。同时在WMT-14英德、英法两项的单模型训练结果中,BLEU得分达到了25.16、40.46,其中英法翻译也是迄今为止的最高得分
  6. 提出了混合式学习目标,融合了监督式学习(teacher forcing)和强化学习(reinforcement learning)。

    该学习目标包含了传统的最大似然。最大似然(MLE)在语言建模等任务中是一个经典的训练目标,旨在最大化句子中单词的联合概率分布,从而使模型学习到语言的概率分布。

其他未来研究

除了上述工作研究外,目前还有很多前沿的文本摘要研究。例如引入了强化学习的思想,试图将一些评测指标作为reward来让模型进行自我学习。也有一些研究设计了一种新的模式,即先通过某种方法将源文档做一个压缩,得到一个长度较为合适的文本。然后以压缩后的文本为target,训练生成式。根据压缩方式的不同,有不同的论文研究,例如Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting,以及BottleSum: Unsupervised and Self-supervised Sentence Summarization using the Information Bottleneck Principle等等。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yf_csdn_yf/article/details/126753773

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签