bert cnn知识抽取模型_【文本信息抽取与结构化】详聊如何用BERT实现关系抽取

常常在想,自然语言处理到底在做的是一件什么样的事情?到目前为止,我所接触到的NLP其实都是在做一件事情,即将自然语言转化为一种计算机能够理解的形式。这一点在知识图谱、信息抽取、文本摘要这些任务中格外明显。不同的任务的差异在于目标的转化形式不一样,因而不同的任务难度、处理方式存在差异。

这个系列文章【文本信息抽取与结构化】,在自然语言处理中是非常有用和有难度的技术,是文本处理与知识提取不可或缺的技术。

BERT这么强大的预训练模型,当然会想着把他利用起来,本篇介绍如何利用BERT进行关系抽取。

作者&编辑 | 小Dream哥前述关系分类与提取是一个重要的NLP任务,其主要目标是提取出实体以它们之间的关系。在BERT之前,最有效的关系分类方法主要是基于CNN或RNN。最近,预训练BERT模型在许多NLP的分类和序列标注任务中都获得了非常好的结果。

因此,必然会有工作考虑利用BERT来自关系抽取。关系提取与分类的主要难点在于,其不仅仅依赖于两个目标实体的信息,还依赖于句子本身的语义及语法信息。利用BERT强大的编码能力,预期能够同时抽取到文本中的两种特征。事实上也正是如此,目前效果最好的关系抽取模型正是基于BERT的工作,本片介绍几个利用BERT来做关系抽取的工作。R-BERT模型R-BERT(作者这样称呼),是我调研到的第一篇用BERT做RE的模型,所以笔者先介绍这个模型。

1) 模型结构Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.如上图所示,是R-BERT的模型结构在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于BERT事件抽取构建活动知识图谱python源码+项目说明.zip 主要思路: 这是一个基于深度学习的事件抽取。将任务分割为触发词抽取,论元抽取,属性抽取。具体而言是论元和属性的抽取结果依赖于触发词,因此只有一步误差传播。因 time loc 并非每个句子中都存在,并且分布较为稀疏,因此将 time & loc 与 sub & obj 的抽取分开(role1 提取 sub & obj;role2 提取 time & loc) 模型先进行触发词提取,由于数据集的特殊性,模型限制抽取的事件仅有一个,如果抽取出多个触发词,选择 logits 最大的 trigger 作为该句子的触发词,如果没有抽取触发词,筛选整个句子的 logits,取 argmax 来获取触发词; 然后根据触发词抽取模型抽取的触发词,分别输入到 role1 & role2 & attribution 模型中,进行后序的论元提取和属性分类;四种模型都是基于 Roberta-wwm 进行实验,加入了不同的特征。 最后将识别的结果进行整合,得到提交文件。 三、四见pdf 五、项目优缺点 优点: 1、舍弃CRF结构,采用指针式解码的方案,并利用trigger字典。如果未解码出trigger,则比较句子中匹配知识库的所有distant trigger 的 start + end logits,选取最大的一个作为解码出的 trigger 2、具体而言是论元和属性的抽取结果依赖于触发词,因此只有一步误差传播。 3、根据数据的特征,限制解码输出一个trigger,如果解码出多个trigger,选取 logits 最大的那个trigger作为候选trigger 4、根据数据的特点,发现绝大数都有触发词,故采用trigger左右两端动态池化特征作为全局特征; 5、因 time loc 并非每个句子中都存在,并且分布较为稀疏,将 time & loc 和 subject & object 的提取分开,采用两个独立的模型进行提取。 6、由于样本类别不均极其严重,采用10折交叉验证的方法来提升模型的泛化性能。 缺点: 1、因为测试集中的数据不是每一个都带时间和地点,所以时间和地点抽取效果不是很好,如一个句子里存在两个时间,只能抽取前面的时间,但比赛数据的测试集只有一个时间效果很好,只有两条数据集有地点; 2、由于测试集部分数据的trigger词在后面,sub和obj识别顺序会颠倒; 3、特殊测试集trigger与数据集trigger库不一致情况下,无法抽取trigger,但可以在trigger字典库中手动添加 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 课程大作业基于bert4keras开放领域的关系抽取python源码+部署说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 欢迎下载,欢迎交流,互相学习进步! 本项目是利用深度学习技术进行开放领域的关系抽取,算法模型可以处理多个三元组。 开放领域关系抽取是从文本中抽取三元组,不同于限定域的关系抽取,开放关系抽取并不限制关系的种类和数量,即所识别的关系(relation)在文本中体现。于是将("n", 标签)组合成一个大类,然后可以将开放关系抽取转化为一个NER问题,其中n对应的是文本中三元组的数量。对于NER任务,我们采用[GPLinker模型](https://kexue.fm/archives/8926),相应代码在openRE_train_v2中。 所需环境 Python==3.6 tensorflow==1.14.0 keras==2.3.1 bert4keras==0.10.9 项目目录 ├── bert4keras ├── data    存放数据 ├── pretrained_model    存放预训练模型 ├── extract_chinese_and_punct.py ├── openRE_train.py    训练代码 ├── openRE_train_v2.py    训练代码v2 ├── openRE_predict.py    评估和测试代码 数据集 采用[COER语料库],对原始数据进行了筛选,处理好的数据存放在data/CORE文件夹下。 ``` "text": "巴基斯坦国家灾害管理局局长法鲁克、巴内阁事务部长穆罕默德", "sro_list": [{"subject": "巴", "relation": "内阁事务部长", "object": "穆罕默德"}, {"subject": "巴基斯坦国家灾害管理局", "relation": "局长", "object": "法鲁克"}] ``` 三元组中的实体和关系均出现在文本中。 训练集和验证集中的每个句子都有n个三元组(2=<n<=4),数据统计情况: | 数据集 | 2个 | 3个 | 4个 | | :------:| :------: | :------: | :------: | | train | 8858 | 767 | 264 | | dev | 2238 | 177 | 58 | 使用说明 1.[下载预训练语言模型] 可采用BERT-Base, Chinese等模型 2.构建数据集(数据集已处理好)   train.json和dev.json 3.训练模型 ``` python openRE_train.py ``` 4.评估和测试 ``` python openRE_predict.py ``` 结果 | 数据集 | f1 | precision | recall | | :------:| :------: | :------: | :------: | | train | 0.92781 | 0.92947 | 0.92616 | | dev | 0.62125 | 0.61854 | 0.62397 | | dev(v2) | 0.76922 | 0.80624 | 0.73545 |

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值