掌桥专利:专业的专利平台
掌桥专利
首页

一种基于动态提示学习的小样本嵌套关系抽取算法

文献发布时间:2024-04-18 19:59:31


一种基于动态提示学习的小样本嵌套关系抽取算法

技术领域

本发明属于人工智能与自然语言处理领域,具体涉及一种基于动态提示学习的小样本嵌套关系抽取算法。

背景技术

在自然语言处理中,实体与关系抽取技术根据任务复杂性主要分为三种,由简单到复杂依次分别为:扁平关系抽取(Flat Relation),重叠关系抽取(OverlappingRelation)和嵌套关系抽取(Nested Relation)。

现有关系抽取算法研究工作大多集中在扁平关系抽取与重叠关系抽取,只关注实体之间的关系。但是,在实际应用场景中,以嵌套结构形式呈现的关系信息更加常见,而现有的面向扁平结构的关系抽取算法不能解决嵌套关系抽取的问题。因此,嵌套关系抽取具有广阔的应用场景需求。

相比扁平关系抽取和重叠关系抽取任务只关注实体之间的关系,嵌套关系抽取任务不仅将实体作为关系的组成部分,而且低层的关系三元组也可以被作为高层关系的组成元素。因此,嵌套关系抽取的技术难度更大,相关的现有技术工作也较少,并且现有相关技术方法以完成垂直领域的嵌套关系抽取任务为目标,没有对嵌套关系抽取效果做出深入优化,所以现有嵌套关系抽取技术存在不能准确全面地识别出文本中所有嵌套关系的问题。

发明内容

发明目的:为了解决现有嵌套关系抽取技术方法对高层嵌套关系抽取不够准确与全面的问题,提出一种基于动态提示学习的小样本嵌套关系抽取算法,该算法设计实现了面向嵌套关系抽取的动态提示模版(Prompt),将嵌套关系抽取任务转化为掩码语言模型任务,充分发挥预训练模型和提示学习在小样本场景下的有效性,提升模型在小样本场景下的嵌套关系抽取准确性。

技术方案:为实现上述发明目的,本发明一种基于动态提示学习的小样本嵌套关系抽取算法,包括以下步骤:

(1)为了解决现有的嵌套关系抽取算法研究工作对于高层嵌套关系识别不够准确与全面的问题,首先提出一种基于动态提示学习的小样本嵌套关系抽取算法框架,包括面向嵌套关系抽取的Prompt模版设计与实现、基于Prompt的嵌套关系抽取算法迭代过程、动态Prompt机制三个步骤。

(2)进一步提出基于动态提示学习的小样本嵌套关系抽取算法,实现了面向嵌套关系抽取的动态提示模版(Prompt),将嵌套关系抽取任务转化为掩码语言模型任务,充分发挥预训练模型和提示学习在小样本场景下的有效性。与步骤(1)算法框架步骤相对应,包括:1)面向嵌套关系抽取的Prompt模版设计与实现:首先,算法生成每层嵌套关系的候选左、右元素对,然后,使用Prompt转换模版函数将原始输入句子与每层候选左、右元素对转换为Prompt输入语句,最后,使用预训练语言模型对Prompt输入语句进行掩码预测,迭代地实现对每层嵌套关系候选左右元素对的关系类型分类,从而完成嵌套关系抽取任务。2)基于Prompt的嵌套关系抽取迭代过程:嵌套关系抽取任务需要迭代对每个样本句子进行嵌套关系抽取,直到没有新的嵌套关系三元组产生。3)动态Prompt机制:将原来通过固定转换模版函数生成Prompt输入语句的方法进行改进,使用动态的转换模版函数生成Prompt输入语句,起到数据增强的作用,从而缓解原来Prompt模版带来的数据稀疏问题。

有益效果:本发明能够有效解决现有嵌套关系抽取的问题与不足。其特点是,针对现有嵌套关系抽取算法对高层嵌套关系识别结果不准确的问题,提出一种基于动态提示学习的小样本嵌套关系抽取算法,实现了面向嵌套关系抽取的动态提示模版(Prompt),将嵌套关系抽取任务转化为掩码语言模型任务,充分发挥预训练模型和提示学习在小样本场景下的有效性,提升模型在小样本场景下的嵌套关系抽取准确性。

附图说明

图1基于动态提示学习的小样本嵌套关系抽取算法的整体框架图

图2基于Prompt的嵌套关系抽取迭代过程图

图3特殊关系标识符使用示例图

图4动态Prompt机制示例图

具体实施方式

下面结合附图,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

本发明提出了一种基于动态提示学习的小样本嵌套关系抽取算法,包括以下两个步骤:

