Matching the Blanks: Distributional Similarity for Relation Learning论文笔记

动机

本文主要在于设计一个通用的关系抽取器,即学到一个合适的关系的表达,可以对任意关系建模。之前的工作,如利用Surface Form来表示关系,或者借助知识库中关系的定义,但这两类方案都需要事先定义好关系,泛化能力较弱。
本文受到word2vec中的分布式假设(Harris’ distributional hypothesis)的启发,想利用上下文将关系编码成一个固定长度的向量。这就将关系抽取的问题,转变成两个子问题,即如何对包含实体关系的语句进行编码以及如何合理输出一个固定长度的关系输出向量。对于第一个任务,作者借用了Bert对文本关系进行表示,并测试了Bert的不同的输入方式和输出方式对关系抽取结果的影响;对于第二个任务,作者提出了Matching the blanks的方法来预训练任务不可知(task agnostic)的关系抽取模型。本文的MTB模型,不仅在有监督的训练集SemEval 2010 Task8、KBP37、TACRED达到了STOA,而且在小样本的关系抽取数据集FewRel中对STOA有较大幅度的提升。

方法

对于用Bert来编码输入的句子,考虑的核心点是如何在输入中指定两个实体的位置,论文中提出了三种方法,如图1所示:
1)STANDARD:标准输入,不指定实体位置;
2)POSITIONAL EMB:位置嵌入,作者将Bert输入层中的实体1和实体2所在token的segment type置为1和2;
3)ENTITY MARKER:实体标记,在实体1和实体2的两侧用[Eistart]和[Eiend]标记实体位置。
不仅如此,作者还设计了如何从Bert中得到输出的三种方法:

  1. [CLS]:用 [CLS] token的表示作为关系表示;
  2. MENTION POOL:分别对两个实体对应token的表示作max pooling,然后拼接得到关系表示;
  3. ENTITY START:两个实体开始位置特殊标记token的表示,拼接起来作为关系表示。

architecture
图1 基于深度Transformer的关系抽取的架构变种

Matching the blanks 任务

要学习关系的表达,在Bert的框架下,依然是通过大量无监督的语料来学习。Bert的两个基本任务,Mask Language Model,是模型对于文本理解的关键,所以本文的模型依然保留这个任务。另一个任务 Next Sentence Prediction, 很多论文如RoBERTa已经表示这个任务基本没有什么作用,所以本文的作者也放弃了这个任务。
与此同时,本文增加了一个新的任务Matching the blanks。其实基本的想法非常简单,和远程监督非常接近,即如果两个句子中包含相同的实体对,那么它们可能表示相同的关系。 这其实是一个比较简单的二分类器的训练任务,表达如下:
p

从表达式可以看出,如果两个句子中包含相同的实体对,那么它们的关系表示应该尽可能相似,反之相似度应尽可能低。假设两个句子的关系表示分别为 f θ ( r ) f_\theta(r) fθ(r) f θ ( r ′ ) f_\theta(r') fθ(r),用内积 f θ ( r ) T f θ ( r ′ ) f_\theta(r)^T f_\theta(r') fθ(r)Tfθ(r) 来计算两个关系表示的相似度。
Loss函数为:
loss

其中 δ e i , e j \delta_{ei,ej} δei,ej则是用示性函数,来表示两个实体是否相等。
作者在这里的一个基础的创新是,考虑到如果模型也是简单的利用实体对一致来判断关系,就无法学到关系好的表达。所以作者对任务进行了修改,按照一定概率( α \alpha α = 0.7)来把句子中的实体替换为特殊标记 [BLANK],使模型对句子中除实体外的context信息进行建模。论文模型使用Bert Large的参数进行初始化,在Matching the blanks任务上预训练后,再在具体的关系抽取任务上进行fine-tune。

实验结果

对于不同的有监督关系抽取的数据集,可以看出在MTB任务上预训练的Bert模型要优于原来的Bert模型,并且在三个有监督的关系抽取数据集上达到了SOTA的结果。
super

对于小样本关系抽取数据集,MTB对STOA有较大幅度的提升。 虽然在样本数量较多的情况下Bert_em与Bert_em+MTB表现接近,但Bert_em+MTB只需要很少量的样本便能够达到Bert_em的最好效果。MTB预训练使得模型需要更少的标注样例进行fine-tune,更适用于少样本或少资源的场景。
fewshot

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
这个错误通常是由于版本不兼容或参数类型不匹配引起的。根据引用的错误信息,报错的具体位置是在运行train.py程序时出现了TypeError: No loop matching the specified signature and casting was found for ufunc greater的错误。根据引用提供的临时解决方法,可以尝试去掉np.greater的dtype参数,即将代码中的np.greater(counts, 0)改为np.greater(counts, 0, dtype=bool)来解决该问题。另外,根据引用提供的代码案例,可以参考使用np.greater函数的正确用法来检查参数类型是否正确。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOv5训练自己的数据集(踩坑记录&自学用&不定期更新)](https://blog.csdn.net/weixin_53344432/article/details/130201898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [No loop matching the specified signature and casting was found for ufunc greater](https://blog.csdn.net/jacke121/article/details/128414592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值