本文主要是介绍ACL2021_Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition
- 知识准备
- 摘要
- 介绍
- 相关工作
- 原型网络
- 方法
- 符号标记
- Undefined Classes Detection
- Step 1: Mapping Function Learning
- Step 2: Binary Group Classifier Training
- Step 3: Binary Group Classifier Inference
- Joint Classification
- 实施详情
- 实验
- 数据集
- 数据切分
- 评价指标
- Baselines
- 整体表现
- 寻找未定义类的质量
- 不同数量的未定义类
- Cross-Domain Ability
- Task-Agnostic Ability
- 总结
论文.
知识准备
- 原型网络(Prototypical Networks)
原型网络首先利用每个类别提供的少量样本,计算它们的嵌入的中心,作为每一类样本的原型(Prototype),接着基于这些原型学习一个度量空间,使得新的样本通过计算自身嵌入与这些原型的距离实现最终的分类,思想与聚类算法十分接近,但出发点有着很大的差异。
- 少样本学习(Few-shot Learning)
少样本学习(Few-shot Learning)就是希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习。
- 零样本学习(Zero-shot Learning)
零样本学习(Zero-shot Learning) 简单来说就是识别从未见过的数据类别,即训练的分类器不仅仅能够识别出训练集中已有的数据类别,还可以对于来自未见过的类别的数据进行区分。
- 原型网络在少样本分类与零样本分类任务上的示意图如下所示。1
摘要
- 任务: Few-shot NER(少样本命名实体识别)仅利用少量标签对命名实体提及进行识别和分类。
- 问题:Prototypical(原型)网络在Few-shot NER上表现出优越的性能。然而,现有的原型方法不能区分其他类词中丰富的语义,这将加剧在Few-shot场景下的过拟合。(之前的方法对标签“O”类的信息学习不够充分,导致更容易让模型过拟合)
- 解决:针对这一问题,本文提出了一种新的模型——MUMO(Mining Undefined Classes from Other-class),该模型可以自动地从其它类中归纳出不同的未定义类,从而改进了Few-shot NER。通过使用这些额外标注的未定义类,模型将提高NER分类器的区分能力,并利用备用语义知识增强对预定义类的理解。(可以自动从其他类(Other-class)中学习到不同的未定义类,以提高NER少样本学习能力)
- 效果:实验结果表明,在4个NER基准上,本文的模型在1-shot和5-shots设置上都优于现有的5种模型。
介绍
命名实体识别(NER)致力于从句子中定位命名实体并将其分类到预定义的类别中。只要举一个或几个例子,人类就能立即识别出新的实体类型。尽管基于神经网络的NER在提供大规模训练样本时取得了优异的性能,但从有限的新样本中学习仍然是一项艰巨的任务,它也被称为Few-shot NER(少样本命名实体识别)。
- 传统的NER模型,如LSTM+CRF,但并不适用于Few-shot场景。它们基于统计学计算转移概率矩阵,这需要对大量的数据进行优化。
- 最近,Prototypical(原型)网络在Few-shot
NER任务上显示出潜力。其基本思想是学习每个预定义实体类和O类的原型,然后根据它们最接近的原型对示例进行分类。现有的大多数研究都集中在预定义的类上,并利用标签语义来揭示它们对增强的依赖性。然而,它们忽略了隐藏在其它类(简称O类)词中的大量语义。
在本文中,建议从O类单词中学习,而不是只使用预定义的实体类,以改进Few-shot NER。实际上,O类包含了丰富的语义,可以为命名实体的识别和消歧提供后备知识。
如Figure1 (a)所示,如果可以检测到由命名实体(如代词)的引用组成的未定义类,那么由于它们的互换性,将获得命名实体标识的先验知识。例如,在S2和S3中,牛顿可以用他或教授代替。如果我们能检测到更多的类,包括他和教授,就会有更多关于牛顿可能出现在哪里的证据。此外,如果能检测到一个由Action(O1)组成的未定义的类,我们就可以捕获不同命名实体之间的下划线关系,这是区分命名实体类型的重要证据。
从O类词中检测相关的未定义类是具有挑战性的,有两个原因:
-
复杂的语义。O类包含各种类型的单词,根据观察,虽然有大量相关但未定义的类别,但噪音可能更大,如函数和停用词。这些噪声类对目标实体的识别影响很小甚至是负面的。因此,如何区分噪声和任务相关类是一个关键问题。
-
缺乏Golden标签。既没有带标签的示例,也没有每个未定义类的元数据。在这种情况下,Zero-shot方法会失败,因为它们需要元数据(如类名和类描述)作为已知信息。实验表明,无监督聚类方法也不能满足质量要求。
为了解决这些问题,本文提出了从O类中挖掘未定义类(MUMO)模型,以利用丰富的语义来改进Few-shot NER。学习多个原型来表示O类的各种语义,而不是单一的原型。
Figure1 (b)显示了本文的方法与以前的方法之间的区别。为了在没有标签的情况下区分与任务相关的未定义类,利用预定义类的弱监督信号,提出了一种新的zero-shot Miner的分类方法。其主要思想来自于原型网络中的迁移学习。当对相关的基类A进行预训练时,原型网络可以快速适应新的B类。背后的原因是,如果两个类(A和B)是与任务相关的,当我们对A类中的样本在空间中聚类时,B类中的样本也往往在空间中聚类,即使没有对B类的明确监督。
基于这一现象,首先对预定义类进行原型学习,对预定义类中的词进行聚类,然后将也倾向于聚类的O类中的词视为未定义类。具体地说,训练一个二进制分类来判断任意两个单词之间是否发生聚类。之后,将发现的未定义类重新标注回句子,以共同识别预定义类和未定义类,进行知识转移。本文的贡献可以概括为:
- 提出了一种新的方法MUCO,利用O类中丰富的语义来改进Few-shot NER;(这是第一次在NER任务中探索O类)
- 提出了一种新的用于未定义类检测的zero-shot Miner分类方法。在没有标注样本和元数据的情况下,提出的Zero-shot方法创造性地利用预定义类的弱监督信号来发现未定义的类;
- 在四个基准上进行了广泛的实验,并与五个最先进的基准进行了比较。在1-shot和5-shots设置下的结果都证明了MUMO的有效性。进一步的研究表明,此方法也可以方便地适用于其他领域。
相关工作
Few-shot NER的目标是通过几个例子来识别新的类别,并采用四组方法来处理资源不足的问题:知识增强、跨语言增强、跨领域增强和主动学习。
- 知识增强方法利用本体、知识库或启发式标注作为辅助信息,在有限的数据环境下提高NER的性能,但存在知识覆盖率低的问题。
- 跨语言和跨领域增强方法分别使用来自对应语言或不同领域的标记数据作为外部监督信号,以避免过度拟合。当语言或领域差异较大时,这两种方法不可避免地会面临性能下降的问题。
- 主动学习方法通过选择信息量最大的实例来进行人工标注,从而显式地扩展语料库,这需要额外的人力物力。
与以往的方法不同,本文重点挖掘了O类中丰富的语义,以提高少命中率。
原型网络
原型网络最初是为图像分类而提出的,现已成功地应用于文本分类、关系抽取等句子级分类任务。然而,如何使原型网络适用于像NER这样的token级分类任务是一个难题。原型网络假设每个类具有统一的语义,属于同一类的向量应该在空间中聚集。然而,在NER中,O类中的数据包含多个语义,从而违反了原型网络中统一的语义假设。为了处理这个问题:
- Deng等人首先训练分类器来区分O类和其他预定义的类,然后采用传统的原型网络方法,这种方法容易受到流水线错误传播的影响。
- Fritzler等人没有从数据中计算O类的原型,而是直接将超参数 b o b_o bo设置为伪距离相似度,并在训练过程中对 b o b_o bo进行优化,这里仍然将O类作为一个整体。
- 相反,本文首次将O类划分为多个未定义的类,并显式地学习了O类的多个空间分散的原型。
方法
Figure 2 展示了MUMO模型的体系结构。MUMO由两个主要模块组成:
- Undefined Classes Detection检测隐藏在O类中的多个未定义类,以充分利用O类中丰富的语义。
- Joint Classification对未定义类和预定义类进行联合分类,利用未定义类中的备用语义知识增强对预定义类的理解。
符号标记
在Few-shot NER中,给出了训练样本 D = D c ∪ D o D=D_c\cup D_o D=Dc∪Do,其中 D c = { x i , y i ∣ i = 1 N } D_c=\left\{ x_i,y_i\mid_{i=1}^{N} \right\} Dc={xi,yi∣i=1N}为预定义类 C = { c 1 , c 2 , . . . , c k } C=\left\{ c_1,c_2,...,c_k \right\} C={c1,c2,...,ck}的训练样本, D o = { x i ∣ i = 1 M } D_o=\left\{ x_i\mid_{i=1}^{M} \right\} Do={xi∣i=1M}为O类的训练样本。
对于每个样本 ( x , y ) \left( x,y \right) (x,y), x x x是由 S S S 和 w j w_j wj组成,其中 S = < w 1 , w 2 , . . . , w n > S=<w_1,w_2,...,w_n> S=<w1,w2,...,wn>代表句子, w j w_j wj是查询到的命名实体, y y y是查询到的命名实体 w j w_j wj的标签。
将 y y y类的原型表示为 p y p_y py,将所有类 C ∪ O C\cup O C∪O的原型表示为 P = { p y ∣ y ∈ C ∪ O } P=\left\{ p_y|y\in C\cup O \right\} P={py∣y∈C∪O}。
从形式上讲,我们的目标是首先检测多个未定义的类,以便标记 D o D_o Do中的样本,然后在 D c D_c Dc和 D o D_o Do上最大化预测概率 P = ( y ∣ x ) P=\left( y|x \right) P=(y∣x)。
Undefined Classes Detection
在Few-shot NER中,句子中的大部分单词都属于O类。与预定义的类不同,O类不是上述类型,包含多个未定义的实体类型。以往的方法忽略了O类中的细粒度语义信息,简单地将O看作一个普通的类。本文将O类进一步解耦为多个未定义的类,以充分利用O类中隐藏的丰富语义。
这一部分的目标是从O类中检测未定义的类。这是一项重要的任务,因为我们缺乏元数据和黄金标签来帮助我们区分未定义的类。更糟糕的是,O类的样本很多,搜索空间也很大。为了解决这个问题,本文提出了一种名为Zero-shot Miner的Zero-shot分类方法,利用预定义类的弱监督来检测未定义的类。这个方法是受到迁移学习的启发,如果一个未定义的类是与任务相关的,当我们将预定义类中的示例聚集在空间中时,未定义类中的示例也应该有聚集的迹象,即使没有明确的监督。
例如,在Figure 2中,如果我们引导Emeneya和Newton(绿点1,3)在空间中聚集,那么professor和He(灰点9,12)也会倾向于在空间中聚集。
基于这一论点,可以在预定义类上训练原型网络的过程中,通过在O类中找出多组有聚类倾向的样本,实现未定义类的检测。如Figure 2 所示,我们的Zero-shot分类方法有三个步骤:
- Step1:Mapping Function Learning在预定义的类上训练原型网络,以获得学习到的映射函数。通过学习映射函数,将属于同一类的样本在空间中聚集。
- Step2:Binary Group Classifier Training根据学习映射函数和未学习到的映射函数的位置特征,在预定义的类上训练一个二进制分组分类器,以判断在第一步训练过程中是否有任何两个点有聚类倾向。
- Step3:Binary Group Classifier Inference使用在步骤2中学习的二进制分组分类器来推断O类中的样本,以区分未定义的类。
Step 1: Mapping Function Learning
在原型网络中,映射函数 f θ ( x ) f_{\theta}\left( x \right) fθ(x)的目的是将样本 x x x映射到隐藏的表示。该模型采用BERT作为映射函数,是一个以多头注意为基本单位的预先训练语言表示模型,具有较强的表征能力。
通过正确区分预定义的类来训练映射函数。
-
首先,提取被查询词的特征。从形式上讲,给出了训练样本 ( x , y ) ∈ D c \left( x,y \right) \in D_c (x,y)∈Dc,其中 x x x是由句子 S = < w 1 , w 2 , . . . , w n > S=<w_1,w_2,...,w_n> S=<w1,w2,...,wn>和查询词 w j w_j wj组成的,抽取BERT最后一层的序列输出的第 j j j个表示作为隐藏表示。
h = f θ ( x ) h=f_{\theta}\left( x \right) h=fθ(x)
-
然后,在训练开始时随机初始化 y y y类的原型 p y p_y py,然后在训练过程中将 y y y类中的样本之间的距离缩短到原型 p y p_y py。与传统的原型学习相比,这里不需要浪费部分样本来进行原型计算。
d ( x , p y ) = − f θ ( x ) T p y d\left( x,p_y \right) =-f_{\theta}\left( x \right) ^Tp_y d(x,py)=−fθ(x)Tpy
其中, f θ ( x ) f_{\theta}\left( x \right) fθ(x)和 p y p_y py首先通过L2正则化进行归一化处理。 -
训练映射函数的最终优化目标是:
L ( θ 1 ) = − log exp ( − d ( x , p y ) ) ∑ p c ∈ P c exp ( − d ( x , p c ) ) L\left( \theta _1 \right) =-\log \frac{\exp \left( -d\left( x,p_y \right) \right)}{\sum_{p_c\in P_c}{\exp \left( -d\left( x,p_c \right) \right)}} L(θ1)=−log∑pc∈Pcexp(−d(x,pc))exp(−d(x,py))
其中, P c = { p c ∣ c ∈ C } P_c=\left\{ p_c|c\in C \right\} Pc={pc∣c∈C}表示所有预定义类的原型。
Step 2: Binary Group Classifier Training
要检测多个未定义的类,需要找到多个样本组,并且每个组中的示例应该有聚集的趋势。为了处理这个问题,学习了预定义类上的二进制分组分类器。其主要思想是,如果能够确定任何两个样本是否属于同一组,我们就可以区分不同的组。给定 D c D_c Dc中的一对样本 ( x i , y i ) \left( x_i,y_i \right) (xi,yi)和 ( x j , y j ) \left( x_j,y_j \right) (xj,yj),它们的初始位置 h i h_i hi和 h j h_j hj来自未学习的映射函数 f θ ( x ) f_{\theta}\left( x \right) fθ(x),并且,训练后的位置 h ~ i \tilde{h}_i h~i和 h ~ j \tilde{h}_j h~j来自学习的映射函数 f ~ θ ( x ) \tilde{f}_{\theta}\left( x \right) f~θ(x), x i x_i xi和 x j x_j xj属于同一类的概率定义如下:
b i j = W ( [ h i ; h j ; h ~ i ; h ~ j ; ∣ h i − h j ∣ ; ∣ h ~ i − h ~ j ∣ ; ∣ h i − h ~ i ∣ ; ∣ h j − h ~ j ∣ ] ) + b b_{ij}=W\left( \left[ h_i;h_j;\tilde{h}_i;\tilde{h}_j;|h_i-h_j|;|\tilde{h}_i-\tilde{h}_j|;|h_i-\tilde{h}_i|;|h_j-\tilde{h}_j| \right] \right) +b bij=W([hi;hj;h~i;h~j;∣hi−hj∣;∣h~i−h~j∣;∣hi−h~i∣;∣hj−h~j∣])+b
通过比较原始位置 h h h和训练后的位置 h ~ \tilde{h} h~之间的距离变化可以判断这两个点之间是否发生聚集。
二进制分组分类器的优化目标是:
L ( θ 2 ) = 1 N 2 ∑ i N ∑ j N ( − y i j ∗ log ( b i j ) + ( 1 − y i j ) ∗ log ( 1 − b i j ) ) L\left( \theta _2 \right) =\frac{1}{N^2}\sum_i^N{\sum_j^N{\left( -y_{ij}*\log \left( b_{ij} \right) +\left( 1-y_{ij} \right) *\log \left( 1-b_{ij} \right) \right)}} L(θ2)=N21i∑Nj∑N(−yij∗log(bij)+(1−yij)∗log(1−bij))
其中, N N N是预定义类中的样本个数, y i j y_{ij} yij是标签,如果 x i x_i xi和 x j x_j xj来自同一个预定义类( y i = y j y_i=y_j yi=yj), y i j y_{ij} yij是1,否则为0。
Step 3: Binary Group Classifier Inference
训练完成后,将 D o D_o Do中的每对样本 x u x_u xu和 x v x_v xv分别送入二进制分组分类器,得到分类结果。输出 b u v b_{uv} buv表示 x u x_u xu和 x v x_v xv属于同一组的信心分数。设定了一个划分组的阈值。如果 b u v b_{uv} buv大于阈值 γ γ γ, x u x_u xu和 x v x_v xv应属于同一组(未定义的类别)。如果连续的词属于同一组,将这些词视为一个多词实体。O类中的一些样本可能不属于任何组,假设这些样本来自与任务无关的类,并且没有对这些样本进行进一步的分类。
Soft Labeling 经过分组处理,得到了多个未定义类的标签 O = { o 1 , o 2 , . . . , o r } O=\left\{ o_1,o_2,...,o_r \right\} O={o1,o2,...,or},进一步采用软标签机制,对每个未定义类 o i o_i oi,计算样本的均值作为类中心,然后对样本与其类中心计算余弦相似度,通过softmax作为软标签。通过软标签,可以考虑样本属于未定义类的可能性有多大。
Joint Classification
在这一部分,同时考虑预定义类 C C C和发现的未定义类 O O O进行联合分类。
- 首先,将未定义类中的样本标回句子,如Figure 2 中的联合分类图示。
- 接着,对样本进行优化,使它们更接近相应的原型,从而更好地区分。与 L ( θ 1 ) L\left( \theta _1 \right) L(θ1)相比,添加了O类 P o = { p o 1 , p o 2 , . . . , p o r } P_o=\left\{ p_{o1},p_{o2},...,p_{or} \right\} Po={po1,po2,...,por}作为候选原型。
- 给定样本 ( x , y ) ∈ D c ∪ D o \left( x,y \right) \in D_c\cup D_o (x,y)∈Dc∪Do,来自预定义类 C C C和未定义类 O O O的相应原型集 P = P c ∪ P o P=P_c\cup P_o P=Pc∪Po,优化目标被定义为:
L ( θ 3 ) = − log exp ( − d ( x , p y ) ) ∑ p ∈ { P c ∪ P o } exp ( − d ( x , p ) ) L\left( \theta _3 \right) =-\log \frac{\exp \left( -d\left( x,p_y \right) \right)}{\sum_{p\in \left\{ P_c\cup P_o \right\}}{\exp \left( -d\left( x,p \right) \right)}} L(θ3)=−log∑p∈{Pc∪Po}exp(−d(x,p))exp(−d(x,py))
Scale Factor 在计算 d ( x , p y ) d\left( x,p_y \right) d(x,py)时, f θ ( x ) f_{\theta}\left( x \right) fθ(x)和 p y p_y py被归一化,其值被限制在 [ − 1 , 1 ] \left[ -1,1 \right] [−1,1]。当使用softmax激活函数时,输出不能接近one-hot编码,因此对交叉熵损失加了下限。例如:给出黄金预测,正确的类别给1,错误的类别给-1,输出的概率 p ( y ∣ x ) = e 1 e 1 + ( ∣ C ∣ − 1 ) e − 1 p\left( y|x \right) =\frac{e^1}{e^1+\left( |C|-1 \right) e^{-1}} p(y∣x)=e1+(∣C∣−1)e−1e1仍不能达到1。2(这里 C C C代表类别个数) 通过为O类引入更多的类别来增加命名实体类别的数量,问题变得更加严重。为了解决这个问题,修改 L ( θ 3 ) L\left( \theta _3 \right) L(θ3),增加了一个在所有类之间共享的可训练的标量 s s s来缩放内积。
L ( θ 3 ) = − log exp ( − s d ( x , p y ) ) ∑ p ∈ { P c ∪ P o } exp ( − d ( x , p ) ) L\left( \theta _3 \right) =-\log \frac{\exp \left( -sd\left( x,p_y \right) \right)}{\sum_{p\in \left\{ P_c\cup P_o \right\}}{\exp \left( -d\left( x,p \right) \right)}} L(θ3)=−log∑p∈{Pc∪Po}exp(−d(x,p))exp(−sd(x,py))
实施详情
遵循传统的原型网络,在几个基类上对模型进行了预训练,这些基类的类型与Few-shot类不相交,并且有丰富的标注语料库。下划线的想法是利用现有的完全带标签的类来提高模型在只有少量标签的新类上的性能。在搜索未定义类时,使用了所有预定义类(包括基类和Few-shot类),使得未定义类的标签可以在预训练和微调之间共享,这将提高模型的传输性能。
实验
数据集
主要使用三个英文数据集:Conll2003,re3d,Ontonote5.0;一个中文数据集:CLUNER2020。
- Conll2003:内容涵盖新闻领域四个类,包含20679个标记句子;
- re3d:数据来自国防和安全领域,有10个类和962个带标签的句子;
- Ontonotes5.0:数据分布在混合领域——新闻、BN、BC、Web、Tele,有17个类别和159615个句子;
- CLUENER2020:有10个类别和12091个带标签的句子。
对于所有数据集都采用BIO标签,这为非实体词引入了一个额外的类O类。
数据切分
将每个数据集分为两部分:基类和Few-shot类。
- Conll的Few-shot类:Person
- re3d的Few-shot类:Person、Nationality、Weapon
- Ontonote的Few-shot类: Person、Language、 Money、Percent、Norp
- CLUENER的Few-shot类:Game、Government、Name、Scene
其余的是基类。该划分基于类别之间的平均词语相似度。
每次选择与O类语义差异最大的类,并将其添加到Few-shot类中,直到Few-shot类的数量达到基类的1/3。通过这种方式,可以防止Few-shot类和基类过于相似,导致信息泄漏。不采用以前的方法,采用不同的数据集作为基本类和Few-shot类,因为这样的数据分割中存在重叠类,例如Person,这将降低Few-shot设置的难度。对于基类,所有示例都用于训练基类分类器。对于Few-shot类,只有K个示例用于训练,其余用于测试。另外,我们对Few-shot类采用N-way k-shot设置,其中N是Few-shot类的数量,K是从每个Few-shot类中采样的样本数量。在实验中,K分别设置为1和5。注意,不能保证采样时样本的数量正好等于K,因为一句话中会有多个类标签。接下来,我们确保每个Few-shot类至少有K个标签。
评价指标
接下来,测量了所有Few-shot类的精确度、召回率和宏观平均F1值。为了与基线进行公平比较,只要找到的未定义类被分类为O类,就可以认为它是正确的。将运行10次的平均值作为最终结果。
Baselines
-
Supervised-Only Methods:
BERT:首先使用预训练好的BERT模型对句子进行顺序标注;
Prototypical network(PN):学习每个类的度量空间。
这两种方法都只在Few-shot类上进行训练。 -
Few-shot Methods:
LTapNet-CDT(LTC):使用基类和Few-shot类之间的语义关联来提高原型质量, 原型质量仅在基类上进行训练;
Warm Prototypical Network(WPN):是PN的迁移学习版本,它首先在基类上进行预训练,然后在Few-shot类上进行微调;
MAML:首先学习基类上的快速自适应参数,然后微调Few-shot类上的参数。
整体表现
Table 1和Table 2展示了提出的方法在四个NER基准Conll2003、re3d、Ontonote5.0和CLUENER2020上的总体性能。MUCO始终优于最先进的模型,显示了在O类中扩展丰富语义的有效性以及所提出的MUCO模型的优越性。
与Supervised-Only的方法(BERT和PN)相比,Few-shot方法(TransferBERT、WPN、MAML、L-TapNet CDT和MUCO)可以获得更好的性能。通过对基类的第一次训练,这些方法将学习先验知识,从而防止过度拟合密集标记的单词。在Few-shot方法中,我们的模型取得了最好的性能。以前的方法将O类视为单个类。相反,我们从O类中归纳出不同的未定义类,并添加更多与任务相关的类进行联合训练,这直接解决了Few-shot学习中数据稀缺的困境,并提供了备用语义来识别和消除命名实体的歧义,从而提高了Few-shot学习的性能。无论是英文语料库(前三个)还是中文语料库(后一个),我们的方法都不断地提高了F1分数,显示了我们方法的语言无关性优势。未定义类检测方法是完全数据驱动的。找到的未定义类将根据当前语言或任务预定义类自动调整为有用且与任务相关的类。
为了进一步评估核心模块,引入了一个Word-Similarity(WS,单词相似性)基线。WS通过基于单词相似性在O类单词中执行KMeans来检测未定义的类。公平地说,WS和我们使用的方法一样,使用软标签增强。我们在OnNote上报告了最后几次Few-shot的表现,以供比较。
如Figure 3所示,我们的方法实现了更好的性能,这表明了我们的未定义类检测模块的优越性。WS基线只使用单词的语义,缺乏预定义类的弱监督,因此无法将嘈杂的类(如标点符号)与任务相关的类区分开来,这不可避免地降低了未定义类的质量。
寻找未定义类的质量
将从定量和定性的角度评估寻找的未定义类的质量。
-
定量分析:为了进行定量分析,邀请了三名计算机工程师手动标注100个句子,以供人类评估。这些指标是类内相关性(IC)和类间区别(ID)。IC统计实际属于定义类的标签数量。ID统计有多少标签只属于一个未定义的类,而不属于多个类。我们通过应用多数票规则来获得黄金标签。Table 3展示了未定义类的平均结果。
考虑到Zero-shot设置,49.15%和50.85%的精确率已经足够高,说明发现的未定义类基本上具有类内语义一致性和类间语义差异。
-
定性分析:对于定性分析,Table 4中展示了一个示例。
O 1 O_1 O1、 O 2 O_2 O2和 O 3 O_3 O3这三个词分别是Person、Location和Numerous的通用实体版本。根据语法规则,通用实体和命名实体可以相互替换,林肯也可以被称为President,因此识别通用实体可以提供额外的位置知识,增强命名实体识别。 O 4 O_4 O4和 O 5 O_5 O5这两个主要是Action,这可能意味着不同命名实体之间的关系,并为命名实体消歧提供了重要证据。
错误主要来自三个方面:- 错误地包含了周围的单词,例如来自 O 1 O_1 O1的“businessmen from”;
- 一些奇怪的词语降低了类内一致性,例如 O 3 O_3 O3中的 “was at the tail”;
- 类之间存在语义重叠,例如 O 4 O_4 O4和 O 5 O_5 O5。
未来的工作将探索如何提高未定义类的质量。
不同数量的未定义类
因为模型需要手动设置未定义类的数量,所以观察模型在不同数量设置下的性能。通过调整阈值γ,将未定义类的数量设置为1/2/5/10/25/50。
Figure 4 显示了MUCO在不同数量的未定义类上的F1值。数值太大或太小时,会影响性能。当数值过大时,发现的类将出现重叠问题,导致严重的性能下降(11.51%)。当数值太小时,模型无法找到足够的任务相关类,从而限制了捕获O类中细粒度语义的能力。实验发现,当未定义类的数量大约等于Few-shot类的数量时,方法达到了最佳性能(Figure 4中的数量为5)。我们认为预定义类的数量与弱监管中隐藏的信息量成正比。因此,有了更多预定义的类,我们还可以找到更多高质量的未定义类。
Cross-Domain Ability
模型是否能够在面对不同领域的差异时获得优异的性能。为了模拟域自适应场景,选择Conll2003作为源域,AnEM作为目标域。AnEM中的实体类型,如Pathological-Formation,都是医学术语,可以确保与Conll2003中的普通类存在差异。
如Table 5所示,我们的方法在目标域上实现了最佳自适应性能。在检测未定义的类时,将使用源域和目标域中的所有预定义类。未定义类的标签可以在预训练和微调之间共享,这将提高模型的传输性能。
Task-Agnostic Ability
O类的假设是否与任务无关,是否对除NER之外的Few-shot token级别分类任务有效。我们在两个广受关注的任务上进行了实验:槽标记和事件参数提取。槽标记旨在从面向任务的对话系统中发现用户意图。我们采用Snips数据集进行槽标注,训练/测试的划分为We,Mu,Pl,Bo,Se/Re,Cr。事件参数提取旨在从句子中提取事件的主要成分。我们采用具有33个类和6个域的ACE2005数据集。训练/测试为 bc,bn,cts,nw/un,wl。
如Table 6所示,我们提出的方法在两个任务上都取得了优异的泛化性能。无论预定义类属于哪个任务,我们的方法始终能够从O类中挖掘与任务相关的类,以帮助消除预定义类的模糊性。原因是我们的检测方法完全是数据驱动的,不依赖于手动编写未定义的类描述。找到的类别将根据输入的预定义类的任务类型自动更改。因此,我们方法的任务间迁移成本很低。
总结
本文提出了利用O类丰富的语义来改进少击的NER的方法,即使用MUCO来挖掘未定义的类。具体来说,首先利用预定义类的弱监督信号来检测O类中的未定义类。然后进行联合分类,利用未定义类的备用语义知识,增强对Few-shot类的理解。实验表明,我们的方法在四个基准上优于五个最先进的基线。
Snell J, Swersky K, Zemel R. Prototypical networks for few-shot learning[C]//Advances in Neural Information Processing Systems. 2017: 4077-4087. ↩︎
https://www.aminer.cn/pub/5c0495ae17c44a2c74701b38/low-shot-learning-with-imprinted-weights ↩︎
这篇关于ACL2021_Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!