文本对分类以及多标签分类问题的解决思路

现实生活中,有大量的文本需要人工区分类,而自然语言相关技术的发展使得人们可以通过算法的手段代替手工,极大的加速了社会的发展. 而文本分类任务一直是NLP一只老掉牙的事,从常规的新闻文本分类到特定领域的多类分类(Multiclass classification)多标签分类(Multilabel classification).

对于多类别分类,就是说在分类任务中, 有n种类别的事物, 而且每一个事物有且仅有一个标签. 这类任务的难点在于, 数据的 极度不平衡, 就拿天池最近的一个入门赛来说, 对于星座类别的新闻, 平时关注的人本来就很少,训练的时候数据很难有好的模型, 通常也就是对其进行增量复制,并辅以噪音以达到数据增光的作用. 为了增加模型的鲁棒性, 或许你还的对数据进行LOOCV(leave-one-out cross validation),如果嫌弃他计算量大,成本高的化,可以看看k折交叉验证(k-fold cross validation)

LOOCV是一种特殊的K-fold Cross Validation(K=N)。再来看一组图:

文本对分类以及多标签分类问题的解决思路

每一幅图种蓝色表示的真实的test MSE,而黑色虚线和橙线则分贝表示的是LOOCV方法和10-fold CV方法得到的test MSE。我们可以看到事实上LOOCV和10-fold CV对test MSE的估计是很相似的,但是相比LOOCV,10-fold CV的计算成本却小了很多,耗时更少。在NLP里面有很多这样的必入LSSTM-GRU, Transformer-Bert,GMM-K-means等等. 通常处理这类问题的方法就是转化问题,使之变成多类分类, 或者将多个标签单独看作一个新的标签,下面正比例了一些多标签分类的文章,供大家查阅

对于对标签分类,可以认为是没个样本对应多个属性, 必入说一篇新闻属于财经有属于医疗. 这类问题难点在于有些样本可能只有当个标签,而有些样本标签是多个, 而且样本标签之间相互依赖. 对于这样的任务, 其数据集的获取也是不容易的事.

基于神经网络的多标签分类可以追溯到周志华在2006年发表的文章: Multi-Label Neural Networks with Applications to Functional Genomics and Text Categorization。

周志华文章改进的论文:Large-scale Multi-label Text Classification Revisiting Neural Networks。这篇文章提出使用Adagrad,dropout等技术,此外还提出使用标准的交叉熵函数作为目标函数效果更好

Large Scale Multi-label Text Classification with Semantic Word Vectors。这篇文章很简单,就是把TextCNN和GRU直接用到多标签文本分类里,最后根据一个阈值alpha来确定样本是否属于某个类别。

Improved Neural Network-based Multi-label Classification with Better Initialization Leveraging Label Co-occurrence。这篇文章提出了一种根据类别标签之间的共现关系来初始化最后输出层参数的方法。其也是基于TextCNN,不同之处是最后一个输出层的权重不使用随机初始化,而是根据标签之间的共现关系进行初始化。据作者说这样可以获得标签之间的关系,这样有一种聚类的效果。相似的样本会标记为相同的标签。此外他还提出了损失函数的计算方法。

Ensemble Application of Convolutional and Recurrent Neural Networks for Multi-label Text Categorization。这篇论文主要提出了一种CNN和RNN融合的机制,将CNN的输出作为RNN的初始状态然后进行类别的预测