步骤(1):基于动态提示学习的小样本嵌套关系抽取算法框架。为了解决现有的嵌套关系抽取算法研究工作对于高层嵌套关系识别不够准确与全面的问题,首先提出一种基于动态提示学习的小样本嵌套关系抽取算法框架,包括面向嵌套关系抽取的Prompt模版设计与实现、基于Prompt的嵌套关系抽取算法迭代过程、动态Prompt机制三个步骤。

步骤(2):基于动态提示学习的小样本嵌套关系抽取算法设计实现。与步骤(1)算法框架步骤相对应,包括:1)面向嵌套关系抽取的Prompt模版设计与实现:首先,算法生成每层嵌套关系的候选左、右元素对,然后,使用Prompt转换模版函数将原始输入句子与每层候选左、右元素对转换为Prompt输入语句,最后,使用预训练语言模型对Prompt输入语句进行掩码预测,迭代地实现对每层嵌套关系候选左右元素对的关系类型分类,从而完成嵌套关系抽取任务。2)基于Prompt的嵌套关系抽取迭代过程:嵌套关系抽取任务需要迭代对每个样本句子进行嵌套关系抽取,直到没有新的嵌套关系三元组产生。3)动态Prompt机制:将原来通过固定转换模版函数生成Prompt输入语句的方法进行改进,使用动态的转换模版函数生成Prompt输入语句,起到数据增强的作用,从而缓解原来Prompt模版带来的数据稀疏问题。

具体的实施方式说明如下。

步骤(1):基于动态提示学习的小样本嵌套关系抽取算法框架1.算法整体框架设计

本发明提出的基于动态提示学习的小样本嵌套关系抽取算法的整体框架如图1所示。

该算法包含三个主要步骤:面向嵌套关系抽取的Prompt模版设计与实现、基于Prompt的嵌套关系抽取迭代过程以及动态Prompt机制,实施方案如下。

(1)面向嵌套关系抽取的Prompt模版设计与实现

为了能够使用预训练语言模型解决小样本嵌套关系抽取任务,需要将嵌套关系抽取任务转化为掩码语言模型任务形式。首先,算法生成每层嵌套关系的候选左、右元素对;然后,使用Prompt转换模版函数将原始输入句子与每层候选左、右元素对转换为Prompt输入语句;最后,使用预训练语言模型对Prompt输入语句进行掩码预测,迭代地实现对每层嵌套关系候选左右元素对的关系类型分类,从而完成嵌套关系抽取任务。

(2)基于Prompt的嵌套关系抽取迭代过程

嵌套关系抽取任务需要迭代对每个样本句子进行嵌套关系抽取,直到没有新的嵌套关系三元组产生。在迭代过程中,因为每一层嵌套关系会产生新的关系三元组,所以每一层的Prompt输入语句也是各不相同的,需要迭代地根据每一层的嵌套关系三元组来生成新的Prompt输入语句。首先,算法生成当前层嵌套关系的Prompt输入语句;然后,预训练语言模型预测出当前层的所有嵌套关系三元组;接着,将新生成的关系三元组进行表示并且拼接到上一层的Prompt输入语句;最后,迭代地生成下一层Prompt输入语句并且预测,直到没有新的嵌套关系三元组产生。

(3)动态Prompt机制

在嵌套关系抽取的Prompt设计与实现模块中,引用了特殊关系标识符来表示已有的关系三元组,但是会产生数据稀疏的问题。为了解决该问题,提出动态Prompt机制,将原来通过固定转换模版函数生成Prompt输入语句的方法进行改进,使用动态的转换模版函数生成Prompt输入语句,起到数据增强的作用,从而缓解原来Prompt模版带来的数据稀疏问题。

步骤(2):基于动态提示学习的小样本嵌套关系抽取算法实施方案

2.基于动态提示学习的小样本嵌套关系抽取算法

与前述算法框架相对应,本发明提出的基于动态提示学习的小样本嵌套关系抽取算法包含三个主要步骤:面向嵌套关系抽取的Prompt模版设计与实现、基于Prompt的嵌套关系抽取迭代过程、以及动态Prompt机制。具体实施方案如下。

(1)嵌套关系抽取的Prompt设计

本算法中嵌套关系抽取的Prompt设计分为三个步骤,分别是提示模版设计、答案搜索与答案映射。

1)嵌套关系抽取任务的Prompt提示模版设计

给定嵌套关系任务输入句子为:x={w

f

其中,

考虑到Prompt输入模板设计方法具有多样性,不同任务对应不同的Prompt模版设计,相同任务也可以有多种Prompt输入模版设计,因此,本算法设计了2种Prompt输入模版f

a)f

b)f

2)嵌套关系抽取任务的Prompt答案搜索

嵌套关系抽取任务的原输入句子x,经过Prompt模版转换函数后,得到Prompt输入语句x′,再输入到预训练语言模型,预训练语言模型在Prompt输入语句x′中单词[MASK]的位置预测出Prompt答案词。因为这些答案词与嵌套关系抽取中的关系类型标签相对应,所以,Prompt答案词也被称为标签词(label word)。

