【数据分析】用Python做事件抽取任务-快速上手方案

目录

  • 方法一:使用OmniEvent库
    • 安装OmniEvent
    • 使用OmniEvent进行事件抽取
    • OmniEvent优点
    • 缺点
  • 方法二:使用大模型
    • 使用GPT网页版进行事件抽取
      • 事件类型列表
    • 大模型优点
    • 缺点
  • 总结

在自然语言处理(NLP)领域,事件抽取是一项关键任务,它涉及从文本中识别和提取事件及其相关信息。

本文作者将介绍两种常见的事件抽取方法:使用清华大学开源的OmniEvent工具包ChatGPT大模型方法。

我们将分析这两种方法的优缺点,并提供一些代码示例来展示其实际应用。

方法一:使用OmniEvent库

OmniEvent是清华大学开源的一款用于事件抽取的库,支持多种事件抽取任务,包括触发词检测、事件论元抽取等。该库提供了预训练模型和易于使用的接口,极大简化了事件抽取的实现。

全面涵盖各种范式,并对广泛使用的英文和中文数据集提供公平、统一的评估。模块化实现使 OmniEvent 具有高度可扩展性。

安装OmniEvent

首先,我们需要安装OmniEvent库。可以使用以下命令进行安装:

pip install omnievent

使用OmniEvent进行事件抽取

以下是一个使用OmniEvent进行事件抽取的示例代码:


from OmniEvent import infer
device='cpu'


# 初始化OmniEvent模型
def init_models(device='cpu'):
    ed_model, ed_tokenizer = infer.get_pretrained("s2s-mt5-ed",device=device)
    eae_model, eae_tokenizer = infer.get_pretrained("s2s-mt5-eae",device=device)
    return (ed_model, ed_tokenizer,eae_model,eae_tokenizer)

# 进行事件抽取
def run_ee(models,news_text_list,device='cpu'):
    schemas = ["<ace>"]*len(news_text_list)
    
    ed_model, ed_tokenizer,eae_model,eae_tokenizer=models
    events = infer.do_event_detection(ed_model, ed_tokenizer, news_text_list, schemas, device)
    instances = infer.prepare_for_eae_from_pred(news_text_list, events, schemas)
    

    if len(instances[0]["triggers"]) == 0:
        results = [{
            "text": instances[0]["text"],
            "events": []
        }]
        return results
    arguments = infer.do_event_argument_extraction(eae_model, eae_tokenizer, instances, device)
    results = infer.get_eae_result(instances, arguments)
    return results


text = "“中比动漫文化周”12日在布鲁塞尔中国文化中心开幕,旨在通过动漫这一独特的艺术形式,促进两国文化的交流与理解。"
models=init_models(device)
ee=run_ee(models,[text])
# 输出结果

for events in ee:
    print("文本:", events['text'])
    for event in events['events']:
        print(f"事件类型: {event['type']}")
        print(f"触发词: {event['trigger']}")
        print(f"论元: {event['arguments']}")

Output:

文本: “中比动漫文化周”12日在布鲁塞尔中国文化中心开幕,旨在通过动漫这一独特的艺术形式,促进两国文化的交流与理解。
事件类型: 组织行为开幕
触发词: 开幕
论元: [{'mention': '12日', 'offset': [9, 12], 'role': '时间'}, {'mention': '布鲁塞尔中国文化中心', 'offset': [13, 23], 'role': '地点'}, {'mention': '“中比动漫文化周”', 'offset': [0, 9], 'role': '活动名称'}]
CPU times: user 21.2 s, sys: 78.3 ms, total: 21.3 s
Wall time: 5.53 s

OmniEvent优点

  1. 易用性高:OmniEvent提供了简单易用的API,用户可以快速上手。
  2. 预训练模型:库中包含多种预训练模型,可直接用于实际任务,减少训练成本。
  3. 多任务支持:支持多种事件抽取任务,包括触发词检测和事件论元抽取。

缺点

  1. 依赖数据集:虽然预训练模型能应对大部分任务,但特定领域的事件抽取可能需要额外的训练数据。
  2. 运行效率低: 模型是直接将ED任务和EAE任务合并为EE任务,因此耗时较长。(可将其分开,再得到ED任务结果后,选择满足条件的数据进行下一步EAE任务的测试)

方法二:使用大模型

