使用bert进行关系三元组抽取。
模型和数据下载地址:https://cowtransfer.com/s/c5e2422d2e0b40 点击链接查看 [ BERT-Relation-Extraction ] ,或访问奶牛快传 cowtransfer.com 输入传输口令 vvf067 查看;
# 依赖
```python
scikit-learn==1.1.3
scipy==1.10.1
seqeval==1.2.2
transformers==4.27.4
pytorch-crf==0.7.2
```
# 目录结构
```python
--checkpoint:模型和配置保存位置
--model_hub:预训练模型
----chinese-bert-wwm-ext:
--------vocab.txt
--------pytorch_model.bin
--------config.json
--data:存放数据
----dgre
--------ori_data:原始的数据
--------ner_data:处理之后的数据
------------labels.txt:标签
------------train.txt:训练数据
------------dev.txt:测试数据
--------re_data:
------------labels.txt:关系标签
------------train.txt:训练数据
------------dev.txt:测试数据
------------rels.txt:该数据集没有,因为实体只有两类,有的话则是哪些实体之间具有关系
--config.py:配置
--model.py:模型
--process.py:处理ori数据得到ner数据和re数据
--predict.py:加载训练好的模型进行预测
--ner_main.py:实体识别训练和测试
--re_main.py:关系识别训练和测试
```
# 说明
使用的方法:
- 1、利用BERT-BILSTM-CRF识别出文本里面的实体。
- 2、根据rels之间实体对之间的关系,将可能有关系的两类实体和文本拼接后输入到模型里面进行分类。
这里以dgre数据为例。
```python
1、去https://huggingface.co/hfl/chinese-bert-wwm-ext/tree/main下载相关文件到chinese-bert-wwm-ext下。
2、在process.py里面定义将ori_data里面的数据处理得到ner_data下的数据和re_data下的数据。
ner_data下数据样本是这样的:
--labels.txt
故障设备
故障原因
--train.txt/dev.txt
{"id": "AT0001", "text": ["6", "2", "号", "汽", "车", "故", "障", "报", "告", "综", "合", "情", "况", ":", "故", "障", "现", "象", ":", "加", "速", "后", ",", "丢", "开", "油", "门", ",", "发", "动", "机", "熄", "火", "。"], "labels": ["O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "O", "B-故障设备", "I-故障设备", "I-故障设备", "B-故障原因", "I-故障原因", "O"]}
一行一条样本,格式为BIO。
re_data下的数据样本是这样的:
--labels.txt
性能故障
部件故障
检测工具
组成
没关系
--train.txt/dev.txt
{"text": "故障原因:车轮悬架臂支座表面与车架接触面两者之间的表面接触不平整,在车辆低速急加速时,车轮悬架臂支座瞬间的推力,刚好车轮悬架臂支座表面与车架接触面接触不平整,车轮悬架臂支座表面与车架表面产生相对位移,使两者表面之间有摩擦,产生金属异响声解决方法:根据车轮悬架臂支座表面与车架接触面两者之间的表面接触不平整现象,对车轮悬架臂支座表面与车架表面进行平整化处理", "labels": ["车架接触面", "表面接触不平整", "部件故障"], "id": "1380_2"}
如果还有rels.txt,则是这样的
{
"故障设备_故障原因": ["性能故障", "部件故障", "检测工具", "组成"]
}
可参考duie/re_data下的rels.txt
也就是不同类型的实体对之间存在的关系。
3、在config.py里面定义一些参数,比如:
--max_seq_len:句子最大长度,GPU显存不够则调小。
--epochs:训练的epoch数
--train_batch_size:训练的batchsize大小,GPU显存不够则调小。
--dev_batch_size:验证的batchsize大小,GPU显存不够则调小。
--save_step:多少step保存模型
其余的可保持不变。注意:实体识别最大长度和关系抽取最大长度要保持一致。
4、在ner_main.py里面修改data_name为数据集名称。需要注意的是名称和data下的数据集名称保持一致。最后运行:python ner_main.py
5、在re_main.py里面修改data_name为数据集名称。需要注意的是名称和data下的数据集名称保持一致。最后运行:python re_main.py
5、在predict.py修改data_name并加入预测数据,最后运行:python predict.py
```
## DGRE数据集
```python
max_seq_len=512
epochs=3
train_batch_size=12
dev_batch_size=12
```
```python
实体识别:
precision recall f1-score support
故障原因 0.70 0.74 0.72 490
故障设备 0.75 0.79 0.77 484
micro avg 0.72 0.76 0.74 974
macro avg 0.72 0.76 0.74 974
weighted avg 0.72 0.76 0.74 974
关系识别:
precision recall f1-score support
性能故障 0.96 0.87 0.91 30
部件故障 0.89 0.99 0.94 464
检测工具 1.00 0.67 0.80 3
组成 0.60 0.95 0.73 19
没关系 0.96 0.62 0.75 176
accuracy 0.89 692
macro avg 0.88 0.82 0.83 692
weighted avg 0.90 0.89 0.88 692
联合预测:
文本>>>>>: 492号汽车故障报告故障现象一辆车用户用水清洗发动机后,在正常行驶时突然产生铛铛异响,自行熄火
实体>>>>>: {'故障原因': [('异响', 40, 41), ('熄火', 45, 46)]}
关系>>>>>: []
====================================================================================================
文本>>>>>: 故障现象:空调制冷效果差。
实体>>>>>: {'故障设备': [('空调', 5, 6)], '故障原因': [('制冷效果差', 7, 11)]}
关系>>>>>: [('空调', '制冷效果差', '部件故障')]
====================================================================================================
文本>>>>>: 原因分析:1、遥控器失效或数据丢失;2、ISU模块功能失效或工作不良;3、系统信号有干扰导致。处理方法、体会:1、检查该车发现,两把遥控器都不能工作,两把遥控器同时出现故障的可能几乎是不存在的,由此可以排除遥控器本身的故障。2、检查ISU的功能,受其控制的部分全部工作正常,排除了ISU系统出现故障的可能。3、怀疑是遥控器数据丢失,用诊断仪对系统进行重新匹配,发现遥控器匹配不能正常进行。此时拔掉ISU模块上的电源插头,使系统强制恢复出厂设置,再插上插头,发现系统恢复,可以进行遥控操作。但当车辆发动在熄火后,遥控又再次失效。4、查看线路图发现,在点火开关处安装有一钥匙行程开关,当钥匙插入在点火开关内,处于ON位时,该开关接通,向ISU发送一个信号,此时遥控器不能进行控制工作。当钥匙处于OFF位时,开关断开,遥控器恢复工作,可以对门锁进行控制。如果此开关出现故障,也会导致遥控器不能正常工作。同时该行程开关也控制天窗的自动回位功能。测试天窗发现不能自动回位。确认该开关出现故障
实体>>>>>: {'故障设备': [('遥控器', 7, 9), ('ISU模块', 20, 24), ('系统信号', 37, 40), ('遥控器', 66, 68), ('遥控器', 158, 160), ('遥控器', 182, 184), ('开关', 434, 435)], '故障原因': [('失效', 10, 11), ('数据', 13, 14), ('丢失', 15, 16), ('功能失效', 25, 28), ('工作不良', 30, 33), ('干扰', 42, 43), ('不能工作', 70, 73), ('数据丢失', 161, 164), ('失效', 260, 261), ('不能自动回位', 424, 429), ('故障', 438, 439)]}
关系>>>>>: [('遥控器', '失效', '部件故障'), ('遥控器', '丢失', '部件故障'), ('ISU模块', '功能失效', '部件故障'), ('ISU模块', '工作不良', '部件故障'), ('系统信号', '干扰', '部件故障'), ('遥控器', '不能工作', '部件故障'), ('遥控器', '数据丢失', '部件故障'), ('遥
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
资源推荐
资源详情
资源评论
收起资源包目录
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip (56个子文件)
__init__.py 0B
checkpoint
dgre
ner_args.json 870B
re_args.json 753B
duie
ner_args.json 4KB
re_args.json 3KB
model_hub
chinese-bert-wwm-ext
placeholder.txt 0B
data
dgre
re_data
dev.txt 477KB
labels.txt 55B
.ipynb_checkpoints
train-checkpoint.txt 6.25MB
dev-checkpoint.txt 478KB
train.txt 6.24MB
ner_data
dev.txt 280KB
labels.txt 25B
train.txt 3.17MB
ori_data
train.json 1.54MB
evalA.json 369KB
duie
re_data
rels.txt 2KB
labels.txt 447B
ner_data
labels.txt 209B
ori_data
duie_schema.json 4KB
Project_upload_all
__init__.py 0B
checkpoint
dgre
ner_args.json 870B
re_args.json 753B
duie
ner_args.json 4KB
re_args.json 3KB
model_hub
chinese-bert-wwm-ext
placeholder.txt 0B
data
dgre
re_data
dev.txt 477KB
labels.txt 55B
.ipynb_checkpoints
train-checkpoint.txt 6.25MB
dev-checkpoint.txt 478KB
train.txt 6.24MB
ner_data
dev.txt 280KB
labels.txt 25B
train.txt 3.17MB
ori_data
train.json 1.54MB
evalA.json 369KB
duie
re_data
rels.txt 2KB
labels.txt 447B
ner_data
labels.txt 209B
ori_data
duie_schema.json 4KB
predict.py 10KB
ner_main.py 7KB
re_main.py 7KB
process.py 14KB
data_loader.py 3KB
model.py 2KB
README.md 24KB
config.py 3KB
predict.py 10KB
ner_main.py 7KB
re_main.py 7KB
process.py 14KB
data_loader.py 3KB
model.py 2KB
README.md 24KB
config.py 3KB
共 56 条
- 1
资源评论
coderᅟᅠ
- 粉丝: 4016
- 资源: 1162
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功