在文算法中,设计实现了两种标签词设计方法:

a)第一种标签词设计方法,记为Prompt

b)第二种标签词设计方法,记为Prompt

设嵌套关系抽取任务的关系类型集合为R={rt

其中,

因为每种嵌套关系类型标签都对应着Prompt标签词集合,所以嵌套关系抽取任务的所有Prompt标签词集合为:

其中,V

Prompt标签词的预测概率公式如下:

其中,h

通过以上公式(6)计算出每个标签词的预测概率后,选择其中预测概率最大单词的作为最终预测标签词,具体预测公式表示为:

其中,P([MASK]=w|x′)表示预训练语言模型从Prompt输入句子x′中[MASK]位置预测出标签词w的概率;argmax表示选择概率最大单词的函数,

3)嵌套关系抽取任务的Prompt答案映射

预训练语言模型在Prompt输入句子x′中特殊单词[MASK]的对应位置预测出最终的标签词w之后,提示学习Prompt模版需要将该标签词w转化为对应的嵌套关系任务关系类型标签,对应的转化过程使用如下公式表示:

其中,rt表示嵌套关系抽取任务的关系类型;y

(2)基于Prompt的嵌套关系抽取算法迭代过程

一般的关系抽取任务或者文本分类任务只需要预测出输入句子所表达的实体之间关系或类别,属于单次预测任务。所以,为了将这类任务转化为预训练语言模型的掩码语言模型任务形式,只需要使用提示学习的Prompt模版直接将原任务输入句子转化为Prompt输入句子并且进行单次预测。

但是,嵌套关系抽取任务为了抽取输入句子中的嵌套关系,需要逐层迭代地预测具有嵌套结构的关系三元组,并且需要将当前层预测出的嵌套关系三元组用于下一层关系的预测,构成迭代式嵌套关系抽取任务。

为了将嵌套关系抽取任务转化为预训练语言模型的掩码语言模型任务形式,需要迭代地使用提示学习的Prompt模版将原任务输入句子与每层嵌套关系转化为Prompt输入句子并且进行迭代式预测。这也是基于动态提示学习的嵌套关系抽取任务与一般的关系抽取任务的主要区别。

在基于Prompt的嵌套关系抽取算法迭代过程中,嵌套关系抽取任务的Prompt提示模版设计主要分为两种情况:嵌套关系层数l=0和l≥1,对于这2种情况分别讨论如下:

1)嵌套关系层数l=0

当嵌套关系层数l=0时,嵌套关系中元素只包含句子中的全部实体,对应的嵌套关系Prompt提示模版设计中转换模版公式如下:

其中,

2)嵌套关系层数l≥1

当嵌套关系层数l≥1时,嵌套关系中元素不仅有实体,还有关系三元组,对应的嵌套关系Prompt输入模版转换公式如下:

其中,p

根据公式(12),当嵌套关系层数l≥1时,首先,算法将输入句子中第l层的所有嵌套关系三元组都依次拼接到第l-1层的Prompt前缀模版函数

此外,在生成嵌套关系候选元素对时,算法保证该元素对中左元素

其中,

以图2中的嵌套关系抽取过程为例,嵌套关系原始输入句子为x=“技术性收入占营业收入的20%以上。”,该句子具有三个实体分别是“技术性收入”、“营业收入”和“20%”。

首先,算法从

其中,x表示嵌套关系任务原输入句子;

随后,预训练语言模型对该层Prompt输入的[MASK]位置依次预测出对应嵌套关系元素对的类型标签词“Division”、“None”与“None”;最后,将标签词映射为关系类型标签“/”、“No”与“No”。

经过以上过程,嵌套关系抽取模型在l=0时,抽取出了新的嵌套关系三元组为<技术性收入,/,营业收入>。

当嵌套关系层数l=1时,第1层的嵌套关系三元组集合为

首先,算法将第一层的嵌套关系三元组拼接到前一层的Prompt前缀模版函数输出

其中,x表示嵌套关系任务原输入句子;

随后,预训练语言模型对该层Prompt输入的[MASK]位置依次预测出对应嵌套关系元素对的关系类型标签词,并映射为嵌套关系类型标签;最后,算法抽取出嵌套关系层数l=1时新的嵌套关系三元组为

当嵌套关系层数l=2时,模型继续生成嵌套关系左右元素对,再转换为Prompt输入,使用预训练语言模型预测出对应的标签词,没有产生新的嵌套关系三元组,最终结束嵌套关系抽取的迭代过程。

(3)动态Prompt机制

基于前述嵌套关系抽取Prompt提示模板的实现过程,当嵌套关系层数l≥1时,候选嵌套关系元素对会使用到前l层的嵌套关系三元组。所以,在使用Prompt输入模版转换函数

