【自然语言处理】:实验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.

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue+springboot登录与注册功能的实现

①首先写一个登录页面 <template> <div style"background-color: #42b983;display: flex;align-items: center;justify-content: center;height: 100vh"><div style"background-color: white;display: flex;width: 50%;height: 50%;overflow: h…

统信UOS终端:使用方法解析系列(下篇)

原文链接&#xff1a;统信UOS终端&#xff1a;使用方法解析系列&#xff08;下篇&#xff09; 亲爱的读者朋友们&#xff0c;欢迎回到我们关于统信UOS终端使用方法的系列文章。在这个系列的最后一篇中&#xff0c;我们将深入探讨一些高级功能&#xff0c;包括终端分屏、查找命令…

UE4 C++联网RPC教程笔记(一)(第1~4集)

UE4 C联网RPC教程笔记&#xff08;一&#xff09;&#xff08;第1~4集&#xff09; 前言1. 教程介绍与资源2. 自定义 Debug 功能3. Actor 的复制4. 联网状态判断 前言 本系列笔记将会对梁迪老师的《UE4C联网RPC框架开发吃鸡》教程进行个人的知识点梳理与总结&#xff0c;此课程…

Rabbitmq入门与应用(五)-延迟队列的设计与实现

延迟队列设计 在开发过程中涉及到延迟队列的应用&#xff0c;例如订单生成后有30分钟的付款时间&#xff0c;注册是有60秒的邮件或者短信的发送读取时间等。 常规使用rabbitmq设计延迟队列有两种方式 使用创建一个延迟队列阻塞消息使用延迟队列插件 Dead Letter Exchanges —…

Aster实现一台电脑当两台使——副屏使用独立win账号

前言&#xff1a;笔者每年回家&#xff0c;都面临着想要和小伙伴一起玩游戏&#xff0c;但小伙伴没有电脑/只有低配电脑的问题。与此同时&#xff0c;笔者自身的电脑是高配置的电脑&#xff0c;因此笔者想到&#xff0c;能否在自己的电脑上运行游戏&#xff0c;在小伙伴的电脑上…

如何图片无损放大?几个无损放大图片分享

在数字化时代&#xff0c;图片已经成为我们生活中不可或缺的一部分。从社交媒体上的分享&#xff0c;到专业摄影作品的展示&#xff0c;再到网页设计和平面广告的制作&#xff0c;图片的质量往往直接影响到我们的视觉体验和信息传达的效果。然而&#xff0c;有时候&#xff0c;…

2024-02-11 Unity 编辑器开发之编辑器拓展2 —— 自定义窗口

文章目录 1 创建窗口类2 显示窗口3 窗口事件回调函数4 窗口中常用的生命周期函数5 编辑器窗口类中的常用成员6 小结 1 创建窗口类 ​ 当想为 Unity 拓展一个自定义窗口时&#xff0c;只需实现继承 EditorWindow 的类即可&#xff0c;并在该类的 OnGUI 函数中编写面板控件相关的…

开发知识点-JAVA-Jeecgboot

Jeecgboot 介绍fofa语法:漏洞列表jeecg-boot-getDictItemsByTable-sqlinuclei yamljeecg-boot-queryTableData-sqlijeecg-boot-sqlijeecg-queryFieldBySql-rcejeecg-register-login-bypass修复建议介绍 「企业级低代码平台」 前后端分离架构SpringBoot 2.x3.x,SpringCloud,…

【漏洞复现】蓝网科技临床浏览系统信息泄露漏洞

Nx01 产品简介 蓝网科技临床浏览系统是一个专门用于医疗行业的软件系统&#xff0c;主要用于医生、护士和其他医疗专业人员在临床工作中进行信息浏览、查询和管理。 Nx02 漏洞描述 蓝网科技临床浏览系统存在信息泄露漏洞&#xff0c;攻击者可以利用该漏洞获取敏感信息。 Nx03…

《C++ Primer Plus》《4、复合类型》

