Open ShellingFord221 opened 4 years ago
对,训练过程选择第一个标签进行训练, 没有考虑多标签。改成多标签其实也比较容易,修改loss即可。或者通过数据扩充的形式,一个句子多训练多个标签。 测试的话,predict 的label 可以 可以逐一对比的ground truth中多标签,有一个预测对的即可。
“改成多标签其实也比较容易,修改loss即可。” 这句话指的是multi-instance multi-label吗?如果是这样的话,loss要怎么修改呢?(我看到的multi-instance multi-label的文章是Multi-instance Multi-label Learning for Relation Extraction,这篇是用概率图模型做的,而不是deep的方法) 非常感谢!!
不是2012年MIML这一篇,是另外一篇名字比较类似的的COLING 2016的Relation Extraction with Multi-instance Multi-label Convolutional Neural Networks。 简单说的话,就是把softmax改为multi sigmoid
大致看了一下这篇paper,感觉好违反直觉啊。他的方法是,在得到bag中每个句子的向量表示以后,采用cross-sentence的方式去max-pooling得到这个bag的表示,然后乘以标签矩阵得到每个标签的得分。但是multi-instance multi-label指的不是一个bag中的这些句子可能分别属于不同的标签吗,难道不应该将句子的向量表示和标签对齐吗,bag的表示和标签对齐又有什么意义呢?bag表示一个实体对,一个实体对确实可能有多个关系,但这是针对句子来说的啊
在远程监督的关系抽取中,一般情况multi-instance multi-label 通常是在bag-level,而非sentence-level. 在实际中的信息抽取中,比如一些IE的比赛的时候,给定一个document,里面多个句子,会存在多个关系。 跟论文中的不是一个概念。
比如实体对是美国和奥巴马,在知识库中有3个关系,这篇文章做的东西其实是,我不管这个实体对出现在具体什么句子中,最后只要给出这个bag(entity pair)在这3个关系上的概率。 可是这样做就脱离句子了啊,我不去看具体的句子,怎么知道美国和奥巴马之间到底是什么关系呢?或者到底在3个关系上的概率分别是什么呢?
需要区分bag-level和sentence-level两种paradigam的relation extraction. bag-level 无需关心是bag内的哪个句子产生的relation。
我懂了,基于bag的这种方式就像isA关系,比如周杰伦,上位词可能是人物,可能是专辑,也可能是地点(比如),人们直觉上认为概率分布应该是90%,5%,5%,但实际上某一个包含周杰伦的特定句子的概率分布不一定是这样的。 bag-level只是给出一个实体对属于某些关系的整体规律,至于某个特定的句子不一定符合这个整体规律。Am I correct? :)
大概是这个意思。关系抽取的重要应用就是图谱补全。在这个层面上,bag-level本质上是为了找到两个实体潜在的语义关系,跟句子没关系。 太强调句子的话,就成了sentence classification了。
我还有最后一个问题哈,如果是基于bag的假设的话,train data和test data为何不以bag的形式给出标签,而是仍然以句子的形式给出标签呢?原始的NYT数据集的paper我看过,他是远程监督以后用了概率图模型再给出具体句子的标签的。如果始终以bag的思路去思考,这样不是多此一举吗?
我记得 大家常用的NYT+Freebase的数据集的标签应该还是给到了bag-level,而不是sentence-level. 建议check下。
我看了下Modeling Relations and Their Mentions without Labeled Text 这篇paper,应该是用freebase对齐后再用概率图模型得到每个句子的标签的吧。。。我该不会是这篇paper都看错了吧==
你好,因为你的数据是允许bag最多有4个标签的,那么在main_mil.py里面,因为要选择在标签列上最大的那一行作为这个bag的表示,多标签的bag的话要选择哪个标签呢?(即select_instance函数,我看了下,你好像是直接选择第一个标签的?)谢谢!