大模型(如GPT-4、BERT等)在各种NLP任务中表现优异,也可用于事件抽取。大模型的优势在于其强大的语言理解能力和泛化能力。

由于经费有限,本文只能用网页版用来演示效果。项目中实际开发可以使用Pythonlangchain工具包调用大模型api接口达到此效果。

使用GPT网页版进行事件抽取

input prompt:

给定的句子为:"“中比动漫文化周”12日在布鲁塞尔中国文化中心开幕,旨在通过动漫这一独特的艺术形式,促进两国文化的交流与理解。"

给定事件类型列表:['灾害/意外-坠机', '司法行为-举报', '财经/交易-涨价', '组织关系-解雇', '组织关系-停职', '财经/交易-加息', '交往-探班', '人生-怀孕', '组织关系-辞/离职', '组织关系-裁员', '灾害/意外-车祸', '人生-离婚', '司法行为-起诉', '竞赛行为-禁赛', '人生-婚礼', '财经/交易-涨停', '财经/交易-上市', '组织关系-解散', '财经/交易-跌停', '财经/交易-降价', '组织行为-罢工', '司法行为-开庭', '竞赛行为-退役', '人生-求婚', '人生-庆生', '交往-会见', '竞赛行为-退赛', '交往-道歉', '司法行为-入狱', '组织关系-加盟', '人生-分手', '灾害/意外-袭击', '灾害/意外-坍/垮塌', '组织关系-解约', '产品行为-下架', '灾害/意外-起火', '灾害/意外-爆炸', '产品行为-上映', '人生-订婚', '组织关系-退出', '交往-点赞', '产品行为-发布', '人生-结婚', '组织行为-闭幕', '人生-死亡', '竞赛行为-夺冠', '人生-失联', '财经/交易-出售/收购', '竞赛行为-晋级', '竞赛行为-胜负', '财经/交易-降息', '组织行为-开幕', '司法行为-拘捕', '交往-感谢', '司法行为-约谈', '灾害/意外-地震', '人生-产子/女', '财经/交易-融资', '司法行为-罚款', '人生-出轨', '灾害/意外-洪灾', '组织行为-游行', '司法行为-立案', '产品行为-获奖', '产品行为-召回']

在这个句子中,可能包含了哪些事件类型?
请给出事件类型列表中的事件类型。
如果不存在则回答:无
按照元组形式回复,如 (事件类型1, 事件类型2, ……)

output:
在这里插入图片描述
Input prompt:

事件类型"组织行为-开幕"对应的论元角色列表为:['时间', '地点', '活动名称']。
在给定的句子中,根据论元角色提取出事件论元。
如果论元角色没有相应的论元内容,则论元内容回答:无
按照表格形式回复,表格有两列且表头为(论元角色,论元内容):

Output:
在这里插入图片描述

事件类型列表

