百度baseline是使用paddle 写的,主要的思想是一个多层的指针网络。
predicate2id.json
文件这里针对 predicate = 配音
这个就生成了如下两个 predicate
值:
配音_inwork
, 配音_@value
。 因为这是一个复杂的结构体,而不能简单的抽取配音
就可以了。
没找到是什么原因。惨!
采用创新技术方案,把实体抽取任务分为主语抽取、宾语抽取和关系分类三个步骤,输出层采用机器阅读理解中的指针网络作为基本结构,有效解决了实体进行两两匹配带来的大量负样本问题,训练效果大大提升,最终取得了第一名的成绩。
这些问题来源于 error case
分析
预测结果:
这里预测结果较差,主要有两个原因:
模型能够预测出来,但是dev_train.json 中却没有给出正确的来。
上面这条数据是不是有点儿问题? 只是标注了一个西班牙语,怎么就变成了官方语言?
针对上面这条数据,我想采取一个分阶段训练的方法:
这种数据标注情况非常常见,所以一定要使用修改
后的train数据来训练,否则会很影响训练效果
如下面所示: 因为预测的是情人
,而正确的是情人节
,导致出现错误。
这个里面还有一个就是@xxx
竟然也被预测出来了。
训练好的模型有很多遗漏,这里简单展示一下:
观察这么多的数据,发现原因是无法预测潜在的关系
其实模型并不知道 孙
,子
的差别,它们的embedding 甚至都很相似,所以就会产生下面这种错误。
这里的数字都预测错误了
隔这么远都能预测,但是预测的都是错误的,肯定是有某些数据导致产生这种问题。
遗漏的有1w条(recall很低),(即使除去官方数据中的错误标注)precision也不是很高。
将空格,替换成[sep],或者是其它特殊字符。
当前的模型根本是理解不了语义的,所以我认为一切的问题都是数据的问题,如果能利用好所有的正确数据,而规避错误数据集,再采用迭代训练的方式来解决这个问题。
能不能 dropout 掉所有无用的数据?
将匹配出来的subject 和 object 循环匹配即可,所以这种匹配方式可能会导致出现冗余。冗余情形如下:
这个是写在baseline utils.py 下 的decoding 函数中。
基于之前的冠军方案,下面介绍一下我们的方案
总体是一个 pipeline
的方式:
样例解释:
宇文娥英
,宇文娥英
的基础上,预测出杨丽华
和 周宣帝
宇文娥英+杨丽华
=> 母亲
, 宇文娥英
+周宣帝
=> 父亲
precision 和 recall都很低 ,说明模型遗漏了基础要点。
单独运行 预测subject 的效果,发现其效果并不好
subject
和object
预测relation
时,加O 类。(加一部分噪音数据构造O类) 【2021-4-11】pu learning
【2021-04-18】Sampler
【2021-04-25】本文发布于:2024-02-01 18:26:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170678318338593.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |