自然语言处理 | (21) 基于TextCNN的文本分类原理

目录

1.文本分类任务介绍

2.TextCNN原理概述

3.TextCNN处理步骤

4. 拓展阅读


1.文本分类任务介绍

文本分类是自然语言处理的一个基本任务,试图推断出给定文本(句子、文档等)的标签或标签集合。

文本分类的应用非常广泛,如:

  • 垃圾邮件分类:2分类问题,判断邮件是否为垃圾邮件
  • 情感分析:2分类问题:判断文本情感是积极还是消极;多分类问题:判断文本情感属于{非常消极,消极,中立,积极,非常积极}中的哪一类。
  • 新闻主题分类:判断一段新闻属于哪个类别,如财经、体育、娱乐等。根据类别标签的数量,可以是2分类也可以是多分类。
  • 自动问答系统中的问句分类
  • 社区问答系统中的问题分类:多标签多分类(对一段文本进行多分类,该文本可能有多个标签),如知乎看山杯
  • 让AI做法官:基于案件事实描述文本的罚金等级分类(多分类)和法条分类(多标签多分类)
  • 判断新闻是否为机器人所写:2分类

不同类型的文本分类往往有不同的评价指标:

  • 2分类:accuracy,precision,recall,f1-score...
  • 多分类(单标签多分类):Micro-Averaged-F1,Macro-Averaged-F1...
  • 多标签多分类:Jaccard相似系数...

2.TextCNN原理概述

卷积神经网络主要是用于解决计算机视觉方面的任务。在本篇博客中我们将演示如何在自然语言处理任务---文本分类中使用卷积神经网络CNN,这里的文本可以一个句子,文档(短文本,若干句子)或篇章(长文本),因此每段文本的长度都不尽相同。在对文本进行分类时,我们一般会指定一个固定的输入序列/文本长度:该长度可以是最长文本/序列的长度,此时其他所有文本/序列都要进行填充以达到该长度;该长度也可以是训练集中所有文本/序列长度的均值,此时对于过长的文本/序列需要进行截断,过短的文本则进行填充。总之,要使得训练集中所有的文本/序列长度相同,该长度除之前提到的设置外,也可以是其他任意合理的数值。在测试时,也需要对测试集中的文本/序列做同样的处理。

假设训练集中所有文本/序列的长度统一为n,我们需要对文本进行分词,并使用词嵌入得到每个词固定维度的向量表示。此时对于一段文本,我们的输入就可以表示为一个n*d的数字矩阵,类似于图像分类任务中的图像。我们曾使用过CNN处理图像分类任务,类似的,接下来我们看一下如何用CNN进行文本分类。

 

3.TextCNN处理步骤

TextCNN结构:

embedding--->conv--->(activation)--->max pooling--->fully connected layer-------->softmax/sigmoid

  • 首先我们要对输入矩阵进行卷积操作。我们可以使用不同大小的卷积核,每种类型的卷积核可以有多个。假设卷积核的大小是(f,d),f可以是不同的取值(如f=2,3,4),而d是固定的,是词向量的维度,并且假设总共使用了k个卷积核,步长为1。经过卷积操作后我们会得到k个向量,每个向量的长度是n-f+1. 我们使用不同大小的卷积核,从输入文本中提取丰富的特征,这和n-gram特征有点相似(f=2,3,4分别对应于2-gram,3-gram-4-gram)。
  • 接下来,我们对卷积操作的输出进行max-pooling操作。作用于k个长度为n-f+1的向量上,最每个向量整体取最大值,得到k个标量数字。
  • 然后把k个标量数字拼接起来,组成一个向量表示最后提取的特征。他的长度是固定的,取决于我们所使用的不同大小的卷积核的总数。
  • 最后在接一个全联接层作为输出层,如果是2分类的话使用sigmoid激活函数,多分类则使用softmax激活函数,得到模型的输出。

下图是TextCNN的图示,可以直观的反映他的操作流程:

4. 拓展阅读

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TextCNN(Convolutional Neural Network)是一种用于文本分类的神经网络模型。它基于卷积神经网络,可以对输入的文本进行特征提取和分类TextCNN的输入是一个文本,通常由单词或字符组成的序列。首先,将文本中的每个单词(或字符)表示为一个向量。这可以使用预训练的词向量模型(如Word2Vec)得到,也可以通过随机初始化向量并通过反向传播进行训练得到。 接下来,将这些单词向量输入到一维卷积层中。卷积层是通过滑动窗口在输入序列上进行局部感知,提取特定的文本特征。每个窗口的大小可以根据具体任务和数据集的需求进行调整。卷积操作产生了一系列的特征图,其中每个特征图对应不同的特征。 在卷积层之后,可以使用最大池化(MaxPooling)操作进一步提取最重要的特征。最大池化操作获取特征图中的最大值,以减少特征向量的维度。这样做的好处是提供了一种不变性,即无论特征在文本中的位置如何变化,还是可以被捕捉到。 在进行池化操作之后,将得到的特征向量连接起来,进一步经过全连接层进行分类。全连接层将特征映射到最终的类别概率分布上,可以使用Softmax函数来将输出值转化为概率。 TextCNN模型的训练过程通常使用交叉熵损失函数,并通过反向传播算法进行参数优化。可以使用梯度下降等算法对模型进行训练。 总结来说,TextCNN是一种用于文本分类的深度学习模型。它通过卷积操作和池化操作提取文本的特征,并通过全连接层进行分类。这种模型具有参数少、计算速度快、能够捕捉到文本的局部信息等优势,被广泛应用于自然语言处理领域的文本分类任务中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值