文章目录

  • 一、 简介
  • 二、 模型结构
    • 2.1 嵌入层
    • 2.2 卷积层
    • 2.3 池化层
    • 2.4 全连接层
    • 2.5 softmax层
  • 三、textCNN总结
  • 四、实现
  • 五、参考

一、 简介

TEXTCNN是由Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification中提出的,其主要思想是将不同长度的短文作为矩阵输入,使用多个不同size的filter去提取句子中的关键信息(类似于多窗口大小的ngram),并用于最终的分类。

二、 模型结构

TextCNN的结构分为:嵌入层、卷积层、池化层。

2.1 嵌入层

该层使用词向量,由word2vec预训练好。由于每个词都可以表示成一个词向量的形式,所以对于实验数据集中的所有词条,可以得到一个嵌入矩阵MMM,该矩阵MMM的每一行都是一个词向量。这个嵌入矩阵MMM可以使静态的,即固定不变。也可以是非静态的,即根据反向传播进行更新。

数据量较大:可以直接随机初始化embeddings,然后基于语料通过训练模型网络来对embeddings进行更新和学习。

数据量较小的时候使用静态的:可以利用外部语料来预训练(pre-train)词向量,然后输入到Embedding层,用预训练的词向量矩阵初始化embeddings。(通过设置weights=[embedding_matrix])。使用预训练的词向量,即利用word2vec、fastText或者Glove等词向量工具,在开放领域数据上进行无监督的学习,获得词汇的具体词向量表示方式,拿来直接作为输入层的输入,并且在TextCNN模型训练过程中不再调整词向量, 这属于迁移学习在NLP领域的一种具体的应用。

2.2 卷积层

输入一个句子,首先进行分词,假设得到sss个单词。然后根据已得到的嵌入矩阵MMM,可以整合得到词向量。假设词向量有ddd维。那么对于输入的句子,可以得到一个sssddd列的矩阵A∈Rs×dA \in R^{s \times d}ARs×d

接下来,将矩阵AAA视为一张图像,使用卷积神经网络去提取AAA的特征。在这里,使用一维卷积的理由是:一个句子中相邻的单词的关联性总是比较高的。卷积核的宽度采用的是词向量的维度ddd,高度是一个可以设置的超参数。

现在假设卷积核是一个宽为ddd高为hhh的矩阵www,那么www就有d∗hd*hdh个参数需要被更新。对于一个句子有矩阵A∈Rs×dA \in R^{s \times d}ARs×da[i:j]a[i:j]a[i:j]表示AAA的第iii行第jjj列。卷积操作可表示为:
oi=w⋅A[i:i+h−1],i=1,2,...,s−h+1{o_i} = w \cdot A[i:i + h - 1],i = 1,2,...,s - h + 1oi=wA[i:i+h1],i=1,2,...,sh+1

然后叠加上偏置bbb,并使用激活函数fff激活,得到所需特征,公式为:
ci=f(oi+b){c_i} = f({o_i} + b)ci=f(oi+b)

对于一个卷积核,可以得到特征c∈Rs−h+1c \in {R^{s - h + 1}}cRsh+1 ,合计s−h+1s - h + 1sh+1个特征。具体实验为了得到更加丰富的特征语义表达,可以使用多个不同高度的卷积核。

2.3 池化层

使用不同尺寸的卷积核,可得不一样大小的特征,称为Feature Map。为了最后特征提取,我们需要使它们的维度相同,做法是对每个特征图用池化函数。最常用的方法就是1-max pooling,提取出feature map中的最大值。这样做就可以令每一个卷积核得到的特征是一个值。

2.4 全连接层

对所有卷积核都使用:1-max pooling,再级联起来,可得最终的特征向量,此处可用 dropout 以防过拟合。并在全连接层上添加l2正则化参数。

2.5 softmax层

将全连接层的输出使用softmax函数,获取文本分到不同类别的概率。

如果是训练的话,此时便会根据预测label以及实际label来计算损失函数, 计算出softmax 函数,max-pooling 函数, 激活函数以及卷积核函数 四个函数当中参数需要更新的梯度, 来依次更新这四个函数中的参数,完成一轮训练 。

如果是预测的话,到这里整个textCNN的流程遍结束了。

为了便于理解,下面对上述模型结构做一个实例化阐述。如图示为TextCNN的模型结构。

在这里,word embedding的维度是5,对于这个句子“I am very good!”,可转换为如图中所示的矩阵A∈R5×5A \in {R^{5 \times 5}}AR5×5。此处有6个卷积核,尺寸分别为:(2×5),(3×5),(4×5)(2 \times 5),(3 \times 5),(4 \times 5)(2×5),(3×5),(4×5),每一个尺寸各设有两个。

矩阵A分别和以上对应的卷积核执行卷积操作,再使用激活函数来激活。这样每一个卷积核都得到了特征向量(feature maps)。

使用1-max pooling,提取每个feature map的最大值,然后级联,得到最终的特征表达。然后将特征输入到softmax layer进行分类, 在这层可以用正则化操作( L2-regulariation)。

