参考:
关系抽取之TPLinker解读加源码分析
TPLinker 实体关系抽取代码解读
实体关系联合抽取:TPlinker
TPLinker中文注释版

Tagging

TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging,过程分为三部分:
(1)entity head to entity tail (EH-TO-ET)
(2)subject head to object head (SH-to-OH)
(3)subject tail to object tail (ST-to-OT)
标记示例见下图,EH-TO-ET用紫色表示,SH-to-OH用红色表示,ST-to-OT用蓝色表示。

- 其中紫色标签代表实体的头尾关系,红色标签代表 subject 和 object 两个实体的头部关系,蓝色标签代表 subject 和 object 两个实体的尾部关系,因为三种关系可能重叠,所以三种标签是存在于不同的矩阵,这里为了便于阐述,才放在一起。 - 因为实体尾部不可能出现在头部之前,所以紫色标签是不可能出现在下三角区的,那么这样标就有点浪费资源,我们可以舍弃掉下三角区域;但是红标和蓝标可能出现在下三角区域,因此,我们可以把下三角区域的值映射到上三角,并标记为2 - 标记方案如图:

模型框架

模型比较简单,整个句子过一遍 encoder,然后将 token 两两拼接输入到一个全连接层,再激活一下输出作为 token 对的向量表示,最后对 token 对进行分类即可。换句话说,这其实是一个较长序列的标注过程。

预测三元组

将模型对应的输出结果与输入的text进行匹配,解码出所需要的三元组。
通常先进行实体抽取得到字典D(key是实体头部,value是实体尾部)。
通过解码ST-to-OT关系得到有关系的两个实体的尾部,构建为字典E
通过解码SH-to-OH关系得到有关系的两个实体的头部,然后结合字典D,可以得到后续两个实体尾部。判断这两个实体尾部在不在字典E里面,如果在就是成功抽取了一条三元组。

训练数据的格式:

{"text": "In Queens , North Shore Towers , near the Nassau border , supplanted a golf course , and housing replaced a gravel quarry in Douglaston .", "id": "valid_0", "relation_list":
[{"subject": "Douglaston", "object": "Queens", "subj_char_span": [125, 135], "obj_char_span": [3, 9], "predicate": "/location/neighborhood/neighborhood_of", "subj_tok_span": [26, 28], "obj_tok_span": [1, 2]}, {"subject": "Queens", "object": "Douglaston", "subj_char_span": [3, 9], "obj_char_span": [125, 135], "predicate": "/location/location/contains", "subj_tok_span": [1, 2], "obj_tok_span": [26, 28]}], "entity_list":
[{"text": "Douglaston",
"type": "DEFAULT",
"char_span": [125, 135],
"tok_span": [26, 28]},
{"text": "Queens", "type": "DEFAULT", "char_span": [3, 9], "tok_span": [1, 2]},
{"text": "Queens", "type": "DEFAULT", "char_span": [3, 9], "tok_span": [1, 2]},
{"text": "Douglaston", "type": "DEFAULT", "char_span": [125, 135], "tok_span": [26, 28]}]}

训练数据的最外层有4个主键:

  • “text”:输入数据的文本
  • “id”:输入数据的id
  • “relation_list”:输入数据文本当中存在的关系。
  • “entity_list”:输入数据文本当中存在的实体。

模型所需要的输入数据

  1. 其中作为输入的有:
  • batch_input_ids:是单词在词典中的编码
  • batch_attention_mask:指定对哪些词进行self - Attention操作
  • batch_token_type_ids:区分两个句子的编码(上句全为0,下句全为1)
  1. 其中作为模型输出的标签来辅助更新权重的有:
  • batch_ent_shaking_tag:token的【起始位置,尾部位置,实体标签】
  • batch_head_rel_shaking_tag:【关系类别,实体_1 头部,实体_2头部,关系标签a】
  • batch_tail_rel_shaking_tag:【关系类别,实体_1 尾部,实体_2尾部,关系标签b】

根据模型所需要输入的数据对训练数据进行一系列的处理。
调整训练时的参数去训练自己的数据。
调整输入输出为自己喜欢的样式。

TPlinker解读相关推荐

  1. TPLinker 联合抽取 实体链接方式+源码分析

    关系抽取–TPLinker: https://blog.csdn.net/weixin_42223207/article/details/116425447 Tagging TPLinker模型需要对 ...

  2. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  3. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

  4. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

  5. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  6. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  7. 自监督学习(Self-Supervised Learning)多篇论文解读(下)

    自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...

  8. 自监督学习(Self-Supervised Learning)多篇论文解读(上)

    自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...

  9. 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读

    可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读 Visual Deprojection: Probabilistic Recovery of Collapsed Dimensions 论文链接: ...

最新文章

  1. Tomcat 架构原理解析到架构设计借鉴
  2. I2C原理及特性总结
  3. 使用Freestreamer 拖动滑动条音频重新播放或者没有声音seekToPosition无效
  4. Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式
  5. Securing Data With Blockchain and AI(基于区块链和人工智能的数据保护)
  6. Unity性能优化的N种武器
  7. 机器人出魔切还是三相_工业机器人常见故障和修理方法
  8. 以下不是python内置函数的是_为什么说python内置函数并不是万能的?
  9. matlab 脉冲频域压缩,大作业-雷达线性调频脉冲压缩的原理及其MATLAB仿真.doc
  10. 不同编程语言语言的适用场景
  11. Spring Cloud Gateway 动态路由管理,一点都不吹,应该没有比这更好的管理系统了吧
  12. 微信小程序之个人界面编写(2023.5.9版)
  13. 【攻击威胁】女巫攻击(sybil attack)
  14. 不带电脑看-吃货联盟集合
  15. vmware虚拟机windows xp 登录后死掉不能修复的错误的解决
  16. HTML页面SVG的使用
  17. 渣渣渣变渣渣系列(1)
  18. 牛客练习赛13 B 幸运数字Ⅱ 【暴力】【二分】
  19. 2022.3.3总结+力扣258. 各位相加
  20. 2021-2027全球及中国燃料电池驱动系统行业研究及十四五规划分析报告

热门文章

  1. C语言:用switch,case函数,做一个自动售卖机
  2. 如何用python求斐波那契数列_如何使用Python实现斐波那契数列
  3. 阿里云设计团队为我们带来了「数字」+「设计」的可能……
  4. 事件相关电位(ERP)的简单处理流程(含MATLAB代码)
  5. 直播源码开发视频直播平台,不得不了解的流程...
  6. 桩筏有限元中的弹性板计算_建研院关于桩筏计算几个问题的解答
  7. 开源项目推荐:C++ Web/Http Server/Rest开发框架(请重点关注Oat++和搜狗workflow)
  8. 浅浅谈一谈B树和B+树
  9. 人工智能导论王万良-测试答案
  10. 【智能算法】GRNN的数据预测—基于广义回归神经网络的货运量预测