背景
过去工作中最常遇到的问题就是文本分类和实体抽取的任务。其中文本分类是自然语言处理中最基础的任务,指的是将文本打上特定的类别标签,以做区分和筛选。文本分类主要流程一般是:先预处理文本,再提取特征,最后通过特征进行分类,或者直接采用深度学习的模型对处理好的文本进行分类。在搜索、对话等很多场景中文本分类都有应用,并有具体的任务如情感分析、舆情分析、新闻分类、标签分类等。
常用模型
-
TEXTCNN
TextCNN模型核心思想是,通过数个卷积运算(卷积核大小不同)和池化操作,提取文本局部特征,将这些特征经过全连接层以后,经过softmax函数最终完成分类任务。简单描述前向过程为:
1. 词嵌入层,用词向量表示词
2. 多个不同大小的一维卷积核在词维度获取上下文信息,此时编码维度大小为1,可接Relu层提供非线性
3. 通过在词维度去最大池化,此时词维度也为1
4. 将各卷积核处理后的表示合并,得到文本的特征
5. 通过两层全连接得到类别概率分布
在训练过程为了增强模型的泛化性,可以使用dropout随机遮蔽了部分参数。
- 优点:两层全连接的好处,先将特征映射到高维/低维空间,再从映射的空间到输出空间。
- TextCNN不足:受限于卷积层的大小,无法提取到长距离文本的关联关系。
-
FASTTEXT(快速文本分类):
FASTTEXT 是一种基于词袋模型的文本分类算法,由Facebook于2016年提出。
FASTTEXT 将文本划分为单词(或字符)并使用平均池化(average pooling)来获取文本的嵌入表示。
它使用线性分类器对文本嵌入进行分类,速度快且性能不错。
FASTTEXT 在简单文本分类任务上表现出色,尤其适用于大规模文本分类。 -
TextRNN(循环神经网络文本分类):
TextRNN 是一种基于循环神经网络(RNN)的文本分类模型,它可以捕捉文本序列中的上下文信息。
TextRNN 将文本中的词汇序列依次传递给RNN单元,最终将RNN的输出用于分类。
它适用于需要考虑文本序列中的顺序信息的任务,如情感分析和文本生成。 -
TextRCNN(循环卷积神经网络文本分类):
TextRCNN 结合了卷积神经网络(CNN)和RNN的优点,用于文本分类任务。
它首先使用CNN来提取文本中的局部特征,然后使用RNN来捕捉全局语境信息。
TextRCNN可以更好地理解文本序列中的上下文信息,适用于情感分析和文本分类等任务。 -
DPCNN(深度金字塔卷积神经网络):
DPCNN 是一种卷积神经网络架构,用于文本分类,由微软提出。
它使用卷积层来提取不同级别的局部特征,然后通过池化层将这些特征组合成更高级的表示。
DPCNN 结构深度较深,有助于捕捉文本中的层次信息,适用于长文本的分类任务。
模型评价
对于文本单标签多分类问题常有如下指标:
-
准确度(Accuracy):
准确度是模型正确分类的样本数量与总样本数量的比率。它表示模型在所有类别上的整体性能。
公式:准确度 = (TP + TN) / (TP + TN + FP + FN)
适用于类别平衡的问题,但当类别不平衡时,不是一个很好的性能指标。 -
精确度(Precision):
精确度是模型预测为正类别的样本中实际为正类别的比例。它衡量了模型的精确性。
公式:精确度 = TP / (TP + FP)
精确度适用于那些要求高精确性的问题,比如垃圾邮件检测,其中误报的代价较高。 -
召回率(Recall):
召回率是实际为正类别的样本中,模型成功预测为正类别的比例。它衡量了模型找到正类别的能力。
公式:召回率 = TP / (TP + FN)
召回率适用于那些要求找到尽可能多正类别的问题,比如医疗诊断中的疾病检测。 -
F1 分数(F1-Score):
F1 分数是精确度和召回率的调和平均值。它提供了精确度和召回率的综合性能指标。
公式:F1 分数 = 2 * (精确度 * 召回率) / (精确度 + 召回率)
F1 分数适用于平衡精确性和召回率的问题,对于综合考虑分类器的性能时很有用。
Micro Average、Macro Average 和 Weighted Average 是用于计算多类别分类问题中精确度和召回率的不同方法。它们的区别在于如何处理多类别的度量和加权。
-
Micro Average(微平均):
Micro Average 通过将所有类别的真阳性、假阳性和假阴性的总和来计算精确度和召回率。然后,它计算总体的精确度和召回率。
这意味着 Micro Average 将所有类别视为一个大类别,所有的真阳性、假阳性和假阴性都汇总在一起,然后计算总体的精确度和召回率。
Micro Average 对所有类别平等看待,不考虑类别的不平衡性。 -
Macro Average(宏平均):
Macro Average 是通过分别对每个类别计算精确度和召回率,然后取平均值来计算总体精确度和召回率。
这种方法平等地对待每个类别,不考虑类别的大小或不平衡性。
Macro Average 适用于多类别平衡的情况,或者是希望了解每个类别的性能时。 -
Weighted Average(加权平均):
Weighted Average 与 Macro Average 类似,但在计算总体精确度和召回率时,它考虑了每个类别的权重,这个权重通常是类别的样本数量。
由于每个类别的权重不同,Weighted Average 更适合处理多类别不平衡的情况。
Weighted Average 将不同类别的性能考虑在内,权重越大的类别对总体性能的影响越大。