介绍
我们没有足够的时间阅读和理解所有内容。这就是文本摘要的用武之地。它通过缩短文本帮助我们理解整个内容。就像在不阅读全部细节的情况下获取关键信息一样。文本摘要在许多情况下非常有帮助。想象一下,如果你是一名学生,明天有一场考试,但是还没有开始阅读。你必须为考试学习三章,并且只有今天来学习。别担心。使用文本摘要器。它将帮助你通过明天的考试。很令人兴奋,对吧?本文将探讨使用GPT-2和XLNet变压器模型进行文本摘要。
学习目标
在本文中,我们将学习:
- 关于文本摘要及其类型
- 变压器模型的出现及其架构如何工作
- 关于变压器摘要器,如GPT-2和XLNet
- 最后,使用它们的不同变体进行实现
本文作为数据科学博文的一部分发表。
什么是文本摘要?
您是否曾经遇到过需要阅读一本书的几页,但由于懒惰而无法完成的情况?即使这本书很有趣,有时我们也无法翻阅页面。感谢文本摘要。使用它,我们可以了解整个文本的摘要,而无需实际阅读所有行和所有页面。
文本摘要是将长文本转换为短文本,同时保留重要信息。它就像创建文本摘要一样。文本摘要是自然语言处理(NLP)中一个引人入胜的领域。它保留原始文本的主要思想和基本信息。简单来说,文本摘要的目标是捕捉原始文本的关键要点,并使读者能够快速掌握文本的内容,而无需实际阅读。

摘要的类型
文本摘要方法主要有两种类型,它们是:
- 抽取式
- 生成式
让我们详细了解它们。
抽取式摘要
它涉及从原始文本中选择和组合重要的句子来形成摘要。这种类型的摘要旨在提取最相关和信息丰富的句子。这些句子应该代表原始文本的主要思想和上下文。所选句子直接形成摘要,不进行任何修改。抽取式摘要中使用的一些标准技术包括:
- 句子评分:这是一种基于评分的方法。该系统根据词频、句子位置和关键字的重要性选择摘要句子。它将选择得分较高的句子用于摘要。通过这种方式,所有得分较高的句子形成了整个原始文本的摘要。
- 基于图的:在基于图的方法中,我们使用图来表示句子之间的关系。这里的所有句子都是节点,边表示句子之间的相似性或相关性。使用一些图算法,识别出关键句子,所有重要的句子将形成摘要。

- 统计方法:这些技术使用统计工具和算法来评估文本中各个句子的重要性和相关性。这些方法旨在通过分配分数和权重或利用优化技术来确定最相关和信息丰富的句子。所有重要的句子又形成了文本的摘要。
生成式摘要
生成式摘要涉及生成一个摘要,其中可能包含重述的句子甚至不属于原始文本的新句子。它理解文本的内容并生成一个摘要以捕捉主要思想。与抽取式摘要不同,生成式摘要就像人们用自己的话生成摘要一样。生成式摘要技术依赖于高级自然语言生成模型,如神经网络或变压器。这些高级模型可以解释和生成类似人类语言的语言。生成式摘要具有生成更贴近人类的摘要的优势,并且可以更好地处理复杂的文本。生成式摘要中使用的一些标准技术包括:
序列到序列模型:序列到序列模型使用神经网络架构,以源文本作为输入,并生成摘要作为输出。在训练过程中,Seq2Seq模型根据源文本和对应的摘要之间的配对进行训练。因此,模型学会了将输入文本映射到输出摘要,并优化损失函数。损失函数表示生成的摘要与提供的原始目标摘要之间的差异。通过优化损失函数,模型将学到更好的表示并生成最佳摘要。
注意力机制:注意力机制在许多自然语言处理(NLP)任务中至关重要,包括文本摘要。在这里,模型只关注输入序列的相关部分,并将摘要生成为输出。这将帮助模型专注于重要信息并产生更准确和上下文适当的摘要。
强化学习:强化学习技术通过提供奖励或惩罚来微调摘要模型。它基于生成的摘要质量。因此,模型会不断改进自身并提供更好的摘要。
Transformer模型
最初,我们有递归神经网络(RNNs),它们是处理序列数据的前馈神经网络。但是这些RNNs存在一些限制,包括训练模型耗时,有时较长的序列导致梯度消失。之后,长短期记忆(LSTM)出现了。LSTM可以处理比RNN更长的序列。如果RNN训练缓慢,LSTM比RNN还要慢,因为它们的结构更加复杂。对于LSTM和RNN,输入数据必须按顺序传递。今天的GPU设计用于并行计算,不适合顺序流。然后,转换器出现了。
注意力就是一切
论文“注意力就是一切”引入了一种称为转换器的新型架构。转换器网络使用编码器-解码器架构,类似于RNN架构,但它允许并行传递输入序列。首先,转换器网络传递输入序列并将其转换为输入嵌入以表示序列的含义。然后,它添加位置编码以捕捉句子中每个单词的上下文。
注意力块计算每个单词的注意力向量。这里的问题是注意力向量可能会高度重视与自身的关系。但是我们需要特定单词与其他单词的交互。系统通过计算每个单词的八个注意力向量,并通过计算加权平均值获得每个单词的最终注意力向量。这个过程涉及使用多个注意力向量,从而产生“多头注意力块”一词。然后,系统将这些注意力向量通过前馈网络传递。最终输出将是一些表示每个单词的编码向量。

