Tencent / NeuralNLP-NeuralClassifier

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

doc_label的格式问题 #58

Closed qinghaopeng closed 4 years ago

qinghaopeng commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么:

readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"]

我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层

但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的

如果我不用"--"的话,eval.py就无法对每一层分别做测评了

但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

coderbyr commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么:

readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"]

我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层

但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的

如果我不用"--"的话,eval.py就无法对每一层分别做测评了

但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

这里RCV1并没有对比分层的结果,所以不影响评估;如果有需要输出分层指标的话,需要按照 “--”格式

zouzoutingting commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么: readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"] 我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层 但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的 如果我不用"--"的话,eval.py就无法对每一层分别做测评了 但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

这里RCV1并没有对比分层的结果,所以不影响评估;如果有需要输出分层指标的话,需要按照 “--”格式

同样的数据,label的这两种格式,得到的准召不一样,这是为什么啊

coderbyr commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么: readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"] 我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层 但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的 如果我不用"--"的话,eval.py就无法对每一层分别做测评了 但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

这里RCV1并没有对比分层的结果,所以不影响评估;如果有需要输出分层指标的话,需要按照 “--”格式

同样的数据,label的这两种格式,得到的准召不一样,这是为什么啊

是否配置不同,具体指标是指分层级吗?

Jason-kid commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么:

readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"]

我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层

但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的

如果我不用"--"的话,eval.py就无法对每一层分别做测评了

但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

同请教,哪一种是做hierarchical+multi-label模型 正确的label 格式

coderbyr commented 4 years ago

你好!感谢你们的工作!我在跑hierarchical+multi-label模型的时候发现readme和paper的给的doc_label的格式跟data/rcv1_train.json和taxonomy有些出入,想请教一下正确的输入格式是什么: readme里给的例子是这样的 "doc_label": ["Computer--MachineLearning--DeepLearning", "Neuro--ComputationalNeuro"] 我的理解为这个数据点有两个label,然后Computer为MachineLearning的上一层,MachineLearning为DeepLearning的上一层 但是在data/rcv1_train.json里面的doc_label是下面的格式 "doc_label": ["E131", "E13", "E211", "E21", "ECAT"] 这里没有用"--"做分割,而且我的理解是"E13"是"E131"的上一层,所以这里的doc_label包含了每一层的label,跟readme的格式是冲突的 如果我不用"--"的话,eval.py就无法对每一层分别做测评了 但是用"--"的话cal_recursive_regularize又无法正确使用,因为hierar_relations是直接根据label_map生成的,而label_map里只有"Computer--MachineLearning--DeepLearning"这样的label,而不会有"Computer"这样的label,这样一来cal_recursive_regularize不起作用,导致hierarchy的信息完全没用到。。。

同请教,哪一种是做hierarchical+multi-label模型 正确的label 格式

(1) 如果需要每一层分类的效果,建议对样本标签格式进行处理,如原始标签为“DeepLearning”, 需要把对应的所有父类目也回溯上,处理后为“Computer--MachineLearning--DeepLearning” (2)使用hierarchical的关键在于训练样本中也需要构造有非叶子节点的样本(即样本标签不能全是层次结构的叶子节点),如数据集中 需要有 标签为 "Computer--MachineLearning" 和 “Computer--MachineLearning--DeepLearning”的样本

guancheng817 commented 4 years ago

相同的问题,doc_label 用"--"的话,导致 hierar_relations = {} 为空,无法利用层级信息,而不用“--”的话,eval.py 无法输出每一层测评,请问如何解决,十分感谢。