使用Bert完成实体之间关系抽取

picture.image

向AI转型的程序员都关注了这个号👇👇👇

机器学习AI算法工程 公众号:datayx

大创所需,所以写了一个模型用来完成关系抽取。

最后在百度DuIE数据集的完整测试集上达到95.37%正确率

效果:

Source Text: 《在夏天冬眠》是容祖儿演唱的一首歌曲,收录于专辑《独照》中

Entity1: 独照 Entity2: 在夏天冬眠 Predict Relation: 所属专辑 True Relation: 所属专辑

Source Text: 2.花千骨花千骨是由慈文传媒集团制作并发行,高林豹、林玉芬、梁胜权联合执导,霍建华 、赵丽颖领衔主演,蒋欣、杨烁、张丹峰、马可、徐海乔、李纯等主演的古装仙侠玄幻 仙侠剧

Entity1: 赵丽颖 Entity2: 花千骨 Predict Relation: 主演 True Relation: 主演

Source Text: 在与王祖贤恋爱期间的齐秦,也是他事业最辉煌的时期,《大约在冬季》《无情的雨》《不让我的眼泪陪我过夜》《如果云知道》《夜夜夜夜》等经典曲目都是他为王祖贤所创作的,从这些歌也能感受到两个人是真爱,但是为什么就是没有一个结果呢

Entity1: 齐秦 Entity2: 大约在冬季 Predict Relation: 歌手 True Relation: 歌手

Source Text: 《甜蜜与厮杀》是连载在红袖添香网上的一部奇幻魔法小说,作者是kijimi1

Entity1: kijimi1 Entity2: 甜蜜与厮杀 Predict Relation: 作者 True Relation: 作者

使用方法

代码 获取方式:

关注微信公众号 datayx 然后回复 关系抽取 即可获取。

准备

  1. 将DUIE文件路径放置于代码同目录(或者自己的数据,具体可见loader.py),更加具体的获取和数据处理见下文
  2. 将bert-base-chinese放置于同目录下的bert-base-chinese下或者自行指定位置
  3. 安装pytorch,cuda,transformer,numpy等组件(实际测试可运行环境为pytorch=1.5.1 transformers=2.5.1)

train and eval

(注意,在此之前,请做好数据的获取和预处理,步骤见文)

python3 main.py执行训练,并得到Fine-Tuing后的BERT

python3 demo.py得到样例输出,或自行阅读代码,修改test函数的传入参数内容即可自定义。

如果仅用于测试和实际使用,可以下载已经训练好的Model,然后调用demo.py下对应函数

caculate_acc:计算每一个类别的正确率

demo_output:随机选择样本,输出原文,实体对以及预测的关系,即实例输出

Model download(92.5%正确率的)

地址:https://pan.baidu.com/s/123qVcRa5SBKcMBLWxP5bKQ

提取码:bert

Model download(95.37%正确率的)

链接:https://pan.baidu.com/s/1ffOzN3FZ1foepB6NcSF5qQ 提取码:bert

数据

数据使用的是百度发布的DUIE数据,包含了实体识别和关系抽取

原数据地址:https://ai.baidu.com/broad/download?dataset=dureader

打开后在左侧栏选择knowledge extraction,然后如下界面点击下载train_data.json和dev_data.json,然后放到对应的位置

运行loader.py里的prepare_data,观察到目录里生成了train.json和dev.json

截止这里,数据的预处理完成了,可以运行main和demo

picture.image

我对数据进行了预处理,提取关系抽取需要的部分

关系设定有49类,还是非常的丰富的

id2rel={0: 'UNK', 1: '主演', 2: '歌手', 3: '简称', 4: '总部地点', 5: '导演',

    6: '出生地', 7: '目', 8: '出生日期', 9: '占地面积', 10: '上映时间',


    11: '出版社', 12: '作者', 13: '号', 14: '父亲', 15: '毕业院校', 


    16: '成立日期', 17: '改编自', 18: '主持人', 19: '所属专辑', 


    20: '连载网站', 21: '作词', 22: '作曲', 23: '创始人', 24: '丈夫', 


    25: '妻子', 26: '朝代', 27: '民族', 28: '国籍', 29: '身高', 30: '出品公司', 


    31: '母亲', 32: '编剧', 33: '首都', 34: '面积', 35: '祖籍', 36: '嘉宾', 


    37: '字', 38: '海拔', 39: '注册资本', 40: '制片人', 41: '董事长', 42: '所在城市',


    43: '气候', 44: '人口数量', 45: '邮政编码', 46: '主角', 47: '官方语言', 48: '修业年限'}   


数据的格式如下,ent1和ent2是实体,rel是关系

picture.image

Model

模型就是直接使用Bert用于序列分类的(BertEncoder+Fc+CrossEntropy)

具体的处理就是把ent1,ent2和sentence直接拼接送进模型

相对我之前对Bert的粗糙处理,这里加上了MASK-Attention一起送进模型

Result

从百度的原数据中选择20000条,测试数据2000条(原数据相对很小的一部分)

训练参数:10 Epoch,0.001学习率,设置label共有49种(包含UNK,代表新关系和不存在关系)

然后在训练前和训练后的分别在测试数据上测试,可以看到Fine-Tuing高度有效

测试集正确率达到 92.5%

修正:后来在所有的数据上训练和测试,测试数据36w,测试数据4w,eval正确率95+%

picture.image

实际测试

在数据中抽取一部分实际测试

效果不错

picture.image

机器学习算法AI大数据技术

搜索公众号添加: datanlp

picture.image

长按图片,识别二维码


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

《深度学习:基于Keras的Python实践》PDF和代码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx

picture.image

0
0
0
0
评论
未登录
暂无评论