{
	'灾害/意外-坠机': ['时间', '地点', '死亡人数', '受伤人数'],
	'司法行为-举报': ['时间', '举报发起方', '举报对象'],
	'财经/交易-涨价': ['时间', '涨价幅度', '涨价物', '涨价方'],
	'组织关系-解雇': ['时间', '解雇方', '被解雇人员'],
	'组织关系-停职': ['时间', '所属组织', '停职人员'],
	'财经/交易-加息': ['时间', '加息幅度', '加息机构'],
	'交往-探班': ['时间', '探班主体', '探班对象'],
	'人生-怀孕': ['时间', '怀孕者'],
	'组织关系-辞/离职': ['时间', '离职者', '原所属组织'],
	'组织关系-裁员': ['时间', '裁员方', '裁员人数'],
	'灾害/意外-车祸': ['时间', '地点', '死亡人数', '受伤人数'],
	'人生-离婚': ['时间', '离婚双方'],
	'司法行为-起诉': ['时间', '被告', '原告'],
	'竞赛行为-禁赛': ['时间', '禁赛时长', '被禁赛人员', '禁赛机构'],
	'人生-婚礼': ['时间', '地点', '参礼人员', '结婚双方'],
	'财经/交易-涨停': ['时间', '涨停股票'],
	'财经/交易-上市': ['时间', '地点', '上市企业', '融资金额'],
	'组织关系-解散': ['时间', '解散方'],
	'财经/交易-跌停': ['时间', '跌停股票'],
	'财经/交易-降价': ['时间', '降价方', '降价物', '降价幅度'],
	'组织行为-罢工': ['时间', '所属组织', '罢工人数', '罢工人员'],
	'司法行为-开庭': ['时间', '开庭法院', '开庭案件'],
	'竞赛行为-退役': ['时间', '退役者'],
	'人生-求婚': ['时间', '求婚者', '求婚对象'],
	'人生-庆生': ['时间', '生日方', '生日方年龄', '庆祝方'],
	'交往-会见': ['时间', '地点', '会见主体', '会见对象'],
	'竞赛行为-退赛': ['时间', '退赛赛事', '退赛方'],
	'交往-道歉': ['时间', '道歉对象', '道歉者'],
	'司法行为-入狱': ['时间', '入狱者', '刑期'],
	'组织关系-加盟': ['时间', '加盟者', '所加盟组织'],
	'人生-分手': ['时间', '分手双方'],
	'灾害/意外-袭击': ['时间', '地点', '袭击对象', '死亡人数', '袭击者', '受伤人数'],
	'灾害/意外-坍/垮塌': ['时间', '坍塌主体', '死亡人数', '受伤人数'],
	'组织关系-解约': ['时间', '被解约方', '解约方'],
	'产品行为-下架': ['时间', '下架产品', '被下架方', '下架方'],
	'灾害/意外-起火': ['时间', '地点', '死亡人数', '受伤人数'],
	'灾害/意外-爆炸': ['时间', '地点', '死亡人数', '受伤人数'],
	'产品行为-上映': ['时间', '上映方', '上映影视'],
	'人生-订婚': ['时间', '订婚主体'],
	'组织关系-退出': ['时间', '退出方', '原所属组织'],
	'交往-点赞': ['时间', '点赞方', '点赞对象'],
	'产品行为-发布': ['时间', '发布产品', '发布方'],
	'人生-结婚': ['时间', '结婚双方'],
	'组织行为-闭幕': ['时间', '地点', '活动名称'],
	'人生-死亡': ['时间', '地点', '死者年龄', '死者'],
	'竞赛行为-夺冠': ['时间', '冠军', '夺冠赛事'],
	'人生-失联': ['时间', '地点', '失联者'],
	'财经/交易-出售/收购': ['时间', '出售方', '交易物', '出售价格', '收购方'],
	'竞赛行为-晋级': ['时间', '晋级方', '晋级赛事'],
	'竞赛行为-胜负': ['时间', '败者', '胜者', '赛事名称'],
	'财经/交易-降息': ['时间', '降息幅度', '降息机构'],
	'组织行为-开幕': ['时间', '地点', '活动名称'],
	'司法行为-拘捕': ['时间', '拘捕者', '被拘捕者'],
	'交往-感谢': ['时间', '致谢人', '被感谢人'],
	'司法行为-约谈': ['时间', '约谈对象', '约谈发起方'],
	'灾害/意外-地震': ['时间', '死亡人数', '震级', '震源深度', '震中', '受伤人数'],
	'人生-产子/女': ['时间', '产子者', '出生者'],
	'财经/交易-融资': ['时间', '跟投方', '领投方', '融资轮次', '融资金额', '融资方'],
	'司法行为-罚款': ['时间', '罚款对象', '执法机构', '罚款金额'],
	'人生-出轨': ['时间', '出轨方', '出轨对象'],
	'灾害/意外-洪灾': ['时间', '地点', '死亡人数', '受伤人数'],
	'组织行为-游行': ['时间', '地点', '游行组织', '游行人数'],
	'司法行为-立案': ['时间', '立案机构', '立案对象'],
	'产品行为-获奖': ['时间', '获奖人', '奖项', '颁奖机构'],
	'产品行为-召回': ['时间', '召回内容', '召回方']
}

大模型优点

  1. 强大的语言理解能力:大模型具有强大的语言理解和推理能力,能够应对复杂的事件抽取任务。
  2. 适应性强:无需针对特定任务进行大量调整,能较好地泛化到不同领域的任务。
  3. 持续更新:大模型通常由大型公司维护,更新频率高,性能不断提升。

缺点

  1. 成本高:调用大模型通常需要付费,成本较高。
  2. 响应时间:由于模型复杂度高,推理时间较长,可能影响实时性要求高的应用。
  3. 依赖网络:需要稳定的网络连接来访问模型服务。

总结