文章目录 前言&#xff1a;1 数组1.1数组的初始化规则1.2 C11的数组初始化方法 2 字符串2.1 拼接字符串常量2.2在数组中使用字符串2.3 字符串输入2.4 每次读取一行字符串输入2.5 混合输入字符串和数字 3 string类简介3.1 C11字符串初始化3.2 赋值、拼接、附加3.3 string类的其他…

CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的&#xff1f;什么是冯诺依曼架构和哈弗架构&#xff1f; 一、CPU内部结构及工作原理1.1 CPU的结构1.2 CPU工作流程举例 二、计算机体系结构2.1 冯诺依曼架构2.2 哈弗架构 三、总结 快速学习嵌入式开发其他基础知识&#…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学

说明&#xff1a;这篇文章是适用于已经学过SpringBoot3和Vue3理论知识&#xff0c;但不会具体如何实操的过程的朋友&#xff0c;那么我将手把手从教大家从后端与前端交互的过程教学。 目录 一、创建一个SpringBoot3项目的和Vue3项目并进行配置 1.1后端配置: 1.1.1applicatio…

notepad++打开文本文件乱码的解决办法

目录 第一步 在编码菜单栏下选择GB2312中文。如果已经选了忽略这一步 第二步 点击编码&#xff0c;红框圈出来的一个个试。我切换到UTF-8编码就正常了。 乱码如图。下面分享我的解决办法 第一步 在编码菜单栏下选择GB2312中文。如果已经选了忽略这一步 第二步 点击编码&#…

基于ORB-SLAM2与YOLOv8剔除动态特征点

基于ORB-SLAM2与YOLOv8剔除动态特征点 以下方法以https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download#freiburg3_walking_xyz数据集进行实验测试APE 首先在不剔除动态特征点的情况下进行测试&#xff1a; 方法1:segment坐标点集合逐一排查剔除 利用YOLOv8的segm…

自定义Linux登录自动提示语

设置提示语的方式 在Linux系统中&#xff0c;可以通过修改几个特定的文件来实现在用户登录时自动弹出提示语。以下是几个常用的方法&#xff1a; 1. 修改/etc/issue文件&#xff1a; 这个文件用于显示本地登录前的提示信息 sudo vi /etc/issue在项目合作的时候&#xff0c;…

VMware虚拟机安装CentOS7

对于系统开发来说&#xff0c;开发者时常会需要涉及到不同的操作系统&#xff0c;比如Windows系统、Mac系统、Linux系统、Chrome OS系统、UNIX操作系统等。由于在同一台计算机上安装多个系统会占据我们大量的存储空间&#xff0c;所以虚拟机概念应运而生。本篇将介绍如何下载安…

鉴源论坛 · 观模丨形式化工程方法之需求建模(上)

作者 | 杨坤 上海控安可信软件创新研究院系统建模组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言&#xff1a;需求建模是整个软件开发、测试验证与维护的基础。经过长期研究与实践&#xff0c;工业界与学术界均意识到&…

Linux之Shell

第 1 章 Shell 概述 1&#xff09;Linux 提供的 Shell 解析器有 [zhaohadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh2&#xff09;bash 和 sh 的关系 [zhaohadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880…

JVM--- 垃圾收集器详细整理

目录 一、垃圾收集需要考虑的三个事情&#xff1a; 二、垃圾回收针对的区域 三、如何判断对象已死 1.引用计数算法&#xff1a; 2.可达性分析算法 四、引用 五、生存还是死亡&#xff1f; 六、回收方法区 七、垃圾收集算法 1.分代收集理论 2.标记-清除算法 3.标记-复制算…

【qt创建线程两种方式】

QT使用线程的两种方式 1.案例进度条 案例解析&#xff1a; 如图由组件一个进度条和三个按钮组成&#xff0c;当点击开始的时候进度条由0%到100%&#xff0c;点击暂停&#xff0c;进度条保持之前进度&#xff0c;再次点击暂停变为继续&#xff0c;点击停止按钮进度条停止。 案…