NeuralNLP-NeuralClassifier icon indicating copy to clipboard operation
NeuralNLP-NeuralClassifier copied to clipboard

HMCN是怎么同时考虑层次标签之间关系的呢?

Open littttttlebird opened this issue 1 year ago • 2 comments

看咱们HMCN-F的实现代码,标签字典是通过数据集里面标签构造的,比如样本集如下:

case1 A case2 A--A1 case3 B--B1--B11 case4 B--B1 case5 B--B1--B12

那么将会得到标签字典如下:

A A--A1 B--B1 B--B1--B11 B--B1--B12

在训练的时候,一级类目标签有[A],二级类目标签有[A--A1, B--B1],三级标签有[B--B1--B11, B--B1--B12]。 以case3为例,真实标注标签为B--B1--B11

  • 在分级标签预测上,一级标类目上标签是[0],二级类目上标签是[0, 0],三级类目上标签是[1, 0];
  • 在全局标签预测上,真实类目标签是[0, 0, 0, 1, 0](对应[A, A--A1, B--B1, B--B1--B11, B--B1--B12]五个标签); 可以看见,这种标签设置要求模型将case3预测为B--B1--B11,但是去不让模型预测为B--B1,也不让模型预测为B,这样的话,模型怎么能学习到层次之间的关系呢?

-------------------------------------我的思考--------------------------------------- 是不是应该在数据预处理的时候,针对case3这种标签,如果他的前缀也在标签词典里,那么应该将case3的标签拓展为[0, 0, 1, 1, 0],即将B--B1也加入到ground truth label里面去。这样子的话,在局部和全局,都应该预测出来B--B1标签,模型才会知道B--B1--B11是属于B--B1的。 有人关注这个吗?探讨一下

littttttlebird avatar May 28 '23 13:05 littttttlebird

现在有结论了吗

bulubulu-Li avatar Aug 21 '23 13:08 bulubulu-Li

两种都合理吧 [0, 0, 0, 1, 0]这种设置下,标签为1的含义是:样本属于该类目但不属于该类目的子类目 [0, 0, 1, 1, 0]这种设置下,标签为1的含义是:样本属于该类目且可能属于该类目的子类目 在第一种设置下,如果某个类目被预测为1,那么这个类目的子类目都应预测为0,也是一种层次之间的关系

MagiaSN avatar Jul 25 '24 04:07 MagiaSN