三、textCNN总结

  • textCNN的流程:先将文本分词做embeeding得到词向量, 将词向量经过一层卷积,一层max-pooling, 最后将输出外接softmax 来做n分类。

  • textCNN 的优势:模型简单, 训练速度快,效果不错。

  • textCNN的缺点:模型可解释型不强,在调优模型的时候,很难根据训练的结果去针对性的调整具体的特征,因为在textCNN中没有类似gbdt模型中特征重要度(feature importance)的概念, 所以很难去评估每个特征的重要度。

四、实现

详情参考博客:https://www.cnblogs.com/ModifyRong/p/11442595.html

五、参考

  1. https://www.cnblogs.com/ModifyRong/p/11319301.html
  2. http://www.aclweb.org/anthology/D14-1181

3.文本分类——textCNN模型相关推荐

  1. 使用卷积神经网络进行文本分类textCNN

    使用卷积神经网络进行文本分类textCNN 一维卷积层 我们可以将文本当作一维图像,从而可以用一维卷积神经网络来捕捉临近词之间的关联.与二维卷积层一样,一维卷积层使用一维的互相关运算.在一维互相关运算 ...

  2. 【NLP】深度学习文本分类|模型代码技巧

    文本分类是NLP的必备入门任务,在搜索.推荐.对话等场景中随处可见,并有情感分析.新闻分类.标签分类等成熟的研究分支和数据集. 本文主要介绍深度学习文本分类的常用模型原理.优缺点以及技巧,是「NLP入 ...

  3. 4.文本分类——textRNN模型

    文章目录 一.简介 二.先验知识:LSTM详解 2.1 RNN 2.2 长短期记忆网络(LSTM) (1)细胞状态(Cell State) (2)遗忘门 (3)输入门 (4)更新门 (5)输出门 2. ...

  4. 新闻文本分类 TextCNN

    首先附上我的Gitee地址: News_Classification 我将整个项目中的东西都上传上去了,只要安装好了python,以及 pytorch, jieba, gensim 应该就可以运行 我 ...

  5. 【NLP】相当全面:各种深度学习模型在文本分类任务上的应用

    论文标题:Deep Learning Based Text Classification:A Comprehensive Review 论文链接:https://arxiv.org/pdf/2004. ...

  6. [深度学习] 自然语言处理 --- 文本分类模型总结

    文本分类 包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMO,BERT等)的文本分类 fastText 模型 textCNN 模型 charCNN 模型 Bi-LSTM 模型 ...

  7. 文本分类模型_【文本分类】几个可作为Baseline的模型

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要9分钟 跟随小博主,每天进步一丢丢 来自:AINLP 作者:老宋的茶书会 知乎专栏:NLP与深度学习 研究方向:自然语言处理 前言 最近,从Te ...

  8. 【多标签文本分类】MSML-BERT模型的层级多标签文本分类方法研究

    ·阅读摘要:   本文在BERT模型上,提出了利用多任务架构来解决层级多标签文本分类问题. ·参考文献:   [1] MSML-BERT模型的层级多标签文本分类方法研究 [0] 摘要   在摘要中,作 ...

  9. 使用TextCNN+Word2Vec实现简历文本分类(一)

    一.前言 本人毕业实习和毕业设计的题目为"福建省高校专家专业领域分类算法的设计与研究",目的是将福建省一本高校官网上公开的教师简历进行分类,分类到各个学科领域中去.相比于平常玩玩的 ...

最新文章

  1. 万物智联时代——2018年AIOT产业蓝皮书正式发布
  2. python3.8安装pip-MAC本安装python3.8后,pip3命令无法更新问题
  3. 性能测试四十八:Jenkins+Ant+Jmeter系统部署
  4. Beetlex服务网关1.8发布
  5. ubuntu server修改系统时区和系统时间
  6. java计算时间差距_硬计算和软计算之间的差异
  7. 中国上海量子计算机,首台光量子计算机在上海亮相
  8. 985材料研究生转行自动化,收割一众大厂,拿到54w的工作
  9. 【白皮书分享】2020全球数字治理白皮书.pdf(附下载链接)
  10. openai-gpt_GPT-3:大惊小怪的是什么?
  11. SSD NVMe核心之PRP算法
  12. 《Arduino与LabVIEW开发实战》第3章 如何连接Arduino与LabVIEW
  13. 深入浅析Service Workers
  14. PDCP分组数据汇聚协议
  15. 今天没有穿内裤._今天...
  16. MicrosoftExcel函数
  17. 2022-04-28:有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,
  18. [CUPT]国一博主, 教你求解95%以上的方程(数值解)
  19. autojs-微信群抢红包
  20. ESP8266对接天猫精灵-单路继电器控制

热门文章

  1. 税改之下,湾区单身码农或成最大输家
  2. margin和padding的坑
  3. Python爬虫实战案例:一键爬取,多种网页模板任你选!
  4. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复
  5. 解决创新声卡ubuntu下只有一边声道的问题
  6. 微信小程序实验报告-----学生家教小程序
  7. LPC1788FBD208笔记(002):SDRAM实验
  8. 二本理科计算机专业大学,二本大学 理科 计算机排名
  9. (转)云存储:阿里云OSS 、又拍云和 七牛 的比较
  10. vSphere ESXi 7.0 Update 3 发行说明