解码器网络
现在让我们看看解码器网络。首先,我们将获取输出的嵌入。然后,通过添加位置值进行位置编码以保留上下文。接下来,系统将其通过第一个多头注意力块,也称为掩码多头注意力块。在处理每个单词时,所有后续单词都被掩盖,并且仅使用前面的单词形成注意力向量。在此之后,有第二个多头注意力块。随后,这些块通过前馈层传递。最后,系统通过线性和softmax层将输出馈送出去,以预测下一个单词。
GPT-2用于文本摘要
GPT-2是一种转换器模型,它以自我监督的方式在大量英文数据上进行了预训练。它代表(生成预训练转换器)。该模型在没有任何标签的原始文本上进行了预训练。GPT-2是一个强大的语言模型,可用于文本摘要任务。它以生成上下文相关的输入文本摘要而闻名。实际上,它最初设计为生成模型,用于猜测句子中的下一个单词。
在训练过程中,它接受一定长度的输入序列。目标序列与输入序列类似,但向后移动一个单词或标记。因此,模型根据先前的单词来预测下一个单词。GPT-2利用掩码注意力,以确保仅使用先前的标记进行预测。所有未来的标记都将被掩盖。通过其训练过程,GPT-2学习了单词和句子在英语中如何组合在一起。它形成了对模式和结构的理解。这些知识存储在模型中,可以用于生成听起来像人类写的新文本。
GPT-2的变种
GPT-2的不同变种基于其模型大小和参数。所有预训练的GPT-2模型都可以从Hugging Face Model Hub获取,并且我们可以根据需求进行微调。现在我们将详细介绍GPT2的各个变种。
1. GPT2-Small:紧凑快速
这是GPT-2的最小版本。它的参数比其他版本少,使用速度更快。该版本适用于需要基本语言理解和生成的任务。它可能在复杂语言模式方面表现不佳,但仍然可以生成有意义的句子。GPT2-Small非常适用于时间不多或计算机性能不强的情况。它有124M个参数。该模型在Hugging Face官方网站上被命名为gpt2。
GPT2-Small可以针对特定任务或领域进行微调,以提高特定应用的性能。微调包括在较小的、任务特定的数据集上训练模型,以适应特定的上下文。这个过程使得GPT2-Small能够在特定领域中提高其性能。
由于体积较小,它可能在生成高度详细或语境丰富的文本方面遇到困难。有时它可能生成无关的文本,特别是面对模棱两可的提示时。但大多数情况下,它会生成有意义且相关的文本。
2. GPT2-VoAGI:寻找平衡
GPT2-VoAGI是GPT-2的一个版本,介于大小和性能之间。它在模型的大小和性能之间达到了平衡。GPT2-Small和GPT2-Large变种在容量和能力方面都有355M个参数。因此,与GPT2-Small相比,它可以捕捉更复杂的模式。这些参数是内部学习表示,使模型能够理解和生成文本。
与GPT2-Small相比,GPT2-VoAGI可以生成更高质量的文本,具有更好的连贯性和流畅性。在生成高质量文本输出时尤为重要。它具有增强的能力,但与GPT2-Small相比,它还需要更多的计算资源。
3. GPT2-Large:高级语言技能
这个GLPT2-Large模型将文本生成和理解的能力推向了新的高度。它比GPT2-VoAGI采用更多的参数,并增强了语言建模能力。因此,它能够生成具有语境丰富的文本。它总共有774M个参数。这些参数使得模型能够捕捉许多复杂的语言模式,包括长距离依赖关系。
它可以生成更长、更详细的响应,类似于人类生成的内容。由于其较大的体积,GPT-2 Large需要更多的计算资源来进行有效的训练和利用。它的一些应用包括高级聊天机器人、创意内容生成和虚拟助手。
4. GPT2-XL:超强性能
GPT-2 XL是GPT-2的一个语言模型变种,采用了XLNet架构。这是GPT-2在语言建模方面的最先进变种。它在所有GPT-2变种中采用了最多的参数。它总共有15亿个参数。GPT-2 XL中的XLNet架构使得模型能够更深入地理解上下文。它成功捕捉到了单词之间甚至长序列中的复杂关系。此外,它在所有任务中都有了改进的性能。
您将看到许多需要高级语言建模的应用。通过利用GPT-2 XL的强大能力,研究人员和开发人员可以在自然语言处理领域开启新的可能性。
使用GPT-2进行实现
让我们使用不同的GPT-2变种进行文本摘要。
首先,我提供了一个小故事。目标是生成整个故事的摘要。
text='''从前,在一个叫做柳溪的小镇上发生了一起令人震惊的犯罪。当地的便利店是社区中心,深受居民喜爱,而这家店被抢劫了。消息迅速传开,引起了镇上居民的恐惧和担忧。警官莎拉·约翰逊被派去调查这起犯罪。她仔细检查了店铺,希望找到线索,揭开真相。发现了脚印、指纹和破锁等有价值的证据。店里的监控摄像头显示一个戴着面具的人在深夜潜入。日子变成了周,但是案件没有任何突破。镇上的居民变得焦虑,想知道谁会犯下这样的罪行。约翰逊警官决心破案,日夜不停地工作。一天晚上,在巡逻附近时,约翰逊发现一个行为可疑的人在店附近表现出奇怪的举动。她悄悄跟踪这个人,发现他叫亚历克斯,是个年轻人。亚历克斯承认自己犯罪,解释说他面临财务困难,出于绝望做出了愚蠢的选择。约翰逊警官对亚历克斯的处境表示同情,理解他所面临的压力。她确保他得到了所需的帮助,而不是严厉的惩罚。逮捕的消息传遍了整个镇,这一事件提醒社区在困难时期互相支持。约翰逊警官的奉献精神和同情心得到了赞扬,使她成为柳溪小镇上备受尊敬的人物。'''
对于文本摘要,我们使用bert-extractive-summarizer。然后我们从summarizer模块中导入TransformerSummarizer。
pip install bert-extractive-summarizer
from summarizer import TransformerSummarizer
首先,我们将使用GPT2-Small变体。所以创建一个TransformerSummarizer类的实例并将其赋值给变量GPT2_model。它接受两个参数。第一个参数是transformer_type,指定我们正在使用哪个transformer模型。这里我们使用的是GPT2。接下来的参数是transformer_model_key,它指定了变体。这里我们使用的是gpt2。然后,我们将打印生成的摘要,最小长度为50。
GPT2_model = TransformerSummarizer(transformer_type="GPT2",transformer_model_key="gpt2")
Summary = ''.join(GPT2_model(text, min_length=50))
print(Summary)
从前有个叫柳溪的小镇,发生了一起让每个人都感到震惊的犯罪案件。警官莎拉·约翰逊被指派调查此案。镇上的居民变得焦虑不安,想知道是谁能犯下这样的罪行。约翰逊警官的执着和同情受到了赞扬,使她成为柳溪小镇中备受尊敬的人物。
现在我们将使用GPT2-VoAGI变体。
GPT2_VoAGI_model = TransformerSummarizer(transformer_type="GPT2",
transformer_model_key="gpt2-VoAGI")
Summary = ''.join(GPT2_VoAGI_model(text, min_length=50))
print(Summary)
从前有个叫柳溪的小镇,发生了一起让每个人都感到震惊的犯罪案件。镇上的居民变得焦虑不安,想知道是谁能犯下这样的罪行。约翰逊警官决心破案,日夜不停地工作。一天晚上,在巡逻时,约翰逊在商店附近发现了一个表现怪异的可疑人。
现在我们将使用GPT2-Large变体。
GPT2_large_model = TransformerSummarizer(transformer_type="GPT2",transformer_model_key="gpt2-large")
Summary = ''.join(GPT2_large_model(text, min_length=50))
print(Summary)
从前有个叫柳溪的小镇,发生了一起让每个人都感到震惊的犯罪案件。她仔细检查了商店是否有任何线索,希望揭开真相。约翰逊警官决心破案,日夜不停地工作。逮捕的消息传遍了整个小镇,此事提醒社区在艰难时期互相支持。
XLNet用于文本摘要
XLNet是一种最先进的基于transformer的语言模型,它代表着“eXtreme Language understanding NETwork”。它实际上是为了克服之前的模型(如BERT)的一些限制而设计的。BERT模型通常以双向方式处理输入序列。但是XLNet不同。它允许模型采用输入序列的所有可能排列。这被称为基于排列的训练。这有助于XLNet捕捉更多的上下文信息,并提高在各种自然语言处理任务上的性能。
XLNet还引入了“自回归”训练的概念。自回归模型根据前几个标记预测序列中的下一个标记。这使它们能够生成更连贯和上下文相关的文本。XLNet结合了自回归和基于排列的训练,提高了各种任务的性能。
XLNet的变体
XLNet有各种可用的变体,它们在模型大小和使用的标记化类型(大小写或不区分大小写)上有所不同。我们可以根据任务需求和计算资源选择合适的变体。所有预训练的XLNet模型都可以从Hugging Face Model Hub中获得,并且我们可以根据需求进行微调。现在我们来看一些流行的XLNet变体。
1. XLNet Base Cased:保留大小写敏感性
XLNet Base Cased是XLNet模型的特定变体,它是在大小写文本上训练的。这意味着它在训练数据中保留了单词的原始大写形式。它总共有110M个参数。XLNet Base Cased中的“Base”指的是其基本架构,包括多个层、注意机制和其他组件。
“Cased”属性表示XLNet Base Cased模型在训练和推理过程中保留单词的大小写信息。这意味着大写和小写字母被区分对待,模型能够区分它们。在标点符号对语义含义很重要的情况下,这非常有益。由于其平衡的架构和保留大小写的训练,该模型在复杂性、计算资源和整体性能之间实际上取得了很好的平衡。
2. XLNet Large Cased: 大规模带大小写敏感性的模型
XLNet Large Cased是XLNet的另一种变体,具有更大的容量和功能,适用于更复杂的任务。与XLNet-Base Cased相比,它具有更多的参数。总共有3.4亿个参数。通过更大的模型规模和增强的架构,它能够有效捕捉复杂的语言模式。XLNet Large的架构基于XLNet Base Cased的基础上,添加了一些额外的层和组件,以增强其功能。
XLNet Large Cased还需要更高的计算资源和更大的容量和性能。训练和微调XLNet Large Cased可能需要异常高的计算资源,包括强大的GPU和硬件设置。XLNet Large Cased在各种具有挑战性的自然语言处理任务中表现出色,包括机器翻译、文本分类、情感分析、问答和文档摘要。
3. XLNet Base Multilingual Cased: 跨语言任务的多语言支持
XLNet Base Multilingual Cased是XLNet模型的一个变体,专门设计用于支持多语言应用和跨语言任务。它具有增强的功能和处理多种语言的能力。该模型经过大规模的多语言文本训练,可以学习更多的表示并捕捉语言模式。通过多语言训练,模型可以传递知识,并能够在不同语言之间进行良好的泛化。这种能力还有助于处理训练过程中未使用的语言。
XLNet Base Multilingual Cased在训练和推理过程中保留单词的大小写信息,因此是大小写敏感的。这意味着它可以区分大写字母和小写字母。这在跨语言任务中有很多应用,特别是在机器翻译、跨语言文档分类等方面。
4. XLNet Base Cased IMDb
XLNet Base Cased IMDb是另一个XLNet变体,专门针对IMDb情感分析数据集进行了训练和微调。IMDb数据集在自然语言处理(NLP)领域非常流行,其中包含带有积极或消极情感标签的电影评论。他们使用批量大小为32和学习率为2e-05对该模型进行了5个时期的微调。最大序列长度设置为512。由于这是一个分类任务,他们使用交叉熵损失函数来训练模型。尽管该模型主要用于分类任务,但仍可以生成摘要任务的结果,但结果可能不是最佳的。
使用XLNet进行实现
我们使用之前用于GPT-2的完全相同的文本。所有导入的模块保持不变。
首先,我们将使用xlnet-base-cased模型
xlnet_base_cased_model = TransformerSummarizer(transformer_type="XLNet",
transformer_model_key="xlnet-base-cased")
Summary = ''.join(xlnet_base_cased_model(text, min_length=50))
print(Summary)
从前有一个小镇叫做柳溪,在那里发生了一起让人震惊的犯罪案件。警官Sarah Johnson被指派调查这起犯罪案件。她仔细检查了商店,希望找到一些线索,揭开真相。商店的监控录像显示,有一个戴着面具的人在深夜溜进了商店。
让我们看看使用xlnet-large-cased模型的结果。
xlnet_large_cased_model = TransformerSummarizer(transformer_type="XLNet",
transformer_model_key="xlnet-large-cased")
Summary = ''.join(xlnet_large_cased_model(text, min_length=50))
print(Summary)
从前有一个小镇叫做柳溪,在那里发生了一起让人震惊的犯罪案件。当地的便利店是社区的心脏,深受大家喜爱,但遭到了抢劫。她确保他得到了所需的帮助,而不是严厉的惩罚。逮捕的消息传遍了整个小镇,这一事件提醒社区在困难时期相互支持。
最后,我们将使用xlnet-base-cased-imdb模型。
xlnet_base_cased_imdb_model = TransformerSummarizer(transformer_type="XLNet",
transformer_model_key="textattack/xlnet-base-cased-imdb")
Summary = ''.join(xlnet_base_cased_imdb_model(text, min_length=50))
print(Summary)
从前,在一个名叫Willow Creek的小镇上发生了一起令人震惊的犯罪。她仔细检查着商店,希望找到任何线索,揭开真相。店内的安全摄像头显示了一个戴着面具的人在深夜悄悄进入。逮捕的消息传遍全镇,这一事件提醒社区在艰难时期互相支持。
结论
文本摘要化简了从大段文本中提取关键信息的过程。它使我们能够快速掌握主要要点。随着新的Transformer模型如GPT-2和XLNet的出现,文本摘要已经达到了新的高度。本文教会了我们关于文本摘要和Transformer模型的知识。Transformer模型的出现,它的架构以及了解它的工作原理。然后我们探索了不同的GPT-2和XLNet变体。
要点
- 文本摘要是一种从重要文本中提取重要信息的非凡技术。
- 使用文本摘要,我们可以节省理解文本的时间,而无需阅读全文,并提供更精确和连贯的摘要。
- 它具有许多应用,包括社交媒体分析、文档摘要、新闻聚合等。
- GPT-2和XLNet是强大的Transformer模型,这些模型对文本摘要领域做出了重要贡献。
常见问题
本文中显示的媒体不归Analytics Vidhya所有,是作者自行决定使用的。