NeuralNLP-NeuralClassifier
NeuralNLP-NeuralClassifier copied to clipboard
HMCN是怎么同时考虑层次标签之间关系的呢?
看咱们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的。 有人关注这个吗?探讨一下
现在有结论了吗
两种都合理吧
[0, 0, 0, 1, 0]
这种设置下,标签为1的含义是:样本属于该类目但不属于该类目的子类目
[0, 0, 1, 1, 0]
这种设置下,标签为1的含义是:样本属于该类目且可能属于该类目的子类目
在第一种设置下,如果某个类目被预测为1,那么这个类目的子类目都应预测为0,也是一种层次之间的关系