PaddlePaddle / Research

novel deep learning research works with PaddlePaddle
Apache License 2.0
1.72k stars 788 forks source link

Research/NLP/DuReader-Checklist-BASELINE/src/run.py #147

Closed W2Q3Q1 closed 3 years ago

W2Q3Q1 commented 3 years ago

作者您好!在准备数据集的过程中,有一定概率出现答案的span跨越文本的两个分段的情况,在run.py中,该情况下的答案起始和终止被直接设置为了CLS所在的位置,同时answerable_label被设置为了0,即不可解。这种情况是否会影响部分实例的运算呢?

libertatis commented 3 years ago

我觉得不会的,反而这样做是对的。对于大于最大长度的context,使用滑动窗口技术将其切割为多个样本(或实例),其实是相当于一种数据增强。如果我们把包含无答案问题的抽取式阅读理解任务看成是一个二分类问题,即有答案和无答案。对于答案span没有被分割的实例,相当于增加了正样本个数,而对于答案span被分割的情况,则相当于是增加了负样本的个数。对于后者,如果直接丢弃,这样会造成正负样本的不均衡,即可能会破坏原数据集中的正样本分布。当然对于答案一定出现在context中的抽取式阅读理解任务,如SQuAD 1.1,很自然的做法就是直接丢弃。但是对于包含无答案问题的抽取式阅读理解任务,如SQuAD 2.0,就不能简单丢弃啦~嗯,我是这么理解的。如果有什么理解错了的,还请多多指教!

W2Q3Q1 commented 3 years ago

非常感谢您的解答!我想我理解您的意思了。将答案被切割后的两段context作为无答案训练数据确实是有道理的,这是我没想到的。