2021-05-10 你以为我在蹭热点?tplinker,没错,这个名字就是让人印象深刻。

    这篇简单介绍一下《TPLinker:Single-stage joint extraction of entities and relations through token pair linking》这篇三元组抽取的文章。

    首先我们从研究背景入手。信息抽取的流程有两种:pipeline和joint两种,其中pipeline方法由于存在错误累加和特征利用低,近年来大家关注joint方式,但是joint方式的缺点也很明显:在处理实体重叠、三元组数目不唯一时的召回率较低。苏剑林提出过半指针半标注的方法(在下惭愧,目前水平只能在这里想当然 -_- ),一定程度上可以解决多spo的问题。本文提出了字符对的标注方式,即通过将主语、谓语的首位字符建立三种标注标签,在给定scheme下的分类训练,通过穷举存在判断的解码实现对三元组的抽取,下面结合图片进行展开。

2021-05-10 你以为我在蹭热点?tplinker,没错,这个名字就是让人印象深刻。_第1张图片
图片出自论文

    给定语句:the mayor of new york city de blasio is native-born(纽约市张db是本地出出生的)。

    实体1:new york  = new york city,存在嵌套重叠

    实体2:de blasio

    标注1:EH-ET 实体头-实体尾

    标注2:SH-OH 主语头-宾语头

    标注3:ST-OT 主语尾-宾语尾

    由于语境和schema定义的不同,存在主语和宾语互换的情况,因此标注2和3导致存标注矩阵中下三角并不为空,通过对称映射,将下三角映射到上三角,实现对标注矩阵的简化,这一映射过程类似握手,是论文中handshaking的来源。下面对标注体系实现的抽取进行看图说话。


2021-05-10 你以为我在蹭热点?tplinker,没错,这个名字就是让人印象深刻。_第2张图片
图片出自  论文

    上图所示,经过hidden层和handshaking kernel的encoding,序列每个时刻的输出被字符分类器进行多分类,共有2*N+1个类,其中1存储实体,N存储predicate类型,2存储H2H,T2T标注。序列长度为(n*n+n) / 2,其实我并不知道括号里那个被加上的n是怎么来的qaq。解码过程:将实体存储在D,T2T存在集合E,对所有的H2H遍历D和E,取出主语和宾语,按照predicate进行结构化。。。。。

    其中很多数学表达我是一窍不通,以后努力补上。

    其实学习没有对比就没有进步,想要理解这篇文章更好的办法是和其他方案进行对比,找到异同点,以后争取理解更深点,做对比论述。

完全按照paddle的baseline实现,存在如下几个问题有待解决:

    1.paddle的tokenclassfication的与bert+linear有何异同,是单纯的封装吗

    2.如何将text和spo从文本到编码

    3.预测时怎么写成文本

    4.优化方案有哪些(损失函数、特征复用)

你可能感兴趣的:(2021-05-10 你以为我在蹭热点?tplinker,没错,这个名字就是让人印象深刻。)