关系抽取笔记总结
一、课程目标
properties
实现关系抽取任务
二、关系抽取应用的场景
properties
知识图谱构建:必备环节--》关系抽取
信息检索和推荐
信息提取
三、关系抽取课程大纲内容
properties
1.基于规则实现关系抽取任务
2.基于BiLSTM+Attention实现了关系任务分类
3.基于CasRel模型实现多元嵌套关系的抽取
四、关系抽取任务介绍
4.1 概念
properties
定义:对于一段文本,抽取出其中的SPO三元组,
S:subject;主实体
P:predicate; 关系(预测)
O:object; 客实体
4.2 两大任务:
properties
1.实现实体的抽取任务(NER)
2.基于实体实现关系的分类(RE)
4.3 主要实现方法
properties
1.基于规则方式: 人为设定规则,抽取spo三元组
2.基于pipeline方式: 先完成实体抽取任务,然后在实体基础上完成关系分类
3.基于joint方式: 联合抽取任务,经过一个复杂的模型网络一次性抽取spo三元组
4.4 主要评价指标
properties
precision: 预测为正类的样本中实际为正类的比例
recall: 实际为正类的样本中预测为正类的比例
F1-score: 2*p*r / (p+r)
4.5 主要问题
- 正常(normal)
properties
一对实体只有一种关系
eg: "《人间》是王菲演唱歌曲"中存在1种关系: (王菲-歌手-人间)

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

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

五、基于规则实现关系抽取
5.1 实现原理
properties
1. 定义关系集合类型:【夫妻关系、合作关系。。。】
2. 去除非实体和关系的文本
3. 基于实体列表和关系列表遵循就近原则匹配,实现spo三元组的组合(抽取)
5.2 代码实现
properties
# 导入需要的工具包
import jieba
import jieba.posseg as pseg
# 需要进行关系抽取的样本数据
samples = [
"2014年1月8日,杨幂与刘恺威的婚礼在印度尼西亚巴厘岛举行",
"周星驰和吴孟达在《逃学威龙》中合作出演",
'成龙出演了《警察故事》等多部经典电影'
]
# 1。定义需要抽取的关系集合
relations2dict = {'夫妻关系':['结婚', '领证', '婚礼'],
'合作关系': ['搭档', '合作', '签约'],
'演员关系': ['出演', '角色', '主演']}
# 2。遍历每一段文本,去除非实体和非关系的词语
for text in samples:
print("原始文本:", text)
# 定义空列表entity
entites = [] # 存储实体
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 优缺点
- 优点
properties
简单、在较小的数据集上表现不错
- 缺点
properties
泛化性能较差,可移植性较差