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

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

def 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_links


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 dataset



if __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 json

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

train_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 dataset

training_dataset = prepare_training_data(train_data)

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

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

相关文章

Tailwind css系列教程(二)

一、参考属性 https://tailwind.muzhifan.top/ 也可查找官方网站 以下为参考官网及网络上其他文章内容整理: 二、常用属性格式 1、颜色 color:颜色名称 shade:色度,取值范围为 100~900,不可对黑色或白色使用 文…

极化基变化后的散射矩阵

极化基只旋转一次 重点:发射和接收的电磁波可以理解为,在极化基上的坐标,或者就是琼斯矢量; 其中极化基坐标的理解方式在想发射的时候好理解,回波由于多了个共轭,就想其接收到的不是坐标,而是琼…

Power BI:链接数据库与动态数据展示案例

一、案例背景 在数据驱动的时代,如何高效、直观地展示和分析数据成为了企业决策和个人洞察的关键。Power BI作为一款强大的商业智能工具,凭借其强大的数据连接能力、丰富的可视化选项以及交互性和动态性,成为了众多企业和个人的首选。本文将…

unity学习笔记-Text mesh Pro

Text mesh Pro组件 组件使用的大致流程细节导入之后字体没有显示可能一 可能二 注意事项 好久没更了…最近在学习使用别人的框架进行开发,坑也不少,不过学习到了很多设计思维。 言归正传。忘了是什么是时候的版本开始,unity多了这个组件&…

nextjs项目中,使用postgres的完整案例

目的 通过此案例,可以简单快速的过一下数据库的操作,熟悉app-router这种模式下,client component和server component的两种组件中基本的接口使用。 技术栈 nextjs14.2.* app-routervercel/postgres0.10.*typescript5 重要事情说三遍1 ap…

解决visio2021与本地家庭和学生版office21不兼容问题

原因分析 office 分为 MSI(windows Installer)和C2R(即点即用版本) 两个版本。 下载对应版本 可以看这个B站哥哥的资源:https://www.bilibili.com/read/cv17513800/ ,选择标准离线版本安装

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是,它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如,一个微服务可以用Java编写,另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目,旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时,面具的眼睛会移动并播放声音,非常适合万圣节使用。 这个项目是一个很好的起点,特…

又一支付机构“经营异常”——易极付

近日,支付行业再次传出风波,重庆易极付科技有限公司(简称“易极付”)因“失联”问题被重庆两江新区市场监督管理局列入了经营异常名录。据天眼查平台显示,这一决定是基于“通过登记的住所或者经营场所无法联系”到该公…

【CSS in Depth 2 精译_050】7.3 CSS 响应式设计中的流式布局原则(Fluid layout)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第七章 响应式设计】(概述) 7.1 移动端优先设计原则(上篇) 7.1.1 创建移动端菜单(下篇)7.1.2 给视口添加 meta 标签&#xf…

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。 一、安装ImageMagick(如果尚未安装)&#xff1…

Python | Leetcode Python题解之第486题预测赢家

题目: 题解: class Solution:def PredictTheWinner(self, nums: List[int]) -> bool:length len(nums)dp [0] * lengthfor i, num in enumerate(nums):dp[i] numfor i in range(length - 2, -1, -1):for j in range(i 1, length):dp[j] max(num…

力扣21~30题

21题(简单): 分析: 按要求照做就好了,这种链表基本操作适合用c写,python用起来真的很奇怪 python代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

leetcode30:串联所有单词的字串

给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab","cd","ef"], 那么 "abcdef…

NetSarang Xshell v8.0060 Linux终端管理器个人免费版

NetSarang Xshell 官方个人完全免费中文版,Xshell特别版,Xshell 个人完全免费,Xshell 是一款最好用的Linux远程连接工具,免费SSH客户端、主机服务器远程管理客户端 。Xshell,轻松管理远程服务器,会话管理器…

《人工智能:CSDN 平台上的璀璨之星》

一、CSDN 上的 AI 热门话题 GPT-3 作为 CSDN 上的热门话题,其应用极为广泛。GPT-3 是 OpenAI 开发的一种基于 Transformer 架构的大规模预训练语言模型,拥有惊人的 1750 亿个参数。它具有多任务处理能力,能够执行多种自然语言处理任务&#x…

基于KNN算法的指纹定位系统(MATLAB,平面,四个锚点)

文章目录 指纹定位指纹定位技术简介基本原理位置估算公式1. 最近邻居算法(KNN)2. 加权最近邻居算法(W-KNN)3. 最小二乘法(LS) 最终位置 P P P通过求解下面的方程获得:应用场景优缺点优点缺点 总…

Python 工具库每日推荐 【pyspider 】

文章目录 引言网络爬虫的重要性今日推荐:pyspider 网络爬虫框架主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:爬取新闻网站的文章案例分析高级特性使用代理处理 JavaScript 渲染的页面扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Type…

《深度学习》OpenCV 风格迁移、DNN模块 案例解析及实现

目录 一、风格迁移 1、什么是风格迁移 2、步骤 1)训练 2)迁移 二、DNN模块 1、什么是DNN模块 2、DNN模块特点 1)轻量 2)外部依赖性低 3)方便 4)集成 5)通用性 3、流程图 4、图像…

玛泽的故事中英文Big Muzzy台词本电子版PDF

《Big Muzzy》玛泽的故事,中英文都有,是BBC制作的,专为英语初学者设计的外语课程。它是教学动画里最有趣的一部!风靡全球,上百个国家引进,深受小朋友的喜爱。《Big Muzzy》用动画的形式,讲述了M…