【自然语言处理】:实验4布置,预训练语言模型实现与应用

清华大学驭风计划

因为篇幅原因实验答案分开上传,自然语言处理专栏持续更新中,期待的小伙伴敬请关注

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~

案例简介

 2018年,Google提出了预训练语言模型BERT,该模型在各种NLP任务上都取得了很好的效果。与此同时,它的使用十分方便,可以快速地对于各种NLP任务进行适配。因此,BERT已经被广泛地使用到了各种NLP任务当中。在本案例中,我们会亲手将BERT适配到长文本关系抽取任务DocRED上,从中了解BERT的基本原理和技术细节。关系抽取是自然语言处理领域的重要任务,DocRED中大部分关系需要从多个句子中联合抽取,因此需要模型具备较强的获取和综合文章中信息的能力,尤其是抽取跨句关系的能力。

BERT



BERT是目前最具代表性的预训练语言模型,如今预训练语言模型的新方法都是基于BERT进行改进的。研究者如今将各种预训练模型的使用代码整合到了`transformers`这个包当中,使得我们可以很方便快捷地使用各种各样的预训练语言模型。在本实验中,我们也将调用`transformers`来使用BERT完成文档级别关系抽取的任务。基于`transformers`的基础后,我们的主要工作就是将数据处理成BERT需要的输入格式,以及在BERT的基础上搭建一个能完成特定任务的模型。在本次实验中,我们的重点也将放在这两个方面。首先是对于数据的处理,对于给定的文本,我们需要使用BERT的tokenizer将文本切成subword,然后转换成对应的id输入进模型中。通常来说这个过程是比较简单的,但是针对于DocRED这个任务,我们需要有一些额外注意的事情。文档级关系抽取的目标是从一段话中确定两个实体之间的关系,为了让模型知道我们关心的两个实体是什么,我们需要在文本中插入四个额外的符号,将实体标注出来。与此同时,BERT模型是一个语言模型,为了能使其适配关系抽取任务,我们需要加入额外的神经网络,使得模型能够进行关系预测。通常来说这个神经网络就是将文本中的第一个字符拿出来输入到一个线性层中进行分类。

数据和代码

