您当前的位置:首页 > IT编程 > 自然语言处理
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 |

自学教程:多标签文本分类介绍,以及对比训练

51自学网 2023-11-03 10:08:35
  自然语言处理
这篇教程多标签文本分类介绍,以及对比训练写得很实用,希望能帮到您。

多标签文本分类介绍,以及对比训练

目录
收起
一、文本分类介绍
1、Multi-Class:多分类/多元分类(二分类、三分类、多分类等)
2、Multi-Label:多标签分类
3、二者区别
二、多标签文本分类
1、改变输出概率(probabilities)的计算方式和交叉熵的计算方式
2、改变输出的全连接层
3、使用翻译框架:Attention + seq2seq(Beam Search)
三、实践
四、相关文章
1、改变输出概率(probabilities)的计算方式和交叉熵的计算方式
2、改变输出的全连接层
3、基于Seq2Seq+Attention框架
五、模型对比
1、损失函数图
2、精确率、召回率和F1值
3、结论
欢迎提问!
HelloNLP
4 次咨询
5.0
小米 员工
1671 次赞同
去咨询

 

 

今天我为大家主要介绍几种多标签文本分类的方法。

一、文本分类介绍

首先,我介绍下多元文本分类多标签文本分类的的区别。

1、Multi-Class:多分类/多元分类(二分类、三分类、多分类等)

  • 二分类:判断邮件属于哪个类别,垃圾或者非垃圾
  • 二分类:判断新闻属于哪个类别,机器写的或者人写的
  • 三分类:判断文本情感属于{正面,中立,负面}中的哪一类
  • 多分类:判断新闻属于哪个类别,如财经、体育、娱乐等

2、Multi-Label:多标签分类

  • 文本可能同时涉及任何宗教,政治,金融或教育,也可能不属于任何一种。
  • 电影可以根据其摘要内容分为动作,喜剧和浪漫类型。有可能电影属于romcoms [浪漫与喜剧]等多种类型。

3、二者区别

  • 多分类任务中一条数据只有一个标签,但这个标签可能有多种类别。比如判定某个人的性别,只能归类为"男性"、"女性"其中一个。再比如判断一个文本的情感只能归类为"正面"、"中面"或者"负面"其中一个。
  • 多标签分类任务中一条数据可能有多个标签,每个标签可能有两个或者多个类别。例如,一篇新闻可能同时归类为"娱乐"和"运动",也可能只属于"娱乐"或者其它类别。

例子:

假设个人爱好的集合一共有6个元素:运动、旅游、读书、工作、睡觉、美食

 

二、多标签文本分类

下面,我会介绍3种文本多标签分类的方法。

1、改变输出概率(probabilities)的计算方式和交叉熵的计算方式

  • tf.nn.sigmoid_cross_entropy_with_logits测量离散分类任务中的概率误差,其中每个类是独立的而不是互斥的。这适用于多标签分类问题。
  • tf.nn.softmax_cross_entropy_with_logits测量离散分类任务中的概率误差,其中类之间是互斥的(每个条目恰好在一个类中)。这适用多分类问题。
  • 在简单的二进制分类中,sigmoid和softmax没有太大的区别,但是在多分类的情况下,sigmoid允许处理非独占标签(也称为多标签),而softmax处理独占类。

 

2、改变输出的全连接层

  • 在输出层设置多个全连接层,每一个全连接层对应一个标签。
  • 损失函数为所有标签损失函数的平均值。

3、使用翻译框架:Attention + seq2seq(Beam Search)

  • 上下文语义信息 -> 多标签之间的关系。多标签一般去看下并非独立。
  • 将多标签当作一个序列(类似一句话)。
Attention 结构图

三、实践

以上3种方法,都有自己的优缺点。可能不同的人会有不同的想法,有的人会觉得第1种方法最好,有的人会觉得第2种会更种好,还有剩下一部分人会觉得第3种方法最好。我们有自己不同的理解,是因为我们都有自己的想法。(有想法可以留言评论)

至于哪一种方法最好呢,实践出真理。所以,之后,我会在同一个Pretraining LM的基础上,通过修改下游任务的框架,按照以上3种方法逐一实现(附代码)。

Github链接: github.com/hellonlp/cla

 

四、相关文章

1、改变输出概率(probabilities)的计算方式和交叉熵的计算方式

  • 下游任务使用全连接层:
  • 下游任务使用TextCNN:

 

2、改变输出的全连接层

 

3、基于Seq2Seq+Attention框架

五、模型对比

接下来的实验结果是基于一个多标签的文本分类,其中标签数量为96个。

1、损失函数图

一共训练了4个模型,分别是ALBERT、ALBERT+TextCNN、ALBERT+Seq2Seq+Attention和ALBERT+Denses,他们在上图中的对应关系分别为:CML、CML_TextCNN、CML_SeqSeq和CML_Denses。训练过程中,每一个框架使用的同样的batch_size、learning_rate。

在上图中,从表面上看,基于ALBERT、ALBERT+TextCNN和ALBERT+Denses这三种框架下的Loss收敛的很快,这个是因为计算loss时,会考虑到标签为0的情况,即标签为空的情况(在项目中,很多样本为空标签)。

 

2、精确率、召回率和F1值

2.1、 评估方法

简单粗暴

这里的精确率、召回率和F1值都是针对有标签的。

在TP的情况下,存在两种情况,一种是预测标签和真实标签完全一致,另一种是预测标签和真实标签只有部分一致。这两种情况下我们计算的方式为:

# 第一种情况
TP = TP + 1
# 第二种情况
TP = TP + 0.5
FN = FN + 0.5

这样做的目前主要是因为多标签分类中,存在标签部分召回或者过多召回(某一个样本)。

自己设计(建议)

 

2.2、评估结果

从上表中可以看到,基于ALBERT+Denses的效果远远好于基于ALBERT的。另外,基于ALBERT+TextCNN较好于的ALBERT+Denses的效果。

  • ALBERT+TextCNN和ALBERT+Seq2Seq_Attention的效果接近
  • 在推理速度上面,前面三个框架基本接近,ALBERT+Seq2Seq_Attention的速度比他们慢3倍。

 

3、结论

  • 如果对推理速度的要求不是非常高,基于ALBERT+Seq2Seq_Attention框架的多标签文本分类效果最好。
  • 如果对推理速度和模型效果要求都非常高,基于ALBERT+TextCNN会是一个不错的选择。

返回列表
新加列的详细过程
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1