为了解决该问题,本算法提出使用特殊关系标识符来表示底层嵌套关系三元组。考虑到使用特殊关系标识符的方法会将特殊关系标识符与部分嵌套关系三元组绑定,从而引发数据稀疏问题。对此,本算法提出了动态Prompt机制,对特殊关系标识符进行动态分配,起到数据增强作用,从而缓解数据稀疏问题。

本算法提出的动态Prompt机制主要分为两个步骤:特殊关系标识符设计和动态分配。

1)特殊关系标识符设计

本算法提出的特殊关系标识符集合为{[r

当嵌套关系层数l=0时,因为嵌套关系中所有元素都是实体,不会使用到特殊关系标识符。

当嵌套关系层数l≥1时,根据公式(12),使用Prompt提示模版前缀函数

在表示嵌套关系三元组时,对于前l层嵌套关系三元组集合中每个嵌套关系三元组r

以图3中嵌套关系抽取过程为例,对特殊关系标识符的使用过程进行介绍。

当嵌套关系层数l=1时,第l=1层的嵌套关系三元组集合为

基于动态提示学习的嵌套关系抽取算法为嵌套关系三元组

其中,x表示嵌套关系任务原输入句子;[r

然后,预训练语言模型从Prompt输入x′

2)特殊关系标识符动态分配

基于动态提示学习的嵌套关系抽取算法在为各个嵌套关系三元组分配特殊关系标识符时,如果只按照预定义好的标识符顺序进行分配,那么排序越靠后的特殊关系标识符出现的频率越低。

这是因为,只有当一个样本包含的嵌套关系三元组个数越多时,排序靠后的特殊关系标识符才会在该样本中被使用到,即,[r

为了解决该问题,本算法提出了基于特殊关系标识符的动态分配机制:

对于样本中的任意嵌套关系三元组r

K≥max(RelNum(x

其中,RelNum(x

以图4为例,采用特殊关系标识符的动态分配机制后,当嵌套关系层数l=1时,第l=1层的嵌套关系三元组集合为

其中,x表示嵌套关系任务原输入句子;[r

然后,预训练语言模型从Prompt输入x′

3.算法效果评估分析

(1)对比实验评估与分析

将嵌套关系抽取模型分别在“From Scratch”与“Guided”两种模式下进行了对比实验。“From Scratch”模式表示模型按层次迭代地预测嵌套关系,从当前层预测出的嵌套关系三元组用于生成下一层嵌套关系三元组。所以,当前层预测出的错误嵌套关系三元组可能被用于下一层,导致误差传播,模型性能随着层次增加而衰减。“Guided”模式表示模型在预测下一层的嵌套关系三元组时,使用当前层标注正确的嵌套关系三元组来代替模型预测出的结果,避免误差传播。

表1动态提示学习模型对比实验结果

对比实验结果如表1所示,模型从第一层开始迭代地预测出所有层的嵌套关系三元组后,计算整体评价指标。其中,Prompt

从表1中,可以得到以下三点结论:

1)本算法模型Prompt

2)本算法模型Prompt

3)在“Guided”模式下各个模型的整体指标都高于“From Scratch”模式下的各个对应模型,说明了在嵌套关系抽取过程中,当前层预测结果的错误信息传播会导致后面层的嵌套关系抽取指标下降,也证明了嵌套关系抽取任务的复杂度较高。

(2)小样本实验评估与分析

为了评估提出的基于动态提示学习的小样本嵌套关系抽取算法在小样本场景下的准确性,分别在百分比小样本数据集与N-way,K-shot小样本数据集进行了实验。

表2动态提示学习模型百分比小样本实验结果

在百分比小样本数据集上的实验结果如表2所示,表中列出了基线模型INN、INN的变体模型INN-BERT、模型Prompt

从表2可以得到以下三点结论:

1)基线模型INN在50%到10%小样本训练集上的F1指标从69.10下降到53.46,下降幅度为15.64(22.63%);模型Prompt

2)在10%到50%小样本数据集上,本算法模型Prompt

3)在10%、20%与30%小样本训练集上,模型Prompt

表3动态提示学习模型N-way,K-shot小样本实验结果

N-way-K-shot小样本数据集上的实验结果如表3所示,表中列出了基线模型INN、INN的变体模型INN-BERT、模型Prompt

从表3可以得到以下两点结论:

1)在所有N-way,K-shot小样本数据集上,本算法模型都取得了最优的结果。在5-way,K-shot-high与5-way,K-shot-low(K=1、5与10)小样本数据集上,模型Prompt

2)随着N-way,K-shot小样本数据集中K不断增大,所有模型的F1指标也不断提升,进一步说明了训练集样本数量规模对模型在嵌套关系抽取任务上的准确性起重要作用,也突出了提升模型在小样本场景下的模型性能的工作具有重要意义。

技术分类

06120116525206