中文短文本多标签分类(multi-label-class概述、简介与汇总)

一、多标签分类概述与总论

        多标签分类,是一种有别于多类分类的分类类型,举个例子:
        假设有类["酸", "甜", "苦", "辣", "香"],

        多类分类就是 "这个水果点酸"(label="酸"),"这个菜看起来很香"(label="香");

        多标签分类则是"辣子鸡虽然尝起来很香,就是太辣了"(label=["辣", "香"]),"酸酸乳就是又酸又甜的"(labe=["酸","甜"])。

        明显可以发现,多类分类有且只有一个标签,而多标签分类可以有多个标签(且不定)。

        github项目: https://github.com/yongzhuo/Keras-TextClassification/tree/master/test/multi_label_class

二、多标签分类算法方案与思路
1. 问题转化法:
       1.1 二元关联 Binary Relevance (BR)
       1.2 唯一多类 Label Powerset (LP)
       1.3 分类器链 Classifier Chains (CC)
2. 自适应法
       2.1 自适应算法就是通过改编算法让其直接执行多标签分类任务
       2.2  brknn, mlknn, mlaram, mltsvm
       2.3  ML-kNN,Rank-SVM
3. 集成法

4.Seq2Seq


三、多标签分类资源
3.1 sklearn机器学习多标签分类项目[scikit-multilearn],
3.2 sklearn机器学习层次多标签分类项目[sklearn-hierarchical-classification],
                  详细讲解可以看下这个[解决多标签分类问题(包括案例研究)]。
3.3 腾讯pytorch版深度学习分类项目工具[NeuralNLP-NeuralClassifier]。
3.4 数据集

四.简单说明:
4.1  一般最简单的做法是将多标签问题转化为多类分类问题,用sigmoid激活函数,具体就是每种具体的类转化为唯一的onehot类(不管它有几个标签),和普通的分类问题一样,改变一下类别标签就好。这种做法可以看一下看山杯多标签分类比赛(1999个类)的代码, 
     例如[text_classification],可能汇类别多得爆炸,还有就是没有利用类别间的关系。
     例子: 设总label为["科技", "体育", "热点", "娱乐"],那么sample["体育", "热点"]转为[0, 1, 1, 0],可知道各标签概率,
             或者是多标签["体育", "热点"]拼接起来["体育热点"]看成一个onehot,不过这样不知道标签的概率了;
4.2  转化为多个分类器问题,就是对每个标签进行二分类。每个标签都维护一个神经网络总感觉不爽,比如说1070各标签就要维护1070个
     分类器,机器学习还好说,深度学习神经网络想想都不靠谱;
4.3  分类器链,同2.中的方法,对每个标签进行2分类, 构造多个二分类器, 
     不同于2.的是, 输入为特征和类别的拼接,即[x_extend(i) + y(i)];
4.4  使用seq2seq,可以构建有一定关系的类依赖,尤其是包含关系,如大类小类;
4.5  或者是近年来的层次多标签分类,层次分类等,这个还没细看。。。

五.已有的toolkits
1.skmultilearn(embedding用到了https://github.com/thunlp/OpenNE, 必须setup.py安装, 差评)
    1.1 BinaryRelevance(二元相关性), 对每个标签进行2分类, 构造多个二分类器
    1.2 ClassifierChain(分类器链), 对每个标签进行2分类, 构造多个二分类器, 不同于1.1的是, 输入为[x_extend(i) + y(i)]
    1.3 LabelPowerset(动力集合), 转化为多类分类问题, 每个sample只有唯一onehot

2.loss
Hamming-loss (Schapire and Singer, 1999) evaluates the fraction of misclassified instance-label pairs, where a relevant label is missed or an irrelevant is predicted.
Micro-F1 (Manning et al., 2008) can be interpreted as a weighted average of the precision and recall. It is calculated globally by counting the total true positives, false negatives, and false positives.

希望对你有所帮助!

发布了96 篇原创文章 · 获赞 72 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/rensihui/article/details/99618453
今日推荐