当前位置: 首页 > news >正文

信息抽取数据集处理——RAMS

引言

RAMS数据集(RAMS:Richly Annotated Multilingual Schema-guided Event Structure)由约翰斯·霍普金斯大学于2020年发布,是一个以新闻为基础的事件抽取数据集。它标注了9,124个事件,涵盖了139种不同的事件类型和65种元素角色类型。事件类型涉及多个领域,如:

  • 生命事件(life)
  • 冲突事件(conflict)
  • 灾难事件(disaster)
  • 司法事件(justice)
  • 联络事件(contact)
  • 政府事件(government)

而元素角色类型包括如:

  • 地点(place)
  • 参与者(participant)
  • 目的地(destination)
  • 起源(origin)
  • 受害者(victim)
  • 被告人(defendant)

这个数据集非常适合用于事件抽取、自然语言处理任务,特别是对事件结构、事件角色的识别和分类。

一、特点(features)

  1. 事件类型多样化:涵盖多个领域,增强了事件抽取任务的广泛性和复杂性。
  2. 角色标注详细:为每个事件详细标注了不同的角色,为构建事件图、进行因果推理等任务提供了丰富的上下文信息。
  3. 结构化标注:不仅仅提供文本,还为每个事件及其参与者标注了详细的语义信息,使其适用于高层次的文本分析。

二、下载(download)

  • 可以通过访问官方下载网站进行最新和历史数据集的下载。
  • 也可以通过访问我的主页提供的数据集来进行下载。

三、数据集(database)

3.1 数据

数据被分成 train/dev/test 三个文件,

每个数据文件的每一行包含一个 json 字符串,

每个 json 包含:

  • ent_spans:开始和结束(包含)索引以及事件/参数/角色字符串。
  • evt_triggers:开始和结束(包括)索引以及事件类型字符串。
  • sentences:文档文本
  • gold_evt_links:遵循上述格式的三元组(事件、论点、角色)
  • source_url:文本来源
  • split:它属于哪个数据分割
  • doc_key:它对应于哪个单独的文件(nw\_ 添加到所有文件前面)

所有其他字段都是多余的,以允许 RAMS 的未来迭代。

格式化之后的一条数据(train.jsonlines的第1行)如下展示:

{"rel_triggers": [],"gold_rel_links": [],"doc_key": "nw_RC000462ebb18ca0b29222d5e557fa31072af8337e3a0910dca8b5b62f","ent_spans": [[42,43,[["evt090arg02victim",1.0]]],[85,88,[["evt090arg01killer",1.0]]],[26,26,[["evt090arg04place",1.0]]]],"language_id": "eng","source_url": "https://www.washingtonpost.com/news/powerpost/paloma/daily-202/2016/06/17/daily-202-more-republicans-ditch-trump-conclude-he-cannot-win/5763a1e0981b92a22d0f8a36/","evt_triggers": [[69,69,[["life.die.deathcausedbyviolentevents",1.0]]]],"split": "train","sentences": [["Transportation","officials","are","urging","carpool","and","teleworking","as","options","to","combat","an","expected","flood","of","drivers","on","the","road","."],["(","Paul","Duggan",")"],["--","A","Baltimore","prosecutor","accused","a","police","detective","of","\u201c","sabotaging","\u201d","investigations","related","to","the","death","of","Freddie","Gray",",","accusing","him","of","fabricating","notes","to","suggest","that","the","state","\u2019s","medical","examiner","believed","the","manner","of","death","was","an","accident","rather","than","a","homicide","."],["The","heated","exchange","came","in","the","chaotic","sixth","day","of","the","trial","of","Baltimore","Officer","Caesar","Goodson","Jr.",",","who","drove","the","police","van","in","which","Gray","suffered","a","fatal","spine","injury","in","2015","."],["(","Derek","Hawkins","and","Lynh","Bui",")"]],"gold_evt_links": [[[69,69],[85,88],"evt090arg01killer"],[[69,69],[42,43],"evt090arg02victim"],[[69,69],[26,26],"evt090arg04place"]]
}

