科大讯飞2020完整事件抽取系统(bert+数据集)


向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

事件抽取将非结构化文本中的事件信息展现为结构化形式,在舆情监测、文本摘要、自 动问答、事理图谱自动构建等领域有着重要应用。在真实新闻中,由于文本中可能存在句式 复杂,主被动转换,多事件主客体共享等难点,因此“事件抽取”是一项极具挑战的抽取任 务。

本事任务旨在从通用新闻文本中抽取事件触发词、事件论元以及事件属性。在传统的事件定义中,事件由事件触发词( Trigger) 和描述事件结构的元素 (Argument)构成。事件触发词标识着事件的发生。事件论元为事件主体(Subject)、客体(Object)、时间(Time)、地点(Location)等,是表达事件重要信息的载体。

事件属性包括事件极性(Polarity)、时态(Tense),是衡量事件是否真实发生的重要依据。通过极性,事件分为肯定、否定、可能事件。通过时态,事件分为过去发生的事件、现在正 在发生的事件、将要发生的事件以及其他无法确定时态的事件。

本赛事任务一为初赛任务,任务二为复赛任务,在任务一的基础上增加了事件属性识别。为 了模拟真实场景,数据中包含了非实际发生的事件。

任务一:事件触发词及论元抽取

该任务旨在从文本中抽取标识事件发生的触发词和论元,触发词往往为动词和名词。触发词 对应的事件论元,主要为主体、客体、时间、地点,其中主体为必备论元。

示例 1:

文本:北京时间 3 月 27 日晚上 7 点 15 分,英国首相鲍里斯约翰逊确诊感染了新冠肺炎。

任务二:事件属性抽取

该任务旨在从文本中抽取表达事件发生状态的属性,包括极性、时态。极性分为:肯定、否

定、可能;时态分为:过去、现在、将来、其他。

示例 1:

文本:中国驻俄罗斯大使张汉晖 4 月 7 日向媒体回应称,经向俄有关强力部门了解,目前

在俄没有一起中国公民遭到拘留或受到俄强力部门限制的案例。

抽取结果:

示例 4:

文本:看守政府总理迈赫迪打算驱逐约 5300 名美国士兵。

抽取结果:

事件抽取系统,包含触发词(trigger),事件论元(role),事件属性(attribution)的抽取。基于 pytorch 的 pipeline 解决方案。

主要思路

将任务分割为触发词抽取,论元抽取,属性抽取。具体而言是论元和属性的抽取结果依赖于触发词,因此只有一步误差传播。因 time loc 并非每个句子中都存在,并且分布较为稀疏,因此将 time & loc 与 sub & obj 的抽取分开(role1 提取 sub & obj;role2 提取 time & loc)

模型先进行触发词提取,由于复赛数据集的特殊性,模型限制抽取的事件仅有一个,如果抽取出多个触发词,选择 logits 最大的 trigger 作为该句子的触发词,如果没有抽取触发词,筛选整个句子的 logits,取 argmax 来获取触发词;

然后根据触发词抽取模型抽取的触发词,分别输入到 role1 & role2 & attribution 模型中,进行后序的论元提取和属性分类;四种模型都是基于 Roberta-wwm 进行实验,加入了不同的特征。

最后将识别的结果进行整合,得到提交文件。

代码运行教程  获取:

关注微信公众号 datayx  然后回复  事件抽取  即可获取。

AI项目体验地址 https://loveai.tech


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

  • 8
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于深度学习的文本分类系统常用的包括BERT、RNN、TextCNN、FastCNN等模型。下面将为您提供完整代码和数据。 首先,我们需要导入相关的库:tensorflow、keras、numpy等。 ```python import tensorflow as tf from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.layers import Dense, Embedding, LSTM, Conv1D, GlobalMaxPooling1D, Concatenate from tensorflow.keras.models import Sequential import numpy as np ``` 接下来,我们准备训练数据和测试数据。假设已经准备好了train_texts和train_labels作为训练集的文本和标签,test_texts和test_labels作为测试集的文本和标签。 ```python train_texts = [...] # 训练集文本 train_labels = [...] # 训练集标签 test_texts = [...] # 测试集文本 test_labels = [...] # 测试集标签 ``` 然后,我们需要对文本进行预处理,将其转换为数值表示。这里我们使用Tokenizer将文本转换为单词索引序列。 ```python tokenizer = Tokenizer() tokenizer.fit_on_texts(train_texts) train_sequences = tokenizer.texts_to_sequences(train_texts) test_sequences = tokenizer.texts_to_sequences(test_texts) vocab_size = len(tokenizer.word_index) + 1 # 词汇表大小 ``` 接着,我们需要将序列填充为相同的长度,这里我们采用max_len作为填充长度。 ```python max_len = 100 # 填充长度 train_data = pad_sequences(train_sequences, maxlen=max_len) test_data = pad_sequences(test_sequences, maxlen=max_len) ``` 现在,我们可以构建基于RNN的文本分类模型了。 ```python model = Sequential() model.add(Embedding(vocab_size, 100, input_length=max_len)) model.add(LSTM(128)) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(train_data, train_labels, validation_data=(test_data, test_labels), epochs=10, batch_size=64) ``` 如果您想使用TextCNN或FastCNN模型进行文本分类,可以参考以下代码: ```python filters = 100 kernel_size = 3 model = Sequential() model.add(Embedding(vocab_size, 100, input_length=max_len)) model.add(Conv1D(filters, kernel_size, activation='relu', padding='valid')) model.add(GlobalMaxPooling1D()) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(train_data, train_labels, validation_data=(test_data, test_labels), epochs=10, batch_size=64) ``` 最后,对于BERT模型,您可以使用Hugging Face提供的transformers库。您可以根据自己的需求选择相应的BERT模型,例如bert-base-uncased、bert-large-uncased等。 ```python from transformers import BertTokenizer, TFBertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') train_encodings = tokenizer(train_texts, truncation=True, padding=True) test_encodings = tokenizer(test_texts, truncation=True, padding=True) train_dataset = tf.data.Dataset.from_tensor_slices(( dict(train_encodings), train_labels )) test_dataset = tf.data.Dataset.from_tensor_slices(( dict(test_encodings), test_labels )) model = TFBertModel.from_pretrained('bert-base-uncased') input_ids = tf.keras.layers.Input(shape=(None,), dtype=tf.int32) attention_mask = tf.keras.layers.Input(shape=(None,), dtype=tf.int32) outputs = model(input_ids, attention_mask=attention_mask) output = outputs[0][:, 0, :] output = Dense(1, activation='sigmoid')(output) model = tf.keras.models.Model(inputs=[input_ids, attention_mask], outputs=output) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit(train_dataset.shuffle(1000).batch(16), epochs=10, batch_size=16) ``` 以上是基于深度学习的文本分类系统完整代码和数据示例,您可以根据需要进行修改和调整。注意,BERT模型的训练可能需要较长的时间和更大的计算资源。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值