TextING icon indicating copy to clipboard operation
TextING copied to clipboard

请问可以用在中文的多标签文本分类上吗?

Open kaohaochuan opened this issue 5 years ago • 10 comments

我的研究是多标签的文本分类(multi label classification) 类别有九个 但不是多元分类(multi class classification) 例子都是多元分类(multi class classification) 请问有实作在多标签分类(multi label classification)的文本上吗?

kaohaochuan avatar Sep 22 '20 15:09 kaohaochuan

你好 @lockingkao

目前还没有支持 multi-label 问题,如果不修改代码可以同时训练多个二分类模型,可能会比较慢,或者根据问题调整代码。

Magicat128 avatar Sep 23 '20 02:09 Magicat128

@Magicat128 感谢您的回覆 目前已经训练过多个二分类模型,但想试试看修改代码使代码适用于 multi-label 问题 目前的想法是将标签转为one hot encoding 并将最后一层改成sigmoid 感谢大神 我还是菜鸟 请问您有什么建议呢。

kaohaochuan avatar Nov 02 '20 06:11 kaohaochuan

@lockingkao

应该是可以的,将标签改为one-hot,softmax改为sigmoid,损失函数可能也要相应改成sigmoid_cross_entropy_with_logits。 参考 Example

Magicat128 avatar Nov 05 '20 02:11 Magicat128

@Magicat128 你好大神,我已经将标签改为one-hot,softmax改为sigmoid,损失函数改成sigmoid_cross_entropy_with_logits。 确定可以跑多标签的模型!谢谢您的帮助! 另外想问,您的代码在运行文本不平衡的资料时是否会出现precision,recall,f1-score为0的状况呢? image 我的九个标签中,有五个是标签0,1不平均的! 结果都是0,想请问大神是代码的问题吗?

UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use zero_division parameter to control this behavior. _warn_prf(average, modifier, msg_start, len(result)) /opt/conda/envs/hckao-textING/lib/python3.6/site-packages/sklearn/metrics/_classification.py:1221: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in samples with no true labels. Use zero_division parameter to control this behavior.

kaohaochuan avatar Nov 23 '20 06:11 kaohaochuan

@lockingkao

抱歉回复晚了。应该是因为y_true中的标签有的没出现在y_pred中,导致指标计算有除0存在,和代码应该没有关系。建议要么解决样本不均衡的问题,要么加上zero_division=1忽略这一问题 https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html

Magicat128 avatar Dec 04 '20 03:12 Magicat128

@Magicat128 您好 谢谢你的回覆 请问您有尝试将textING做在中文的数据上吗? 因为我一样将中文多标签文本跟标签用成你要的输入格式(已经断过词) 但是用textING train时,完全train不起来(有画train loss ,val loss ,图形十分奇怪) 有将文本down sampling成balanced data,但还是没有好的结果!

但是用相同的前处理,textGCN可以跑! 我亦有将textGCN , textING跑过 mr的英文数据集,可以跑. 但中文只有textGCN可以跑.

希望大神能解答,是否 textING无法用中文数据集跑,还有资料平衡的问题.

kaohaochuan avatar Dec 23 '20 09:12 kaohaochuan

@Magicat128 您好 谢谢你的回覆 请问您有尝试将textING做在中文的数据上吗? 因为我一样将中文多标签文本跟标签用成你要的输入格式(已经断过词) 但是用textING train时,完全train不起来(有画train loss ,val loss ,图形十分奇怪) 有将文本down sampling成balanced data,但还是没有好的结果!

但是用相同的前处理,textGCN可以跑! 我亦有将textGCN , textING跑过 mr的英文数据集,可以跑. 但中文只有textGCN可以跑.

希望大神能解答,是否 textING无法用中文数据集跑,还有资料平衡的问题.

请问您在中文训练集上运行成功了吗,我也想把这个模型用到中文数据集上,但是会有错,请问您是怎么解决的?

bp20200202 avatar Jan 10 '21 07:01 bp20200202

@Magicat128 您好 谢谢你的回覆 请问您有尝试将textING做在中文的数据上吗? 因为我一样将中文多标签文本跟标签用成你要的输入格式(已经断过词) 但是用textING train时,完全train不起来(有画train loss ,val loss ,图形十分奇怪) 有将文本down sampling成balanced data,但还是没有好的结果! 但是用相同的前处理,textGCN可以跑! 我亦有将textGCN , textING跑过 mr的英文数据集,可以跑. 但中文只有textGCN可以跑. 希望大神能解答,是否 textING无法用中文数据集跑,还有资料平衡的问题.

请问您在中文训练集上运行成功了吗,我也想把这个模型用到中文数据集上,但是会有错,请问您是怎么解决的?

我用的是中文多标签文本分类 效果蛮差的 改的是sigmoid_cross_entropy 跟最后一层的sigmoid 请问您遇到的困难跟错误是? 而且我将learning curve 画出来的图形模型没办法收敛 欢迎一起讨论!

kaohaochuan avatar Jan 12 '21 12:01 kaohaochuan

@ Magicat128 您好谢谢你的回覆 请问您有尝试将texting做在中文的数据上吗? 因为我一样将中文多标签文本跟标签用成你要的输入格式(已经断过词) 但是用texting train时,完全火车不起来(有画火车损失,val损失,图形十分奇怪) 有将文本向下采样成平衡数据,但还是没有好的结果! 但是用相同的前处理,textGCN可以跑! 我亦有将textGCN ,texting跑过mr的英文数据集,可以跑。 但中文只有textGCN可以跑。 希望大神能解答,是否texting无法使用中文数据集跑,还有数据平衡的问题。

请问您在中文训练集上运行成功了吗,我也想把这个模型用到中文数据集上,但是会有错,请问您是怎么​​解决的?

我用的是中文多标签文本分类效果蛮差的 改的是sigmoid_cross_entropy跟最后一层的sigmoid请问 您遇到的困难跟错误是? 而且我将学习曲线画出来的图形模型没办法收敛 欢迎一起讨论!

我就在两个标签的中文文本分类上尝试了一下,说是维度不一致的问题,感觉应该是语言不一样的事。

bp20200202 avatar Jan 12 '21 12:01 bp20200202

@ Magicat128 您好谢谢你的回覆 请问您有尝试将texting做在中文的数据上吗? 因为我一样将中文多标签文本跟标签用成你要的输入格式(已经断过词) 但是用texting train时,完全火车不起来(有画火车损失,val损失,图形十分奇怪) 有将文本向下采样成平衡数据,但还是没有好的结果! 但是用相同的前处理,textGCN可以跑! 我亦有将textGCN ,texting跑过mr的英文数据集,可以跑。 但中文只有textGCN可以跑。 希望大神能解答,是否texting无法使用中文数据集跑,还有数据平衡的问题。

请问您在中文训练集上运行成功了吗,我也想把这个模型用到中文数据集上,但是会有错,请问您是怎么​​解决的?

我用的是中文多标签文本分类效果蛮差的 改的是sigmoid_cross_entropy跟最后一层的sigmoid请问 您遇到的困难跟错误是? 而且我将学习曲线画出来的图形模型没办法收敛 欢迎一起讨论!

我就在两个标签的中文文本分类上尝试了一下,说是维度不一致的问题,感觉应该是语言不一样的事。

二元分类的任务的话不用改太多,记得先用 jieba 分词 先断词后再放进corpus中 你有按照 label 跟 corpus的格式吗?

kaohaochuan avatar Jan 12 '21 13:01 kaohaochuan