本案例使用了DocRED的数据,并提供了一个简单的模型实现,包括数据的预处理、模型的训练、以及简单的评测。数据预处理的代码在gen_data.py里。在处理完数据之后,再运行train.py进行训练,训练流程的代码在config/Config.py里。注意由于预训练模型很大,因此需要调整batch size使得GPU能够放得下,于此同时为了提高batch size的绝对大小,可以使用[梯度累积](https://www.jiqizhixin.com/articles/2018-10-17-11)的技术。

以上代码是完整实现好的,我们需要同学对gen_data.py和config/Config.py中用# question标识的20余个问题进行回答,并运行模型,测试模型在有100% / 50% / 10% training data(通过随机sample原training set一部分的数据,10%代表低资源的设定)的情况下模型在dev set上的效果(如果服务器资源有限,也可以只测试10%的结果,并在报告中提及)

评分要求

分数由两部分组成。首先,回答代码文件中标识的问题,并且训练模型,评测模型在开发集上的结果,这部分占80%,评分依据为模型的开发集性能和问题的回答情况。第二部分,进行进一步的探索和尝试,我们将在下一小节介绍可能的尝试。同学需要提交代码和报告,在报告中对于两部分的实验都进行介绍,主要包括开发集的结果以及尝试的具体内容。

探索和尝试

完成对于测试数据的评测,并且提交到DocRED的[评测系统](https://competitions.codalab.org/competitions/20717)中。(推荐先完成该任务,主要考察同学将模型真正应用起来的能力)

使用别的预训练语言模型完成该实验,例如RoBERTa等。

对于模型进行改进,提升关系抽取的能力,这里可以参考一些DocRED最新工作,进行复现。

参考资料

DocRED: A Large-Scale Document-Level Relation Extraction Dataset. ACL 2019.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/394384.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习之pytorch实现线性回归

度学习之pytorch实现线性回归 pytorch用到的函数torch.nn.Linearn()函数torch.nn.MSELoss()函数torch.optim.SGD() 代码实现结果分析 pytorch用到的函数 torch.nn.Linearn()函数 torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数biasTrue # 是…

Android 发布蒲公英平台自动更新

蒲公英官网:https://www.pgyer.com/ 首先弄明白蒲公英平台的SDK更新机制:蒲公英 - 文档中心 - SDK 自动更新机制 (pgyer.com) 下面直接开始代码操作 1.添加蒲公英maven库 maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer…

Matlab论文插图绘制模板第136期—极坐标气泡图

在之前的文章中,分享了Matlab笛卡尔坐标系的气泡图的绘制模板: 进一步,再来分享一下极坐标气泡图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有需要的朋…

基于微信小程序的校园跑腿系统的研究与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

threehit漏洞复现以及防御

说白了跟sql-liql靶场二次注入一样,也是一个转义函数而这次是,入库的时候不转义,出库的时候会转义导致这个漏洞出现 开始测试: 这是我注册完test刚登录的情况 找注入点更新数据的update,很容易找到在age段 这次我注册…

12.QT文件对话框 文件的弹窗选择-QFileDialog

目录 前言: 技能: 内容: 1. 界面 2.信号槽 3.其他函数 参考: 前言: 通过按钮实现文件弹窗选择以及关联的操作 效果图就和平时用电脑弹出的选文件对话框一样 技能: QString filename QFileDialog::ge…

(九)【Jmeter】线程(Threads(Users))之bzm-Free-Form Arrivals Thread Group

简述 操作路径如下: 作用:支持自由形式的用户到达模式,具有更高的灵活性,与Arrivals Thread Group类似,不过是通过设置起始值、终止值和持续时间来达到压测目的。配置:通过图形界面或脚本定义用户到达曲线。使用场景:模拟复杂的用户到达模式,满足特定业务需求。优点:…

第三百五十三回

文章目录 1. 概念介绍2. 使用方法2.1 获取所有时区2.2 转换时区时间 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

open3d k-means 聚类

k-means 聚类 一、算法原理1、介绍2、算法步骤 二、代码1、机器学习生成kmeans聚类2、点云学习生成聚类 三、结果1、原点云2、机器学习生成kmeans聚类3、点云学习生成聚类 四、相关链接 一、算法原理 1、介绍 K-means聚类算法是一种无监督学习算法,主要用于数据聚…

扩展语音识别系统:增强功能与多语言支持

一、引言 在之前的博客中,我们成功构建了一个基于LibriSpeech数据集的英文语音识别系统。现在,我们将对系统进行扩展,增加一些增强功能,并尝试支持多语言识别。 二、增加增强功能 语音合成 --除了语音识别,我们还可以…

SpringMVC的执行流程

过去的开发中,视图阶段(老旧JSP等) 1.首先用户发送请求到前端控制器DispatcherServlet(这是一个调度中心) 2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping 3.处理器映射器HandlerMapping找到具体的处理器,可查找xml配置或注…

简单理解VQGAN

简单理解VQGAN TL; DR:与 VQVAE 类似,隐层压缩表征自回归生成的两阶段图像生成方法。增加感知损失和对抗损失,提高压缩表征模型解码出图片的清晰度。还可以通过编码并预置条件表征,实现条件生成。 隐层压缩表征自回归生成&#…

迁移SVN和GIT的云端数据

在新服务器搭建GIT仓库 教程很多,大致的流程是: 1. 新建linux用户密码专用于git操作 2. 新建git库的存放文件夹并在此初始化git 3. 配置git库所在目录权限 *只需要有一个库和有一个用户,与在windows上建库是一样的。不需要搭建类似gitla…

深入解析Android AIDL:实现跨进程通信的利器

深入解析Android AIDL:实现跨进程通信的利器 1. 介绍Android AIDL Android Interface Definition Language (AIDL) 是一种Android系统中的跨进程通信机制。AIDL允许一个应用程序的组件与另一个应用程序的组件通信,并在两者之间传输数据。 AIDL的主要作…

云手机受欢迎背后的原因及未来展望

随着办公模式的演变,云手机的热潮迅速兴起。在各种办公领域,云手机正展现出卓越的实际应用效果。近年来,跨境电商行业迎来了蓬勃发展,其与国内电商的差异不仅体现在整体环境上,更在具体的操作层面呈现出独特之处。海外…

短链接系统测试报告

目录 项目背景 项目功能 自动化测试 总结 项目背景 随着互联网的发展,链接(URL)变得越来越长且复杂,这不仅影响用户体验,还可能由于字符限制导致在某些平台或应用中无法完整显示。为了解决这一问题,我…

上位机图像处理和嵌入式模块部署(boost库的使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 作为c程序员来说,除了qt之外,另外值得学的开发库就是boost。boost本身包含的内容非常多,基本我们常用的功能都已…

ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整

文章目录 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整获取音频长度pydub获取音频长度获取时长精确到秒格式设定 mutagen获取音频长度 调整音量视频音量调整注意事项 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整 老王媳妇说上次那个pip挺好…

分布式学习笔记

1. CAP理论 Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。 Availability(可用性):用户访问集群中的任意健康节点,必须得到相应,而不是超时…

VSCODE上使用python_Django

接上篇 https://blog.csdn.net/weixin_44741835/article/details/136135996?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136135996%22%2C%22source%22%3A%22weixin_44741835%22%7D VSCODE官网: Editing Python …