DreamInvoker / GAIN

Source code for EMNLP 2020 paper: Double Graph Based Reasoning for Document-level Relation Extraction
MIT License
142 stars 30 forks source link

关于docred的数据的最大长度 #11

Closed zyccyz closed 3 years ago

zyccyz commented 3 years ago

你好,在使用bert的tokenizer时,我发现docred中部分数据获得的subtokens是超过512的,而如果超过512,在data.py中有如下处理方式,下列代码的意图是什么?

if entity2mention[idx] == []:
                    entity2mention[idx].append(mention_idx)
                    while mention_id[replace_i] != 0:
                        replace_i += 1
                    mention_id[replace_i] = mention_idx
                    pos_id[replace_i] = idx
                    ner_id[replace_i] = ner2id[vertex[0]['type']]
                    mention_idx += 1
DreamInvoker commented 3 years ago

您好,感谢您对我们工作的关注!

这里是为了处理只包含单一mention的实体被这块代码因为512长度限制截掉mention的情况,我从篇章开头随便找了一个非实体的sub word代替这个mention,这样保证了后面的代码不会有bug。

至于为什么只对最后一个实体做这样的处理(因为确实可能截掉多个),是因为当时猜想是最后一个实体有问题,对应改了之后跑通了,就没有管了。

这块我们未来会改进一下,以支持tokenize之后文本长度大于512的情况。