Tencent / NeuralNLP-NeuralClassifier

An Open-source Neural Hierarchical Multi-label Text Classification Toolkit
Other
1.83k stars 402 forks source link

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

Open littttttlebird opened 1 year ago

littttttlebird commented 1 year ago

看咱们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

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

bulubulu-Li commented 1 year ago

现在有结论了吗

MagiaSN commented 1 month ago

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