1. sentences

  • 文档内容被分为多个句子:
    • 句子1:"Transportation officials are urging carpool and teleworking as options to combat an expected flood of drivers on the road."
    • 句子2:"(Paul Duggan)"
    • 句子3:"A Baltimore prosecutor accused a police detective of ‘sabotaging’ investigations related to the death of Freddie Gray."
    • 句子4:"The heated exchange came in the chaotic sixth day of the trial of Baltimore Officer Caesar Goodson Jr."

2. evt_triggers(事件触发器)

  • [69, 69] 对应的词是句子3中的 "homicide",标注事件类型为 "life.die.deathcausedbyviolentevents"(与暴力事件导致的死亡相关)。

3. ent_spans(实体标注,开始和结束索引,以及事件角色)

  • [42, 43] 对应的词是句子3中的 "Freddie Gray",角色为 "victim"(受害者)。
  • [85, 88] 对应的词是句子4中的 "Caesar Goodson Jr.",角色为 "killer"(凶手)。
  • [26, 26] 对应的词是句子3中的 "Baltimore",角色为 "place"(地点)。

4. gold_evt_links(事件-论点-角色三元组)

  • 第一个三元组:触发词 "homicide",论点是 "Caesar Goodson Jr.",角色是 "killer"
  • 第二个三元组:触发词 "homicide",论点是 "Freddie Gray",角色是 "victim"
  • 第三个三元组:触发词 "homicide",论点是 "Baltimore",角色是 "place"

5. source_url

  • 文档来源是:https://www.washingtonpost.com/news/powerpost/paloma/daily-202/2016/06/17/daily-202-more-republicans-ditch-trump-conclude-he-cannot-win/5763a1e0981b92a22d0f8a36/

6. split

  • 样本属于 训练集(train)

7. doc_key

  • 对应的文档ID为 "nw_RC000462ebb18ca0b29222d5e557fa31072af8337e3a0910dca8b5b62f",该ID用于唯一标识文档。

四、数据处理

import jsondef load_data(file_path):data = []with open(file_path, 'r') as f:for line in f:data.append(json.loads(line))return datadef save_to_json(data, file_path):with open(file_path, 'w') as f:json.dump(data, f, indent=4)def extract_event_data(entry):sentences = [" ".join(s) for s in entry["sentences"]]text = [item for sublist in entry["sentences"] for item in sublist]# text = entry["sentences"]# text = " ".join(sentences)# 处理实体ent_spans = [(span[0], span[1], span[2][0][0]) for span in entry["ent_spans"]]# 处理事件触发词evt_triggers = [(trigger[0], trigger[1], trigger[2][0][0]) for trigger in entry["evt_triggers"]]# 处理事件-论点链接evt_links = entry["gold_evt_links"]return text, ent_spans, evt_triggers, evt_linksdef prepare_training_data(entries):dataset = []for entry in entries:text, ent_spans, evt_triggers, evt_links = extract_event_data(entry)# 生成训练样本dataset.append({'text': text,'entities': ent_spans,'triggers': evt_triggers,'links': evt_links})return datasetif __name__ == '__main__':train_data = load_data("./train.jsonlines")training_dataset = prepare_training_data(train_data)save_to_json(training_dataset, 'train.json')print(training_dataset[0])

4.1 加载并解析数据

首先,加载JSON格式的数据文件,并解析其中的字段。

import jsondef load_data(file_path):data = []with open(file_path, 'r') as f:for line in f:data.append(json.loads(line))return datatrain_data = load_data('train.json')

4.2 数据预处理

将文档中的句子、事件触发词、角色和实体进行标注与转换,以便用于事件抽取模型。我们可以提取句子、事件触发词及角色信息。

def extract_event_data(entry):sentences = [" ".join(s) for s in entry["sentences"]]text = " ".join(sentences)# 处理实体ent_spans = [(span[0], span[1], span[2][0][0]) for span in entry["ent_spans"]]# 处理事件触发词evt_triggers = [(trigger[0], trigger[1], trigger[2][0][0]) for trigger in entry["evt_triggers"]]# 处理事件-论点链接evt_links = entry["gold_evt_links"]return text, ent_spans, evt_triggers, evt_links# 示例提取
for entry in train_data:text, ent_spans, evt_triggers, evt_links = extract_event_data(entry)print(f"文本: {text}")print(f"实体: {ent_spans}")print(f"事件触发词: {evt_triggers}")print(f"事件-论点链接: {evt_links}")