OmniEvent库和大模型各有优缺点,适用于不同的应用场景。如果您需要快速实现事件抽取并且对特定领域有较高的定制化需求,OmniEvent是一个不错的选择。如果您追求高精度和强泛化能力,并且预算充足,可以考虑使用大模型。

无论选择哪种方法,都需要根据具体需求和资源情况进行权衡。希望本文能为您的事件抽取任务提供一些有价值的参考。

大数据分析为运营和各行业带来了前所未有的机会,使企业能够更敏锐地洞察市场、优化运营,并更有效地应对竞争和变革。在信息时代,充分利用大数据分析,将成为企业取得竞争优势的不可忽视的关键要素。

本人数据分析领域的从业者,拥有专业背景和能力,可以为您的数据采集、挖掘和分析需求提供支持。期待着能够与您共同探索更多有意义的数据洞见,为您的项目和业务提供数据分析方面的帮助。

创作不易,如果你觉得有帮助,请点个赞支持一下。你的鼓励是我创作的最大动力,期待未来能为大家带来更多有趣的分析文章。感谢大家的阅读和支持!

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

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

相关文章

迅狐短视频商城系统:打造直播带货、社区种草和商品分销一站式解决方案

迅狐短视频商城系统作为一体化电商解决方案&#xff0c;致力于为用户提供全方位、便捷的购物体验。从直播带货到社区种草、再到商品分销&#xff0c;系统提供了全面的功能模块&#xff0c;满足用户多元化的需求。 一、直播带货功能模块 迅狐短视频商城系统的直播带货功能模块&…

SAMBA(简单混合状态空间模型用于高效的无限上下文语言建模)及其对长文本模型的改进

论文地址&#xff1a; https://arxiv.org/pdf/2406.07522 SAMBA&#xff08;Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling&#xff09;是一种新型的基于Transformer的语言模型&#xff0c;旨在解决传统大语言模型在处理长文本时遇到的…

【初阶数据结构】二叉树(附题)

目录 1.树概念及结构 1.1树的概念 1.2 树的相关概念&#xff08;树结构的相关概念命名参考自然树和人的血缘关系&#xff09; 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff0c;初次之外网盘中使用到&#xff09; 2.二叉树概念及结构 …

关于OS中逻辑地址与物理地址转换

首先将逻辑地址134D从十六进制转为2进制 0001 0011 0100 1101 1&#xff09;1K的时候对应2的10次方 页面大小占10位 从后往前数 0001 00 || 11 0100 1101 前面的转为十进制为4 对应页号4内容1A转为2进制01 1010将这个替换原来的前六位数字 即0110 1011 0100 1101 再转换为…

『互联网三驾马车』

某天开会的时候&#xff0c;老板问了大家一个问题&#xff0c;对目前各个角色分工合作有哪些不满意的地方。有人回答到&#xff0c;能不能别让产品同学每次都在假期前几天发布需求&#xff0c;让开发同学周末或者假期加班搞需求&#xff0c;然后在还在假期看着产品同学到处去玩…

【React 】折叠面板,点击展开时再请求数据

需求背景&#xff1a;使用折叠面板的形式展示数据&#xff0c;面板内部数据需要在打开时请求接口获取。 遇到问题&#xff1a;最开始使用Antd 的折叠面板组件&#xff0c;它对于数据直接渲染是没问题的&#xff0c;但是不好满足打开面板时再动态加载数据的需求&#xff0c;于是…

Linux机器通过Docker-Compose安装Jenkins发送Allure报告

目录 一、安装Docker 二、安装Docker Compose 三、准备测试用例 四、配置docker-compose.yml 五、启动Jenkins 六、配置Jenkins和Allure插件 七、创建含pytest的Jenkins任务 八、项目结果通知 1.通过企业微信通知 2.通过邮件通知 九、配置域名DNS解析 最近小编接到一…

MyBatis 源码分析--SqlSessionFactory

前言&#xff1a; 前文我们简单的回顾了 MyBatis 的基本概念&#xff0c;有聊到核心组件&#xff0c;工作流程等&#xff0c;本篇我们开始深入剖析 MyBatis 的核心源码&#xff0c;欢迎大家持续关注。 Mybatis 知识传送门 初识 MyBatis 【MyBatis 核心概念】 MyBatis 源码解…

深度学习500问——Chapter12:网络搭建及训练(3)

