当前位置: 首页 > 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.dtcms.com/a/314640.html

相关文章:

  • 《Leetcode》-面试题-hot100-子串
  • 数据结构(2)
  • AI开发框架与工具:构建智能应用的技术基石
  • 从感知到创造:无穿戴动捕技术构建中小学人工智能实验教学场景
  • go学习笔记:panic是什么含义
  • AI鉴伪技术鉴赏:“看不见”的伪造痕迹如何被AI识破
  • 每日任务day0804:小小勇者成长记之药剂师的小咪
  • Design Compiler:高层次优化与数据通路优化
  • openeuler离线安装软件
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • 【回眸】香橙派zero2 阿里云机器视觉分拣系统
  • k8s ingress 场景 client_max_body_size不生效
  • C++风格的类型转换四种方法
  • Flutter 对 Windows 不同版本的支持及 flutter_tts 兼容性指南
  • VPS云服务器Linux系统备份策略与灾难恢复方案设计
  • Redis之通用命令与String类型存储
  • SHELL自动化脚本编程2
  • 如何使用EF框架操作Sqlite
  • K 近邻算法(KNN)完整解析:原理 + 数学公式 + 实战
  • 在Windows 11+I7+32GB内存+RTX 3060上部署Stable Diffusion 3.5 Medium详细步骤
  • Django + Vue 项目部署(1panel + openresty)
  • 制造业引入设备管理系统,实现智能资产运维与效率飞跃
  • Node.js(四)之数据库与身份认证
  • Nestjs框架: Node.js 多环境配置策略与 dotenv 与 config 库详解
  • 【计算机网络 | 第2篇】计算机网络概述(下)
  • Go 语言模糊测试 (Fuzz Testing) 深度解析与实践
  • Onnx模型部署到Arm64进行推理
  • MAC-Spring Cloud + Spring Boot + RocketMQ集成
  • 「查漏补缺」ZGC相关内容整理
  • 机器学习(13):逻辑回归