4.3 生成模型输入

为了进行事件抽取,常见的输入是文本与相应的事件触发器和角色。我们可以构建一个数据集,将文本标注为序列标注任务或使用分类任务标注事件触发词和论点。

def prepare_training_data(entries):dataset = []for entry in entries:text, ent_spans, evt_triggers, evt_links = extract_event_data(entry)# 生成训练样本dataset.append({'text': text,'entities': ent_spans,'triggers': evt_triggers,'links': evt_links})return datasettraining_dataset = prepare_training_data(train_data)

相关文章:

信息抽取数据集处理——RAMS

引言 RAMS数据集(RAMS:Richly Annotated Multilingual Schema-guided Event Structure)由约翰斯霍普金斯大学于2020年发布,是一个以新闻为基础的事件抽取数据集。它标注了9,124个事件,涵盖了139种不同的事件类型和65种…...

SpringBoot+XXL-JOB:高效定时任务管理

前言 在现代应用程序中,定时任务是不可或缺的一部分。Spring Boot 和 XXL-Job 为你提供了一个强大的工具组合,以简化任务调度和管理。 本文将带领你探索如何将这两者集成在一起,实现高效的定时任务管理。无论你是初学者还是有经验的开发者&…...

openpyxl -- 简介

文章目录 介绍核心类 介绍 开源的python读写Excel的工具库,由志愿者在业余时间维护;安装,pip install openpyxl;官方文档地址源码地址issues列表默认openpyxl不能保证抵御大量的xml攻击,为抵御这些攻击需安装defusedxml&#xff…...

滚雪球学MySQL[8.3讲]:数据库中的JSON与全文检索详解:从数据存储到全文索引的高效使用

全文目录: 前言8.3 JSON与全文检索1. JSON数据类型的使用1.1 JSON 数据类型概述1.2 JSON 数据的插入与查询1.3 JSON 常用函数与操作1.4 JSON使用的优缺点与性能考虑 2. 全文索引与全文检索2.1 全文索引概述2.2 全文检索的使用2.3 全文检索模式2.4 全文索引优化与性能…...

position定位静态定位/绝对定位/相对定位

1.静态定位static&#xff1a;按照标准流进行布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>D…...

2024年09月CCF-GESP编程能力等级认证C++编程三级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 下列代码中,输出结果是( ) #include<iostream> using namespace std; i...

Web自动化Demo-PHP+Selenium

1.新建工程 打开PhpStorm新建工程如下&#xff1a; 打开终端输入如下命令安装selenium&#xff1a; composer require php-webdriver/webdriver 2.编写代码 <?php require vendor/autoload.php;use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver…...

Python速成笔记——知识(GUI自动化处理屏幕和按键输出)

处理屏幕 获取屏幕快照 函数:pyautogui.screenshot(); 【注】该函数返回包含一个屏幕快照的Image对象; 分析屏幕快照 函数:pyautogui.pixel(); 【注】 传递一个坐标的元组,函数返回坐标对应像素点的RGB值(RGB元组) 函数:pyautogui.pixelMatchesColor() 【注】 函数第一…...

计算机是如何输入存储输出汉字、图片、音频、视频的

计算机是如何输入存储输出汉字、图片、音频、视频的 为了便于理解&#xff0c;先了解一下计算机的组成。 冯诺依曼计算机的五大组成部分。分别是运算器、控制器、存储器、输入设备和输出设备。参见下图&#xff1a; 一、运算器 运算器又称“算术逻辑单元”&#xff0c;是计算…...

springboot系列--web相关知识探索五

一、前言 web相关知识探索四中研究了请求中所带的参数是如何映射到接口参数中的&#xff0c;也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、以及自定义对象参数。web相关知识探索四中主要研究了复杂参数底层绑定原理。本次主要是研…...

