信息抽取数据集处理——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)

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

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

相关文章

服务端技术架构演进之路

服务端技术架构演进之路 目录 服务端技术架构演进之路 0.架构中常见概念及理解 1.单机架构 2.应用数据分离架构 3.应用服务器集群架构 4.读写分离/主从分离架构 5.冷热分离架构 6.垂直分库架构 7.微服务架构 8.容器编排架构 本文以一个 " 电子商务 " 应…

Android 未来可能支持 Linux 应用,Linux 终端可能登陆 Android 平台

近日,根据 android authority 的消息,Google 正在开发适用于 Android 的 Linux 终端应用,而终端应用可以通过开发人员选项启用,并将 Debian 安装在虚拟机中。 在几周前,Google 的工程师开始为 Android 开发新的 Termi…

R语言绘图——文本注释

在R语言中,文本注释通常用于向图形中添加注释或说明,可以通过一些函数在图形上添加文字、标签等。以下是R中处理文本注释的常见函数和方法。 0x01 text()函数 一、常见语法 text() 函数允许你在绘图的指定位置上添加文字注释。其常用语法如下&#xf…

应急实战(10):Linux后门帐号

目录 1. Prepare 1.1 部署安全设备 2. Detect 2.1 设备产生告警 3. Contain 4. Eradicate 4.1 删除后门帐号 4.2 加固弱口令帐号 5. Recover 5.1 恢复帐号登录 6. Follow-Up 6.1 修改登录端口 6.2 开启命令记录 1. Prepare 1.1 部署安全设备 部署主机安全产品:牧云H…

自定义多级联动选择器指南(uni-app)

多端支持:可以运行在H5、APP、微信小程序还是支付宝小程序,都可以轻松使用改组件。自定义配置:您可以根据需要配置选择器的级数,使其适应不同的数据结构和用例。无限级联:此组件支持无限级联选择,使您能够创…

类和对象(完结)

文章目录 一对构造函数的补充1初始化链表2必须在初始化链表定义的情况3对于在类中成员变量初始化的总结4总结二类型转换1格式2规则三static成员1规则四友元1定义2 两种例子五匿名对象1格式2特殊情况 一对构造函数的补充 1初始化链表 结构:类名(参数&…

网络服务--例行工作

1、单一例行工作--at 1.1、at命令工作过程 /etc/at.allow,写可以使用at的名单--白名单 /etc/at.deny,黑名单 如果两个文件都不存在,只有root有权限使用 #at工作调度对应的系统服务 [rootlocalhost ~]# ps -ef | grep at [rootlocalhost ~]# systemctl status a…

数字化转型:解决项目管理困境的新路径

在当今这个飞速发展的数字化时代,企业如同在汹涌波涛中航行的船只,承受着前所未有的变革压力。而作为企业运作核心环节之一的项目管理,同样面临着巨大的挑战。 传统项目管理模式中的种种问题,犹如顽固的礁石,阻碍着项目…

Shiro认证 -- (Authentication)

Apache Shiro是一个功能强大的Java安全框架,提供了身份验证(Authentication)、授权(Authorization)、加密(Cryptography)、会话管理(Session Management)、与Web集成、缓…

JavaScript 第16章:错误处理与调试

在软件开发中,错误处理与调试是非常重要的环节,它能够帮助开发者及时发现并修复代码中的问题,确保程序的稳定运行。下面我们将探讨JavaScript中的错误处理机制,以及如何使用现代浏览器提供的调试工具来进行调试。 1. 错误对象&am…

Linux执行source /etc/profile命令报错:权限不够问(已解决)

1.问题 明明以root账号登录Linux系统,在终端执行命令source /etc/profile时 显示权限不够 如下图: 2.问题原因 可能在编辑 /etc/profile 这个文件时不小心把开头的 井号 ‘#’ 给删除了 如图: 这里一定要有# 3.解决办法 进入/etc/pro…

扫雷(C 语言)

目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘,然后输入坐标进行判断,若是雷,则游戏结束,否则…

字节内部整理的软件测试面试题(含文档)

常见的面试题汇总 1、你做了几年的测试、自动化测试,说一下 selenium 的原理是什么? 我做了五年的测试,1年的自动化测试; selenium 它是用 http 协议来连接 webdriver ,客户端可以使用 Java 或者 Python 各种编程语言…

搜维尔科技:力反馈五指灵巧手数据手套解决方案

力反馈五指灵巧手数据手套解决方案 搜维尔科技:力反馈五指灵巧手数据手套解决方案

【网络安全】未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用

文章目录 未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用F5 会话 Cookie推荐阅读 未加密的F5 BIG-IP Cookie存在严重漏洞将被攻击者利用 网络安全和基础设施安全局发布最新警告称,已观察到威胁行为者滥用未加密的持久性F5 BIG-IP Cookie来识别并针对目标网络…

Mybatis核心配置文件的详解

MyBatis 中的 environments&#xff1a; <environments default"mybatisDB">environments 标签&#xff1a;这个标签用于定义多个数据库环境&#xff0c;通常用于在不同环境&#xff08;如开发、测试、生产等&#xff09;下切换数据库连接。default 属性&…

电能质量的危害主要是哪些?我们该如何应对电能质量故障所带来的损失?

电能质量治理在现代配电系统中的必要性日益凸显。随着可再生能源和智能电网技术的广泛应用&#xff0c;电力系统面临着频率波动、谐波污染和电压不稳定等问题。这些问题不仅影响了电力的可靠性和安全性&#xff0c;还可能导致设备损坏和能效降低。因此&#xff0c;实施电能质量…

算法训练(leetcode)二刷第一天 | 704. 二分查找、27. 移除元素、977. 有序数组的平方

刷题记录 704. 二分查找27. 移除元素977. 有序数组的平方思路1思路二 704. 二分查找 leetcode题目地址 经典二分查找思路&#xff0c;有序列表左右边界向中间夹逼。 时间复杂度&#xff1a; O ( l o g n ) O(logn) O(logn) 空间复杂度&#xff1a; O ( 1 ) O(1) O(1) // …

Pagehelper获取total错误

前言 在使用若依框架的pagehelper时&#xff0c;给分页表设置数据的时候前端只收到了分页的那一页的数据&#xff0c;总记录数不符合要求 我想要的效果如下&#xff0c;可以实现分页&#xff0c;和显示总记录数 但是实际情况为 但是我的数据库有11条记录&#xff0c;他这里明…

QCY开放式耳机值得买吗?南卡、QCY、韶音开放式耳机最全测评!

​开放式耳机最近还挺火的&#xff0c;因为相对于传统的入耳式耳机来说&#xff0c;它佩戴起来更舒适&#xff0c;也更卫生&#xff0c;更加适配运动场景&#xff0c;现在不少的健身或者运动博主都选择了开放式耳机&#xff0c;那么作为一个同样喜欢跑步的数码博主&#xff0c;…