案例精析—2021语言与智能技术竞赛:多形态信息抽取任务

本文主要是介绍案例精析—2021语言与智能技术竞赛:多形态信息抽取任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结

  • 文章来源:CSDN_LawsonAbs
  • LawsonAbs的认知与思考,望各位读者审慎阅读。
  • 本文可以看做是2021语言与智能技术竞赛:多形态信息抽取任务比赛过程的一个记录。

1 百度Baseline

百度baseline是使用paddle 写的,主要的思想是一个多层的指针网络。

1.1 关于 predicate2id.json 文件

这里针对 predicate = 配音这个就生成了如下两个 predicate 值:
配音_inwork配音_@value。 因为这是一个复杂的结构体,而不能简单的抽取配音就可以了。
在这里插入图片描述

1.2 在运行 run_duie.py 脚本时,出现如下的界面?是什么问题?

在这里插入图片描述

没找到是什么原因。惨!

2. 2020年的冠军解决方案

采用创新技术方案,把实体抽取任务分为主语抽取、宾语抽取和关系分类三个步骤,输出层采用机器阅读理解中的指针网络作为基本结构,有效解决了实体进行两两匹配带来的大量负样本问题,训练效果大大提升,最终取得了第一名的成绩。

3 Baseline 的错误样例分析

这些问题来源于 error case 分析

3.1 text 没有有效的分隔符(猜测)

在这里插入图片描述
预测结果:
在这里插入图片描述
这里预测结果较差,主要有两个原因:

  • 因为text 间没有有效的分隔符,
  • baseline 中的是 将subject 和 object 全部组合在一起,

2 噪音数据

在这里插入图片描述
在这里插入图片描述
模型能够预测出来,但是dev_train.json 中却没有给出正确的来。

在这里插入图片描述
上面这条数据是不是有点儿问题? 只是标注了一个西班牙语,怎么就变成了官方语言?
在这里插入图片描述
针对上面这条数据,我想采取一个分阶段训练的方法:

  • 第一阶段大致训练一个模型
  • 第二阶段开始精致调参,丢弃loss超过一定范围的数据。要保证每条数据都能被完全充分的利用

这种数据标注情况非常常见,所以一定要使用修改后的train数据来训练,否则会很影响训练效果

3.3 少字导致错误

如下面所示: 因为预测的是情人,而正确的是情人节,导致出现错误。
在这里插入图片描述

这个里面还有一个就是@xxx 竟然也被预测出来了。

3.4 遗漏数据

训练好的模型有很多遗漏,这里简单展示一下:
forget

在这里插入图片描述
在这里插入图片描述

观察这么多的数据,发现原因是无法预测潜在的关系

其实模型并不知道 的差别,它们的embedding 甚至都很相似,所以就会产生下面这种错误。
在这里插入图片描述

其它

在这里插入图片描述

在这里插入图片描述
这里的数字都预测错误了

在这里插入图片描述
隔这么远都能预测,但是预测的都是错误的,肯定是有某些数据导致产生这种问题。

遗漏的有1w条(recall很低),(即使除去官方数据中的错误标注)precision也不是很高。
在这里插入图片描述

3.4 我的想法

3.4.1 噪音数据处理(未实现)

将空格,替换成[sep],或者是其它特殊字符。

3.4.2 数据迭代(未实现)

当前的模型根本是理解不了语义的,所以我认为一切的问题都是数据的问题,如果能利用好所有的正确数据,而规避错误数据集,再采用迭代训练的方式来解决这个问题。

3.4.3 dropout(未实现)

能不能 dropout 掉所有无用的数据?

4 疑问

4.1 怎么根据生成的标签,匹配出一组?

将匹配出来的subject 和 object 循环匹配即可,所以这种匹配方式可能会导致出现冗余。冗余情形如下:
在这里插入图片描述

4.2 如何根据predicate 的label生成最后的结果?

这个是写在baseline utils.py 下 的decoding 函数中。

5 团队方案

基于之前的冠军方案,下面介绍一下我们的方案

5.1 模型结构

在这里插入图片描述
总体是一个 pipeline 的方式:

  • step 1. 先预测subject 【NER问题】
  • setp 2. 再预测上述subject 下的所有 object 【NER 问题】
  • step 3. 使用上述 subject 和 object 得到的元组,去预测二者的关系类别 【分类问题】

样例解释:在这里插入图片描述

  • 先预测出宇文娥英
  • 再在宇文娥英 的基础上,预测出杨丽华周宣帝
  • 再将宇文娥英+杨丽华 => 母亲宇文娥英+周宣帝 => 父亲

5.2 模型效果

在这里插入图片描述

precision 和 recall都很低 ,说明模型遗漏了基础要点。

5.3 模型预测结果错误样例分析

5.3.1 subject 预测的成功率不高(待解决)

单独运行 预测subject 的效果,发现其效果并不好
在这里插入图片描述

5.3.2 英文字符间的空格被分开了导致出错(待解决)

在这里插入图片描述

5.3.3 因为字不在vocab库导致出错(已解决)

在这里插入图片描述

5.4 改进方案

  • 使用subjectobject预测relation时,加O 类。(加一部分噪音数据构造O类) 【2021-4-11】
  • 模型加CRF 【2021-4-11】
  • 模型加入scheduler 参数 【2021-04-18】
  • pu learning 【2021-04-18】
  • 数据迭代【2021-04-25】
  • 梯度累积【2021-04-25】
  • 在训练模型时使用 Sampler 【2021-04-25】

5.5 其它优化方案

  • 降低batch中的数据集大小

这篇关于案例精析—2021语言与智能技术竞赛:多形态信息抽取任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525092

相关文章

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点