开源商城系统crmeb phpstudy安装配置

BOSS让我最快时间部署一套开源商场系统&#xff0c;今天就以crmeb为例。 快速部署在linux中我会首选docker&#xff0c;因为我要在windows中部署&#xff0c;本文就选用phpstudy集成环境做了。 什么是crmeb 我从官网摘点&#xff1a; CRMEB产品与服务 CRMEB通过将CRM&#x…...

【论文阅读笔记】Bigtable: A Distributed Storage System for Structured Data

文章目录 1 简介2 数据模型2.1 行2.2 列族2.3 时间戳 3 API4 基础构建4.1 GFS4.2 SSTable4.3 Chubby 5 实现5.1 Tablet 位置5.2 Tablet 分配5.3 为 tablet 提供服务5.4 压缩5.4.1 小压缩5.4.2 主压缩 6 优化6.1 局部性组6.2 压缩6.3 缓存6.4 布隆过滤器6.5 Commit日志实现6.6 T…...

linux从入门到精通-从基础学起,逐步提升,探索linux奥秘(十一)--rpm管理和计划任务

linux从入门到精通-从基础学起&#xff0c;逐步提升&#xff0c;探索linux奥秘&#xff08;十一&#xff09;–rpm管理和计划任务 一、rpm管理&#xff08;重点&#xff09; 1、rpm管理 作用&#xff1a; rpm的作用类似于windows上的电脑管家中“软件管理”、安全卫士里面“…...

【C++几种单例模式解读及实现方式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、单例是什么&#xff1f;二、解读1.懒汉式2.饿汉式3.static变量特性4.call_once特性 总结 前言 单例模式几乎是每种语言都不可少的一种设计模式&#xff0c…...

QT开发--串口通信

第十六章 串口通信 16.1 串口通信基础 串口通信主要通过DB9接口&#xff0c;适用于短距离&#xff08;<10米&#xff09;。关键参数包括&#xff1a; 波特率&#xff1a;每秒传输bit数&#xff0c;如9600。数据位&#xff1a;信息包中的有效数据位数。停止位&#xff1a;…...

数据库(至少还的再花两天 )

1 连接查询 左连接 右连接 2 聚合函数 SQL 统计求和 求最值 count sum avg max min 3 SQL关键字 limit 分页 group by 分组 distinct 去重 4 Select执行顺序 from where group by order by 5 数据库三范式 原子性 唯一性 直接性 6 存储引擎 MyISAM InnoDB 7 …...

网络安全公司及其主要产品介绍

以下是一些全球领先的网络安全公司及其主要产品介绍&#xff1a; 一、思科&#xff08;Cisco&#xff09; 思科是全球最大的网络设备供应商之一&#xff0c;其网络安全产品以企业级解决方案为主&#xff0c;覆盖多种安全需求。 Cisco ASA&#xff08;Adaptive Security Appli…...

orjson:高性能的Python JSON库

在Python中处理JSON数据是一项常见任务,标准库的json模块虽然功能齐全,但在性能方面还有提升空间。今天我要向大家介绍一个出色的第三方JSON库 - orjson。 orjson简介 orjson是一个快速、正确的Python JSON库。它具有以下主要特点: 性能卓越 - 在序列化和反序列化方面都比标准…...

常见几大排序算法

排序算法是计算机科学中的基本算法&#xff0c;它们将一个无序的数组或列表按特定顺序进行排列&#xff08;如升序或降序&#xff09;。常见的排序算法可以根据其时间复杂度、空间复杂度和适用场景分类。以下是几种常见的排序算法&#xff1a; 1. 冒泡排序&#xff08;Bubble …...

Linux下CMake入门

CMake的基础知识 什么是 CMake CMake 是一个跨平台的构建工具&#xff0c;主要用于管理构建过程。CMake 不直接构建项目&#xff0c;而是生成特定平台上的构建系统&#xff08;如 Unix 下的 Makefile&#xff0c;Windows 下的 Visual Studio 工程&#xff09;&#xff0c;然后…...

PowerPoint插件latex-ptt安装踩坑全记录:从‘无法下载’到‘点击报错’的保姆级排雷指南

