当前位置: 首页 > news >正文

规则方法关系抽取-笔记总结

关系抽取笔记总结

一、课程目标

实现关系抽取任务

二、关系抽取应用的场景

知识图谱构建:必备环节--》关系抽取
信息检索和推荐
信息提取

三、关系抽取课程大纲内容

1.基于规则实现关系抽取任务
2.基于BiLSTM+Attention实现了关系任务分类
3.基于CasRel模型实现多元嵌套关系的抽取

四、关系抽取任务介绍

4.1 概念

定义:对于一段文本,抽取出其中的SPO三元组,
S:subject;主实体
P:predicate; 关系(预测)
O:object; 客实体

4.2 两大任务:

1.实现实体的抽取任务(NER)
2.基于实体实现关系的分类(RE)

4.3 主要实现方法

1.基于规则方式: 人为设定规则,抽取spo三元组
2.基于pipeline方式: 先完成实体抽取任务,然后在实体基础上完成关系分类
3.基于joint方式: 联合抽取任务,经过一个复杂的模型网络一次性抽取spo三元组

4.4 主要评价指标

precision: 预测为正类的样本中实际为正类的比例
recall: 实际为正类的样本中预测为正类的比例
F1-score: 2*p*r / (p+r)

4.5 主要问题

  • 正常(normal)
一对实体只有一种关系
eg: “《人间》是王菲演唱歌曲“中存在1种关系:  (王菲-歌手-人间)

在这里插入图片描述

  • 单一实体关系重叠问题(seo)
一个实体存在多种关系
eg:“叶春叙出生于浙江,毕业于黄埔军校”中存在两种关系:  (叶春叙-毕业院校-黄埔军校) 、 (叶春叙-出生地-浙江)

在这里插入图片描述

  • 实体对重叠问题(epo)
一对实体存在多种关系
eg: “周星驰导演了《功夫》,并担任男主角”中存在2种关系:  (周星驰-演员-《功夫》) 、 (周星驰-导演-《功夫》) 

在这里插入图片描述

五、基于规则实现关系抽取

5.1 实现原理

1. 定义关系集合类型:【夫妻关系、合作关系。。。】
2. 去除非实体和关系的文本
3. 基于实体列表和关系列表遵循就近原则匹配,实现spo三元组的组合(抽取)

5.2 代码实现

# 导入需要的工具包
import jieba
import jieba.posseg as pseg# 需要进行关系抽取的样本数据
samples = ["2014年1月8日,杨幂与刘恺威的婚礼在印度尼西亚巴厘岛举行","周星驰和吴孟达在《逃学威龙》中合作出演",'成龙出演了《警察故事》等多部经典电影']# 1。定义需要抽取的关系集合
relations2dict = {'夫妻关系':['结婚', '领证', '婚礼'],'合作关系': ['搭档', '合作', '签约'],'演员关系': ['出演', '角色', '主演']}# 2。遍历每一段文本,去除非实体和非关系的词语
for text in samples:print("原始文本:", text)# 定义空列表entityentites = [] # 存储实体relations = [] # 存储关系movie_name = [] #  存储电影名称for word, flag in pseg.lcut(text):# 寻找人名这个实体if flag == 'nr':entites.append(word)# 如果是电影名称需要特殊处理elif flag == 'x':if len(movie_name) == 0:movie_name.append(text.index(word))else:movie_name.append(text.index(word))entites.append(text[movie_name[0]+1: movie_name[1]])# 寻找关系else:for key, value in relations2dict.items():if word in value:relations.append(key)print(entites)print(relations)if len(entites) >= 2 and len(relations) >=1:print('提取结果:', entites[0] + '->' + relations[0] + '->' + entites[1])else:print("不好意思,暂时没有抽取出spo三元组")print('*'*80)

5.3 优缺点

  • 优点
简单、在较小的数据集上表现不错
  • 缺点
泛化性能较差,可移植性较差
http://www.lryc.cn/news/609634.html

相关文章:

  • Postman 四种请求体格式全解析:区别、用法及 Spring Boot 接收指南
  • 实习005 (web后端springboot)
  • 【后端】Java static 关键字详解
  • 从零开始搞定类与对象(中)
  • Matplotlib与PySide6兼容性问题及解决方案
  • open-webui pipelines报404, ‘Filter pipeline.exporter not found‘
  • 基于Express+Ejs实现带登录认证的多模块增删改查后台管理系统
  • C++ 浅谈Robin Hood Hash 算法
  • 3ds Max 渲染效率提升指南:从场景设计优化开始
  • 【0基础3ds Max】常用快捷键
  • 【Linux下Java应用自动重启守护教程】
  • 【大模型】3D因果卷积动图怎么画
  • Linux—yum仓库及NFS网络共享服务
  • [QMT量化交易小白入门]-七十六、从tick数据中获取高频交易的量价背离信号
  • 验证码等待时间技术在酒店自助入住、美容自助与社区场景中的应用必要性研究—仙盟创梦IDE
  • Dynamic Programming【DP】2
  • 9.感知机、神经网络
  • Antlr学习笔记 01、maven配置Antlr4插件案例Demo
  • 中标喜讯 | 安畅检测成功中标海南工信大脑(二期)软件测评服务
  • [Oracle] TO_NUMBER()函数
  • 【分享】拼团交易平台系统,分布式、高并发、微服务
  • 豆包1.6+PromptPilot实战:构建智能品牌评价情感分类系统的技术探索
  • Jetbrains IDE总是弹出“需要身份验证”窗口
  • uniapp 基础(三)
  • weapp-tailwindcss 已支持 uni-app x 多端构建
  • uniapp基础(四)性能优化
  • 使用opencv基于realsense D435i展示基本的图像
  • 计算机网络:有路由器参与的子网间通信原理
  • 阿里云与华为云产品的差异
  • 计算机网络:网络号和网络地址的区别