关系抽取baseline
收藏
快速回复
语言与智能技术竞赛 问答开源方案其他 1547 5
关系抽取baseline
收藏
快速回复
语言与智能技术竞赛 问答开源方案其他 1547 5

请问为什么我跑关系抽取baseline的时候,得到的P/R/F1指标均为0?

0
收藏
回复
全部评论(5)
时间顺序
哈哈和看
#2 回复于2021-03

巧了,我也有这个问题。
我看了一下模型的输出,基本上对于每个token的112位logits(已经算过sigmoid),I和O这两个标记对应的值加起来都超过了0.9,然后110个B标记的每一个值几乎不超0.1。因为decoding函数把大于0.5的值对应的标记才记为预测的时候这个字符拥有的标记,所以基本上没有字符可以拥有B标记。

所以这种情况下,几乎每一个句子一个predicate都抽不出,所以最后p/r/f1都是0

0
回复
fly兵临城下123
#3 回复于2021-04

我这边也是0,现在解决了吗?

0
回复
梧桐空痕
#4 回复于2021-04

解决了吗?

0
回复
梧桐空痕
#5 回复于2021-04
巧了,我也有这个问题。 我看了一下模型的输出,基本上对于每个token的112位logits(已经算过sigmoid),I和O这两个标记对应的值加起来都超过了0.9,然后110个B标记的每一个值几乎不超0.1。因为decoding函数把大于0.5的值对应的标记才记为预测的时候这个字符拥有的标记,所以基本上没有字符可以拥有B标记。 所以这种情况下,几乎每一个句子一个predicate都抽不出,所以最后p/r/f1都是0
展开

您后来解决了吗?怎么才能预测正常呢

0
回复
梧桐空痕
#6 回复于2021-04

解决了,分享给后来者吧。

baseline里的train_data.json、dev_data.json太少,替换成train.json、dev.json。然后跑4个epoch以上就能正常。一两个epoch的p r fscore都会是0.

epoch: 3 / 8, steps: 1922 / 2676, loss: 0.002443, speed: 2.46 step/s
epoch: 3 / 8, steps: 1972 / 2676, loss: 0.002403, speed: 2.46 step/s

=====start evaluating ckpt of 10000 steps=====

100%|██████████| 323/323 [04:28<00:00, 1.20it/s]

eval loss: 0.002318
precision: 64.43 recall: 62.73 f1: 63.57

1
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户