LaTeX公式输入神器latex-ppt插件安装与排雷全攻略 在学术报告、技术分享或教学演示中&#xff0c;数学公式的呈现质量直接影响专业形象。虽然PowerPoint作为主流演示工具广受欢迎&#xff0c;但其原生公式编辑器功能有限&#xff0c;无法满足科研工作者对LaTeX公式排版的需求。…...

不只是安装:用MATLAB+RTL-SDR硬件支持包快速上手你的第一个无线信号接收项目

不只是安装&#xff1a;用MATLABRTL-SDR硬件支持包快速上手你的第一个无线信号接收项目 当你第一次将RTL-SDR设备插入电脑&#xff0c;安装完MATLAB硬件支持包后&#xff0c;那种既兴奋又迷茫的感觉可能还记忆犹新。硬件已经就绪&#xff0c;软件也已安装&#xff0c;但接下来该…...

STM32驱动MAX31855测温模块:从SPI时序到代码实现的保姆级避坑指南

STM32驱动MAX31855测温模块&#xff1a;从SPI时序到代码实现的保姆级避坑指南 在嵌入式开发领域&#xff0c;精确的温度测量往往是项目成败的关键。MAX31855作为一款集成冷端补偿的热电偶数字转换器&#xff0c;凭借其2℃的高精度和-200℃至700℃的宽测温范围&#xff0c;成为工…...

如何高效下载Steam创意工坊模组:WorkshopDL开源工具完整指南

如何高效下载Steam创意工坊模组&#xff1a;WorkshopDL开源工具完整指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Steam创意工坊模组下载而烦恼吗&#xff1f;无论…...

3个实用技巧:如何彻底解决C盘爆红难题,让你的Windows系统重获新生

3个实用技巧&#xff1a;如何彻底解决C盘爆红难题&#xff0c;让你的Windows系统重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经遇到过这样的…...

别再手动改路由了!用Ant Design Vue的Menu组件动态生成“顶一左多”级导航菜单

基于Ant Design Vue的声明式导航菜单架构设计 在复杂后台管理系统开发中&#xff0c;导航菜单的动态生成与权限控制一直是架构设计的难点。传统方案往往需要在多个组件中硬编码菜单结构&#xff0c;导致维护成本高、权限同步困难。本文将介绍如何利用Ant Design Vue的Menu组件与…...

掌握kotlin-android-template:Gradle Kotlin DSL配置终极指南

掌握kotlin-android-template&#xff1a;Gradle Kotlin DSL配置终极指南 【免费下载链接】kotlin-android-template Android Kotlin Github Actions ktlint Detekt Gradle Kotlin DSL buildSrc ❤️ 项目地址: https://gitcode.com/gh_mirrors/ko/kotlin-android-tem…...

React极简表单库veyra-forms:轻量级、类型安全的表单状态管理方案

1. 项目概述&#xff1a;一个被低估的轻量级表单解决方案在Web开发的世界里&#xff0c;表单处理是个既基础又麻烦的活儿。从简单的联系表单到复杂的多步骤数据收集&#xff0c;开发者们总是在寻找一个平衡点&#xff1a;既要功能强大、易于集成&#xff0c;又要足够轻量、不拖…...

AI智能体配置管理:从环境变量到结构化配置的工程实践

1. 项目概述&#xff1a;一个为AI智能体量身定制的配置管理中枢最近在折腾AI智能体&#xff08;Agent&#xff09;相关的项目&#xff0c;无论是基于LangChain、AutoGPT还是其他框架&#xff0c;一个绕不开的痛点就是配置管理。API密钥、模型参数、工具配置、环境变量……这些零…...

从计数器到计时器:使用Spectator构建可观测性系统的实践指南

1. 项目概述&#xff1a;从“观众”到“观察者”的视角转变在软件开发&#xff0c;尤其是后端服务开发中&#xff0c;我们常常需要一种机制来观察和度量系统的内部状态。这种观察不是简单的日志打印&#xff0c;而是系统化、结构化地收集运行时指标&#xff0c;比如接口的调用次…...