发明内容
本申请提供一种基于层级BERT模型与标签迁移的长文本摘要生成方法,能够根据文本自有标签有倾向性的提取出与主题相关度强的文本内容、并生成流畅通顺的摘要文本。
本申请的方案如下:
第一方面,基于层级BERT模型与标签迁移的长文本摘要生成方法,包括以下步骤:
S1、接收待摘要的长文本,使用分块算法对所述长文本进行文本块的划分,得到多个离散文本块;
S2、使用经过训练的BERT模型对所述多个离散文本块进行筛选,得到最重要的若干文本块;所述BERT模型分为判别器和推理器,均基于BERT预训练模型并添加不同的分类器来实现,在整体训练阶段,判别器负责学习各个文本块的重要程度并进行排序,筛选出重要程度较高的若干文本块,在推理器进行下游任务的监督学习,直至BERT模型收敛;
S3、将筛选出的所述若干文本块输入经过训练的用于生成通顺文本段的BART模型,所述BART模型输出所需的摘要文本。
可选地,步骤S1具体包括:
S1.1、进行数据清洗;
S1.2、对清洗后的数据进行软分段,以符合汉语习惯,得到分块后的文本;
S1.3、将分块之后的结果记为,其中x代表文本块,x的下标代表文本块的编号从0到T-1。
可选地,所述判别器按照以下公式运行:
其中,sigmoid表示sigmoid函数,MLP 表示多层感知器,BERT表示BERT预训练模型,z+表示输入向量,即经过BERT分词器处理后的文本数据,len(z+)表示输入向量的长度,judge(z+)以输出向量的形式表示离散文本块每个字的重要程度,即输出向量每个位置的数值表示该位置输入字的重要程度分值。
可选地,步骤S2中,首先根据预设的字典和已知的标签文本信息,使用BM25算法处理步骤S1提供的所述多个离散文本块,得到重要程度的初始值。
可选地,其特征在于,所述推理器按照以下公式运行:
其中,sigmoid表示sigmoid函数,MLP 表示多层感知器,BERT表示BERT预训练模型,z+表示输入向量,即经过判别器筛选出的所述重要程度较高的若干文本块的集合并经过BERT分词器处理后的结果;reasoner(z+)是一个1乘n的输出向量,n的大小为下游任务标签类别的数量。
可选地,步骤S2具体包括以下步骤:
首先初始化一个空的文本块列表z,将待摘要的长文本的文本自有标签z0置于z的首部;
遍历所有的文本块xi,将z与xi拼接,输入训练好的判别器,得到xi的粗筛重要性打分;
将所有xi按照粗筛重要性打分重新排序,按照分值从高到低的顺序填入z,使z达到最大长度限制,末尾补[PAD],补全后的z记作z+;
使用判别器计算judge(z+),得到文本块的精选重要性打分,并按照预设好的保留数量,最终保存在z中,进行下一轮的推理;
将最终得到的z+中的所有文本块,按照其在原文中的顺序重新排列,得到最终用于摘要生成的文本块。
可选地,所述用于生成通顺文本段的BART模型基于Transformer架构,其训练过程中,使用长文本块破碎算法对训练集、验证集和测试集进行处理,处理方式如下:
1)设原始文本 T 分割成句子集合 S = {s1, s2, ..., sn},其中 n 为句子的数量,si 表示第 i 个句子;
2)使用TextRank算法从句子集合S中提取关键句集合 K = {k1, k2, ..., km},其中m为关键句的数量,ki 表示第i个关键句;
3)计算其他句子集合O,即S中不包含K中的句子:O = S - K = {o1, o2, ...,or},其中r为其他句子的数量,oi表示第i个其他句子;
4)从关键句集合K中随机选择p个关键句,从其他句子集合O中随机选择q个句子,将它们组合成一个新的破碎文本集合 X' = {x1', x2', ..., x{p+q}'},xi' 表示第 i 个破碎文本块;
5)随机打乱破碎文本集合X',得到最终的离散破碎的文本块集合X = {x1, x2,..., x{p+q}};
以文本块集合X作为输入,以原始文本为目标输出,训练所述BART模型,使BART模型学会如何将离散破碎的文本块集合转换为通顺、连贯的原始文本。
可选地,所述使用TextRank算法从句子集合S中提取关键句集合K的具体过程如下:
① 对于任意两个句子si和sj,计算它们的相似度 Sim(si, sj);
② 根据句子相似度构建加权无向图G(V, E),其中V是顶点集合,E是边集合,每个顶点对应一个句子;顶点集合V对应句子集合S,边集合E中的边eij的权重为Sim(vi, vj);
③ 在加权无向图G上运行TextRank算法,按照下式计算每个顶点的得分TR(vi);
其中:
TR(vi)是顶点vi的TextRank得分;
d是阻尼因子,通常设为 0.85;
eji是连接vj和vi的边的权重,也就是顶点vj和vi(对应的句子)的相似度Sim(vi,vj);
In(vi)是所有指向顶点vi的顶点的集合;
OUT(vj)是所有由顶点vj指向的顶点的集合;
是所有从顶点vj到其他顶点的边的权重之和;
TR(vj)是指向顶点vi的顶点vj的TextRank得分;
④ 根据TR(vi)对顶点集合V(即对应的句子集合S)进行排序,选择排名靠前的m个顶点对应的句子作为关键句集合K = {k1, k2, ..., km}。
第二方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特殊之处在于,所述处理器执行所述计算机程序时实现上述基于层级BERT模型与标签迁移的长文本摘要生成方法的步骤。
第三方面,一种计算机可读存储介质,其上存储有计算机程序,其特殊之处在于,所述计算机程序被处理器执行时实现上述基于层级BERT模型与标签迁移的长文本摘要生成方法的步骤。
本申请至少具有以下有益效果:
本申请构建并训练了与文本主题相关的关键文本块筛选模型,结构包括判别器和推理器,通过调度文本块在各结构中流转计算,可以根据文本自有标签(如新闻文本分类类别、博客的主题词、专利的IPC定义等信息),有倾向性的提取出与主题相关度强的文本内容,并且由于引入了多层级BERT模型,可以在段落级和篇章级进行摘要提取;再采用BART预训练模型构造了一个与重构文本块相关的任务,并最终使用BART模型将抽取出的关键文本块进行文本块再修饰,使之变得流畅通顺。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本实施例尤其适用于处理新闻文稿、博客、专利数据等,实施的前提是已有本领域的语料库,并且这些语料库已经被标注,例如新闻文本分类标签、博客主题词标签或专利IPC分类号等。
在一个实施例中,如图1所示,一种基于层级BERT模型与标签迁移的长文本摘要生成方法,包括以下步骤:
S1、接收待摘要的长文本,使用分块算法对所述长文本进行文本块的划分,得到多个离散文本块;
S2、使用经过训练的BERT模型对所述多个离散文本块进行筛选,得到最重要的若干文本块;所述BERT模型分为判别器和推理器,均基于BERT预训练模型并添加不同的分类器来实现,在整体训练阶段,判别器负责学习各个文本块的重要程度并进行排序,筛选出重要程度较高的若干文本块,在推理器进行下游任务的监督学习,直至BERT模型收敛;
S3、将筛选出的所述若干文本块输入经过训练的用于生成通顺文本段的BART模型,所述BART模型输出所需的摘要文本。
本实施例在接收一篇待摘要的长文本后,首先使用分块算法对文章进行文本块的划分,然后使用经过训练的BERT模型判别器对文本块进行筛选,选出与标签关联度最大的若干块(如果待摘要的长文本存在自有标签,则选出的就是与该文本自有标签关联度最大的若干块,如果待摘要的长文本不存在自有标签,则相当于训练好的模型根据文本内容自行判定与“隐含”的自有标签相关的文本块);之后,再使用BART模型对抽取的文本块进行二次生成,以解决文本过度和文本衔接度的问题,从而输出一个连续、通顺的摘要。
以上步骤S2可简记为文本块筛选部分。文本块筛选部分的具体实现分为模型训练阶段及模型应用阶段。
该BERT模型中的判别器负责学习文本块的重要程度,推理器负责下游任务的监督学习。这两个部分都是基于BERT预训练模型,并在其后添加不同的分类器来实现。在训练阶段,采用联合训练的方式,即整体训练。在推理阶段,两个部分是上下承接的关系,即输入文本经过判别器处理后,再经过推理器输出。
判别器部分是使用BERT模型对文本块进行权重计算来判断其重要性的,这些权重可以被看作是文本块的重要性得分,表示其对于下游任务的贡献程度。将判别器给出的文本块得分进行排序,筛选出重要程度较高的的若干文本块,将筛选出的文本块放入推理器(具体是将筛选出的文本块组成新的文本,再对该新的文本进行分词后送入推理器)来进行下游任务的监督学习,反复进行此过程直至模型收敛,最终存在于推理器中的若干文本块即为摘要内容。
如图2、图3以及图4所示,在整体训练阶段,判别器和推理器是联合训练的,这意味着两个部分可以相互影响和促进,从而实现更好的性能提升。此外,在整体训练阶段,模型可以同时学习文本块的重要性和下游任务的关键特征,这有助于提高模型的泛化能力和性能稳定性。
在模型应用阶段(利用训练好的模型从当前待摘要的长文本中筛选出重要文本块),模型的上下承接关系可以帮助保持文本的连贯性和一致性,同时还可以有效地利用文本块中跟标签相关的重要信息,以生成更准确、且具有目标倾向性的输出。因此,该BERT模型在文本抽取式摘要任务中表现出了很好的效果,并具有较高的应用价值。
以下是具体实现步骤:
步骤S1对搜集好的文本进行分块,具体分块方法如下:
(1)数据清洗,将文档中的特殊字符、符号、公式、xml标记等噪音进行去除。
(2)对清洗后的数据进行软分段,分段后每段长度小于63字,原则是块长小于63并且断句位置尽可能符合汉语习惯,例如尽可能在完整句子处断句,如若无法在完整句子处断句,尽可能在有标点符号位置断句。最终得到分块后的文本,每个块的大小都在63个汉字以下,具体长度取决于标点符号。
(3)将分块之后的结果记为,其中x代表文本块,x的下标代表文本块的编号从0到T-1。
对于步骤S2,先使用BM25算法处理文本块得到重要性的初始值,输入为所有文本块的集合,一个预设好的字典,通常由大量本领域语料统计得到,以及一个标签文本信息,例如文本分类的类别名称,博客的关键词,IPC的定义等。输出为一个得分列表,从高到低分别代表每个文本块对于标签的相关性得分,也即文本块的重要性初始值。计算过程如下:
其中,
q为查询语句(标签文本),d为输入文本块中的其中一个,|q|为查询语句中的词数,f(qi, d)为文档d中查询qi出现的次数,qi是查询语句中的第i个查询词,n(qi)为包含查询qi的文档数,N为文档集中文档总数,avgdl为文档集中平均文档长度,在这里是块的大小,即63,k1和b为BM25算法中的参数,一般设置为k1=1.2,b=0.75。其中n(qi)和N来自于字典输入。
判别器的训练:
判别器的任务是训练模型学习对文本块的重要程度进行打分,判别器的模型结构如图2所示。
可以使用以上公式概括判别器的运行过程,其中,sigmoid 表示 sigmoid 函数,MLP 表示多层感知器,BERT 表示预训练模型,z+表示输入向量,len(z+)表示该向量的长度。
模型的输入z+是经过BERT分词器处理后的文本数据,是512长度的向量。每64个长度的位置对应一个填充的文本块(63个字加一个[SEP]标识)。
模型的输出judge(z+)是一个长度为512的向量。每个位置的数值表示该位置输入字的重要程度分值。
模型的损失函数是:
其中lossrand是随机采样的损失,lossrelev是相关性采样的损失,losstotal是总体损失。是交叉熵函数,/>是输入为/>的判别器输出,是输入为/>的判别器输出,/>是/>的重要性标签,是/>的重要性标签。
是由重要性采样得到的块集合表示成的向量,其中重要性采样的方法为,将所有标签为“重要”的块与一部分标签为“不重要”的块(选取不重要块的方法是随机采样)组合在一起,并保证总长度小于BERT的总长度限制,即512字,/>是一个长度为512的向量,重要块与不重要块之间使用[SEP]分隔符分割。
是由随机采样得到的块的集合表示成的向量,其中随机采样的方法为,对所有的块进行随机采样,并将采样选取到的块进行组合,保证总长度小于BERT的总长度限制,即512字。/>是一个长度为512的向量,块与块之间使用[SEP]分隔符分割。
是/>向量的重要性标签,重要性标签的定义为:若一个块的标签为“重要”,则其中所有位置的标签都为“1”,若一个块的标签为“不重要”,则其中所有位置的标签都为“0”,由于/>是由一些列块所组成,故/>是由一些列连续“0”“1”所组成的向量,其总长度为512。
同理是/>向量的重要性标签。
根据模型的输出judge(z+)对块的重要性进行定义:块的重要性数值定义为在输出向量judge(z+)中,此块所表示的区域内,所有位置的数值的平均值,例如表1所示示例。
表1
上述文本块的重要性分值定义为:
(1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 1 + 3 + 3 + 1 + 1)/ 13 = 1.615
注:所有块在向量或/>中都是以[SEP]分割,/>或/>都是以[CLS]开头,输入实际是字在字典中的索引,是一个整数,在这里为了方便解释,替换为字本身。
判别器模型的训练过程是使用优化器来不断减小losstotal,假设在训练过程中,每个块的重要性标签都是已知的,具体计算块的重要性标签的方法详见后面的重要文本块的筛选算法。
推理器的训练:
推理器的任务是使用判别器选出的重要块来进行下游任务的训练,可以理解为使用摘要文本来进行文本分类,例如文本主题分类,专利IPC分类等。
推理器的模型结构如图3所示。
可以使用以上公式概括推理器的运行过程,其中,sigmoid 表示 sigmoid 函数,MLP 表示多层感知器,BERT 表示预训练模型,z+表示输入向量。
推理器的输入是长度为512的向量,是经过判别器筛选出所有重要文本块的集
合并经过BERT分词器处理后的结果。
推理器的输出是一个1乘n的向量,n的大小为下游任务标签类别的数量,例如,若为10分类的文本分类问题,则n=10,若下游任务是为IPC大类分类,则n=8.
推理器的损失函数可以表达为:
其中loss是推理器的损失函数,是交叉熵函数,/>是推理器的输出,z+表示输入向量,y表示真实标签的类别。
推理器模型的训练过程即使用优化器来不断减小loss。
重要文本块的筛选算法描述:
如图5所示,文本块重要性筛选算法的主要目的是在初始化阶段之后,基于已训练的判别器重新计算文本块的重要性,并对文本块的重要性标签进行修改。
定义“工作区”W:放在判别器中的文本块,块总长限制为512。
定义“候选区”C:同样相对于判别器而言,若某篇文档X,经过上述分块算法后得到块对所有不属于工作区W中的xi所构成的集合/>定义为C。
1.将所有标记为重要的块置于工作区W首部,命名为z+。
2.在候选区C遍历所有标记为不重要的块xi,置于工作区W的z+之后的位置,使用判别器计算z+与xi的相似性分值,作为重新计算之后的块xi的重要性分值。
3.将所有重新计算得到的重要性分值进行排序,得到分值最高的若干个块,放入推理器,放入的顺序按照块所出现在原文(原始的长文本)中的顺序。
4.通过推理器的计算得到下游任务中的损失函数数值,记作loss。
解释见上文。
5.固定推理器模型参数,即不进行反向传播,只计算损失函数。
6.在推理器中依次删除文本块zi,通过推理器重新计算删除zi后的损失函数。
7.预先设置阈值tup,tdown。当时文本块zi被重新标识为“重要文本块”。当/>时,文本块zi被重新标识为“不重要文本块”。
8.当一个文本块被标识为“重要”,则该文本块将被留存于z+中,在下一轮训练中会被置于工作区W,若被标识为“不重要”,则首先被排除工作区W,重新回到候选区C,在下一轮训练时等待重新计算重要性。
模型应用阶段文本块的筛选:
在模型应用阶段应当有经过充分训练的判别器,并使用文本分块算法对待摘要的文本进行分块处理,得到。
首先初始化一个空的文本块列表z,z的长度限制为L=512,若文本带有自有的标签z0(文本分类类别,博客主题词,IPC类别等文字标签),则将z0置于z的首部。
遍历所有的文本块xi,将z与xi拼接,输入训练好的判别器,得到xi的粗筛重要性打分。
将所有xi按照粗筛重要性打分重新排序,按照分值从高到低的顺序填入z,使z达到最大长度限制,末尾补[PAD],补全后的z记作z+。
使用判别器计算judge(z+),得到文本块的精选重要性打分,并按照预设好的保留数量,最终保存在z中,进行下一轮的推理。
将最终得到的z+中的所有块,按照其在原文中的顺序重新排列,得到最终用于摘要生成的文本块。
步骤S3使用筛选出的重要文本块进行摘要生成部分,使用BART模型。
BART模型的训练:
1.数据准备:搜集一个包含大量文本的原始数据集,数据可以来自新闻报道,科研论文,博客文章等等。
2.对搜集到的数据集进行预处理,包括清洗特殊字符,去除xml标记等等。
3.分割数据集:将整个数据集分割成训练集、验证集和测试集。训练集用于训练模型,验证集用于调整模型超参数和评估模型在训练过程中的表现,测试集用于评估模型的最终性能。
4.准备一个预训练的BART模型,BART模型基于Transformer架构,预训练参数可以从互联网上获取。
5.使用长文本块破碎算法,对训练集验证集和测试集进行处理,处理过程如下:
5.1)设原始文本 T 分割成句子集合 S = {s1, s2, ..., sn},其中 n 为句子的数量,si 表示第 i 个句子。
5.2)使用 TextRank算法从句子集合 S 中提取关键句集合 K = {k1, k2, ...,km},其中 m 为关键句的数量,ki 表示第 i 个关键句。使用TextRank算法从句子集合S中提取关键句集合K的具体过程如下:
① 对于任意两个句子si和sj,计算它们的相似度 Sim(si, sj);
② 根据句子相似度构建加权无向图G(V, E),其中V是顶点集合,E是边集合,每个顶点对应一个句子;顶点集合V对应句子集合S,边集合E中的边eij的权重为Sim(vi, vj);
③ 在加权无向图G上运行TextRank算法,按照下式计算每个顶点的得分TR(vi);
其中:
TR(vi)是顶点vi的TextRank得分;
d是阻尼因子,通常设为 0.85;
eji是连接vj和vi的边的权重,也就是顶点vj和vi(对应的句子)的相似度Sim(vi,vj);
In(vi)是所有指向顶点vi的顶点的集合;
OUT(vj)是所有由顶点vj指向的顶点的集合;
是所有从顶点vj到其他顶点的边的权重之和;
TR(vj)是指向顶点vi的顶点vj的TextRank得分;
④ 根据TR(vi)对顶点集合V(即对应的句子集合S)进行排序,选择排名靠前的m个顶点对应的句子作为关键句集合K = {k1, k2, ..., km}。
5.3)计算其他句子集合 O,即 S 中不包含 K 中的句子:O = S - K = {o1, o2,..., or},其中 r 为其他句子的数量,oi 表示第 i 个其他句子。
5.4)从关键句集合 K 中随机选择 p 个关键句,从其他句子集合 O 中随机选择q 个句子,将它们组合成一个新的破碎文本集合 X' = {x1', x2', ..., x{p+q}'},其中 xi'表示第 i 个破碎文本块。
5.5)随机打乱破碎文本集合 X',得到最终的离散破碎的文本块集合 X = {x1,x2, ..., x{p+q}}。
6.以破碎文本块的集合作为输入,以原始文本为目标输出,训练BART模型,使BART模型学会如何将离散破碎的文本块集合转换为通顺、连贯的原始文本。
在BART模型应用阶段,使用训练好的BART模型将推理过程的输出转化为最终生成的摘要内容。
BERT模型前交互处理机制相较于传统先向量后筛选的方法精度更高,更为可靠,可适用于会议纪要、给定预设主题的内容截取等场景,并且算法的时间空间复杂度都为O(N),具有能高效快速抽取文本摘要内容的优势。
本实施例使用多层次BERT处理长文本的摘要问题,解决了常规BERT模型由于其自身长度限制无法处理长文本摘要的问题,并且本发明提出了一种基于下游标签迁移的文本摘要技术,可以根据文本自有标签,如新闻文本分类类别,博客的主题词,专利的IPC定义等信息,有倾向性的提取出与主题相关度强的文本内容,并且由于引入了多层级BERT模型,可以在段落级和篇章级进行摘要提取;同时,本实施例采用BART预训练模型,并构造了一个与重构文本块相关的任务,并最终使用BART模型将抽取出的关键文本块重构成一段通顺自然的摘要文本。
经测试,采用本实施例得到的摘要文本可有倾向性地提取出与待摘要长文本(原始文本)实际主题更相关的文本内容,且表达更加自然流畅。
在一个实施例中,还提供了一种计算机设备,该计算机设备可以是服务器,也可以是客户端设备,通过运行程序实现上述实施例方法中的全部或部分流程。
在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,其特殊之处在于,所述计算机程序被处理器执行时实现上述实施例方法中的全部或部分流程。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。