规则方法实现关系抽取
发布于 2025-12-31
基于规则方式实现关系抽取
Section titled “基于规则方式实现关系抽取”-
理解利用规则进行关系抽取的概念
-
掌握利用规则进行关系抽取的原理
-
掌握规则实现关系抽取的代码实现
1 利用规则进行关系抽取的理解
Section titled “1 利用规则进行关系抽取的理解”基于规则的关系抽取主要是通过人工定义一些抽取规则,从文本中抽取出三元组信息 (实体-关系-实体) ,这些规则通常基于领域知识和语言学知识,由专业人员设计和优化,重点即是定义规则. 虽然定义规则这种抽取方式看起来有点 low,但却简单实用,很多时候,效果比很多高深的算法还要好一些 (非绝对,具体领域具体分析) .
2 利用规则进行关系抽取的原理
Section titled “2 利用规则进行关系抽取的原理”基于规则实现关系抽取的原理 (主要分为三个步骤)
- 第一步:定义需要抽取的关系集合,比如【夫妻关系,合作关系,,…】
- 第二步:遍历文章的每一句话,将每句话中非实体和非关系集合里面的词去掉
- 第三步:分别从实体集合和关系集合中,提取关系三元组
3 利用规则进行关系抽取的代码实现
Section titled “3 利用规则进行关系抽取的代码实现”-
注意:下面的代码实例只代表规则实现方式的一种,其他场景下需要根据业务需求进行人为设定.
-
代码实战:
import jieba.posseg as pseg# 需要进行关系抽取的样本数据samples = ["2014年1月8日,杨幂与刘恺威的婚礼在印度尼西亚巴厘岛举行", "周星驰和吴孟达在《逃学威龙》中合作出演", '成龙出演了《警察故事》等多部经典电影']# 定义需要抽取的关系集合relations2dict = {'夫妻关系':['结婚', '领证', '婚礼'], '合作关系': ['搭档', '合作', '签约'], '演员关系': ['出演', '角色', '主演']}
# 通过jieba词性识别抽取出nr的实体和带有关系的词组for text in samples: entities = [] # 存储实体 relations = [] # 存储关系 move_name = [] for word, flag in pseg.lcut(text): if flag == 'nr': entities.append(word) elif flag == 'x': if len(move_name) == 0: move_name.append(text.index(word)) else: move_name.append(text.index(word)) entities.append(text[move_name[0] + 1: move_name[1]]) else: for key, value in relations2dict.items(): if word in value: relations.append(key) if len(entities) >= 2 and len(relations) >= 1: print("原始文本:", text) print('提取结果:', entities[0] + '->' + relations[0] + '->' + entities[1]) else: print("原始文本:", text) print('不好意思,暂时没能从文本中提取出关系结果') print('*'*80)运行结果:
原始文本: 2014年1月8日,杨幂与刘恺威的婚礼在印度尼西亚巴厘岛举行提取结果: 杨幂->夫妻关系->刘恺威********************************************************************************原始文本: 周星驰和吴孟达在《逃学威龙》中合作出演提取结果: 周星驰->合作关系->吴孟达********************************************************************************原始文本: 成龙出演了《警察故事》等多部经典电影提取结果: 成龙->演员关系->警察故事********************************************************************************4 利用规则实现关系抽取的优缺点:
Section titled “4 利用规则实现关系抽取的优缺点:”-
优点:实现简单、无需训练,小规模数据集容易实现.
-
缺点:对跨领域的可移植性较差、人工标注成本较高以及召回率较低.
- 学习了什么是规则的关系抽取方式:
- 基于规则的知识抽取主要还是通过人工定义一些抽取规则,从文章中抽取出三元组信息 (实体-关系-实体) . 重点即是定义规则.
- 学习了基于规则实现关系抽取的原理 (主要分为三个步骤)
- 第一步:定义需要抽取的关系集合,比如【夫妻关系,合作关系,,…】
- 第二步:遍历文章的每一句话,将每句话中非实体和非关系集合里面的词去掉
- 第三步:分别从实体集合和关系集合中,提取关系三元组
- 学习了利用规则进行关系抽取的代码实现
- 利用规则实现关系抽取的优缺点:
- 优点:实现简单、无需训练,小规模数据集容易实现.
- 缺点:对跨领域的可移植性较差、人工标注成本较高以及召回率较低.
发布于 2025-12-31