MRC4ERE_plus icon indicating copy to clipboard operation
MRC4ERE_plus copied to clipboard

关于relation prediction模块的实现

Open chenshaowei57 opened this issue 4 years ago • 5 comments

关于论文中提到的relation prediction模块,我在代码中似乎没有找到对应的部分。 我注意到代码中在BertTagger类中,仅进行了标签的分类,在测试的时候似乎是基于entity_relation_map词典进行关系query的构建。 所以想请教一下代码中对于relation prediction是如何实现的?是不是我没找到对应的代码~

chenshaowei57 avatar Oct 22 '20 12:10 chenshaowei57

relation prediction具体是以[CLS]的hidden state作为输入,经过一个线性变换,进行relation set上的多分类。 代码后续会更新,感谢关注!

TanyaZhao avatar Oct 22 '20 16:10 TanyaZhao

非常感谢您的回复,我会持续关注一下~ 此外还有几个问题想要请教一下~ (1)论文中公式3计算的是不同query的权重,为什么要在sigmoid函数的基础上乘T?乘后似乎就不能保证权重属于[0,1]区间了。 在提供的代码中,计算权重时似乎更像一个softmax操作,ent_weight = (np.exp(ent_p_list) / sum(np.exp(ent_p_list))) * len(ent_p_list),我也认为softmax似乎更合理,是不是论文的公式有点问题?

(2)论文公式4中a_{t,i}代表什么?根据上文描述,a_{t,i}似乎表示MRC预测的标签,如果是标签的话如何做到加权求和呢?我注意到论文中,似乎是将权重乘100,再计次,进而选择最终的标签。 for i in mask_index: # vote on every token answer = [every_pred_label[j][i] for j in range(num_ques)] answer = [] for j in range(num_ques): if every_input_type == "entity": answer.extend([every_pred_label[j][i]] * int(ent_weight[j]*100)) elif every_input_type == "relation": answer.extend([every_pred_label[j][i]] * int(rel_weight[j]*100)) final_answer = Counter(answer).most_common(1)[0][0]

(3)论文中实验部分,MRC4ERE和MRC4ERE_{N}的区别是什么呢?根据表2的描述,MRC4ERE没有采用DQA和RP。而MRC4ERE_{N}也仅使用了一个自然语言问题。

(4)论文中relation的性能是如何评估的?评估的是三元组的性能么?

期待您的回复!

chenshaowei57 avatar Oct 25 '20 15:10 chenshaowei57

我打算自己加上关系预测模块,但是遇到了一些困惑:在训练之前,训练feature已经构建完了,并且进去了,我该怎么一边训练一边把筛选后的问题加进去?训练后在下一个epoch加进去吗?

wxl1351641822 avatar Dec 22 '20 12:12 wxl1351641822

relation prediction具体是以[CLS]的hidden state作为输入,经过一个线性变换,进行relation set上的多分类。 代码后续会更新,感谢关注!

请问预测这部分代码更新了么 谢谢

amelieyu1989 avatar Jan 04 '21 06:01 amelieyu1989

我觉得没有……

wxl1351641822 avatar Jan 04 '21 06:01 wxl1351641822