ACL21 - Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition
Tong M, Wang S, Xu B, et al. Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition[J]. ACL2021.
介绍
目前工作忽略了 O 标签实体潜在的语义信息。要是能从 O 标签中,再区分出一种之前未定义的类,就可以获取更多的实体之间的关系。
从 O 标签实体中识别出未定义类,有两大难点:
- 语义混乱:各种各样的类型都有可能归类为 O,这取决于标注的人怎么划分类型的,所以包含了大量的噪音
- 缺少 golden label:要划分的新类型,我们不知道长什么样子,没有样例和标准可以参考
为了解决这些问题,本文提出了MUCO(Mining Undefined Classes from Other-class)。在给 O 类型建原型的的时候,不止建一个原型,而是建立多个原型。如下图右边黑色圈圈所示。
这样做的原因是,如果两个类型AB,A和B是任务相关的,A可以聚成一个簇,那么B也可以聚成一个簇。
本文主要贡献:
- 提出MUCO方法,可以丰富O类型的语义表示
- 对于未定义的类型,提出了一个 zero-shot 分类方法
- 大量的实验,证明方法有效性,还可以迁移到其他领域
相关工作
本文作者将小样本NER方法分为四类:
- 知识增强:利用本体、知识库作为旁白提升NER表现,但是有低覆盖率的问题
- 跨语言增强:用其他语言做外部监督信号,当语言差异大的时候,效果反而下降
- 跨领域增强:同上
- 主动学习:挑选信息量最大的样本人工标注,需要额外的人力
目前处理 O 标签的相关工作较少:
- Deng et al. 2020 训练了一个二分类器区分 O 和其他预定义的类型
- Fritzler et al. 2019 不训练 O 的原型,而是设置了超参数 b o b_o bo,来表示距离相似性
[1] Shumin Deng, Ningyu Zhang, Jiaojian Kang, Yichi Zhang, Wei Zhang, and Huajun Chen. 2020. Metalearning with dynamic-memory-based prototypical network for few-shot event detection. In Proceedings of the 13th International Conference on Web Search and Data Mining, pages 151–159.
[2] Alexander Fritzler, Varvara Logacheva, and Maksim Kretov. 2019. Few-shot classification in named entity recognition task. In Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing, pages 993–1000.
方法
检测未定义类
受到迁移学习的启发,先训练预先定义好的类,让它们聚在一起,如果是任务相关的未定义的类,使用之前训练好的模型,那么这些未定义好的类也会聚在一起。
上面的方法作者叫做 zero-shot 分类方法,可以分为3个步骤:
zero-shot 分类方法
step1: 在预先定义好的类中训练原型
其实就是训练 embedding,让向量更好的在空间中聚类,即缩小类内距离。
embedding 方法采用 BERT。距离定义为:
d ( x , p y ) = − f θ ( x ) T p y d\left(x, p_{y}\right)=-f_{\theta}(x)^{T} p_{y} d(x,py)=−fθ(x)Tpy
其中:
- x:输入
- f():embedding 方法
- p y p_y py:原型中心
损失函数定义为:
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))
step2:训练二分类器
根据位置特征信息,训练一个二分类器,判断两个点是否是在同一个簇中,每两个点都能判断的话,最后也能聚类成功。
具体方法是,假设原始的 embedding 方法为 f θ ( x ) f_θ(x) fθ(x),两个样本embedding之后的向量表示为 h i , h j h_i, h_j hi,hj。经过step1训练之后的embedding方法为 f ~ θ ( x ) \tilde f_θ(x) f~θ(x),embedding之后的向量表示为 h ~ i , h ~ j \tilde h_i, \tilde h_j h~i,h~j。那么这两个样本是同一个簇的概率为:
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 \begin{aligned} &b_{i j}=W\left(\left[h_{i} ; h_{j} ; \tilde{h}_{i} ; \tilde{h}_{j} ;\left|h_{i}-h_{j}\right|\right.\right. \\ &\left.\left.\quad\left|\tilde{h}_{i}-\tilde{h}_{j}\right| ;\left|h_{i}-\tilde{h}_{i}\right| ;\left|h_{j}-\tilde{h}_{j}\right|\right]\right)+b \end{aligned} bij=W([hi;hj;h~i;h~j;∣hi−hj∣∣∣∣h~i−h~j∣∣∣;∣∣∣hi−h~i∣∣∣;∣∣∣hj−h~j∣∣∣])+b
训练的交叉熵损失函数为:
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 ) ) \begin{aligned} L\left(\theta_{2}\right)=\frac{1}{N^{2}} \sum_{i}^{N} \sum_{j}^{N} &\left(-y_{i j} * \log \left(b_{i j}\right)\right.\\ &\left.+\left(1-y_{i j}\right) * \log \left(1-b_{i j}\right)\right) \end{aligned} L(θ2)=N21i∑Nj∑N(−yij∗log(bij)+(1−yij)∗log(1−bij))
step3:用二分类器预测 O 类型数据,并聚类
将两个输入 x u , x v x_u, x_v xu,xv 输入到step2训练好的二分类器中,如果输出的概率大于某个阈值 γ γ γ,那么认为这两个输入是同一个类。一些 O 类型的样本可能还是分不到某个类中,就不再继续分了。
对于每个未定义的类型 o i ∈ O = [ o 1 , o 2 , . . . , o r ] o_i ∈ O = [o_1, o_2,...,o_r] oi∈O=[o1,o2,...,or],计算每个类的中心,然后用余弦相似度重新给O标签样本打上软标签。这里打上的标签并不是具体的或者之前定义的标签,只是用 o 1 , o 2 o_1, o_2 o1,o2 这些代指。
联合训练
将之前分类好的 O = [ o 1 , o 2 , . . . , o r ] O = [o_1, o_2,...,o_r] O=[o1,o2,...,or],同样也拿过来训练,也就是说实体类型变多了,然后作者在损失函数上加了一个可训练的缩放因子 s s s:
L ( θ 3 ) = − log exp ( − s d ( x , p y ) ) ∑ p ∈ { P c ∪ P t } exp ( − s d ( x , p ) ) L\left(\theta_{3}\right)=-\log \frac{\exp \left(-s d\left(x, p_{y}\right)\right)}{\sum_{p \in\left\{P_{c} \cup P_{t}\right\}} \exp (-s d(x, p))} L(θ3)=−log∑p∈{Pc∪Pt}exp(−sd(x,p))exp(−sd(x,py))
实验
baseline方法:
- BERT
- PN:原型网络
- LTC:LTapNet+CDT
- WPN:Warm Prototypical Network,迁移学习的原型网络
- MAML
- 相比于监督学习方法BERT和PN,few-shot方法更好
- 在 few-shot 方法中,本文提出的 MUCO 效果最好
- 不管是英文数据集还是中文数据集,MUCO 都能提升 F1 值
总结
这篇论文关注到了以前学者忽略的O类型标签的问题,在做小样本NER的时候,O标签确实很多学者都跳过了,挺新颖的一种视角。
给O标签继续分类的依据是,迁移学习。如果两个标签AB是相关的,如果A标签能聚成一个类,那么B标签也能聚成一个类。所以作者考虑在已知的标签中训练,再迁移到未知的O标签中。
ACL21 - Learning from Miscellaneous Other-Class Words for Few-shot Named Entity Recognition相关推荐
- Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning(DS——NER识别(减少人工参与))
目录 Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning 前言 文章贡献 Risk定义--基 ...
- 【论文精读】A Survey on Deep Learning for Named Entity Recognition
A Survey on Deep Learning for Named Entity Recognition 前言 Abstract 1. INTRODUCTION 2. BACKGROUND 2.1 ...
- 论文阅读:(2020版)A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法
A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法 目录 A Survey on Deep Learning f ...
- 【论文笔记-NER综述】A Survey on Deep Learning for Named Entity Recognition
本笔记理出来综述中的点,并将大体的论文都列出,方便日后调研使用查找,详细可以看论文. 神经网络的解释: The forward pass com- putes a weighted sum of th ...
- [论文阅读笔记05]Deep Active Learning for Named Entity Recognition
一,题目 Deep Active Learning for Named Entity Recognition[NER任务的深度主动学习] 来源:ICLR 2018 原文:DEEP ACTIVE LEA ...
- 论文阅读:A Survey on Deep Learning for Named Entity Recognition
这是一篇2020年发的命名实体识别的综述性论文,从NER的语料库,定义,评估指标,到深度学习中的NER的技术都有涉及到. A Survey on Deep Learning for Named Ent ...
- [论文笔记]AAAI-2021-Continual Learning for Named Entity Recognition
[论文笔记] 2021-AAAI-Continual Learning for Named Entity Recognition 0 写在前面 什么是持续学习? 我们人类有能够将一个任务的知识用到另一 ...
- Simple and Effective Few-Shot Named Entity Recognition with Structured Nearest Neighbor Learning
1. abstract 我们提出了一个基于最近邻学习和结构化推理的简单few-shot命名实体识别(NER)系统.我们的系统使用在源域上训练的监督NER模型作为特征提取器.在多个测试域中,我们发现在这 ...
- A Survey on Deep Learning for Named Entity Recognition论文笔记
前言:研究课题定为特定领域的命名实体识别,所以先阅读一篇综述,在此简单记录阅读过程. 摘要 在文章中,首先介绍现有的NER资源,包括标记的NER语料库及现成的NER工具,然后对现有的工作进行了分类:输 ...
最新文章
- Oracle 11g Release 1 (11.1) Data Pump 导入模式
- 深入解析Javascript中this关键字的使用
- Google Lyra Android版开源 支持3kbps语音聊天
- c语言二叉树的还原,由中序遍历和层次遍历还原二叉树。C语言实现
- (转)GDB 使用方法
- python视频提取音频_python脚本实现mp4中的音频提取并保存在原目录
- 电脑故障扫描修复软件_常见的电脑故障及处理方法,教你几招,不求人,自己也能修复...
- 3D 语义分割、目标检测、实例分割是什么神仙操作?TF 3D 技术让你一目了然
- 基于Matpower的电力系统潮流计算原理及仿真设计(详细)
- r语言 svycoxph_R语言之生信⑦Cox比例风险模型(单因素)
- python操作word文档,合并
- Buffer之position,limit,capacity
- MTK MT6771处理器,helio P60芯片参考资料
- Mybatis的特性详解——动态SQL
- 中国农业银行研发中心2021实习生笔试题
- 畜禽养殖智能环境监控系统
- bat执行cmd命令
- Axon Framework官方文档(五)
- 企业安全建设丨标准化建设之网络安全应急响应浅析
- 斜率优化之凸包优化与李超线段树