CBART icon indicating copy to clipboard operation
CBART copied to clipboard

关于replace label

Open Tough-Stone opened this issue 1 year ago • 2 comments

训练阶段构造的数据有0,1,2的分类,其中1表示替换,而论文中说推理阶段不需要替换,但是在推理时构造indicate_labels += [1] + [0] * (len(ids) - 1)这里添加进很多1,是为什么呢

Tough-Stone avatar Jun 24 '23 04:06 Tough-Stone

indicate_labels 是为了记录每个词语的开始位置。和论文中encoder labels 中0, 1, 2的含义不同。 假如给定的某个词语被切分以后得到了三个子词a,b,c, 那么对应的labels 就是[1,0,0]。为了保证原来的词语完整,那么就不允许在a, b, c之间插入新的子词,而只允许在原来词语的首个子词(即a)前面插入词语。这里的1指得是当前子词前面可以插入新词。 很抱歉代码的细节我记不太清了,细节你可以参考代码。

NLPCode avatar Jun 24 '23 14:06 NLPCode

好的。那么训练时为什么要定义成3分类而不是2分类呢,如果推理阶段只需要插入新词的话,为什么需要替换操作。我看到构造合成数据时,专门构造了一些只含有替换操作的数据(比如create_replaced_samples)

Tough-Stone avatar Jun 26 '23 03:06 Tough-Stone