131250208 / TPlinker-joint-extraction

438 stars 94 forks source link

TPlinker在中文数据集上的效果探讨 #39

Closed YYGe01 closed 3 years ago

YYGe01 commented 3 years ago

作者你好,我参加了2021语言与智能技术竞赛,我非常喜欢tplinker模型的设计思路,所以用tplinker plus模型在duie关系抽取上测试了效果。 训练数据有17万条左右,用的是bert base模型,但是最终的效果只有 86.67/55.61/67.75。训练日志如下

{'val_shaking_tag_acc': 0.44333228247162676, 'val_rel_prec': 0.7269814343605692, 'val_rel_recall': 0.6981153419760628, 'val_rel_f1': 0.7122560391486524, 'val_ent_prec': 0.7853231106243155, 'val_ent_recall': 0.8241971405991809, 'val_ent_f1': 0.8042906719944524, 'time': 1675.9016613960266}

有几个问题想请教下作者。

1、这里面我发现精确率比召回率高很多,并且val_shaking_tag_acc 也不高,不知道作者认为这大概是什么原因呢?有什么方法可以改进呢?谢谢

我这边觉得是矩阵稀疏的问题,一个100长度的句子,展开成5050个span,但是其实只有10%左右的span是有效的,感觉是其他90%的无效的span 影响了模型的学习。

2、我看作者对这方面也做了一些尝试,比如作者设置了这么一个参数:

"tok_pair_sample_rate": 1, # (0, 1] How many percent of token paris you want to sample for training,

当时我看默认是1,就没有调参,不知道作者当时调这个参数时,模型性能的表现如何,谢谢

3、不知道作者有没有兴趣组队呢,我们团队目前成绩前10,厚着脸皮邀请作者大大加入,谢谢!

131250208 commented 3 years ago

@YYGe01 可以用bias loss平衡一下召回率和准确率,tok_pair_sample_rate这个参数我最初是为了节省GPU设置的,这个参数设成小于1会丢弃一些负样本token对(正样本全部保留)。使用这个参数有两个作用:1. 改变正负样本比例(你第一点提到的),达到相当于使用bias loss的效果(即增大正样本权重)。2. 可能会丢弃一些漏标的伪负例,可能会提升性能。 我最近还在忙其他事情,你可以把你的联系方式发到我邮箱,如果之后我有意加入会跟你联系,谢谢!

YYGe01 commented 3 years ago

谢谢作者大大给出指导建议,到时发您邮箱,再次感谢🙏

LawsonAbs commented 3 years ago

作者你好,我参加了2021语言与智能技术竞赛,我非常喜欢tplinker模型的设计思路,所以用tplinker plus模型在duie关系抽取上测试了效果。 训练数据有17万条左右,用的是bert base模型,但是最终的效果只有 86.67/55.61/67.75。训练日志如下

{'val_shaking_tag_acc': 0.44333228247162676, 'val_rel_prec': 0.7269814343605692, 'val_rel_recall': 0.6981153419760628, 'val_rel_f1': 0.7122560391486524, 'val_ent_prec': 0.7853231106243155, 'val_ent_recall': 0.8241971405991809, 'val_ent_f1': 0.8042906719944524, 'time': 1675.9016613960266}

有几个问题想请教下作者。

1、这里面我发现精确率比召回率高很多,并且val_shaking_tag_acc 也不高,不知道作者认为这大概是什么原因呢?有什么方法可以改进呢?谢谢

我这边觉得是矩阵稀疏的问题,一个100长度的句子,展开成5050个span,但是其实只有10%左右的span是有效的,感觉是其他90%的无效的span 影响了模型的学习。

2、我看作者对这方面也做了一些尝试,比如作者设置了这么一个参数:

"tok_pair_sample_rate": 1, # (0, 1] How many percent of token paris you want to sample for training,

当时我看默认是1,就没有调参,不知道作者当时调这个参数时,模型性能的表现如何,谢谢

3、不知道作者有没有兴趣组队呢,我们团队目前成绩前10,厚着脸皮邀请作者大大加入,谢谢! 最近效果有改善吗?我也准备用这个模型跑一下这个任务看看

LimKim commented 3 years ago

tok_pair_sample_rate这个参数我最初是为了节省GPU设置的,这个参数设成小于1会丢弃一些负样本token对(正样本全部保留)

作者您好,我看到这个参数是对全部的shaking_hiddens做sampling,看上去是全部随机的,请问是怎么保证正样本全部保留的

131250208 commented 3 years ago

@LimKim 刚刚看了一下,现在这个版本确实是完全随机的,应该是我记错了,我之前写过一个保留全部正样本的,可能是因为比例没调好,丢的负样本太多,准确率下降很多,实验结果没有随机的效果好,所以就改成随机的了。这个部分没有做太多的探索,你可以自行尝试根据真实标签去保留所有正样本,再采样一些负样本。

guanxichouqu commented 1 year ago

作者你好,我参加了2021语言与智能技术竞赛,我非常喜欢tplinker模型的设计思路,所以用tplinker plus模型在duie关系抽取上测试了效果。 训练数据有17万条左右,用的是bert base模型,但是最终的效果只有 86.67/55.61/67.75。训练日志如下

{'val_shaking_tag_acc': 0.44333228247162676, 'val_rel_prec': 0.7269814343605692, 'val_rel_recall': 0.6981153419760628, 'val_rel_f1': 0.7122560391486524, 'val_ent_prec': 0.7853231106243155, 'val_ent_recall': 0.8241971405991809, 'val_ent_f1': 0.8042906719944524, 'time': 1675.9016613960266}

有几个问题想请教下作者。

1、这里面我发现精确率比召回率高很多,并且val_shaking_tag_acc 也不高,不知道作者认为这大概是什么原因呢?有什么方法可以改进呢?谢谢

我这边觉得是矩阵稀疏的问题,一个100长度的句子,展开成5050个span,但是其实只有10%左右的span是有效的,感觉是其他90%的无效的span 影响了模型的学习。

2、我看作者对这方面也做了一些尝试,比如作者设置了这么一个参数:

“tok_pair_sample_rate”: 1, # (0, 1] 您想抽取多少百分比的代币巴黎进行训练,

当时我看默认是1,就没有调参,不知道作者当时调这个参数时,模型性能的表现如何,谢谢

3、不知道作者有没有兴趣组队呢,我们团队目前成绩前10,厚着脸皮邀请作者大大加入,谢谢!

你好 我想用TPLinker在中文数据集上进行运行 但是源代码是英文的 我想请教一下改成中文需要准备什么工作可以嘛