文章目录 12.3.5 Caffe有哪些接口 12.4 网络搭建有什么原则 12.4.1 新手原则 12.4.2 深度优先原则 12.4.3 卷积核size一般为奇数 12.4.4 卷积核不是越大越好 12.5 有哪些经典的网络模型值得我们去学习的 12.6 网络训练有哪些技巧 12.6.1 合适的数据集 12.6.2 合适的预…

【数据库】数据库脚本编写规范(Word原件)

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目的 2 SQL书写规范 3 SQL编写原则 软件全套资料获取进主页或者本文末个人名片直接获取。

[图解]企业应用架构模式2024新译本讲解15-行数据入口

1 00:00:01,060 --> 00:00:02,770 数据算完了 2 00:00:03,070 --> 00:00:07,720 接下来就是我们这一节的主要内容了 3 00:00:08,500 --> 00:00:13,630 应用服务调用第三方的&#xff0c;Email 4 00:00:13,640 --> 00:00:18,280 包括集成应用的接口来发Email 5 …

Springboot获取resources中的文件

1.Springboot以文件的形式获取resources中的文件 import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import org.springframework.util.ResourceUtils; import j…

【Linux】进程信号2——阻塞信号,捕捉信号

1.阻塞信号 1.1. 信号其他相关常见概念 在开始内容之前&#xff0c;先介绍一些信号的专业名词&#xff1a; 实际执行信号的处理动作称为信号递达&#xff08;Delivery&#xff09;信号从产生到递达之间的状态&#xff0c;称为信号未决&#xff08;Pending&#xff09;&#…

Swift Combine — zip和combineLatest的理解与使用

Publisher 上还有一些其他的操作&#xff0c;比如 zip 和 combineLatest&#xff0c;能让我们在时序上对控制多个 Publisher 的结果进行类似 and 和 or 的合并&#xff0c;它们在构建复杂 Publisher 逻辑时也十分有用。 zip Publisher 中的 zip 和 Sequence 的 zip 相类似&am…

【备考指南】CDA Level Ⅰ 最全备考攻略

很多考生朋友在报名前后&#xff0c;一直不知道需要怎么备考&#xff0c;这里给大家盘点一下最全的备考攻略&#xff0c;希望对你有用&#xff1a; 1、需要准备好之后再报名吗&#xff1f; 不需要&#xff0c;CDA认证考试是报名后自行预约考试的&#xff0c;您可以先报名同时…

qml:一个基础的界面设计

文章目录 文章说明效果图重要代码说明组件矩形卡片窗口最大化后组件全部居中菜单栏Repeater实现重复8行图片加载直接加载图片文本转图片FluentUI中可供选择的图标 文章说明 qt6.5.3 qml写的一个界面配置设计软件&#xff0c;目前不含任何c代码&#xff0c;纯qml。windoms风格的…

WebStorm 配置 PlantUML

1. 安装 PlantUML 插件 在 WebStorm 插件市场搜索 PlantUML Integration 并安装&#xff0c;重启 WebStorm 使插件生效。 2. 安装 Graphviz PlantUML 需要 Graphviz 来生成图形。使用 Homebrew 安装 Graphviz&#xff1a; 打开终端&#xff08;Terminal&#xff09;。确保你…

mac 常用工具命令集合

Iterm2 Command T&#xff1a;新建标签 Command W&#xff1a;关闭当前标签 Command ← →&#xff1a;在标签之间切换 Control U&#xff1a;清除当前行 Control A&#xff1a;跳转到行首 Control E&#xff1a;跳转到行尾 Command F&#xff1a;查找 Command …

数据结构5---矩阵和广义表

一、矩阵的压缩存储 特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。 稀疏矩阵:矩阵中有很多零元素。压缩存储的基本思想是: (1)为多个值相同的元素只分配一个存储空间; (2)对零元素不分配存储空间。 1、特殊矩阵的压缩存储 &#xff08;1&#xff09;对称矩…

云渲染可以渲染SketchUp吗?

最近有很多人在问&#xff0c;云渲染可以渲染sketchup吗&#xff1f;答案是可以的&#xff0c;不过只有两三家支持&#xff0c;大部分云渲染是还是不支持的&#xff0c;今天就给大家介绍国内最新支持sketchup渲染的云渲染——炫云云渲染的使用方法。 炫云云渲染目前支持sketchu…