BertSum-基于BERT模型的抽取式文本摘要
每天给你送来NLP技术干货!
来自:NLP工作站
作者:刘聪NLP
写在前面
最近在梳理文本摘要相关内容,翻到一篇19年关于基于BERT模型进行抽取式摘要的老文「BertSum」,在这里分享给大家。该论文一开始挂在arXiv时,为《Fine-tune BERT for Extractive Summarization》,主要介绍了如何使用BERT模型进行抽取式(Extractive)摘要。
paper:https://arxiv.org/pdf/1903.10318.pdf
github:https://github.com/nlpyang/BertSum
后面,又发表于EMNLP2019,为《Text Summarization with Pretrained Encoders》,增加了生成式(抽象式,Abstractive)摘要部分,并对第一版论文进行了部分内容的补充与删减。
paper:https://aclanthology.org/D19-1387.pdf
github:https://github.com/nlpyang/PreSumm
介绍
文本摘要任务主要分为抽象式摘要(abstractive summarization)和抽取式摘要(extractive summarization)。在抽象式摘要中,目标摘要所包含的词或短语会不在原文中,通常需要进行文本重写等操作进行生成;而抽取式摘要,就是通过复制和重组文档中最重要的内容(一般为句子)来形成摘要。那么如何获取并选择文档中重要句子,就是抽取式摘要的关键。
传统抽取式摘要方法包括Lead-3和TextRank,传统深度学习方法一般采用LSTM或GRU模型进行重要句子的判断与选择,而本文采用预训练语言模型BERT进行抽取式摘要。
模型结构
BertSum模型结构如下图所示主要由句子编码层和摘要判断层组成,其中,「句子编码层」通过BERT模型获取文档中每个句子的句向量编码,「摘要判断层」通过三种不同的结构进行选择判断,为每个句子进行打分,最终选取最优的top-n个句子作为文档摘要。
句子编码层
由于BERT模型MLM预训练机制,使得其输出向量为每个token的向量;即使分隔符可以区分输入的不同句子,但是仅有两个标签(句子A或句子B),与抽取式摘要需要分隔多个句子大不相同;因此对BERT模型的输入进行了修改,如下:
将文档中的每个句子前后均插入[CLS]和[SEP]标记,并将每个句子前的[CLS]标记进入模型后的输出向量,作为该句子的句向量表征。例如:文档为”我爱南京。我喜欢NLP。我学习摘要。“,输入序列为”[CLS]我爱南京。[SEP][CLS]我喜欢NLP。[SEP][CLS]我学习摘要。[SEP]“
采用Segment Embeddings区分文档中的多个句子,将奇数句子和偶数句子的Segment Embeddings分别设置为和,例如:文档为
402 Payment Required
,那么Segment Embeddings为。
摘要判断层
从句子编码层获取文档中每个句子的句向量后,构建了3种摘要判断层,以通过获取每个句子在文档级特征下的重要性。对于每个句子,计算出最终的预测分数,模型的损失是相对于金标签的二元交叉熵。
Simple Classifier,仅在BERT输出上添加一个线性全连接层,并使用一个sigmoid函数获得预测分数,如下:
Transformer,在BERT输出后增加额外的Transformer层,进一步提取专注于摘要任务的文档级特征,如下:
其中,为句子的句向量,,PosEmb函数为在句向量中增加位置信息函数,MHAtt函数为多头注意力函数,为Transformer的层数。最后仍然接一个sigmoid函数的全连接层,
最终选择为2。
LSTM,在BERT输出增加额外的LSTM层,进一步提取专注于摘要任务的文档级特征,如下:
402 Payment Required
其中,分别为遗忘门、输入门和输出门;分别为隐藏向量、记忆向量和输出向量;分别为不同的layer normalization操作。最后仍然接一个sigmoid函数的全连接层,
实验细节
训练集构建
由于目前文本摘要的数据大多为抽象式文本摘要数据集,不适合训练抽取摘要模型。论文利用贪心算法构建每个文档抽取式摘要对应的句子集合,即通过算法贪婪地选择能使ROUGE分数最大化的句子集合。将选中的句子集合中的句子的标签设为1,其余的句子为0。
模型预测
在模型预测阶段,将文档按照句子进行切分,采用BertSum模型获取每个句子的得分,然后根据分数从高到低对这些句子进行排序,并选择前3个句子作为摘要。
在句子选择阶段,采用Trigram Blocking机制来减少摘要的冗余,即对应当前已组成摘要S和侯选句子c,如果S和c直接存在tri-gram相同片段,则跳过句子c,也就是句子c不会增加在已组成摘要S中。
数据超出BERT限制
BERT模型由于最大长度为512,而现实中文档长度常常会超出。在《Text Summarization with Pretrained Encoders》文中提到,在BERT模型中添加更多的位置嵌入来克服这个限制,并且位置嵌入是随机初始化的,并在训练时与其他参数同时进行微调。
实验结果
主要对比了LEAD、REFRESH、NEUSUM、PGN以及DCA方法,较当时方法,该论文效果确实不错,如下表所示,在三种摘要判断层中,Transformer的效果最优。并且进行了进一步的消融实验,发现采用不同的Segment Embeddings会给结果带来一些提升,但是Trigram Blocking机制更为关键,具体如下表所示。
总结
个人认为该论文是一篇较为经典的BERT模型应用论文,当时2019年看的时候就进行了尝试,并且也将其用到了一些项目中。
放假ing,但是也要学习。
下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套! 后台回复【五件套】
下载二:南大模式识别PPT 后台回复【南大模式识别】
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!
BertSum-基于BERT模型的抽取式文本摘要相关推荐
- 基于TextRank的抽取式文本摘要(英文)
基于TextRank的抽取式文本摘要(英文) 前言 备注 Talk is cheap, show me the code. 前言 在GitHub上写笔记要经常查看很麻烦,在此记录一些整合的各种代码.能 ...
- 基于BERT-PGN模型的中文新闻文本自动摘要生成——文本摘要生成(论文研读)
基于BERT-PGN模型的中文新闻文本自动摘要生成(2020.07.08) 基于BERT-PGN模型的中文新闻文本自动摘要生成(2020.07.08) 摘要: 0 引言 相关研究 2 BERT-PGN ...
- 当知识图谱遇上文本摘要:保留抽象式文本摘要的事实性知识
论文标题: Boosting Factual Correctness of Abstractive Summarization with Knowledge Graph 论文作者: Chenguang ...
- 基于句子嵌入的无监督文本摘要(附代码实现)
©PaperWeekly· 作者|高开远 学校|上海交通大学 研究方向|自然语言处理 本文主要介绍的是一个对多种语言的邮件进行无监督摘要抽取的项目,非常详细.文本摘要也是非常有意思的 NLP 任务之一 ...
- 基于bert模型的文本分类研究:“Predict the Happiness”挑战
1. 前言 在2018年10月,Google发布了新的语言表示模型BERT-"Bidirectional Encoder Representations from Transformers& ...
- 开放信息抽取(OIE)系统(五)-- 第四代开放信息抽取系统(基于深度学习, deeplearning-based, 抽取式生成式)
开放信息抽取(OIE)系统(五)-- 第四代开放信息抽取系统(基于深度学习, deeplearning-based, 抽取式&生成式) 一.第四代开放信息抽取系统背景 第四代开放信息抽取系统的 ...
- 【文本分类】基于BERT预训练模型的灾害推文分类方法、基于BERT和RNN的新闻文本分类对比
·阅读摘要: 两篇论文,第一篇发表于<图学学报>,<图学学报>是核心期刊:第二篇发表于<北京印刷学院学报>,<北京印刷学院学报>没有任何标签. ·参考文 ...
- 何使用BERT模型实现中文的文本分类
原文网址:https://blog.csdn.net/Real_Brilliant/article/details/84880528 如何使用BERT模型实现中文的文本分类 前言 Pytorch re ...
- 【周末送新书】基于BERT模型的自然语言处理实战
如果你是一名自然语言处理从业者,那你一定听说过大名鼎鼎的 BERT 模型. BERT(Bidirectional Encoder Representations From Transformers)模 ...
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类
自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类 目录 基于BERT模型微调实现句子分类案例实战 Installing the H ...
最新文章
- oracle将多行转成多列,oracle 多行转多列查询
- 如何查看一个jar文件是用什么版本jdk编译的?
- Android应用程序运行方式以及优先级
- 甲骨文将Exadata Cloud转化为内部软件包
- 用户登录功能:说简单也困难
- Flexigid Options
- c语言编程sinx泰勒公式_大白话5分钟带你走进人工智能-第12节梯度下降之原理泰勒公式(7)...
- NTFS文件系统详细分析
- 161009_qt显示阿拉伯输入法9x7点阵
- php在线拍照裁切,基于cropper.js封装vue实现在线图片裁剪组件的功能
- 人工智能在智慧城市建设的应用场景
- 移动端touch触屏滑动事件、滑动触屏事件监听!
- android 5.1 取消录制屏幕跳出的权限对话框问题(开发版,不适用手机)
- 计算机怎样同时运行多个程序的?进程相关概念介绍
- 苍狼敏捷软件开发团队建设指南-1-团队模型
- SpringBoot(一)——入门
- IE 下JS上传文件时出现“拒绝访问”的解决方案
- 安装Mac os High Sierra 10.13.6 17g10021
- Office 2003 sp3(CVE-2012-0158)漏洞分析报告
- Quartz定时调度